skills/subagent-driven-development/SKILL.md
Use when executing an existing implementation plan with independent tasks by using task subagents in the current session.
npx skillsauth add Chikage0o0/opencode subagent-driven-developmentInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
在每个任务边界派遣一个全新的子代理来执行计划,每个任务之后进行两阶段审查:先进行规格合规审查,然后进行代码审查。只有两个审查都通过后,控制器才通过 git-commit 技能提交任务。
为什么使用子代理: 你将任务委派给具有隔离上下文的专门代理。通过精确设计它们的指令和上下文,你确保它们保持专注并成功完成任务。它们绝不应继承你的会话上下文或历史——你准确地构建它们所需的内容。这也为你自己的协调工作保留了上下文。
核心原则: 每个任务边界使用全新子代理 + 任务内同类型子代理持续复用 + 两阶段审查(先规格后代码审查)+ 控制器仅在批准后用 git-commit 提交 = 高质量、快速迭代
角色行为定义在 agents/*.md 中,而完整的任务特定上下文位于本技能的 *-dispatch-prompt.md 模板中。
flowchart TD
A{有实施计划?} -->|是| B{任务基本独立?}
A -->|否| C[手动执行或先头脑风暴]
B -->|是| D{留在当前会话?}
B -->|否-紧密耦合| C
D -->|是| E[subagent-driven-development]
D -->|否-并行会话| F[executing-plans]
与 executing-plans(并行会话)的对比:
在读取任务或派遣任何实现子代理之前:
git branch --show-currentmain 或 master,在实施前请求用户明确许可main/master 上直接开发,立即停止flowchart TD
subgraph PerTask[每个任务]
A[派遣实现子代理] --> B{NEEDS_CONTEXT/BLOCKED?}
B -->|需要上下文| C[控制器直接回答或询问用户]
C --> A
B -->|就绪| D[实现子代理实现、测试、自审]
D --> E[派遣规格审查子代理]
E --> F{代码符合规格?}
F -->|否| G[实现子代理修复规格缺口]
G --> E
F -->|是| H[派遣代码审查子代理]
H --> I{代码审查批准?}
I -->|否| J[实现子代理修复代码审查问题]
J --> H
I -->|是| K[控制器使用 git-commit 提交已批准的任务变更]
K --> L[标记任务完成]
end
M[运行 git branch --show-current] --> N{分支名为空?}
N -->|是| O[停止并询问用户]
N -->|否| P{是 main/master?}
P -->|是| Q[请求用户明确许可]
Q --> R{获得许可?}
R -->|否| S[立即停止]
R -->|是| T[读取计划,创建 TodoWrite]
P -->|否| T
T --> A
L --> U{还有更多任务?}
U -->|是| A
U -->|否| V[派遣最终代码审查子代理]
V --> W[使用 finishing-a-development-branch]
每个任务的提交仅在规格合规审查和代码审查都批准该任务后才进行。审查者将任务未提交的差异与任务的基础提交进行比较;控制器在审查循环通过后必须使用 git-commit 技能提交,不能让实现者或任何通用子代理执行提交。
审查通过后的提交是控制器职责,不是实现者职责。
git-commit 技能。task 调用专用 git-commit 子代理执行提交。git-commit 报告 hook 失败、验证失败或其他阻塞,停止并向用户报告;不要回退到裸 git commit、不要要求实现者提交。git-commit 技能派遣专用子代理执行该例外提交;控制器不能自己运行 git commit --no-verify。红旗: 任何“让同一实现子代理提交”“只是运行一下 git commit”“我自己加个 --no-verify 更快”“这次只提交测试可以例外”的想法,都是绕过提交调度器。停止并改用 git-commit 技能。
任务边界 hook 例外: 只用于计划任务拆分导致当前任务按设计无法通过仓库提交检查的情况,例如 RED 基线测试提交。必须同时满足:用户已授权、当前任务双审已批准、提交范围只包含当前任务、失败原因来自任务边界而不是普通质量问题。该例外不允许用于跳过真实 lint/build/security 问题,也不允许跳过后续任务把测试转绿的责任。
使用能够胜任每个角色的最低能力模型,以节省成本并提高速度。
机械实现任务(独立函数、明确的规格、1-2 个文件):使用快速、廉价的模型。当计划定义明确时,大多数实现任务都是机械性的。
集成和判断任务(多文件协调、模式匹配、调试):使用标准模型。
架构、设计和审查任务:使用可用的最强模型。
任务复杂度信号:
上下文隔离是这个工作流的全部意义所在。将每个计划任务视为一个硬边界。
必须遵守的规则:
task 调用,不要传递之前的 task_id。task_id 值,无论是实现者、规格审查者还是代码审查者。task_id。 适用于 implementer、spec-reviewer 和 code-reviewer。NEEDS_CONTEXT、BLOCKED 后补充上下文、重新派遣、规格审查/修复循环、代码审查/修复循环,都必须恢复该任务中对应类型的上一个 task_id。task_id 复用速查:
| 场景 | implementer | spec-reviewer | code-reviewer |
|------|---------------|-----------------|-----------------|
| 同一任务首次派遣该类型 | 新会话 | 新会话 | 新会话 |
| 同一任务再次派遣该类型 | 复用本任务上一次 implementer task_id | 复用本任务上一次 spec-reviewer task_id | 复用本任务上一次 code-reviewer task_id |
| 进入不同任务 | 新会话,不复用上一任务 | 新会话,不复用上一任务 | 新会话,不复用上一任务 |
派遣前控制器的合理性检查:
task_id 的行为都是对工作流的违反。task_id 的行为都是对工作流的违反。实现者子代理报告四种状态之一。分别适当处理:
DONE(完成): 进入规格合规审查。
DONE_WITH_CONCERNS(完成但有顾虑): 实现者已完成工作但标记了疑虑。在继续之前阅读这些顾虑。如果顾虑涉及正确性或范围,在审查前解决它们。如果只是观察意见(例如"这个文件越来越大了"),记录它们并继续审查。
NEEDS_CONTEXT(需要上下文): 实现者需要未提供的信息。直接提供缺失的上下文,或者如果需要人工输入则使用 OpenCode question 工具,然后重新派遣。
BLOCKED(受阻): 实现者无法完成任务。评估阻碍原因:
绝不要忽略上报或在不做改变的情况下强制相同模型重试。如果实现者表示卡住了,说明需要做出改变。
./implementer-dispatch-prompt.md - 派遣真正的 implementer 子代理,附带完整任务详情./spec-reviewer-dispatch-prompt.md - 派遣真正的 spec-reviewer 子代理,附带完整需求上下文./code-reviewer-dispatch-prompt.md - 派遣真正的 code-reviewer 子代理,针对当前任务差异进行审查You: I'm using Subagent-Driven Development to execute this plan.
[Read plan file once: docs/plans/active/feature-plan.md]
[Extract all 5 tasks with full text and context]
[Create TodoWrite with all tasks]
Task 1: Hook installation script
[Get Task 1 line range from plan file: lines 15-45]
[Dispatch implementation subagent with:
- spec_doc_path: docs/specs/active/feature-design.md (if exists)
- task_scope: Task 1 requirements from spec
- plan_file: docs/plans/active/feature-plan.md
- plan_line_range: 15-45
- repo_path: /path/to/repo
]
Implementer: [Reads plan file lines 15-45, implements task]
Implementer: `Status: NEEDS_CONTEXT` - should the hook be installed at user or system level?
You: [Use OpenCode `question` if needed, or answer directly]
[Re-dispatch implementer with clarified context]
[Later] Implementer:
- Implemented install-hook command
- Added tests, 5/5 passing
- Self-review: Found I missed --force flag, added it
[Dispatch spec compliance reviewer with:
- spec_doc_path: docs/specs/active/feature-design.md
- task_scope: Task 1 requirements
- plan_file: docs/plans/active/feature-plan.md
- plan_line_range: 15-45
- diff_base: BASE_SHA
]
Spec reviewer: ✅ Spec compliant - all requirements met, nothing extra
[Dispatch code reviewer against Task 1 base commit + current working tree diff]
Code reviewer: Strengths: Good test coverage, clean. Issues: None. Approved.
[Controller uses git-commit skill to commit approved Task 1 changes]
[Mark Task 1 complete]
Task 2: Recovery modes
[Get Task 2 line range from plan file: lines 47-92]
[Create NEW implementer subagent session for Task 2 (do not reuse Task 1 `task_id`)]
[Dispatch implementation subagent with:
- spec_doc_path: docs/specs/active/feature-design.md
- task_scope: Task 2 requirements from spec
- plan_file: docs/plans/active/feature-plan.md
- plan_line_range: 47-92
- repo_path: /path/to/repo
]
Implementer: [No extra context needed, proceeds]
Implementer:
- Added verify/repair modes
- 8/8 tests passing
- Self-review: All good
[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 reviewer against Task 2 base commit + current working tree diff]
Code reviewer: Strengths: Solid. Issues (Important): Magic number (100)
[Implementer fixes]
Implementer: Extracted PROGRESS_INTERVAL constant
[Code reviewer reviews again]
Code reviewer: ✅ Approved
[Controller uses git-commit skill to commit approved Task 2 changes]
[Mark Task 2 complete]
...
[After all tasks]
[Dispatch final reviewer subagent]
Final reviewer: All requirements met, ready to merge
Done!
与手动执行的对比:
NEEDS_CONTEXT,控制器可以在需要用户输入时使用 question与 executing-plans 的对比:
效率提升:
新的上下文传递方式:
质量关卡:
成本:
绝不要:
NEEDS_CONTEXT 或 BLOCKED 响应(在重新派遣前解决它们)git-commit 技能派遣专用子代理)git commit 或把 git-commit 技能当成手动步骤照抄(必须调用专用 git-commit 子代理)git commit --no-verify(即使用户授权任务边界 hook 例外,也必须由专用 git-commit 子代理执行)task_id(上下文污染)implementer、spec-reviewer 或 code-reviewer 时新开同类型子代理会话task_id 复用如果子代理返回 NEEDS_CONTEXT:
question 询问用户如果审查者发现问题:
如果子代理任务失败:
必需的工作流技能:
writing-plans - 创建本技能执行的计划git-commit - 每个已批准任务的唯一提交入口finishing-a-development-branch - 在所有任务完成后完成开发子代理应使用:
test-driven-development - 子代理为每个任务遵循 TDD替代工作流:
executing-plans - 用于并行会话而非同一会话执行data-ai
Sync delta specs from a change to main specs. Use when the user wants to update main specs with changes from a delta spec, without archiving the change.
development
Create new agent skills with proper structure, progressive disclosure, and bundled resources. Use when user wants to create, write, or build a new skill.
development
Test-driven development with red-green-refactor loop. Use when user wants to build features or fix bugs using TDD, mentions "red-green-refactor", wants integration tests, or asks for test-first development.
development
Simplifies code for clarity without changing behavior. Use for readability, maintainability, and complexity reduction after behavior is understood.