一键导入
executing-tdd-plans
Use when you have a TDD plan from writing-tdd-plans with triplet tasks (RED/GREEN/REVIEW) and dependency graph, ready for execution
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Use when you have a TDD plan from writing-tdd-plans with triplet tasks (RED/GREEN/REVIEW) and dependency graph, ready for execution
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
You MUST use this before any creative work - creating features, building components, adding functionality, or modifying behavior. Explores user intent, requirements and design before implementation.
Use when you have a design document and need to create an implementation plan with enforced TDD and adversarial review gates per task
Use when you have a complex design document where feature decomposition has multiple valid approaches, unclear dependencies, or architectural tradeoffs that benefit from adversarial debate before creating a TDD plan
Use when test suite needs cleanup, when tests are brittle or break on refactors without behavior change, when there are tests coupled to implementation details, or when test maintenance burden is high
Use when reviewing code changes on the current branch, before merging or creating a PR, or when asked to do a code review
Generate codebase specs (semantic) for comprehensive project documentation
| name | executing-tdd-plans |
| description | Use when you have a TDD plan from writing-tdd-plans with triplet tasks (RED/GREEN/REVIEW) and dependency graph, ready for execution |
Execute TDD plans using a team-based architecture: one team member per triplet, each dispatching fresh subagents for RED/GREEN/REVIEW tasks. Progress tracked via TaskCreate/TaskUpdate/TaskList.
Core principle: Create a team and spawn one team member per triplet. Each team member autonomously executes RED → GREEN → REVIEW by dispatching fresh subagents (foreground, blocking). Independent triplets in a layer run in parallel via concurrent team members. The controller manages layer transitions and full-suite verification between layers.
Announce at start: "I'm using the executing-tdd-plans skill to execute this plan."
digraph when_to_use {
"Have implementation plan?" [shape=diamond];
"From writing-tdd-plans?" [shape=diamond];
"Has triplet structure?" [shape=diamond];
"Use executing-tdd-plans" [shape=box, style=filled, fillcolor=lightgreen];
"Use subagent-driven-development" [shape=box];
"Write plan first" [shape=box];
"Have implementation plan?" -> "From writing-tdd-plans?" [label="yes"];
"Have implementation plan?" -> "Write plan first" [label="no"];
"From writing-tdd-plans?" -> "Has triplet structure?" [label="yes"];
"From writing-tdd-plans?" -> "Use subagent-driven-development" [label="no"];
"Has triplet structure?" -> "Use executing-tdd-plans" [label="yes - RED/GREEN/REVIEW per feature"];
"Has triplet structure?" -> "Use subagent-driven-development" [label="no"];
}
digraph process {
rankdir=TB;
"Plan is a directory?" [shape=diamond];
"Read single plan file" [shape=box];
"Read README.md for index + dep graph" [shape=box];
"Read feature files for triplets" [shape=box];
"Extract triplets, dependency graph" [shape=box];
"Compute dependency layers" [shape=box];
"Create team + tasks with dependencies" [shape=box];
"Execute Task 0 scaffolding?" [shape=diamond];
"Dispatch scaffolding subagent" [shape=box];
subgraph cluster_per_layer {
label="Per Layer";
"Spawn team members (one per triplet, run_in_background)" [shape=box];
"Team members execute triplets autonomously" [shape=box];
"Wait for completion messages" [shape=box];
"Controller: full test suite + build" [shape=diamond];
"Controller: wiring smoke test" [shape=diamond];
"Diagnose and fix" [shape=box];
"Mark layer complete" [shape=box];
}
"All layers done?" [shape=diamond];
"Spawn integration team member" [shape=box];
"Controller: final full test suite + build" [shape=box];
"Shutdown team" [shape=box];
"Done" [shape=box, style=filled, fillcolor=lightgreen];
"Plan is a directory?" -> "Read README.md for index + dep graph" [label="yes"];
"Plan is a directory?" -> "Read single plan file" [label="no"];
"Read README.md for index + dep graph" -> "Read feature files for triplets";
"Read feature files for triplets" -> "Extract triplets, dependency graph";
"Read single plan file" -> "Extract triplets, dependency graph";
"Extract triplets, dependency graph" -> "Compute dependency layers";
"Compute dependency layers" -> "Create team + tasks with dependencies";
"Create team + tasks with dependencies" -> "Execute Task 0 scaffolding?";
"Execute Task 0 scaffolding?" -> "Dispatch scaffolding subagent" [label="yes"];
"Execute Task 0 scaffolding?" -> "Spawn team members (one per triplet, run_in_background)" [label="no"];
"Dispatch scaffolding subagent" -> "Spawn team members (one per triplet, run_in_background)";
"Spawn team members (one per triplet, run_in_background)" -> "Team members execute triplets autonomously";
"Team members execute triplets autonomously" -> "Wait for completion messages";
"Wait for completion messages" -> "Controller: full test suite + build";
"Controller: full test suite + build" -> "Controller: wiring smoke test" [label="pass"];
"Controller: full test suite + build" -> "Diagnose and fix" [label="fail"];
"Controller: wiring smoke test" -> "Mark layer complete" [label="pass"];
"Controller: wiring smoke test" -> "Diagnose and fix" [label="fail"];
"Diagnose and fix" -> "Controller: full test suite + build" [style=dashed];
"Mark layer complete" -> "All layers done?";
"All layers done?" -> "Spawn team members (one per triplet, run_in_background)" [label="no - next layer"];
"All layers done?" -> "Spawn integration team member" [label="yes"];
"Spawn integration team member" -> "Controller: final full test suite + build";
"Controller: final full test suite + build" -> "Shutdown team";
"Shutdown team" -> "Done";
}
Plans come in two formats. Detect which one you have:
.md file)Read the plan file and extract everything from it.
The directory follows this structure:
docs/plans/{plan-name}/
README.md # Header, dependency graph, file index, execution instructions
task-0-scaffolding.md # Task 0 (if present)
feature-1-{name}.md # Triplet: RED/GREEN/REVIEW for this feature
feature-2-{name}.md # Triplet: RED/GREEN/REVIEW for this feature
...
integration.md # Integration triplet
Reading order:
README.md first — it contains the Plan Files index table (mapping each file to its feature and dependencies) and the dependency graphtask-0-scaffolding.md if listed in the indexfeature-N-*.md file — each contains the complete triplet (N.1 RED, N.2 GREEN, N.3 REVIEW) for that featureintegration.md for the final integration tripletwiring-ledger.md (used for per-layer wiring smoke tests)flow-trace.md (used to verify user-facing flows are wired end-to-end)From the dependency graph, group triplets into layers:
Example:
Plan: Features A, B, C, D
Dependencies: C depends on A, D depends on A and B
Layer 0: [A, B] ← independent, can run in parallel
Layer 1: [C, D] ← depend on Layer 0
Layer 2: [Integration] ← depends on all
Do NOT ask the user whether to proceed. After analyzing the plan, immediately create tasks, create the team, and begin execution.
TeamCreate:
team_name: "tdd-{plan-name}"
description: "Executing TDD plan: {plan-name}"
After creating the team, read the team config (check ~/.claude/teams/tdd-{plan-name}/config.json or ~/.claude/teams/tdd-{plan-name}.json) to find your own member name. Include this name in team member prompts as the report-to recipient.
Create a task for every step using TaskCreate:
RED: Write failing tests for [feature name]GREEN: Implement [feature name]REVIEW: Adversarial review of [feature name]Set up dependencies with TaskUpdate (addBlockedBy):
Example for Features A (Layer 0), B (Layer 0), C (Layer 1, depends on A):
TaskCreate: "Task 0: Scaffolding" → id: 1
TaskCreate: "RED: Write failing tests for Feature A" → id: 2, blockedBy: [1]
TaskCreate: "GREEN: Implement Feature A" → id: 3, blockedBy: [2]
TaskCreate: "REVIEW: Adversarial review of Feature A" → id: 4, blockedBy: [3]
TaskCreate: "RED: Write failing tests for Feature B" → id: 5, blockedBy: [1]
TaskCreate: "GREEN: Implement Feature B" → id: 6, blockedBy: [5]
TaskCreate: "REVIEW: Adversarial review of Feature B" → id: 7, blockedBy: [6]
TaskCreate: "RED: Write failing tests for Feature C" → id: 8, blockedBy: [4]
TaskCreate: "GREEN: Implement Feature C" → id: 9, blockedBy: [8]
TaskCreate: "REVIEW: Adversarial review of Feature C" → id: 10, blockedBy: [9]
TaskCreate: "RED: Write integration tests" → id: 11, blockedBy: [4, 7, 10]
TaskCreate: "GREEN: Implement integration" → id: 12, blockedBy: [11]
TaskCreate: "REVIEW: Adversarial review of integration" → id: 13, blockedBy: [12]
Dispatch a regular background subagent (no team member needed):
Task(general-purpose, run_in_background: true):
"Execute scaffolding task: [task 0 text]"
Wait for completion, verify, TaskUpdate → completed.
For each layer, spawn one team member per triplet. All team members in a layer run in parallel.
Spawning team members: In a single message, spawn all team members for the current layer:
// Layer 0: Features A and B are independent
Task(general-purpose, team_name: "tdd-{plan}", name: "triplet-a", run_in_background: true):
[triplet runner prompt for Feature A — see ./triplet-runner-prompt.md]
Task(general-purpose, team_name: "tdd-{plan}", name: "triplet-b", run_in_background: true):
[triplet runner prompt for Feature B — see ./triplet-runner-prompt.md]
// End turn. Team members execute autonomously.
Controller workflow per layer:
run_in_background: truewiring-ledger.md (see below)Wiring smoke test (per layer):
After tests and build pass, verify that wiring changes for this layer's tasks actually landed. Read wiring-ledger.md from the plan directory and check entries whose "Registered By Task" matches a task in the current layer:
If any ledger entry is missing, dispatch a fix subagent to implement the missing wiring. This is a lightweight file-read check, not a full integration test.
Ignore team member idle notifications. Team members may go idle briefly during execution — this is normal. Only act on explicit completion messages (SendMessage from team members).
Counting completions: Track how many team members you spawned for the layer. Only proceed to full-suite verification after receiving completion messages from ALL of them.
After all feature layers complete, spawn one team member for the integration triplet:
Task(general-purpose, team_name: "tdd-{plan}", name: "triplet-integration", run_in_background: true):
[triplet runner prompt for Integration — see ./triplet-runner-prompt.md]
After integration completes, run final full test suite + build.
After all work is complete:
shutdown_request to all team membersTeamDelete to clean upEach team member executes a complete triplet by dispatching fresh foreground subagents (blocking calls). See ./triplet-runner-prompt.md for the full prompt template.
Team member workflow:
0. Collect context: read source files mentioned in task text, key imports, prior completed work
1. TaskUpdate RED → in_progress
2. Dispatch RED subagent (foreground) → blocks until done → get result
3. Verify RED: scoped tests must ALL FAIL
4. TaskUpdate RED → completed
5. TaskUpdate GREEN → in_progress
6. Dispatch GREEN subagent (foreground) → blocks until done → get result
7. Verify GREEN: scoped tests must ALL PASS
8. TaskUpdate GREEN → completed
9. TaskUpdate REVIEW → in_progress
10. Dispatch REVIEW subagent (foreground) → blocks until done → get result
11. Check verdict → if FAIL, handle fix cycle
12. TaskUpdate REVIEW → completed
13. SendMessage to controller: result
Since subagents run foreground (blocking), the team member executes the entire triplet in a single continuous flow — no idle/wake cycles between steps.
Fix cycles: If REVIEW fails, team member creates fix triplet tasks and dispatches fix subagents (same pattern). Max 2 fix cycles before reporting FAILURE to controller.
For each task type, use the corresponding prompt template:
./red-task-prompt.md./green-task-prompt.md./adversarial-review-prompt.md./triplet-runner-prompt.mdThe team member reads the RED/GREEN/REVIEW templates to construct its subagent prompts. Include full task text from the plan in each team member prompt — don't make team members read the plan file. The controller does NOT provide codebase context — each team member collects its own context by reading the relevant source files before dispatching subagents (see Step 0 in triplet-runner-prompt.md).
Skill directory path: Include the absolute path to this skill's directory in each team member prompt so it can find the prompt template files (red-task-prompt.md, green-task-prompt.md, adversarial-review-prompt.md). Use the path from which you loaded this skill.
Subagents return minimal responses to conserve context:
SUCCESS or FAILURE <single-line reason>SUCCESSFAILURE followed by one line per Critical/Important issue with file:line and suggested fixWhen multiple team members execute in parallel (same layer), they share the workspace. Global commands — full test suite, project-wide build — pick up other team members' in-progress changes, causing spurious failures.
Rules for team members and their subagents:
npx jest tests/my-feature.test.ts not npm test)npm run build, tsc, or other workspace-wide compilationgit add . or git add -AController responsibilities between layers:
The team member handles fix cycles autonomously:
The controller does NOT handle fix cycles — team members are autonomous. The controller only intervenes if a team member reports FAILURE (escalate to user).
| After | Team member verifies (scoped) | Controller verifies (between layers) | If fails |
|---|---|---|---|
| RED (N.1) | Own test file(s) ALL FAIL | — | Fix: tests may be importing wrong module or testing existing code |
| GREEN (N.2) | Own test file(s) ALL PASS | — | Fix: dispatch new GREEN subagent |
| REVIEW (N.3) | Verdict = PASS, own tests pass | — | Fix: team member handles fix cycle |
| Layer complete | — | Full test suite + full build | Diagnose which feature broke |
| Layer wiring | — | Wiring smoke test against ledger + app startup | Dispatch fix subagent for missing wiring |
| Integration | — | Full test suite + final build | Fix or escalate to user |
If RED tests pass immediately: Something is wrong. Team member should diagnose before proceeding to GREEN.
| Mistake | Fix |
|---|---|
| Spawning team members without creating a team first | Always create team with TeamCreate before spawning members |
| Controller handling fix cycles | Team members handle fix cycles autonomously — controller only manages layers |
| Acting on team member idle notifications | Only react to explicit SendMessage completion messages |
| Spawning team members sequentially instead of parallel | Spawn all team members for a layer in a single message |
| Skipping full test suite between layers | Controller MUST run full suite + build between layers |
| Team member running full test suite | Team members and their subagents run ONLY scoped tests |
| Team member running global builds | No global builds in team members or their subagents |
| Using plain subagents instead of team members for triplets | Team members need the Task tool to dispatch subagents — plain subagents can't |
| Asking user whether to proceed | Do NOT ask — analyze, create team + tasks, execute immediately |
| Making team members read the plan file | Paste full task text into the team member prompt |
| Proceeding when RED tests pass | RED tests MUST fail — team member diagnoses |
| Skipping review because "tests pass" | Review is mandatory — it's a separate tracked task |
| More than 2 fix cycles without reporting | Team member reports FAILURE after 2 fix cycles |
| Running integration before all features done | Integration is always the last layer |
| Dispatching parallel team members for triplets that share files | Check file scopes — parallel triplets must touch different files |
| Not reading team config for controller name | Read config after TeamCreate to get your name for team member prompts |
| Not including build conflict rules in team member prompts | Every team member prompt must include scoped-test and no-global-build constraints |
| Skipping wiring smoke test between layers | Full test suite passing does NOT mean wiring exists — check ledger entries against actual files |
| Not reading wiring-ledger.md and flow-trace.md from the plan | These artifacts are mandatory inputs for per-layer verification |
Never:
run_in_background: trueInput from: writing-tdd-plans (creates the plan this skill executes)