Use when executing implementation plans with independent tasks in the current session
Scanned 5/27/2026
Install via CLI
openskills install DollarDill/beads-superpowers---
name: subagent-driven-development
description: Use when executing implementation plans with independent tasks in the current session
---
# Subagent-Driven Development
Execute plan by dispatching fresh subagent per task, with two-stage review after each: spec compliance review first, then code quality review.
**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 + two-stage review (spec then quality) = high quality, fast iteration
**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: BLOCKED status you cannot resolve, ambiguity that genuinely prevents progress, or all tasks complete. "Should I continue?" prompts and progress summaries waste their time — they asked you to execute the plan, so execute it.
## When to Use
```dot
digraph when_to_use {
"Have implementation plan?" [shape=diamond];
"Tasks mostly independent?" [shape=diamond];
"Stay in this session?" [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?" -> "Stay in this session?" [label="yes"];
"Tasks mostly independent?" -> "Manual execution or brainstorm first" [label="no - tightly coupled"];
"Stay in this session?" -> "subagent-driven-development" [label="yes"];
"Stay in this session?" -> "executing-plans" [label="no - parallel session"];
}
```
**vs. Executing Plans (parallel session):**
- Same session (no context switch)
- Fresh subagent per task (no context pollution)
- Two-stage review after each task: spec compliance first, then code quality
- Faster iteration (no human-in-loop between tasks)
## The Process (Sequential Mode)
> This section describes **sequential execution** — one task at a time in a shared epic worktree. This is the default when tasks have dependencies or only one task is unblocked. For parallel execution of independent tasks, see **Parallel Batch Mode** below.
```dot
digraph process {
rankdir=TB;
subgraph cluster_per_task {
label="Per Task";
"Dispatch implementer subagent (./implementer-prompt.md)" [shape=box];
"Implementer subagent asks questions?" [shape=diamond];
"Answer questions, provide context" [shape=box];
"Implementer subagent implements, tests, commits, self-reviews" [shape=box];
"Dispatch spec reviewer subagent (./spec-reviewer-prompt.md)" [shape=box];
"Spec reviewer subagent confirms code matches spec?" [shape=diamond];
"Implementer subagent fixes spec gaps" [shape=box];
"Dispatch code quality reviewer subagent (./code-quality-reviewer-prompt.md)" [shape=box];
"Code quality reviewer subagent approves?" [shape=diamond];
"Implementer subagent fixes quality issues" [shape=box];
"bd close <task-id> --reason 'Completed'" [shape=box];
}
"Read plan, extract all tasks, create epic bead + child beads (bd create)" [shape=box];
"More tasks remain?" [shape=diamond];
"Dispatch final code reviewer subagent for entire implementation" [shape=box];
"Use superpowers:finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
"Read plan, extract all tasks, create epic bead + child beads (bd create)" -> "Dispatch implementer subagent (./implementer-prompt.md)";
"Dispatch implementer subagent (./implementer-prompt.md)" -> "Implementer subagent asks questions?";
"Implementer subagent asks questions?" -> "Answer questions, provide context" [label="yes"];
"Answer questions, provide context" -> "Dispatch implementer subagent (./implementer-prompt.md)";
"Implementer subagent asks questions?" -> "Implementer subagent implements, tests, commits, self-reviews" [label="no"];
"Implementer subagent implements, tests, commits, self-reviews" -> "Dispatch spec reviewer subagent (./spec-reviewer-prompt.md)";
"Dispatch spec reviewer subagent (./spec-reviewer-prompt.md)" -> "Spec reviewer subagent confirms code matches spec?";
"Spec reviewer subagent confirms code matches spec?" -> "Implementer subagent fixes spec gaps" [label="no"];
"Implementer subagent fixes spec gaps" -> "Dispatch spec reviewer subagent (./spec-reviewer-prompt.md)" [label="re-review"];
"Spec reviewer subagent confirms code matches spec?" -> "Dispatch code quality reviewer subagent (./code-quality-reviewer-prompt.md)" [label="yes"];
"Dispatch code quality reviewer subagent (./code-quality-reviewer-prompt.md)" -> "Code quality reviewer subagent approves?";
"Code quality reviewer subagent approves?" -> "Implementer subagent fixes quality issues" [label="no"];
"Implementer subagent fixes quality issues" -> "Dispatch code quality reviewer subagent (./code-quality-reviewer-prompt.md)" [label="re-review"];
"Code quality reviewer subagent approves?" -> "bd close <task-id> --reason 'Completed'" [label="yes"];
"bd close <task-id> --reason 'Completed'" -> "More tasks remain?";
"More tasks remain?" -> "Dispatch implementer subagent (./implementer-prompt.md)" [label="yes"];
"More tasks remain?" -> "Dispatch final code reviewer subagent for entire implementation" [label="no"];
"Dispatch final code reviewer subagent for entire implementation" -> "Use superpowers:finishing-a-development-branch";
}
```
**Checking for remaining tasks:** Use `bd ready --parent <epic-id>` to see remaining unblocked child tasks. Use `bd epic status <epic-id>` for a summary view of completion percentage. When `bd ready` returns no results for the epic, all tasks are complete.
## Parallel Batch Mode
When `bd ready --parent <epic-id>` returns multiple unblocked tasks, those tasks have no dependencies between them and can execute in parallel — each in its own isolated `bd worktree`.
**Core principle:** One `bd worktree` per task + parallel dispatch = safe concurrency with per-task rollback.
**Parallel cap:** Maximum 5 subagents per batch. If more tasks are unblocked, split into batches of 5.
### Batch Execution Flow
```dot
digraph parallel_batch {
rankdir=TB;
"bd ready --parent <epic-id>" [shape=box];
"How many unblocked?" [shape=diamond];
"0: All done → finishing-a-development-branch" [shape=box style=filled fillcolor=lightgreen];
"1: Sequential mode (run in epic worktree)" [shape=box];
">1: Parallel batch" [shape=box];
"Create bd worktree per task (max 5)" [shape=box];
"Dispatch subagents in parallel (one Agent call per task, all in one message)" [shape=box];
"Two-stage review per task" [shape=box];
"All reviews pass?" [shape=diamond];
"Merge passed task branches into epic worktree" [shape=box];
"bd worktree remove completed tasks" [shape=box];
"Run full test suite on epic worktree" [shape=box];
"Integration tests pass?" [shape=diamond];
"systematic-debugging → fix" [shape=box];
"Handle failed tasks" [shape=box];
"bd ready --parent <epic-id>" -> "How many unblocked?";
"How many unblocked?" -> "0: All done → finishing-a-development-branch" [label="0"];
"How many unblocked?" -> "1: Sequential mode (run in epic worktree)" [label="1"];
"1: Sequential mode (run in epic worktree)" -> "bd ready --parent <epic-id>" [label="after task completes"];
"How many unblocked?" -> ">1: Parallel batch" [label="2-5+"];
">1: Parallel batch" -> "Create bd worktree per task (max 5)";
"Create bd worktree per task (max 5)" -> "Dispatch subagents in parallel (one Agent call per task, all in one message)";
"Dispatch subagents in parallel (one Agent call per task, all in one message)" -> "Two-stage review per task";
"Two-stage review per task" -> "All reviews pass?";
"All reviews pass?" -> "Merge passed task branches into epic worktree" [label="yes"];
"All reviews pass?" -> "Handle failed tasks" [label="some failed"];
"Handle failed tasks" -> "Merge passed task branches into epic worktree" [label="merge passing tasks"];
"Merge passed task branches into epic worktree" -> "bd worktree remove completed tasks";
"bd worktree remove completed tasks" -> "Run full test suite on epic worktree";
"Run full test suite on epic worktree" -> "Integration tests pass?";
"Integration tests pass?" -> "bd ready --parent <epic-id>" [label="yes → next batch"];
"Integration tests pass?" -> "systematic-debugging → fix" [label="no"];
"systematic-debugging → fix" -> "Run full test suite on epic worktree";
}
```
### Parallel Batch Walkthrough
```
1. Orchestrator creates epic worktree (once, at the start):
bd worktree create <epic-name>
2. Get unblocked tasks:
bd ready --parent <epic-id>
→ Returns N tasks with no unresolved dependencies
3. If N > 1 (parallel batch, cap at 5 per batch):
For each task in the batch:
bd worktree create <task-name> --branch feature/<epic>/<task>
4. Dispatch all subagents in parallel:
Read ./implementer-prompt.md, then one Agent tool call per task, ALL in the same message:
Agent({
description: "Implement Task N: <name>",
prompt: "<implementer-prompt content with 'Work from: <task-worktree-path>'>",
subagent_type: "general-purpose"
})
5. Two-stage review per task (can also run in parallel):
Spec compliance review → Code quality review
6. For each task that passes review:
cd <epic-worktree-path>
git merge feature/<epic>/<task>
bd worktree remove <task-name>
bd close <task-id> --reason "Completed: reviews passed"
7. Run full test suite on epic worktree (integration check):
If fail → invoke systematic-debugging → fix before next batch
8. Re-run bd ready --parent <epic-id>
Repeat from step 2 until no tasks remain
9. If N == 1 at any point:
Sequential mode — run in epic worktree directly, no per-task worktree needed
```
### Failed Task Handling
When a parallel task fails review:
1. **Do not merge** its task branch into the epic branch.
2. **Option A — Re-dispatch:** Keep the task worktree. Re-dispatch a fix subagent with reviewer feedback. Re-review after fix.
3. **Option B — Discard:** `bd worktree remove <task-name>` discards the branch. Task bead stays open and will appear in the next `bd ready --parent` batch.
4. Other parallel tasks that passed review are still merged independently — one failure does not block the batch.
### Mode Selection
```
tasks = bd ready --parent <epic-id>
if len(tasks) == 0:
All done → invoke finishing-a-development-branch
elif len(tasks) == 1:
Sequential mode (run in epic worktree, existing behavior)
elif len(tasks) <= 5:
Parallel batch (one bd worktree per task)
else:
Take first 5 → parallel batch, remaining wait for next iteration
```
Mode selection is automatic. The orchestrator checks after every batch or sequential task completes.
## 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, design, and review tasks**: use the most capable available model.
**Task complexity signals:**
- 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
## Handling Implementer Status
Implementer subagents report one of four statuses. Handle each appropriately:
**DONE:** Proceed to spec compliance review.
**DONE_WITH_CONCERNS:** The implementer completed the work but flagged doubts. Read the concerns before proceeding. If the concerns are about correctness or scope, address them before review. If they're observations (e.g., "this file is getting large"), note them and proceed to review.
**NEEDS_CONTEXT:** The implementer needs information that wasn't provided. Provide the missing context and re-dispatch.
**BLOCKED:** The implementer cannot complete the task. Assess the blocker:
1. If it's a context problem, provide more context and re-dispatch with the same model
2. If the task requires more reasoning, re-dispatch with a more capable model
3. If the task is too large, break it into smaller pieces
4. If the plan itself is wrong, escalate to the human
**Never** ignore an escalation or force the same model to retry without changes. If the implementer said it's stuck, something needs to change.
If you discovered something reusable, capture it before closing:
```bash
# Only if worth preserving for future sessions:
bd remember "sdd: <pattern about subagent delegation>"
```
## Prompt Templates
Dispatch via the `Agent` tool:
1. `Read` the prompt template file
2. Use its content as the `prompt` parameter
3. Use `subagent_type: "general-purpose"` (do NOT use `"implementer"` — that is Claude Code's built-in implementer agent with its own system prompt, which overrides the prompt template)
- `./implementer-prompt.md` - Dispatch implementer subagent
- `./spec-reviewer-prompt.md` - Dispatch spec compliance reviewer subagent
- `./code-quality-reviewer-prompt.md` - Dispatch code quality reviewer subagent
## Example Workflow
```
You: I'm using Subagent-Driven Development to execute this plan.
[Read plan file once: .internal/plans/feature-plan.md]
[Extract all 5 tasks with full text and context]
[Create epic bead: bd create "Feature: hook installation" -t epic -p 2]
[Create child beads for each task:]
[ bd create "Task 1: Hook installation script" -t task --parent <epic-id>]
[ bd create "Task 2: Platform detection" -t task --parent <epic-id>]
[ bd create "Task 3: Integration tests" -t task --parent <epic-id>]
[Set dependencies: bd dep add <task-3-id> <task-1-id>]
Task 1: Hook installation script
[Get Task 1 text and context (already extracted)]
[Dispatch implementation subagent with full task text + context]
Implementer: "Before I begin - should the hook be installed at user or system level?"
You: "User level (~/.config/superpowers/hooks/)"
Implementer: "Got it. Implementing now..."
[Later] Implementer:
- Implemented install-hook command
- Added tests, 5/5 passing
- Self-review: Found I missed --force flag, added it
- Committed
[Dispatch spec compliance reviewer]
Spec reviewer: ✅ Spec compliant - all requirements met, nothing extra
[Get git SHAs, dispatch code quality reviewer]
Code reviewer: Strengths: Good test coverage, clean. Issues: None. Approved.
[bd close <task-1-id> --reason "Completed: spec + quality review passed"]
Task 2: Recovery modes
[Get Task 2 text and context (already extracted)]
[Dispatch implementation subagent with full task text + context]
Implementer: [No questions, proceeds]
Implementer:
- Added verify/repair modes
- 8/8 tests passing
- Self-review: All good
- Committed
[Dispatch spec compliance reviewer]
Spec reviewer: ❌ Issues:
- Missing: Progress reporting (spec says "report every 100 items")
- Extra: Added --json flag (not requested)
[Implementer fixes issues]
Implementer: Removed --json flag, added progress reporting
[Spec reviewer reviews again]
Spec reviewer: ✅ Spec compliant now
[Dispatch code quality reviewer]
Code reviewer: Strengths: Solid. Issues (Important): Magic number (100)
[Implementer fixes]
Implementer: Extracted PROGRESS_INTERVAL constant
[Code reviewer reviews again]
Code reviewer: ✅ Approved
[bd close <task-2-id> --reason "Completed: spec + quality review passed"]
...
[After all tasks]
[Dispatch final code-reviewer]
Final reviewer: All requirements met, ready to merge
Done!
```
## Advantages
**vs. Manual execution:**
- Subagents follow TDD naturally
- Fresh context per task (no confusion)
- Parallel-safe (subagents don't interfere)
- Subagent can ask questions (before AND during work)
**vs. Executing Plans:**
- Same session (no handoff)
- Continuous progress (no waiting)
- Review checkpoints automatic
**Efficiency gains:**
- No file reading overhead (controller provides full text)
- Controller curates exactly what context is needed
- Subagent gets complete information upfront
- Questions surfaced before work begins (not after)
**Quality gates:**
- Self-review catches issues before handoff
- Two-stage review: spec compliance, then code quality
- Review loops ensure fixes actually work
- Spec compliance prevents over/under-building
- Code quality ensures implementation is well-built
**Cost:**
- More subagent invocations (implementer + 2 reviewers per task)
- Controller does more prep work (extracting all tasks upfront)
- Review loops add iterations
- But catches issues early (cheaper than debugging later)
## Red Flags
**Never:**
- Start implementation on main/master branch without explicit user consent
- Skip reviews (spec compliance OR code quality)
- Proceed with unfixed issues
- Dispatch parallel subagents WITHOUT per-task worktree isolation (each subagent MUST have its own `bd worktree`)
- Dispatch more than 5 parallel subagents in a single batch (resource exhaustion)
- Use Claude's `isolation: "worktree"` parameter instead of `bd worktree` (bypasses beads DB sharing)
- Make subagent read plan file (provide full text instead)
- Skip scene-setting context (subagent needs to understand where task fits)
- Ignore subagent questions (answer before letting them proceed)
- Accept "close enough" on spec compliance (spec reviewer found issues = not done)
- Skip review loops (reviewer found issues = implementer fixes = review again)
- Let implementer self-review replace actual review (both are needed)
- **Start code quality review before spec compliance is ✅** (wrong order)
- Move to next task while either review has open issues
**If subagent asks questions:**
- Answer clearly and completely
- Provide additional context if needed
- Don't rush them into implementation
**If reviewer finds issues:**
- Implementer (same subagent) fixes them
- Reviewer reviews again
- Repeat until approved
- Don't skip the re-review
**If subagent fails task:**
- Dispatch fix subagent with specific instructions
- Don't try to fix manually (context pollution)
## Integration
**Required workflow skills:**
- **superpowers:using-git-worktrees** - REQUIRED: Set up isolated workspace before starting
- **superpowers:writing-plans** - Creates the plan this skill executes
- **superpowers:requesting-code-review** - Code review template for reviewer subagents
- **superpowers:finishing-a-development-branch** - Complete development after all tasks
- **superpowers:dispatching-parallel-agents** - SDD's parallel batch mode uses this skill's dispatch pattern: when `bd ready --parent` returns multiple unblocked tasks, up to 5 are dispatched concurrently, each in its own worktree
- **superpowers:receiving-code-review** - When two-stage review produces feedback, this skill's anti-sycophancy protocol ensures technical evaluation rather than blind acceptance
**Subagents should use:**
- **superpowers:test-driven-development** - Subagents follow TDD for each task
**Parallel mode uses:**
- **superpowers:using-git-worktrees** - Multiple worktrees for parallel task isolation
- **superpowers:systematic-debugging** - Integration test failures after batch merge
**Alternative workflow:**
- **superpowers:executing-plans** - Use for parallel session instead of same-session execution
No comments yet. Be the first to comment!