用途
Implement Spec 的目标是在一次会话内构建一个规格说明中的全部任务(ticket),方式是指挥多个实现者子智能体,而不是自己写代码。它把任务视为一个任务图(task graph),而不是线性步骤列表:任务之间的 blocked-by 边意味着总存在一个“前沿”,即一批可以立即动手、互不阻塞的任务,因此可以并行构建。最终把整个规格落在一个集成分支上,关闭每个任务,并按用户选择的方式交付:一个 PR、每组任务一个 PR 的 PR 栈,或直接推送分支。
主要能力
- 读取规格说明,优先读 Build Contract 部分,然后读每个任务的 frontmatter(status、blocked-by、deploy-gate、claimed-by)。
- 若尚无 tickets/ 目录,按 to-tickets 的规则自行切分任务:纵向切片、诚实的 blocked-by 边,以扩大可并行前沿。
- 跳过已关闭的任务和已被他人认领的任务,并在报告中列出。
- 处理 deploy-gate 任务:遇到 deploy-gate: true 时构建到该任务为止并停下,以 PR 交付;其依赖任务在该 PR 部署后开始。若依赖任务需等待门禁,可在首个派发前询问:停在门禁,或在从门禁分支尖端切出的第二个集成分支 <slug>-2 上继续构建依赖。
- 在派发前沿任务时,为每个任务创建独立 worktree,安装依赖、复制本地环境配置,必要时创建独立测试数据库并登记到 scratch-databases。
- 支持指定并发上限(默认 4,每个实现者跑一套测试)。
- 实现者子智能体按 tdd 技能以测试优先方式构建任务,运行聚焦测试并等待结果,提交前合并当前集成分支尖端并重跑测试,最后提交不超过十行的报告。
- 合并每个实现者的分支时使用 --no-ff,冲突时调用 resolving-merge-conflicts;失败退回同一实现者,保持其 worktree 与任务上下文。
- 合并后更新任务看板,并发送一行进度,避免用户主动询问状态。
- 需要用户决策时,释放该任务及其依赖,继续构建其余前沿,最后集中提问;只有全部剩余任务都等待答案时才停下来。
- 整条分支完成后调用一次 code-review,把可执行发现交给单个实现者修复并重审;两轮评审为预算,第二轮仍有可执行发现则停止修复并在最终报告与 PR 中列出。
- 运行实现技能的最终检查与 verify,一次性核对每个任务的验收标准。
- 对已验证任务追加 ## Resolution 并设为 closed,单独提交跟踪器(docs(scratch): <slug> resolutions)。
- 按 PR delivery 推送、开 PR(或按 Stacked PRs 开栈),读取一次评审线程。
- 清理本次运行创建的资源:herd unlink、git worktree remove(不加 --force)、git branch -d、删除已登记的测试数据库及并行测试副本;仅删除登记行在数据库成功删除之后。
- 中途停止时,合并已落地的任务,询问取消哪些运行中的实现者,并释放其任务、保留 worktree 与分支;重跑同一规格可恢复:有报告与分支的已合并任务先合并而非重建。
使用方式
- 调用方式:以 /implement-spec <spec> 形式使用;相近场景可用 /implement <spec> all(本会话内逐个构建,无子智能体,也是 harness 不支持子智能体时的回退)或 autopilot(你离开时由新的顶层会话驱动任务)。
- 与子智能体沟通使用上下文指针:规格路径、任务路径、阻塞解决方案、笔记、提交等,不粘贴指针已能到达的内容,要求稀疏报告。
- 在首个派发前,一次性询问 worktree 选择(在 .claude/worktrees/<slug> 构建集成分支,推荐;或切换当前检出)、交付方式(一个 PR、PR 栈、或仅分支无 PR),以及适用的部署门禁。
- 集成分支从最新的 origin/<default> 切出,携带规格的 .scratch/<slug>/;记录 base_sha。
- 笔记目录设在所有 worktree 之外:notes="$(git rev-parse --path-format=absolute --git-common-dir)/implement-spec/<slug>"。多个任务需要同一探索时,先跑一个只读探索子智能体把发现写入笔记。
- 各实现者 worktree 用 git worktree add -b <slug>--<NN> <main checkout>/.claude/worktrees/<slug>--<NN> <integration tip> 创建,并使其可运行。
- 需要真实数据库时为其创建独立数据库(<app db>spec<slug>_<NN>,不使用主检出环境或测试配置中的名字),创建后立即用 printf 登记到 scratch-databases。
- 实现者子智能体在 harness 允许时后台运行(Claude Code 默认后台并在完成时唤醒;Codex 用 spawn_agent 并保存 agent id 对应 <slug>--<NN>,用 wait_agent 收集报告)。
- 结束时打印 pipeline 结束块,包含已完成情况与下一步建议(如 PR 已开且评审机器人仍在运行 → /resolve-review-comments <PR>;PR 栈已开 → /triage-github-pr;停在部署门禁 → 部署后 /implement-spec <spec>;有释放或未关闭任务 → /implement <ticket> 或重跑 /implement-spec;构建暴露未决决策 → /grill-me 后重跑 /to-spec;运行跑偏 → /retro)。
适用场景
适用于已有(或可按 to-tickets 规则切分出)任务图、希望并行加速构建整个规格、并统一在一个集成分支上交付的开发者。适合需要处理部署门禁、PR 栈、多 worktree 隔离测试环境的复杂规格实现。
限制
- 不得在本轮未创建的数据库上执行重置、回滚、删除或截断等破坏性操作,除非获得明确批准;架构变更走新迁移。
- 使用标识符前需验证:路由名、配置键、枚举值、包 API。
- harness 不支持子智能体时回退到 /implement all,并说明后停止。
- 仅识别到的技术栈为 Laravel(composer.json 含 laravel/framework)时读取 references/laravel.md;其他技术栈的引用暂未提供。
- 两轮评审为预算,第二轮仍有可执行发现则停止修复并列入最终报告。
- 清理时不得使用 --force;git branch -d 是唯一的分支删除方式。
- 清理保留的 worktree 会连带保留其关联资源,留待 repository-cleanup 稍后处理。
- 并发默认上限为 4,因为每个实现者都跑测试套件。
- 测试运行必须在后台之外,不可将测试运行放到后台后空闲等待。