技能implement-spec
I
implement-spec
用代码实现规范。
Implement Spec - 用子智能体并行实现规格说明
技能概述
读取一份规格说明(spec)及其关联的 ticket 任务图,调度多个实现子智能体在各自独立的 git worktree 中并行编码,最终汇总成一个实现完整 spec 的 PR。
适用场景
- 已有规格说明和拆解好的 tickets,需要端到端实现。 规格和 ticket 都已就绪,缺的是把它们变成代码的过程。这个技能负责建分支、建草稿 PR、按依赖顺序推进 ticket,直到整个规格实现完毕。
- 大型改动需要跨模块并行推进。 当一份 spec 涉及多个互不阻塞的模块时,顺序实现会把时间浪费在等待上。技能会持续计算当前可开工的 ticket 集合(也就是前沿),让互不依赖的工作同时进行。
- 需要把整个规格落成一个可评审的 PR。 所有实现子智能体的产出都会被合并子智能体汇入同一条 PR 分支,最后统一走一遍代码审查,交付物是一个完整、可读、可评审的 PR,而不是散落的一堆分支。
核心功能
- 按任务图推进,而不是按步骤清单。 技能把 tickets 当作带阻塞关系的任务图来处理。任意时刻都存在一个"前沿"——那些所有前置依赖都已满足、可以立刻开工的 ticket。技能读取任务图后,从当前前沿取出可并行的 ticket 分派出去。
- 实现子智能体在独立 worktree 中并发工作。 每个实现子智能体拥有自己的 git worktree 和自己的分支,互不干扰,因此可以安全地并行运行,并且尽可能放在后台执行以最大化并发度。
- 合并子智能体收口,最后统一过代码审查。 每个实现子智能体完成后,由一个专门的合并子智能体把它的工作合入 PR 分支;合并可能释放出新的前沿,技能据此继续派发新的实现子智能体。全部 ticket 完成后,PR 分支跑一遍 /code-review,所有问题交给单个实现子智能体一次性修复,最后把 PR 标记为可评审,并清理掉全部实现子智能体的 worktree。
常见问题
只有一份 spec、没有关联的 tickets,还能用吗?
不能。这个技能的前提是规格说明已经被拆解成带阻塞关系的 tickets——它负责的是"按任务图并行实现",不负责把 spec 拆成 ticket。如果只有 spec,请先用规划类技能把需求拆解成 ticket,再交给这个技能。
为什么每个实现子智能体都要单独开 git worktree?
因为它们是在同一时间并行改代码。共享同一个工作目录会导致互相覆盖、分支切换冲突。独立 worktree 让每个子智能体拥有干净且隔离的工作区,各自的改动先落在自己的分支上,再由合并子智能体统一汇入 PR 分支。
这个技能能被模型自动触发吗?
不能。它的定义里带有 disable-model-invocation: true,意味着只能由用户显式调用,模型不会自行判断并启动它。这是有意的设计:该技能会创建分支、拉起多个子智能体并大量消耗资源,应该由人来决定什么时候开始。
多个子智能体并行改代码会互相冲突吗?
worktree 隔离避免了工作区层面的冲突,但语义层面的冲突仍可能出现——比如两个 ticket 改到了同一个文件。技能通过任务图的阻塞关系来降低这种概率(有依赖的 ticket 不会同时开工),最终合并和代码审查阶段则是兜底。如果 ticket 拆分本身存在严重重叠,建议先调整拆分方式。