Subagent-driven development
Announce at start: "I'm using subagent-driven development to execute this
plan."
Requires executing-plans. Load it first for plan validation, baseline
capture, and dirty-work ownership. This skill delegates each complete task cycle
to one implementer.
Workflow
After the shared executing-plans start gates:
- For each task, dispatch one fresh implementer with
implementer-prompt.md
- On
PASS, mark only the harness task complete, retain its exact REVIEW and
VERIFY lines grouped by task ID for final evidence reuse, carry its
LEARNED lines into your final report, and dispatch the next task
- On
BLOCKED, relay its short blocker list and its LEARNED lines; stop
- After all tasks, dispatch one fresh finalizer with
finalizer-prompt.md
- With
milestone_execution_mode = coordinated, on READY <plan ID>, relay it
to the root milestone execution coordinator and retain the finalizer plus
baseline_snapshot
- With
milestone_execution_mode = coordinated, after the exact
FINALIZE <plan ID> grant, re-dispatch the same finalizer with that grant
- Relay the finalizer's
PASS or BLOCKED result, including its optional
HANDOFF, STATE, and MILESTONE lines. After a granted turn, a relayed
MILESTONE returns FINALIZED; a relayed BLOCKED reports that the open
turn failed and must not be reused
- Own the snapshot lifecycle defined in
executing-plans
Do not receive or adjudicate nested reviewer output. The implementer owns its
task until its reviewer passes and its commit policy is satisfied.
Orchestrator ownership
- Keep only task status, exact implementer
REVIEW and VERIFY lines grouped
by task ID, plan_base_ref, baseline_snapshot, and the resolved
milestone_execution_mode
- Never edit implementation files, plan checkboxes,
Solved defects, or
Execution log
- Never run task gates, reviewers, fix loops, staging, or commits
- Never run final verification or the full gate. The finalizer owns it; relay
its result verbatim
- Never create the PR; the finalizer owns requested PR creation
- Never paste nested review output into orchestrator context
- Dispatch tasks sequentially; implementers share one worktree
Handling implementer status
PASS: accept the terse verification/commit/PR summary
- Preserve every valid
REVIEW line with its task ID for the finalizer; never
repeat review already covering the complete unchanged implementation
- Preserve every valid
VERIFY line with its task ID for the finalizer; never
summarize or discard reusable evidence
LEARNED on either status: relay its lines unchanged in your report. The
subagent already wrote them to the plan; never re-append them yourself
- No
LEARNED block: say nothing about it. Never report "no learnings" or an
empty section. Absence is the normal case
- Implementer
BLOCKED: surface its bullets unchanged
- Finalizer
BLOCKED: surface its bullets and its optional HANDOFF line
unchanged. Only the finalizer emits HANDOFF, for the external-commit path
- Finalizer
STATE: relay it unchanged. It lists modified plan-state files left
uncommitted under Plan file policy: Exclude
- Finalizer
READY: relay it unchanged and wait for the exact matching
FINALIZE grant. It is a resumable pause, not BLOCKED
- Finalizer
MILESTONE: relay it unchanged. It confirms the granted turn ended
with FINALIZED <plan ID>
- Empty, malformed, or verbose output: re-dispatch once with the output contract
- A second invalid response: stop
Dispatch payloads
Pass absolute template paths and values. Never paste template bodies or full
task text. Subagents read the task from plan_path.
Implementer:
MUST read instructions at <skill_dir>/implementer-prompt.md FIRST. Do not
act until you have read it. Then apply:
plan_path = <abs path>
task_id = <task number / heading>
working_dir = <abs path>
plan_base_ref = <SHA captured by executing-plans>
baseline_snapshot = <abs path to classified snapshot directory>
context = <NON-NORMATIVE orientation only: where this task fits,
which prior tasks already landed. Nothing here may be a
requirement, constraint, or design decision>
Put every normative fact in the plan. context is orientation only.
Finalizer:
MUST read instructions at <skill_dir>/finalizer-prompt.md FIRST. Do not
act until you have read it. Then apply:
plan_path = <abs path>
working_dir = <abs path>
plan_base_ref = <SHA captured by executing-plans>
baseline_snapshot = <abs path to classified snapshot directory>
review_evidence = <successful task IDs with their exact REVIEW lines,
or `none`>
verification_evidence = <successful task IDs with their exact VERIFY lines,
or `none`>
milestone_execution_mode = <coordinated | sequential, resolved by
executing-plans; never self-resolve>
milestone_finalize_grant = <exact FINALIZE line copied verbatim from the root
coordinator | none on first dispatch>
<skill_dir> is this file's directory. Pass pointers and values only.
Red flags
- Dispatch multiple implementation subagents in parallel (conflicts)
- Put requirements in dispatch
context
- Ask the orchestrator to run or interpret a review
- Return reviewer transcripts on success
- Edit task checkboxes on the implementer's behalf
- Drop a subagent's
LEARNED lines from the report
- Treat a
LEARNED block as narration and re-dispatch over it
- Treat a missing
LEARNED block as malformed output
- Report an empty
Execution log or an absent LEARNED block as a finding
- Drop a finalizer's
STATE line from the report
- Treat
READY as BLOCKED or delete its resumable finalizer
- Self-grant or alter a root coordinator's
FINALIZE line
- Drop a finalizer's
MILESTONE line from the report
Integration
- ./reviewer-prompt.md - Per-task craft + spec reviewer, dispatched by the
implementer
- ./finalizer-prompt.md - Full-plan review, verification, and final commit
- verification-before-completion - Verifies before claiming completion
- create-pull-request - Required before the finalizer opens a requested PR
1---2name: subagent-driven-development3description: Subagent-per-task MODE of executing-plans. Requires executing-plans, which holds the shared rules; load that first if it is not already loaded.4---56# Subagent-driven development78**Announce at start:** "I'm using subagent-driven development to execute this9plan."1011**Requires `executing-plans`.** Load it first for plan validation, baseline12capture, and dirty-work ownership. This skill delegates each complete task cycle13to one implementer.1415## Workflow1617After the shared `executing-plans` start gates:18191. For each task, dispatch one fresh implementer with `implementer-prompt.md`202. On `PASS`, mark only the harness task complete, retain its exact `REVIEW` and21 `VERIFY` lines grouped by task ID for final evidence reuse, carry its22 `LEARNED` lines into your final report, and dispatch the next task233. On `BLOCKED`, relay its short blocker list and its `LEARNED` lines; stop244. After all tasks, dispatch one fresh finalizer with `finalizer-prompt.md`255. With `milestone_execution_mode = coordinated`, on `READY <plan ID>`, relay it26 to the root milestone execution coordinator and retain the finalizer plus27 `baseline_snapshot`286. With `milestone_execution_mode = coordinated`, after the exact29 `FINALIZE <plan ID>` grant, re-dispatch the same finalizer with that grant307. Relay the finalizer's `PASS` or `BLOCKED` result, including its optional31 `HANDOFF`, `STATE`, and `MILESTONE` lines. After a granted turn, a relayed32 `MILESTONE` returns `FINALIZED`; a relayed `BLOCKED` reports that the open33 turn failed and must not be reused348. Own the snapshot lifecycle defined in `executing-plans`3536Do not receive or adjudicate nested reviewer output. The implementer owns its37task until its reviewer passes and its commit policy is satisfied.3839## Orchestrator ownership4041- Keep only task status, exact implementer `REVIEW` and `VERIFY` lines grouped42 by task ID, `plan_base_ref`, `baseline_snapshot`, and the resolved43 `milestone_execution_mode`44- Never edit implementation files, plan checkboxes, `Solved defects`, or45 `Execution log`46- Never run task gates, reviewers, fix loops, staging, or commits47- Never run final verification or the full gate. The finalizer owns it; relay48 its result verbatim49- Never create the PR; the finalizer owns requested PR creation50- Never paste nested review output into orchestrator context51- Dispatch tasks sequentially; implementers share one worktree5253## Handling implementer status5455- `PASS`: accept the terse verification/commit/PR summary56- Preserve every valid `REVIEW` line with its task ID for the finalizer; never57 repeat review already covering the complete unchanged implementation58- Preserve every valid `VERIFY` line with its task ID for the finalizer; never59 summarize or discard reusable evidence60- `LEARNED` on either status: relay its lines unchanged in your report. The61 subagent already wrote them to the plan; never re-append them yourself62- No `LEARNED` block: say nothing about it. Never report "no learnings" or an63 empty section. Absence is the normal case64- Implementer `BLOCKED`: surface its bullets unchanged65- Finalizer `BLOCKED`: surface its bullets and its optional `HANDOFF` line66 unchanged. Only the finalizer emits `HANDOFF`, for the external-commit path67- Finalizer `STATE`: relay it unchanged. It lists modified plan-state files left68 uncommitted under `Plan file policy: Exclude`69- Finalizer `READY`: relay it unchanged and wait for the exact matching70 `FINALIZE` grant. It is a resumable pause, not `BLOCKED`71- Finalizer `MILESTONE`: relay it unchanged. It confirms the granted turn ended72 with `FINALIZED <plan ID>`73- Empty, malformed, or verbose output: re-dispatch once with the output contract74- A second invalid response: stop7576## Dispatch payloads7778Pass absolute template paths and values. Never paste template bodies or full79task text. Subagents read the task from `plan_path`.8081**Implementer:**8283```text84MUST read instructions at <skill_dir>/implementer-prompt.md FIRST. Do not85act until you have read it. Then apply:86 plan_path = <abs path>87 task_id = <task number / heading>88 working_dir = <abs path>89 plan_base_ref = <SHA captured by executing-plans>90 baseline_snapshot = <abs path to classified snapshot directory>91 context = <NON-NORMATIVE orientation only: where this task fits,92 which prior tasks already landed. Nothing here may be a93 requirement, constraint, or design decision>94```9596Put every normative fact in the plan. `context` is orientation only.9798**Finalizer:**99100```text101MUST read instructions at <skill_dir>/finalizer-prompt.md FIRST. Do not102act until you have read it. Then apply:103 plan_path = <abs path>104 working_dir = <abs path>105 plan_base_ref = <SHA captured by executing-plans>106 baseline_snapshot = <abs path to classified snapshot directory>107 review_evidence = <successful task IDs with their exact REVIEW lines,108 or `none`>109 verification_evidence = <successful task IDs with their exact VERIFY lines,110 or `none`>111 milestone_execution_mode = <coordinated | sequential, resolved by112 executing-plans; never self-resolve>113 milestone_finalize_grant = <exact FINALIZE line copied verbatim from the root114 coordinator | none on first dispatch>115```116117`<skill_dir>` is this file's directory. Pass pointers and values only.118119## Red flags120121- Dispatch multiple implementation subagents in parallel (conflicts)122- Put requirements in dispatch `context`123- Ask the orchestrator to run or interpret a review124- Return reviewer transcripts on success125- Edit task checkboxes on the implementer's behalf126- Drop a subagent's `LEARNED` lines from the report127- Treat a `LEARNED` block as narration and re-dispatch over it128- Treat a missing `LEARNED` block as malformed output129- Report an empty `Execution log` or an absent `LEARNED` block as a finding130- Drop a finalizer's `STATE` line from the report131- Treat `READY` as `BLOCKED` or delete its resumable finalizer132- Self-grant or alter a root coordinator's `FINALIZE` line133- Drop a finalizer's `MILESTONE` line from the report134135## Integration136137- **./reviewer-prompt.md** - Per-task craft + spec reviewer, dispatched by the138 implementer139- **./finalizer-prompt.md** - Full-plan review, verification, and final commit140- **verification-before-completion** - Verifies before claiming completion141- **create-pull-request** - Required before the finalizer opens a requested PR