A plugin for ADR-driven, documentation-led projects, working on Claude Code, Claude Cowork, pi, Codex, and OpenCode from the same skill files (see Install).
> /plugin marketplace add EvolveHQ/docflow> /plugin install docflow@evolvehq
Repo: EvolveHQ/docflow
What's inside

A plugin for ADR-driven, documentation-led projects, working on
Claude Code, Claude Cowork, pi, Codex, and OpenCode from the same
skill files (see Install).
It installs a bootstrap skill that scaffolds (or retrofits) an
Architecture Decision Record (ADR) catalogue, a plan queue, and
AGENTS.md conventions into any repository, plus a set of lifecycle
skills that author, queue, ship, and audit ADRs — so the project can
be driven by both humans and coding agents from a small set of canonical
files. For the formal definition of the conventions — why they help and
where they fall short — see the
methodology.
Slash commands below are the Claude Code form. On the pi coding
agent the same skills are invoked as /skill:<name> (e.g.
/skill:bootstrap, /skill:new-adr). See Install.
| Skill | Slash command | Purpose |
|---|---|---|
| bootstrap | /bootstrap | Scaffold or retrofit the whole convention set. Start here. |
| new-adr | /new-adr | Author one ADR — next contiguous number, right shape, INDEX + domain wiring, supersede linkage. |
| new-plan | /new-plan | Add a plan/todo item tracing to its owning ADR(s). |
| ship-item | /ship-item | Run the completion event: verify → completion commit (todo→done, ADR Accepted→Implemented, INDEX) → push or PR merge per the recorded model. |
| add-convention | /add-convention | Assess whether a convention is worth codifying, route it to the right home (or to an ADR), then add it. Use it to enable optional practices (e.g. TDD) on demand — see USAGE §5a. |
| audit | /audit | Lint the repo against its own conventions — numbering, INDEX sync, plan coverage, ADR-privacy leaks, more. |
| brainstorm | /brainstorm | Decompose a problem into candidate ADRs + plan items (proposes drafts; writes nothing until approved). |
| agent-wave | /agent-wave | Run a bounded queue wave using available parallel agents or sequential execution, with checkpoint or continuous supervision. |
| rollup | /rollup | For a multi-repo product: aggregate every member repo's ADRs into one derived, product-wide roll-up (run from the home repo). |
The lifecycle skills all read CONVENTIONS.md first and honour the
choices the bootstrap recorded (ADR shape, status lifecycle, integration
model, multi-agent mode). They refuse to run on an un-bootstrapped repo
and point you at /bootstrap.
/bootstrap installsOnly the core is always written; everything else is an opt-in layer chosen during the assessment, so a minimal repo stays as light as a classic ADR catalogue.
Core (always):
AGENTS.md — hard rules for coding agents (the entry point).CLAUDE.md — one-liner re-exporting AGENTS.md so Claude Code picks it
up automatically.CONVENTIONS.md — authoring rules for ADRs, naming, status lifecycle,
audit trail, and git contract.INDEX.md — generated table of all ADRs.adr/0000-template.md — the ADR template; the catalogue starts here.Optional layers (opt-in):
plan/todo/ + plan/done/ — the implementation queue (Q4a). Git
history and plan/done/ are the shipped record: direct-to-main
footers name the HEAD SHA, while PR-based footers name the pull
request._agent/ — the agent operating contract: who writes what, the one real
mutex, and how an unattended run behaves. It holds nothing git already
records. Members follow the coordination answer (Q5): a single
writer gets prompts/autonomous.md, and only where a verify gate
(Q8) and the plan/todo/ queue the prompt walks (Q4a) are both
recorded — otherwise no _agent/ at all; a shared checkout gets
ROLES.md, LOCKS.md, and the prompt on the same condition;
separate worktrees get ROLES.md and the prompt on the same
condition. No mode writes a dashboard of what is in flight: a queue
item is claimed by pushing a branch named for it (claim/<item-key>)
and, where integration is PR-based, a draft pull request, and the live
set is read back from the worktrees, those branches and those PRs.domains/<slug>/README.md — grouping: per-area indexes (e.g.
domains/auth/) over the flat catalogue, for navigating a large catalogue
by area. Organisational only — ADRs keep their number; new-adr files
each under its domain. Enable it when the project has distinct areas (Q7).GLOSSARY.md, the technology-ADR template
(adr/0000-template-technology.md — the second ADR shape, chosen at
Q2 and declared per ADR by a shape: metadata field rather than by a
number range), and project-specific hard rules (vendor-naming,
regulated evidence, language mandate, audit-stream separation) —
Q2/Q7/Q10.Omitting any optional layer leaves a valid repo; a lifecycle skill that needs an absent layer refuses cleanly and says what's missing.
Enable a deferred layer later: re-run bootstrap on the repo — it
detects your existing setup, skips the settled questions, and offers only
the optional layers you don't have yet, adding the chosen ones by merge.
(Two shortcuts: add-convention creates GLOSSARY.md on your first shared
term, and new-adr offers to create a domains/<slug>/ grouping when you
file an ADR under a new domain.)
On an older number-range catalogue? Early two-shape repos encoded the
shape in the number — a cutoff in CONVENTIONS.md, a technology template
at the boundary (adr/0100-template.md or your own number), technology
records above it. That still works: audit recognises it, keeps checking
it by its own range rules, and reports it as a single non-failing
"migration available" note. Accept the offer (from audit or a
bootstrap re-run) and the move is mechanical: your technology records
are renumbered onto the end of the sequence in their original order,
capability numbers stay put, shape: is written on every record, every
in-repo reference follows, the boundary template is retired, and it lands
as one commit listing every old-to-new pair. You see that map and confirm
it before anything is written — and declining is a perfectly good answer.
Placement: AGENTS.md and CLAUDE.md always stay at the repository
root; everything else lives under a configurable artefact root —
.docflow/ (the default), docs/, or the repo root — chosen at bootstrap
and recorded in CONVENTIONS.md. Discovery is deterministic for tools
(the same pattern as git's .git): a .docflow/ directory is the
root; any other choice gets a one-line .docflow pointer file at the
repo root (root: docs/), written by bootstrap.
Seed ADR: by default, bootstrap also writes adr/0001 — a first
ADR recording the decision to adopt this method (self-documenting, like the
classic "use ADRs" convention). It references CONVENTIONS.md for the rules
and is created Implemented. Decline it at sign-off if you want only the
template.
Documentation-led projects rot when conventions live in someone's head. This plugin makes the conventions explicit, machine-readable, and applied uniformly — so a fresh contributor (human or agent) can pick up the repo with no oral handover.
It works equally well on fresh repos (scaffolds from zero) and on existing repos (retrofits, preserving and merging existing files rather than overwriting them).
A single product spread across several repositories can run as a
federation. At bootstrap a repo declares whether it is standalone or
part of a multi-repo product, and whether it is establishing a new
federation or joining one — a joining repo only ever writes its own
back-pointer, never into another repo. You pick a topology (central
decisions repo · distributed · home-repo-plus-local), and the convention
set keeps numbering contiguous per repo while a federation-wide
identity is the cross-repo key. The rollup skill aggregates every
member's catalogue into one product-wide view, and audit gains
cross-repo checks (membership, identity collisions, dangling references,
roll-up drift, convention drift). Work and status cross repos the same way:
a cross-repo decision is one plan item per affected repo, and its aggregate
status ("2 of 3 repos") surfaces in the roll-up. No tool writes across a
repo boundary; consistency is declared at the edges and enforced by audit. See the
methodology
for the full model.
docflow records outcomes, not work-in-progress. There is no Draft
status and no brainstorming/ folder — an ADR's first persisted
status is Proposed, created only once a decision is approved. The
brainstorm skill explores candidates in conversation and writes
nothing until you approve them; only then does new-adr mint a numbered
ADR. This keeps the catalogue free of half-formed drafts and the numbering
clean — numbers go only to real decisions — following the lightweight-ADR
tradition that an ADR captures the agreed decision, not the discussion that
produced it.
docflow ships from one skill source (plugins/docflow/skills/) to
five coding agents — only the packaging differs. Two surfaces: the scaffolded output
(AGENTS.md, the ADR catalogue, plan/, _agent/) is plain Markdown
read natively by any agent that loads AGENTS.md; the skills are
SKILL.md files the host discovers.
| Agent | Output | Skills | Install | Invoke |
|---|---|---|---|---|
| Claude Code | native | ✅ | marketplace (below) | /bootstrap |
| Claude Cowork | native | ✅ | desktop plugin upload | /bootstrap |
| pi | native | ✅ | pi install npm:@evolvehq/docflow | /skill:bootstrap |
| Codex | native | ✅ | codex plugin marketplace add EvolveHQ/docflow | $bootstrap / /skills |
| OpenCode | native | ✅ | auto-discovered, or symlink into ~/.config/opencode/skills | auto, by description |
Handy: OpenCode also reads ~/.claude/skills/ and ~/.agents/skills/, so
a shared skills directory can serve it alongside another agent.
/plugin marketplace add EvolveHQ/docflow
/plugin install docflow@evolvehq
Invoke with /bootstrap, /new-adr, /ship-item, … (auto-triggers on
matching requests too).
Cowork accepts the same plugin bundle through Customise → Plugins → Add →
Upload plugin. ZIP the contents of plugins/docflow/, including its hidden
.claude-plugin directory, and upload it. Use a configured marketplace when
available. The desktop interface and execution permissions differ from the
Claude Code CLI; a loaded plugin does not guarantee Git access to an attached
folder. Verify file changes and Git history in the actual target folder.
pi install npm:@evolvehq/docflow
or, from source, pi install git:github.com/EvolveHQ/docflow. Pi
auto-discovers the skills via the pi.skills key in
package.json. Invoke with /skill:bootstrap, /skill:new-adr,
/skill:ship-item, … Pi does not auto-trigger skills from their
descriptions the way Claude Code does — invoke them explicitly (the
agent will also load a skill on-demand when a task clearly matches).
The scaffolded output (AGENTS.md, CONVENTIONS.md, the ADR catalogue,
plan/, _agent/) is plain Markdown and is read natively by pi's
hierarchical AGENTS.md loading — no porting needed.
docflow ships a Codex plugin (.codex-plugin/), so it's a one-command
install from this repo's marketplace:
codex plugin marketplace add EvolveHQ/docflow
codex plugin add docflow@evolvehq
Codex reads the scaffolded AGENTS.md natively. Invoke with $bootstrap
FAQ
docflow is a Claude Code plugin with 9 hand-picked skills for documentation work, indexed on Flowy. Install it with the command on its page. It includes add-convention, agent-wave, audit. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.
Is this plugin yours?
Claim it with GitHubSubmit a pluginPromote it