← All skills
Rewrite · 3 sources citedProtocolSoftware & games

subagent-driven-development

Execute an approved written plan one task at a time in the current session. A fresh worker (subagent) implements each task from a self-contained brief, a separate review checks it against the task's requirements before the next task starts, and one final review covers the whole change.

Use it when
The user hands over a plan with mostly independent tasks and says "execute the plan", "work through these tasks with subagents" or "subagent-driven". Covers briefs, worker status handling, per-task review, a bounded fix loop, a progress ledger that survives lost context, and model choice. Not for independent problems to run concurrently (see dispatching-parallel-agents), writing the plan, tightly coupled tasks, or one small change.
What kind it is
A written method: it lays out how the work is done and what to check along the way.
Size
1,881 words. The whole text loads when the skill fires; only the 112-word description is always loaded.
Starts with
Ask for the job it describes.

How it is organised

What’s inside

The skill’s top-level sections, in order. The bar is each section’s share of the 1,881 words, so you can see where the weight sits before reading.

  1. 1When to use it140 words
  2. 2Before the first task215 words
  3. 3The task loop995 words
  4. 4Choosing a worker98 words
  5. 5Final review and finish135 words
  6. 6Pace54 words
  7. 7Excuses you will hear yourself make72 words
  8. 8Example ledger50 words

The skill itself

Read it before you install it

subagent-driven-development/SKILL.md · 1,881 wordsDownloadSkill on GitHub ↗
---
name: subagent-driven-development
description: Execute an approved written plan one task at a time in the current session. A fresh worker (subagent) implements each task from a self-contained brief, a separate review checks it against the task's requirements before the next task starts, and one final review covers the whole change. Use when the user hands over a plan with mostly independent tasks and says "execute the plan", "work through these tasks with subagents" or "subagent-driven". Covers briefs, worker status handling, per-task review, a bounded fix loop, a progress ledger that survives lost context, and model choice. Not for independent problems to run concurrently (see dispatching-parallel-agents), writing the plan, tightly coupled tasks, or one small change.
license: MIT
---

# Subagent-driven development

You are the controller. You hold the plan, write each brief, decide, and keep the record. A fresh worker implements each task from a brief you wrote, and someone other than that worker reviews it before the next task begins. Workers never inherit your session, which keeps them focused and your own context free for coordination.

**Principle:** one fresh worker per task, a review after each, one broad review at the end, and a written ledger so lost context never costs a repeated task.

## When to use it

Use it when a written plan exists, the user wants it executed here, its tasks are mostly independent (each understandable from its own text plus settled interfaces), and the host can start a worker with its own context.

Do not use it for:

- **No plan yet.** Clarify and write one first.
- **Tightly coupled tasks.** One worker's guesses become the next one's constraints. Work inline, or restructure.
- **A tiny change.** Do a one-file edit directly.
- **Independent problems to run at once.** That is `dispatching-parallel-agents`. Here tasks run strictly one after another, because they share one working tree and each review depends on the order.
- **No worker mechanism.** Work through the plan inline with the same discipline, and say plainly that the review is your own, not independent.

A worker must not start workers of its own.

## Before the first task

1. **Isolate the work** on a branch or a separate working copy. Do not begin on the main branch without the user's consent. Leave the user's unrelated uncommitted changes untouched.
2. **Read the plan once**, with its global constraints, and make a checklist with one entry per task.
3. **Scan for conflicts before dispatching:** tasks that contradict each other or the constraints, tasks that edit the same files, and anything the plan demands that a reviewer would call a defect (a test that asserts nothing). Put everything you find to the user as one batched question, each item beside the plan text behind it. If the scan is clean, go on.
4. **Start the ledger.** Conversation memory does not survive context compaction, and a controller that forgets where it was can redo finished work. Keep a progress file where git ignores it, or in scratch space. Its first line names the plan file; add a line per event (task complete, fix round, parked finding, blocker). A ledger naming a different plan belongs to another run: leave it alone. After any loss of context, trust the ledger and the version-control log over your recollection: a task with a complete line is done, and one whose last line is a fix round resumes at the next round.

## The task loop

### 1. Brief the worker

Record the base first: the commit, or the file state if there is no version control. Never use "the previous commit" as the base for a task that may have made several.

A brief describes one task, not your session:

- one line on where the task fits in the project;
- the task's full text from the plan, with exact values (numbers, strings, signatures, test cases) verbatim;
- interfaces and decisions from earlier tasks that the text cannot know, and your resolution of any ambiguity you noticed;
- the files it may touch and must not touch;
- how to verify, and where to write its full report.

Do not paste a history of earlier tasks, and do not make the worker read the whole plan. Everything you paste into a brief or a worker prints back stays in your context for the rest of the session, so hand over long material as files and have the worker write its full report to a file, replying with its status, a one-line test summary and any concerns.

Tell the worker to follow `test-driven-development`, to ask rather than guess, and to commit only if the plan or the user calls for commits. Run one implementer at a time.

### 2. Handle the status

| Status | You do |
|---|---|
| DONE | Review it |
| DONE_WITH_CONCERNS | Read the concerns. Settle correctness or scope doubts before review; note mere observations and proceed |
| NEEDS_CONTEXT | Supply it and re-dispatch |
| BLOCKED | Find out why: add context, use a more capable worker, split the task, or, if the plan is wrong, take it to the user |

Answer a worker's questions completely before it proceeds. Never ignore a stuck report or resend the same worker unchanged: if it said it is stuck, something has to change.

### 3. Review the task

The reviewer is not the implementer. A worker's self-review helps but never replaces this step. Give the reviewer the brief, the worker's report, the diff for base-to-head (plus uncommitted and untracked files if the worker did not commit), and the binding constraints copied verbatim from the plan. Use `requesting-code-review` for the brief and the severity scale.

Require two verdicts, requirements first: is everything asked for present, and nothing extra; then is the work sound, with real tests and clear code. A report missing either verdict is not a review. For tasks touching authentication or authorization, secrets, money, deletion or migration of data, untrusted input, concurrency or a public interface, finish the requirements pass before starting the quality pass. If unsure whether a task is that kind, treat it as one; size does not lower risk.

- Do not tell the reviewer which findings to ignore or soften. If you expect a finding to be wrong, let it be raised and decide in the loop. Wording like "do not flag" is pre-judging.
- Do not ask it to rerun tests the worker already ran on the same code. Check that the report's command, output and code state are real (see `verification-before-completion`), and run the full suite yourself when in doubt.
- A reviewer may mark items "cannot verify from the diff" because they depend on code outside it. You hold the cross-task context, so settle each before completing the task. A confirmed gap counts as a failed requirements verdict.

### 4. The fix loop

The loop starts on a requirements gap, a Critical or Important finding, or a confirmed "cannot verify" gap. Minor findings never enter it: log each in the ledger as deferred and give the list to the final review. A finding that collides with what the plan's text requires is the user's decision. Show them both and ask which governs; do not dismiss it because the plan says so, and do not dispatch a fix that contradicts the plan unasked.

A fix round is one fix dispatch plus one scoped re-review:

1. Send the open findings verbatim, preferably to the original worker, which knows the code and its own choices. If the host cannot message a live worker, start a fresh one with the brief, the report file and the findings.
2. It fixes, runs the tests covering the change, and appends a fix report with command and output.
3. The re-reviewer sees the findings, the brief, the report and only the fix diff. It marks each finding addressed or not addressed and flags new breakage in the fix diff alone. New Critical or Important breakage joins the open list; anything else goes to the ledger as deferred.
4. Log the round.

Do not fix findings yourself in the controller session. It spends your context, and an unreviewed fix is how regressions land.

**The breaker.** If two fixes for the same cause have failed, or rounds keep surfacing new, different problems, stop dispatching. Something must change before another attempt: the brief, a fresh worker, a more capable model, a smaller task, or the plan. Then rule on each open finding and write every ruling in the ledger:

- Reviewer wrong, or the point arguable: park it, with why the code stands.
- Real, but nothing downstream builds on it: park it, with a ruling that says it is real and deferred.
- Real and load-bearing, because a later task builds on it or it exposes a plan defect: stop and report to the user with the finding, the plan text it collides with and the fix history. Parking it lets every later task build on a fault.

Rule on findings only at the breaker. Ruling earlier to end a loop is pre-judging under another name, and silent discards are not allowed.

### 5. Complete the task

Write the completion line: range, review result, number parked, and the test command with its result. Tick the checklist. Never start the next task while a Critical or Important finding is neither fixed nor parked with a ruling.

## Choosing a worker

If your host lets you choose, give each role the least capable model that can do it well; an unconfigured worker may inherit your own, more expensive one. Mechanical tasks (isolated function, complete spec, one or two files) suit a cheap model, integration and judgment work a standard one, and design-heavy tasks and the final review the most capable. Scale reviewers to the diff's size and risk. Cheap models can need many more turns on multi-step work, which can erase the saving, so use the cheapest tier mainly when the plan text already contains the code to write.

## Final review and finish

After the last task, give a reviewer on the most capable model the whole range from where the work began, the ledger's deferred and parked lines, and the plan's requirements. If it returns findings, send the complete list to one fix worker (not one per finding), run one scoped re-review, and rule on what remains as at the breaker. There is no second fix wave: a leftover load-bearing finding goes to the user.

Then run the full suite yourself and apply `verification-before-completion` before reporting. Tell the user what was built per task, what was parked or deferred and why, the commands you ran with their results, and anything unverified.

Do not merge, push, open a pull request, delete the branch, or remove the ledger and scratch files unless the user asks. Say where they are.

## Pace

Inside an approved plan, do not stop between tasks to ask "should I continue?". Stop for: a BLOCKED you cannot resolve, ambiguity that truly prevents progress, a conflict between plan and review, a load-bearing finding at the breaker, an action outside the plan (push, deploy, deletion, spending), or a check-in the user asked for.

## Excuses you will hear yourself make

| Excuse | Reality |
|---|---|
| "Close enough on the requirements" | A reviewer-found gap means not done |
| "I'll fix it myself, dispatching is overhead" | Your fix skips review and fills your context |
| "The fix was small, skip the re-review" | Unreviewed fixes are how regressions land |
| "One more round will converge" | Past two failures for one cause the problem is structural |

## Example ledger

```
# Ledger - plan: docs/recovery-plan.md
Task 1: complete (a1b2c3d..d4e5f6a, review clean, npm test: 41 passed)
Task 2: fix round 1 (2 addressed, 0 open: missing progress report, magic number 100)
Task 2: complete (d4e5f6a..b7c8d9e, review clean, recovery tests: 10 passed)
Task 3: minor (deferred): rename helper in src/index.ts
```

The second audit

What we found in the sources

It keeps the process of the version the others copy (obra/superpowers): one fresh worker per task, a review after each task, a bounded fix loop and a progress ledger. It is rewritten as one self-contained file that does not need the source's prompt templates, helper scripts or sibling skills, and it takes safeguards from two variants. It stays distinct from dispatching-parallel-agents (concurrent independent problems) and requesting-code-review (how to brief a reviewer), and names them instead of repeating them. Every source below was read at the commit the auditor recorded. Nothing was taken from a source without a permissive license.

What each source contributed

  • obra/superpowers ↗ · Primary basis · MIT

    The controller and worker model; briefs instead of session history; the four worker statuses and how to handle each; a review after each task that must return both a requirements verdict and a quality verdict; the fix loop (findings sent verbatim to the same worker, a scoped re-review of the fix diff only, Minor findings deferred to the ledger, plan-conflict findings taken to the user); the breaker that stops the loop and requires a ruling on each open finding, with load-bearing ones stopping the run; the progress ledger that survives lost context; model choice by role; one fix worker for the final review's findings and no second fix wave; and the warnings against pre-judging the reviewer and fixing in the controller session. The Chinese translation and the shorter earlier versions in this bundle follow it.

  • lsy041015/orchestra ↗ · Added ideas · MIT

    Keeping a one-file edit in the main session; a worker must not start workers; saying plainly when a review is the controller's own and not independent; reviewing staged, unstaged and untracked changes as one change set; supporting work outside version control by comparing file state before and after; no dummy commits; preserving the user's unrelated changes; stopping after two failed fixes for the same cause; not running destructive cleanup, merge, push or publish outside the user's authorization; and not deleting the workspace until the ledger is preserved or the user authorizes it.

  • thepragmaticbear/bearpaws ↗ · Added ideas · MIT

    Classifying a task as risky when it touches authentication or authorization, secrets, money, data deletion or migration, untrusted input, concurrency or a public interface, and finishing the requirements review before the quality review for those; when the classification is arguable treat the task as risky; size does not lower risk.

What changed

  • The description now says what the skill does, when it applies, the phrases that should trigger it, and what it is not for (concurrent independent problems, writing the plan, tightly coupled tasks, one small change). The upstream description is "Use when executing implementation plans with independent tasks in the current session".
  • Rewritten as one self-contained file. Upstream depends on prompt files (implementer-prompt.md, task-reviewer-prompt.md, re-review-prompt.md), a reviewer template in another skill (requesting-code-review/code-reviewer.md), three helper scripts (sdd-workspace, task-brief, review-package) and three prefixed skills (using-git-worktrees, requesting-code-review, finishing-a-development-branch). The rewrite describes what a brief and a review package must contain in prose, makes the ledger a plain file, and names only skills that are in this repository.
  • Replaced the two Graphviz diagrams with prose, a status table and a sample ledger.
  • Fix-loop cap: upstream allows five rounds, resuming the original implementer for three and then using a fresh implementer on a more capable model. lsy041015/orchestra stops after two failed fixes for the same cause and forbids a fresh-worker rescue. The sources disagree and neither gives a basis for its number. The rewrite stops after two failed fixes for the same cause (as the repository's requesting-code-review and dispatching-parallel-agents skills do) and lists what must change before another attempt: the brief, a fresh worker, a more capable model, a smaller task, or the plan.
  • Review independence: upstream dispatches a separate reviewer; orchestra has the main agent review the real diff and says not to call that independent. The rewrite requires a reviewer other than the implementer and, if the host has no workers, says to work inline and state that the review is the controller's own.
  • End of run: upstream deletes the plan's workspace with rm -rf after the final review and hands off to a branch-finishing skill. The rewrite leaves the ledger and scratch files, does not merge, push or open a pull request unless the user asks, and has the controller run the full suite and apply verification-before-completion before reporting.
  • Reconciled upstream's "do not ask a reviewer to rerun the implementer's tests" with verification-before-completion: the controller checks that the report's command, output and code state are real and runs the full suite when in doubt. That reconciliation is the rewrite's own.
  • Kept upstream's "do not pause between tasks" but listed the stop conditions, including any action outside the plan (push, deploy, deletion, spending), which follows orchestra's limit on authorized scope.
  • Kept model choice by role and dropped the numeric claim about turns. Replaced "your human partner" with "the user".

Problems found in the sources

  • obra/superpowers: The longest English source in the bundle (28,077 bytes). Its description gives only a trigger. It points at prompt files (implementer-prompt.md, task-reviewer-prompt.md, re-review-prompt.md), a reviewer file in another skill, and three scripts (sdd-workspace, task-brief, review-package) that a lone copy of SKILL.md does not have, and it names three superpowers: skills. It contains two Graphviz digraphs. It states figures with no basis (42k characters, 99%, 2-3x turns, a fix wave costing more than all tasks). It ends with rm -rf of the plan's workspace without asking the user; the workspace is scratch the skill created, but it is still deletion without confirmation.
  • lsy041015/orchestra: Uses the orchestra: prefix for sibling skills and an orchestrator, names specific models and host agents in its worker preset (including a Codex preset and a Claude Code agent), and names two host tools (followup_task and SendMessage) for the fix loop. It refers to the same three prompt files and three scripts as upstream without including them. It forbids rescuing a stuck task with a fresh or stronger worker, which disagrees with upstream's rounds four and five; unclear which is better.
  • thepragmaticbear/bearpaws: Recasts upstream in XML tags with a dot diagram inside them. Names five bp: prefixed skills, three prompt files and a docs/bearpaws/plans/ path that a lone copy lacks. Its description is upstream's, a trigger only.
  • gylove1994/superpowers-deepseek-v4: Opens the process by invoking a skill (confirming-worktree-before-edit) that is not in the file. Its Advantages section lists "Parallel-safe (subagents don't interfere)" while its Red Flags forbid dispatching multiple implementers in parallel because of conflicts; the two lines read as contradictory, and what "parallel-safe" refers to is unclear.
  • mzored/superpowers-cc-to-codex: The whole skill depends on a codex_implement, codex_resume and codex_review tool set, and a hard gate forbids the controller from implementing anything. It sets disable-model-invocation, so it never triggers on its own. It names a spec-review-template.md and a writing-plans-codex skill that are not in the file. The second member of this repository in the bundle is a 72-byte test fixture whose body is only "Upstream fixture".

What was dropped

  • The three helper scripts and their path convention, the prompt template files, and the reviewer template that lives in another skill.
  • Figures given without a basis: a dispatch of "42k chars of which 99% was pasted history", a final-review fix wave that "cost more than all its tasks combined", cheap models taking "2-3x the turns", and redone task sequences called "the single most expensive failure observed". The qualitative points behind them are kept without numbers.
  • The one-short-line narration rule between tool calls, which is a style preference.
  • The Integration lists of prefixed skills in the variants, the Advantages and Cost sections of gylove1994/superpowers-deepseek-v4, and all host-specific worker presets and tool calls from lsy041015/orchestra and mzored/superpowers-cc-to-codex.
  • mzored's hard gate that forbids the controller from implementing anything, which depends on its own MCP tool.
Read but not used (4)
  • jnmetacode/superpowers-zh: A Chinese translation of the current obra/superpowers text. I read its opening, its process and ledger sections, and its headings, and they match upstream's sections (setup, model choice, task loop, final review, finish, rationalizations, example), including the same helper scripts and prompt files. I did not read every line.
  • leodorareluctant259/superpowers-zh: A Chinese translation of the earlier two-stage version (separate spec reviewer, then code-quality reviewer) that gylove1994/superpowers-deepseek-v4 also carries. I compared its headings and read its opening, model-selection, status-handling and template sections; I did not read the rest line by line.
  • gylove1994/superpowers-deepseek-v4: The earlier, shorter two-stage version of upstream, with a worktree gate that invokes a skill not in the file and Advantages, Cost and Red Flags sections. Its red-flag list is covered by upstream; nothing else from it is used.
  • mzored/superpowers-cc-to-codex: Two members: a Codex-backed port of the process (see the findings) that is tied to its own tool set, and a 72-byte test fixture with no content. Nothing is used from either.
Left out for license (4)

No license is declared on these, so nothing was taken from them: Athyrr/aikit, Fintama/swisper-superpowers, Itzalive/resistance-ai, orkeren21/shipshape.

Same text, wherever you work

Use it where you work

Copy the folder into your skills directory, then ask for the job or type its start command.

git clone https://github.com/nikbearbrown/skills
cp -R skills/skills/subagent-driven-development ~/.claude/skills/

Pairs with