Skill Tracer
Skills › Superpowers › subagent-driven-development

subagent-driven-development

skill · 336 lines · MIT · skills/subagent-driven-development/SKILL.md

The facts

Its description

Use when executing implementation plans with independent tasks in the current session

The description the agent reads to decide when to use it.

From its settingsline 3

When it starts

The agent picks this skill when a person hands over an implementation plan whose tasks are mostly independent and wants it executed in the current session by dispatching a fresh subagent per task, with a review after each and a whole-branch review at the end. It is the subagent counterpart to inline plan execution, chosen when the partner did not ask for inline work and a subagent tool is available.

Things a person might say (the model's guesses)

  • “Here's the implementation plan — execute it with subagents, one per task.”
  • “Run this plan end to end without checking in with me between tasks.”
  • “The tasks in this plan are mostly independent, so drive it with fresh subagents and review each one.”

A model's summary of when it is used.

A model's reading

Starts other agents

49 lines mention starting other agents (first 5 linked)

Lines in the file that mention starting another agent. Found by matching words, so treat them as pointers.

Found by matching wordsline 6 line 8 line 10 line 12 line 39

Runs scripts

scripts/sdd-workspace, scripts/task-brief, scripts/review-package

Scripts the text names. Found by matching words, so treat them as pointers.

Found by matching wordsline 114 line 203 line 241 line 260

Files it mentions

references/resuming.md, references/preflight.md, references/batching.md, implementer-prompt.md, references/handling-reports.md (first 5 of 9 lines)

Files the text names, such as ones to read or write. Found by matching words, so treat them as pointers.

Found by matching wordsline 119 line 135 line 179 line 235 line 244

Stops for a person

1 line stops to ask a person

Lines that stop and wait for a person before going on. Found by matching words, so treat them as pointers.

Found by matching wordsline 31

What it leads to

Other skills this one hands off to, calls, requires or offers instead, as a model read them.

A model's reading

What leads to it

Other skills that hand off to this one, call it, require it or offer it instead, as a model read them.

A model's reading

Licence

MIT, from LICENSE

The terms its author shares it under, which let it be shown here.

From the repositorylicence text
Other files in this skill (13) Close

The text

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1---
2name: subagent-driven-development
3description: Use when executing implementation plans with independent tasks in the current session
4---
5
6# Subagent-Driven Development
7
8Execute plan by dispatching a fresh implementer subagent per task, a task review (spec compliance + code quality) after each, and a broad whole-branch review at the end.
9
10**Why subagents:** You delegate tasks to specialized agents with isolated context. By precisely crafting their instructions and context, you ensure they stay focused and succeed at their task. They should never inherit your session's context or history — you construct exactly what they need. This also preserves your own context for coordination work.
12**Core principle:** Fresh subagent per task + task review (spec + quality) + broad final review = high quality, fast iteration
14**Narration:** between tool calls, narrate at most one short line — the
15ledger and the tool results carry the record.
17**Continuous execution:** Do not pause to check in with your human partner between tasks. Execute all tasks from the plan without stopping. The only reasons to stop are the four named below, or all tasks complete. "Should I continue?" prompts and progress summaries waste their time — they asked you to execute the plan, so execute it.
19**Rulings, not stalls.** A running plan does not wait on a human. Conflicts,
20ambiguities, plan defects, a cap you would have asked to exceed — decide
21them. The spec is the binding authority, the plan is its argument, and your
22judgment settles what neither answers. Record every decision in the ledger as
23`Ruling: <what you decided> — <why> — <what it costs if wrong>`, and keep
24going. A wrong ruling costs rework your human partner can see and undo; a
25session parked on a question costs their whole day and buys nothing.
27Four things stop you, and only these: an irreversible or destructive
28operation; a security-sensitive action; a side effect outside this worktree
29that norms say you ask about first (a merge, a push to a shared branch, a
30publish); and a plan so broken that every path forward is a guess. For those,
31stop and ask.

Subagent-Driven Development

Execute plan by dispatching a fresh implementer subagent per task, a task review (spec compliance + code quality) after each, and a broad whole-branch review at the end.

Why subagents: You delegate tasks to specialized agents with isolated context. By precisely crafting their instructions and context, you ensure they stay focused and succeed at their task. They should never inherit your session's context or history — you construct exactly what they need. This also preserves your own context for coordination work.

Core principle: Fresh subagent per task + task review (spec + quality) + broad final review = high quality, fast iteration

Narration: between tool calls, narrate at most one short line — the ledger and the tool results carry the record.

Continuous execution: Do not pause to check in with your human partner between tasks. Execute all tasks from the plan without stopping. The only reasons to stop are the four named below, or all tasks complete. "Should I continue?" prompts and progress summaries waste their time — they asked you to execute the plan, so execute it.

Rulings, not stalls. A running plan does not wait on a human. Conflicts, ambiguities, plan defects, a cap you would have asked to exceed — decide them. The spec is the binding authority, the plan is its argument, and your judgment settles what neither answers. Record every decision in the ledger as Ruling: <what you decided> — <why> — <what it costs if wrong>, and keep going. A wrong ruling costs rework your human partner can see and undo; a session parked on a question costs their whole day and buys nothing.

Four things stop you, and only these: an irreversible or destructive operation; a security-sensitive action; a side effect outside this worktree that norms say you ask about first (a merge, a push to a shared branch, a publish); and a plan so broken that every path forward is a guess. For those, stop and ask.

Raw lines 1 to 32
Starts an agent Subagent :6
Starts an agent dispatching :8
Starts an agent subagent :8
Starts an agent subagents :10
Involves a person stop and ask :31
33## When to Use
35```dot
36digraph when_to_use {
37 "Have implementation plan?" [shape=diamond];
38 "Tasks mostly independent?" [shape=diamond];
39 "Partner chose inline, or no subagent tool?" [shape=diamond];
40 "subagent-driven-development" [shape=box];
41 "executing-plans" [shape=box];
44 "Have implementation plan?" -> "Tasks mostly independent?" [label="yes"];
45 "Have implementation plan?" -> "Manual execution or brainstorm first" [label="no"];
46 "Tasks mostly independent?" -> "Partner chose inline, or no subagent tool?" [label="yes"];
47 "Tasks mostly independent?" -> "Manual execution or brainstorm first" [label="no - tightly coupled"];
48 "Partner chose inline, or no subagent tool?" -> "executing-plans" [label="yes"];
49 "Partner chose inline, or no subagent tool?" -> "subagent-driven-development" [label="no"];
51```
53**vs. Executing Plans (inline):**
54- Fresh subagent per task (no context pollution) instead of one context doing every task
55- Review after each task (spec compliance + code quality) instead of only at the end
56- Costs a fresh context per task and per review; inline costs one context plus one final reviewer
57- Both run in this session, share the same plan workspace and ledger, and never pause between tasks

When to Use

digraph when_to_use {
    "Have implementation plan?" [shape=diamond];
    "Tasks mostly independent?" [shape=diamond];
    "Partner chose inline, or no subagent tool?" [shape=diamond];
    "subagent-driven-development" [shape=box];
    "executing-plans" [shape=box];
    "Manual execution or brainstorm first" [shape=box];

    "Have implementation plan?" -> "Tasks mostly independent?" [label="yes"];
    "Have implementation plan?" -> "Manual execution or brainstorm first" [label="no"];
    "Tasks mostly independent?" -> "Partner chose inline, or no subagent tool?" [label="yes"];
    "Tasks mostly independent?" -> "Manual execution or brainstorm first" [label="no - tightly coupled"];
    "Partner chose inline, or no subagent tool?" -> "executing-plans" [label="yes"];
    "Partner chose inline, or no subagent tool?" -> "subagent-driven-development" [label="no"];
}

vs. Executing Plans (inline):

  • Fresh subagent per task (no context pollution) instead of one context doing every task
  • Review after each task (spec compliance + code quality) instead of only at the end
  • Costs a fresh context per task and per review; inline costs one context plus one final reviewer
  • Both run in this session, share the same plan workspace and ledger, and never pause between tasks
Raw lines 33 to 58
Starts an agent subagent :39
Names a skill brainstorming :42
Names a skill executing-plans :48
59## The Process
61```dot
62digraph process {
63 rankdir=TB;
65 subgraph cluster_per_task {
66 label="Per Task";
67 "Dispatch implementer subagent (./implementer-prompt.md)" [shape=box];
68 "Implementer asks questions?" [shape=diamond];
69 "Answer questions, provide context" [shape=box];
70 "Implementer implements, tests, commits, self-reviews" [shape=box];
71 "Generate review package, dispatch task reviewer (./task-reviewer-prompt.md)" [shape=box];
72 "Spec ✅ and quality approved?" [shape=diamond];
73 "Fix loop: read references/fix-loop.md before every round" [shape=box];
74 "Append completion to ledger, mark todo complete" [shape=box];
75 }
77 "Setup: worktree, ledger check, read plan, pre-flight review" [shape=box];
78 "More tasks remain?" [shape=diamond];
79 "Final review and finish: read references/final-review.md" [shape=box];
80 "Final review clean: delete this plan's workspace" [shape=box];
81 "Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
83 "Setup: worktree, ledger check, read plan, pre-flight review" -> "Dispatch implementer subagent (./implementer-prompt.md)";
84 "Dispatch implementer subagent (./implementer-prompt.md)" -> "Implementer asks questions?";
85 "Implementer asks questions?" -> "Answer questions, provide context" [label="yes"];
86 "Answer questions, provide context" -> "Implementer implements, tests, commits, self-reviews";
87 "Implementer asks questions?" -> "Implementer implements, tests, commits, self-reviews" [label="no"];
88 "Implementer implements, tests, commits, self-reviews" -> "Generate review package, dispatch task reviewer (./task-reviewer-prompt.md)";
89 "Generate review package, dispatch task reviewer (./task-reviewer-prompt.md)" -> "Spec ✅ and quality approved?";
90 "Spec ✅ and quality approved?" -> "Append completion to ledger, mark todo complete" [label="yes"];
91 "Spec ✅ and quality approved?" -> "Fix loop: read references/fix-loop.md before every round" [label="no"];
92 "Fix loop: read references/fix-loop.md before every round" -> "Append completion to ledger, mark todo complete" [label="addressed, or parked at the cap"];
93 "Append completion to ledger, mark todo complete" -> "More tasks remain?";
94 "More tasks remain?" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="yes"];
95 "More tasks remain?" -> "Final review and finish: read references/final-review.md" [label="no"];
96 "Final review and finish: read references/final-review.md" -> "Final review clean: delete this plan's workspace";
97 "Final review clean: delete this plan's workspace" -> "Use superpowers:finishing-a-development-branch";
99```

The Process

digraph process {
    rankdir=TB;

    subgraph cluster_per_task {
        label="Per Task";
        "Dispatch implementer subagent (./implementer-prompt.md)" [shape=box];
        "Implementer asks questions?" [shape=diamond];
        "Answer questions, provide context" [shape=box];
        "Implementer implements, tests, commits, self-reviews" [shape=box];
        "Generate review package, dispatch task reviewer (./task-reviewer-prompt.md)" [shape=box];
        "Spec ✅ and quality approved?" [shape=diamond];
        "Fix loop: read references/fix-loop.md before every round" [shape=box];
        "Append completion to ledger, mark todo complete" [shape=box];
    }

    "Setup: worktree, ledger check, read plan, pre-flight review" [shape=box];
    "More tasks remain?" [shape=diamond];
    "Final review and finish: read references/final-review.md" [shape=box];
    "Final review clean: delete this plan's workspace" [shape=box];
    "Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];

    "Setup: worktree, ledger check, read plan, pre-flight review" -> "Dispatch implementer subagent (./implementer-prompt.md)";
    "Dispatch implementer subagent (./implementer-prompt.md)" -> "Implementer asks questions?";
    "Implementer asks questions?" -> "Answer questions, provide context" [label="yes"];
    "Answer questions, provide context" -> "Implementer implements, tests, commits, self-reviews";
    "Implementer asks questions?" -> "Implementer implements, tests, commits, self-reviews" [label="no"];
    "Implementer implements, tests, commits, self-reviews" -> "Generate review package, dispatch task reviewer (./task-reviewer-prompt.md)";
    "Generate review package, dispatch task reviewer (./task-reviewer-prompt.md)" -> "Spec ✅ and quality approved?";
    "Spec ✅ and quality approved?" -> "Append completion to ledger, mark todo complete" [label="yes"];
    "Spec ✅ and quality approved?" -> "Fix loop: read references/fix-loop.md before every round" [label="no"];
    "Fix loop: read references/fix-loop.md before every round" -> "Append completion to ledger, mark todo complete" [label="addressed, or parked at the cap"];
    "Append completion to ledger, mark todo complete" -> "More tasks remain?";
    "More tasks remain?" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="yes"];
    "More tasks remain?" -> "Final review and finish: read references/final-review.md" [label="no"];
    "Final review and finish: read references/final-review.md" -> "Final review clean: delete this plan's workspace";
    "Final review clean: delete this plan's workspace" -> "Use superpowers:finishing-a-development-branch";
}
Raw lines 59 to 100
Starts an agent Dispatch :67
Starts an agent subagent :67
Starts an agent dispatch :71
101## Setup
103Ensure the work happens in an isolated workspace: use
104superpowers:using-git-worktrees to create one or verify the existing one.
105Never start implementation on a main/master branch without your human
106partner's explicit consent.
108Conversation memory does not survive compaction. In real sessions,
109controllers that lost their place have re-dispatched entire completed task
110sequences — the single most expensive failure observed. Track progress in
111a ledger file, not only in todos.
113- Each plan owns a workspace: at skill start, run this skill's
114 `bash scripts/sdd-workspace PLAN_FILE` — it prints the plan's git-ignored
115 directory (under `<repo-root>/.superpowers/sdd/`), home to
116 every artifact for THIS plan: ledger, briefs, reports, review packages.
117 Another plan's directory is never yours to read or write.
118- Check for this plan's ledger at `<workspace>/progress.md`. If one exists,
119 read [references/resuming.md](references/resuming.md) before anything
120 else: it says whose ledger it is and where to resume.
121- Create the ledger with its identity as the first line:
122 `# SDD ledger — plan: <plan file path>`.
123- The ledger is your recovery map: the commits it names exist in git even
124 when your context no longer remembers creating them. After compaction,
125 trust the ledger and `git log` over your own recollection.
126- `git clean -fdx` will destroy the workspace (it's git-ignored scratch); if
127 that happens, recover from `git log`.
129Read the plan once, note its context and Global Constraints, and create a
130todo per task. If the plan names a Spec, read that too: the spec is the
131authority the plan argues from, and conflicts inside the plan resolve
132against it. A plan with no reachable spec gets a ledger note saying so —
133rulings made without one are provisional.
135Before dispatching Task 1, read [references/preflight.md](references/preflight.md)
136and run the conflict scan it describes. Its table and rulings go in the
137ledger.

Setup

Ensure the work happens in an isolated workspace: use superpowers:using-git-worktrees to create one or verify the existing one. Never start implementation on a main/master branch without your human partner's explicit consent.

Conversation memory does not survive compaction. In real sessions, controllers that lost their place have re-dispatched entire completed task sequences — the single most expensive failure observed. Track progress in a ledger file, not only in todos.

  • Each plan owns a workspace: at skill start, run this skill's bash scripts/sdd-workspace PLAN_FILE — it prints the plan's git-ignored directory (under <repo-root>/.superpowers/sdd/), home to every artifact for THIS plan: ledger, briefs, reports, review packages. Another plan's directory is never yours to read or write.
  • Check for this plan's ledger at <workspace>/progress.md. If one exists, read references/resuming.md before anything else: it says whose ledger it is and where to resume.
  • Create the ledger with its identity as the first line: # SDD ledger — plan: <plan file path>.
  • The ledger is your recovery map: the commits it names exist in git even when your context no longer remembers creating them. After compaction, trust the ledger and git log over your own recollection.
  • git clean -fdx will destroy the workspace (it's git-ignored scratch); if that happens, recover from git log.

Read the plan once, note its context and Global Constraints, and create a todo per task. If the plan names a Spec, read that too: the spec is the authority the plan argues from, and conflicts inside the plan resolve against it. A plan with no reachable spec gets a ledger note saying so — rulings made without one are provisional.

Before dispatching Task 1, read references/preflight.md and run the conflict scan it describes. Its table and rulings go in the ledger.

Raw lines 101 to 138
Names a skill using-git-worktrees :103
Starts an agent dispatched :109
Runs code scripts/sdd-workspace :114
Reads a file references/resuming.md :119
Starts an agent dispatching :135
Reads a file references/preflight.md :135
139## Model Selection
141Use the least powerful model that can handle each role to conserve cost and increase speed.
143**Mechanical implementation tasks** (isolated functions, clear specs, 1-2 files): use a fast, cheap model. Most implementation tasks are mechanical when the plan is well-specified.
145**Integration and judgment tasks** (multi-file coordination, pattern matching, debugging): use a standard model.
147**Architecture and design tasks**: use the most capable available model.
148The final whole-branch review is one of these — dispatch it on the most
149capable available model, not the session default.
151**Review tasks**: choose the model with the same judgment, scaled to the
152diff's size, complexity, and risk. A small mechanical diff does not need the
153most capable model; a subtle concurrency change does. Scoped re-reviews of
154small fix diffs take a cheap-to-mid tier.
156**Fix-loop escalation (rounds 4-5)**: use a model at least one tier above
157the implementer that got stuck.
159**Always specify the model explicitly when dispatching a subagent.** An
160omitted model inherits your session's model — often the most capable and
161most expensive — which silently defeats this section.
163**Turn count beats token price.** Wall-clock and context cost scale with how
164many turns a subagent takes, and the cheapest models routinely take 2-3× the
165turns on multi-step work — costing more overall. Use a mid-tier model as the
166floor for reviewers and for implementers working from prose descriptions.
167When the task's plan text contains the complete code to write, the
168implementation is transcription plus testing: use the cheapest tier for
169that implementer. Single-file mechanical fixes also take the cheapest tier.
171**Task complexity signals (implementation tasks):**
172- Touches 1-2 files with a complete spec → cheap model
173- Touches multiple files with integration concerns → standard model
174- Requires design judgment or broad codebase understanding → most capable model

Model Selection

Use the least powerful model that can handle each role to conserve cost and increase speed.

Mechanical implementation tasks (isolated functions, clear specs, 1-2 files): use a fast, cheap model. Most implementation tasks are mechanical when the plan is well-specified.

Integration and judgment tasks (multi-file coordination, pattern matching, debugging): use a standard model.

Architecture and design tasks: use the most capable available model. The final whole-branch review is one of these — dispatch it on the most capable available model, not the session default.

Review tasks: choose the model with the same judgment, scaled to the diff's size, complexity, and risk. A small mechanical diff does not need the most capable model; a subtle concurrency change does. Scoped re-reviews of small fix diffs take a cheap-to-mid tier.

Fix-loop escalation (rounds 4-5): use a model at least one tier above the implementer that got stuck.

Always specify the model explicitly when dispatching a subagent. An omitted model inherits your session's model — often the most capable and most expensive — which silently defeats this section.

Turn count beats token price. Wall-clock and context cost scale with how many turns a subagent takes, and the cheapest models routinely take 2-3× the turns on multi-step work — costing more overall. Use a mid-tier model as the floor for reviewers and for implementers working from prose descriptions. When the task's plan text contains the complete code to write, the implementation is transcription plus testing: use the cheapest tier for that implementer. Single-file mechanical fixes also take the cheapest tier.

Task complexity signals (implementation tasks):

  • Touches 1-2 files with a complete spec → cheap model
  • Touches multiple files with integration concerns → standard model
  • Requires design judgment or broad codebase understanding → most capable model
Raw lines 139 to 175
Starts an agent dispatch :148
Starts an agent dispatching :159
Starts an agent subagent :159
176## The Task Loop
178**Small same-shape work:** when the plan lists several small edits of the
179same kind across files, read [references/batching.md](references/batching.md)
180before dispatching them.
182Everything you paste into a dispatch prompt — and everything a subagent
183prints back — stays resident in your context for the rest of the session
184and is re-read on every later turn. Hand artifacts over as files.
186**Waiting on dispatched subagents:** never poll a wait interface with
187short timeouts, and never sit in one silent, open-ended wait either.
188While you have local work — ledger updates, packaging the next review,
189reading reports — keep working; child results arrive on their own.
190When you are genuinely idle, wait in bounded stretches (five to ten
191minutes, where your platform allows), and between stretches post one
192line of status and reconcile your live children: list them, and chase
193any that finished without reporting. A bounded stretch keeps nearly
194all of a long wait's efficiency while guaranteeing a stuck or lost
195child is noticed within minutes, not at the end of the session.

The Task Loop

Small same-shape work: when the plan lists several small edits of the same kind across files, read references/batching.md before dispatching them.

Everything you paste into a dispatch prompt — and everything a subagent prints back — stays resident in your context for the rest of the session and is re-read on every later turn. Hand artifacts over as files.

Waiting on dispatched subagents: never poll a wait interface with short timeouts, and never sit in one silent, open-ended wait either. While you have local work — ledger updates, packaging the next review, reading reports — keep working; child results arrive on their own. When you are genuinely idle, wait in bounded stretches (five to ten minutes, where your platform allows), and between stretches post one line of status and reconcile your live children: list them, and chase any that finished without reporting. A bounded stretch keeps nearly all of a long wait's efficiency while guaranteeing a stuck or lost child is noticed within minutes, not at the end of the session.

Raw lines 176 to 196
Reads a file references/batching.md :179
Starts an agent dispatching :180
Starts an agent dispatch :182
Starts an agent subagent :182
Starts an agent dispatched :186
Starts an agent subagents :186
197### 1. Dispatch the implementer
199Record BASE (`git rev-parse HEAD`) before dispatching — the review package
200and fix-round diffs need it.
202- **Task brief:** before dispatching an implementer, run this skill's
203 `bash scripts/task-brief PLAN_FILE N` — it extracts the task's full text to a
204 uniquely named file and prints the path. Compose the dispatch so the
205 brief stays the single source of
206 requirements. Your dispatch should contain: (1) one line on where this
207 task fits in the project; (2) the brief path, introduced as "read this
208 first — it is your requirements, with the exact values to use verbatim";
209 (3) interfaces and decisions from earlier tasks that the brief cannot
210 know; (4) your resolution of any ambiguity you noticed in the brief;
211 (5) the report-file path and report contract. Exact values (numbers,
212 magic strings, signatures, test cases) appear only in the brief. Never
213 make a subagent read the whole plan file.
214- **Report file:** name the implementer's report file after the brief
215 (brief `…/task-N-brief.md` → report `…/task-N-report.md`) and put it in
216 the dispatch prompt. The implementer writes the full report there and
217 returns only status, commits, a one-line test summary, and concerns.
218- A dispatch prompt describes one task, not the session's history. Do not
219 paste accumulated prior-task summaries ("state after Tasks 1-3") into
220 later dispatches — a real session's dispatch hit 42k chars of which 99%
221 was pasted history. A fresh subagent needs its task, the interfaces it
222 touches, and the global constraints. Nothing else.
223- The dispatch carries the no-subagents contract (it is in the
224 implementer template): the implementer never dispatches subagents —
225 not helpers, and never a reviewer. Review arrives from you, after the
226 report. In real sessions, every reviewer a worker spawned duplicated
227 the task review the controller dispatched anyway — a full extra
228 review seat per task.
229- If an earlier task parked a finding in the area this task touches, carry
230 a pointer to that ledger entry in the dispatch.
231- Record the implementer's agent identity from the dispatch result —
232 fix-loop rounds 1-3 resume this agent.
233- Never dispatch multiple implementation subagents in parallel (conflicts).
235Template: [implementer-prompt.md](implementer-prompt.md)

1. Dispatch the implementer

Record BASE (git rev-parse HEAD) before dispatching — the review package and fix-round diffs need it.

  • Task brief: before dispatching an implementer, run this skill's bash scripts/task-brief PLAN_FILE N — it extracts the task's full text to a uniquely named file and prints the path. Compose the dispatch so the brief stays the single source of requirements. Your dispatch should contain: (1) one line on where this task fits in the project; (2) the brief path, introduced as "read this first — it is your requirements, with the exact values to use verbatim"; (3) interfaces and decisions from earlier tasks that the brief cannot know; (4) your resolution of any ambiguity you noticed in the brief; (5) the report-file path and report contract. Exact values (numbers, magic strings, signatures, test cases) appear only in the brief. Never make a subagent read the whole plan file.
  • Report file: name the implementer's report file after the brief (brief …/task-N-brief.md → report …/task-N-report.md) and put it in the dispatch prompt. The implementer writes the full report there and returns only status, commits, a one-line test summary, and concerns.
  • A dispatch prompt describes one task, not the session's history. Do not paste accumulated prior-task summaries ("state after Tasks 1-3") into later dispatches — a real session's dispatch hit 42k chars of which 99% was pasted history. A fresh subagent needs its task, the interfaces it touches, and the global constraints. Nothing else.
  • The dispatch carries the no-subagents contract (it is in the implementer template): the implementer never dispatches subagents — not helpers, and never a reviewer. Review arrives from you, after the report. In real sessions, every reviewer a worker spawned duplicated the task review the controller dispatched anyway — a full extra review seat per task.
  • If an earlier task parked a finding in the area this task touches, carry a pointer to that ledger entry in the dispatch.
  • Record the implementer's agent identity from the dispatch result — fix-loop rounds 1-3 resume this agent.
  • Never dispatch multiple implementation subagents in parallel (conflicts).

Template: implementer-prompt.md

Raw lines 197 to 236
Starts an agent Dispatch :197
Starts an agent dispatching :199
Runs code scripts/task-brief :203
Starts an agent dispatch :204
Starts an agent subagent :213
Starts an agent dispatches :220
Starts an agent subagents :223
Starts an agent spawned :226
Starts an agent dispatched :227
Reads a file implementer-prompt.md :235
237### 2. Handle the report
239Implementer subagents report one of four statuses. Handle each appropriately:
241**DONE:** Generate the review package (`bash scripts/review-package PLAN_FILE BASE HEAD`, from this skill's directory — it prints the unique file path it wrote; BASE is the commit you recorded before dispatching the implementer — never `HEAD~1`, which silently drops all but the last commit of a multi-commit task), then dispatch the task reviewer with the printed path.
243**Any other status** (DONE_WITH_CONCERNS, NEEDS_CONTEXT, BLOCKED): read
244[references/handling-reports.md](references/handling-reports.md) and follow
245it, every time you get one.
247If the implementer asks questions — before starting or mid-task — answer
248clearly and completely, provide additional context if needed, and don't
249rush it into implementation.

2. Handle the report

Implementer subagents report one of four statuses. Handle each appropriately:

DONE: Generate the review package (bash scripts/review-package PLAN_FILE BASE HEAD, from this skill's directory — it prints the unique file path it wrote; BASE is the commit you recorded before dispatching the implementer — never HEAD~1, which silently drops all but the last commit of a multi-commit task), then dispatch the task reviewer with the printed path.

Any other status (DONE_WITH_CONCERNS, NEEDS_CONTEXT, BLOCKED): read references/handling-reports.md and follow it, every time you get one.

If the implementer asks questions — before starting or mid-task — answer clearly and completely, provide additional context if needed, and don't rush it into implementation.

Raw lines 237 to 250
Starts an agent subagents :239
Runs code scripts/review-package :241
Starts an agent dispatching :241
Starts an agent dispatch :241
251### 3. Review the task
253Per-task reviews are task-scoped gates. The broad review happens once, at the
254final whole-branch review. Never skip the task review, and never accept a
255report missing either verdict — spec compliance AND task quality are both
256required. Implementer self-review never replaces the task review; both are
257needed.
259- Hand the reviewer its diff as a file: run this skill's
260 `bash scripts/review-package PLAN_FILE BASE HEAD` and pass the reviewer the file path
261 it prints (or, without bash: `git log --oneline`, `git diff --stat`,
262 and `git diff -U10` for the range, redirected to one uniquely named
263 file). The output never enters your own context, and the reviewer sees
264 the commit list, stat summary, and full diff with context in one Read
265 call. Use the BASE you recorded before dispatching the implementer —
266 never `HEAD~1`, which silently truncates multi-commit tasks. Never
267 dispatch a task reviewer without a diff file.
268- **Reviewer inputs:** the task reviewer gets three paths — the same brief
269 file, the report file, and the review package — plus the global
270 constraints that bind the task.
271- The global-constraints block you hand the reviewer is its attention
272 lens. Copy the binding requirements verbatim from the plan's Global
273 Constraints section or the spec: exact values, exact formats, and the
274 stated relationships between components ("same layout as X", "matches
275 Y"). The reviewer's template already carries the process rules (YAGNI,
276 test hygiene, review method) — the constraints block is for what THIS
277 project's spec demands.
278- Do not add open-ended directives like "check all uses" or "run race tests
279 if useful" without a concrete, task-specific reason
280- Do not ask a reviewer to re-run tests the implementer already ran on the
281 same code — the implementer's report carries the test evidence
282- Do not pre-judge findings for the reviewer — never instruct a reviewer to
283 ignore or not flag a specific issue. If you believe a finding would be a
284 false positive, let the reviewer raise it and adjudicate it in the review
285 loop. If the prompt you are writing contains "do not flag," "don't treat X
286 as a defect," "at most Minor," or "the plan chose" — stop: you are
287 pre-judging, usually to spare yourself a review loop.
288If the reviewer reports "⚠️ Cannot verify from diff" items, read
289[references/cannot-verify.md](references/cannot-verify.md) before you mark
290the task complete.
292Template: [task-reviewer-prompt.md](task-reviewer-prompt.md)

3. Review the task

Per-task reviews are task-scoped gates. The broad review happens once, at the final whole-branch review. Never skip the task review, and never accept a report missing either verdict — spec compliance AND task quality are both required. Implementer self-review never replaces the task review; both are needed.

  • Hand the reviewer its diff as a file: run this skill's bash scripts/review-package PLAN_FILE BASE HEAD and pass the reviewer the file path it prints (or, without bash: git log --oneline, git diff --stat, and git diff -U10 for the range, redirected to one uniquely named file). The output never enters your own context, and the reviewer sees the commit list, stat summary, and full diff with context in one Read call. Use the BASE you recorded before dispatching the implementer — never HEAD~1, which silently truncates multi-commit tasks. Never dispatch a task reviewer without a diff file.
  • Reviewer inputs: the task reviewer gets three paths — the same brief file, the report file, and the review package — plus the global constraints that bind the task.
  • The global-constraints block you hand the reviewer is its attention lens. Copy the binding requirements verbatim from the plan's Global Constraints section or the spec: exact values, exact formats, and the stated relationships between components ("same layout as X", "matches Y"). The reviewer's template already carries the process rules (YAGNI, test hygiene, review method) — the constraints block is for what THIS project's spec demands.
  • Do not add open-ended directives like "check all uses" or "run race tests if useful" without a concrete, task-specific reason
  • Do not ask a reviewer to re-run tests the implementer already ran on the same code — the implementer's report carries the test evidence
  • Do not pre-judge findings for the reviewer — never instruct a reviewer to ignore or not flag a specific issue. If you believe a finding would be a false positive, let the reviewer raise it and adjudicate it in the review loop. If the prompt you are writing contains "do not flag," "don't treat X as a defect," "at most Minor," or "the plan chose" — stop: you are pre-judging, usually to spare yourself a review loop.

If the reviewer reports "⚠️ Cannot verify from diff" items, read references/cannot-verify.md before you mark the task complete.

Template: task-reviewer-prompt.md

Raw lines 251 to 293
Runs code scripts/review-package :260
Starts an agent dispatching :265
Starts an agent dispatch :267
Reads a file references/cannot-verify.md :289
Reads a file task-reviewer-prompt.md :292
294### 4. The fix loop
296The loop triggers when the review reports spec ❌, any Critical or Important
297finding, or a ⚠️ item you confirmed as a real gap.
299When it triggers, read [references/fix-loop.md](references/fix-loop.md) and
300follow it. Read it again before every round, even if you read it earlier in
301this session: it holds the round cap, the breaker, and the ledger line each
302round writes, and your memory of it does not survive compaction.

4. The fix loop

The loop triggers when the review reports spec ❌, any Critical or Important finding, or a ⚠️ item you confirmed as a real gap.

When it triggers, read references/fix-loop.md and follow it. Read it again before every round, even if you read it earlier in this session: it holds the round cap, the breaker, and the ledger line each round writes, and your memory of it does not survive compaction.

Raw lines 294 to 303
Reads a file references/fix-loop.md :299
304### 5. Complete the task
306When the review comes back clean — or every open finding is parked with a
307ruling at the cap — append the completion line to the ledger in the same
308message as your other bookkeeping:
310- `Task <N>: complete (commits <base7>..<head7>, review clean)`
311- `Task <N>: complete (commits <base7>..<head7>, <K> parked)` after a
312 tripped breaker
314Then mark the todo complete and move on. Never move to the next task while
315the review has open Critical/Important issues that are neither fixed nor
316parked-with-ruling at the cap.

5. Complete the task

When the review comes back clean — or every open finding is parked with a ruling at the cap — append the completion line to the ledger in the same message as your other bookkeeping:

  • Task <N>: complete (commits <base7>..<head7>, review clean)
  • Task <N>: complete (commits <base7>..<head7>, <K> parked) after a tripped breaker

Then mark the todo complete and move on. Never move to the next task while the review has open Critical/Important issues that are neither fixed nor parked-with-ruling at the cap.

Raw lines 304 to 317
318## Final Review
320When every task is complete, read
321[references/final-review.md](references/final-review.md) and follow it. It
322covers the whole-branch review, its single fix wave, and how you finish.

Final Review

When every task is complete, read references/final-review.md and follow it. It covers the whole-branch review, its single fix wave, and how you finish.

Raw lines 318 to 323
Reads a file references/final-review.md :321
324## Common Rationalizations
326| Excuse | Reality |
327|--------|---------|
328| "Close enough on spec compliance" | Reviewer found spec gaps = not done. Fix or hit the cap and adjudicate — those are the only exits. |
329| "I'll fix it myself, dispatching is overhead" | Controller fixes pollute your context and skip review. Resume the implementer. |
330| "One more round will converge" | Past the cap, rounds don't converge — the failure is structural. Adjudicate and route. |
331| "The reviewer will just find something new anyway" | Scoped re-reviews verify fixes; they cannot wander. New findings on untouched code go to the ledger, not the loop. |
332| "This finding is obviously wrong, I'll drop it" | You adjudicate only at the cap, and every ruling is a ledger entry. Silent discards are forbidden. |
333| "The fix was small, skip the re-review" | Unreviewed fixes are how regressions land. Every round ends with a scoped re-review. |
334| "Reviews slow the loop down" | The loop without reviews is just unverified churn. Reviews are the loop's brakes and steering. |
335| "Ledger bookkeeping is overhead" | The ledger is what survives compaction. Controllers without one have re-dispatched entire completed task sequences. |
336| "The implementer spawned its own reviewer — free extra assurance" | It's a duplicate seat reviewing the same diff; the task review is the gate. A worker-spawned reviewer is a defect to flag, not rigor. |

Common Rationalizations

ExcuseReality
"Close enough on spec compliance"Reviewer found spec gaps = not done. Fix or hit the cap and adjudicate — those are the only exits.
"I'll fix it myself, dispatching is overhead"Controller fixes pollute your context and skip review. Resume the implementer.
"One more round will converge"Past the cap, rounds don't converge — the failure is structural. Adjudicate and route.
"The reviewer will just find something new anyway"Scoped re-reviews verify fixes; they cannot wander. New findings on untouched code go to the ledger, not the loop.
"This finding is obviously wrong, I'll drop it"You adjudicate only at the cap, and every ruling is a ledger entry. Silent discards are forbidden.
"The fix was small, skip the re-review"Unreviewed fixes are how regressions land. Every round ends with a scoped re-review.
"Reviews slow the loop down"The loop without reviews is just unverified churn. Reviews are the loop's brakes and steering.
"Ledger bookkeeping is overhead"The ledger is what survives compaction. Controllers without one have re-dispatched entire completed task sequences.
"The implementer spawned its own reviewer — free extra assurance"It's a duplicate seat reviewing the same diff; the task review is the gate. A worker-spawned reviewer is a defect to flag, not rigor.
Raw lines 324 to 336
Starts an agent dispatching :329
Starts an agent dispatched :335
Starts an agent spawned :336

From obra/superpowers at 2ce8aa1, 2026-10-21. Skills read by DeepSeek V4.1 Flash on 2026-11-04. Summary and techniques by Claude Opus 5.5 on 2026-11-06.