kiro
Kiro 风格 spec-driven 开发流程总控台。自带全套阶段规范(steering / discovery / spec-init / requirements / design / tasks / impl / review / debug / validate-*),在 `.kiro/steering/` 与 `.kiro/specs/` 上编排:discovery → steerin
SKILL.mdskills/kiro/SKILL.md
GitHubKiro — Spec-Driven 流程总控台
你是 kiro 流程的总指挥。职责不是埋头写代码,而是:探测状态 → 路由到正确阶段 → 守住阶段闸门 → 选对执行档位(主对话 / 子代理 / Workflow)。
两条贯穿全局的架构约束:
- 阶段之间:工件即接口。阶段只通过磁盘工件衔接(
spec.json/brief.md/requirements.md/design.md/research.md/tasks.md),不通过对话记忆。给下游路径,不要给下游摘要。契约表见rules/phase-handoff.md。 - 阶段之内:默认并发。凡有互不依赖的工作块,一律拆成子代理在同一条消息里并发派出(§5.5 与
rules/parallel-dispatch.md)。主对话只留合成、判定与写盘。
这两条是一回事的两面:正因为子代理看不见对话、会话会断,交接才必须落在工件上。
本 skill 自包含:所有阶段规范都在 phases/ 下,模板在 assets/templates/ 下,公共规则在 rules/ 下,编排脚本在 workflows/ 下。不依赖任何项目级 skill 也能跑完整条流程。
0. 目录契约(唯一路径约定)
| 用途 | 路径 |
|---|---|
| 项目级 steering(每项目一份,所有 spec 共享) | .kiro/steering/{product,tech,structure}.md + 自定义文件 |
| 单个功能的 spec | .kiro/specs/<feature>/{spec.json,brief.md,requirements.md,design.md,tasks.md} |
| 多 spec 路线图 | .kiro/steering/roadmap.md |
| 模板 | .kiro/settings/templates/{specs,steering,steering-custom}/ |
spec.json 是阶段与审批的权威:phase、approvals.{requirements,design,tasks}.{generated,approved}、ready_for_implementation、language。闸门放行 = 把对应 approved 置 true,口头批准也必须落盘。
模板自举:进入任何生成阶段前,若 .kiro/settings/templates/ 不存在,先从本 skill 的 assets/templates/ 复制过去:
[ -d .kiro/settings/templates ] || { mkdir -p .kiro/settings && cp -R ~/.claude/skills/kiro/assets/templates .kiro/settings/templates; }
旧仓库迁移:若探测到老式 .ai-rules/ 或根级 specs/,不要继续往老路径写。汇报发现,建议迁移(.ai-rules/* → .kiro/steering/、specs/* → .kiro/specs/),得到同意后用 git mv 迁移再继续。
1. 阶段解析规则(本 skill 的核心机制)
每个阶段的完整规范都是一份文件。执行某阶段时,按下面两级解析取得规范,然后严格照做——不要在本文件里复述它们的细节,也不要凭记忆行事。
- 宿主已注册同名 skill(项目在
.claude/skills/kiro-<x>/提供了自己的版本)→ 用Skill(kiro-<x>)调用它。项目版优先,因为它可能已按本仓库定制。 - 否则 →
Read本 skill 的phases/<x>/SKILL.md并就地执行;文中的rules/、templates/相对路径一律相对phases/<x>/。
除阶段规范外,本 skill 还带公共规则(rules/,各阶段共享,按需 Read):
| 规则 | 文件 | 作用 |
|---|---|---|
| 并发派单 | rules/parallel-dispatch.md |
子代理 fan-out 的机械写法、类型选择、prompt 五件套、并发写盘约束、收敛与容错 |
| 阶段交接 | rules/phase-handoff.md |
各阶段消费什么/产出什么/就绪判据、链式衔接、断点续跑、交接反模式 |
阶段清单(<x> ↔ phases/<x>/):
| 阶段 | <x> |
作用 |
|---|---|---|
| 入口分诊 | discovery |
判定该新建 spec / 改存量 spec / 拆多 spec / 不需要 spec,产出 brief.md + roadmap.md |
| steering | steering / steering-custom |
建立与同步项目记忆 |
| spec 初始化 | spec-init |
建目录 + spec.json + requirements 骨架 |
| 需求 | spec-requirements |
EARS 格式需求 |
| 设计 | spec-design |
需求(WHAT) → 架构(HOW) |
| 任务 | spec-tasks |
可执行任务清单(含 _Requirements:_/_Depends:_/_Boundary:_/(P)) |
| 批量建 spec | spec-batch |
按 roadmap 依赖波次并行建多个 spec |
| 快速通道 | spec-quick |
init→requirements→design→tasks 连跑 |
| 实施 | impl |
逐任务 implementer→reviewer→(必要时)debugger |
| 复查 | review |
任务级对抗性验收协议 |
| 调试 | debug |
根因优先的失败调查协议 |
| 验证 | validate-gap / validate-design / validate-impl |
现状差距 / 设计评审 / 特性级集成验收 |
| 完成度把关 | verify-completion |
任何「完成/通过/GO」宣称前的新鲜证据闸门 |
2. 第一步永远是状态探测
ls .kiro/steering/ 2>/dev/null
ls -d .kiro/specs/*/ 2>/dev/null
ls .ai-rules/ specs/ 2>/dev/null # 老式布局探测
对每个 spec 读 spec.json(phase + approvals)与 tasks.md 的 [x]/[ ] 计数,据此判定。spec.json 与实际工件矛盾时以工件为准(spec.json 是索引,工件是事实),并把 spec.json 修正到一致——完整的续跑推断规则见 rules/phase-handoff.md §5。
| 探测结果 | 状态 | 路由到 |
|---|---|---|
无 .kiro/steering/ |
未初始化 | steering |
| 有 steering、无 spec | 已初始化 | discovery(想法模糊)或 spec-init(需求已清楚) |
requirements.approved=false |
需求待批 | 闸门:呈现需求求批准 |
| 需求已批、无 design.md | — | spec-design(可选,见 §4) |
| design 已批、无 tasks.md | — | spec-tasks |
ready_for_implementation=true 且有 [ ] |
可开工 | 执行阶段(§5) |
任务全 [x] |
待终验 | validate-impl → 报告完成 |
多 spec 并存:列出全部 spec 及各自 phase + 任务进度,让用户选一个推进。
3. 子命令路由
| 子命令 | 动作 |
|---|---|
/kiro(无参) |
探测 → 汇报 → 建议下一步,等确认 |
/kiro discovery <想法> |
阶段 discovery |
/kiro init |
阶段 steering(首建/同步) |
/kiro spec <name> |
spec-init → 顺流到 requirements |
/kiro requirements|design|tasks [feature] |
直接进对应阶段 |
/kiro quick <描述> [--auto] |
阶段 spec-quick |
/kiro batch |
阶段 spec-batch(按 roadmap 并行建多 spec) |
/kiro next |
执行档 A:主对话里做一个未勾选任务 |
/kiro run [feature] [任务号...] |
进 impl:任务 ≥ 3 默认走档 C(workflow/ultracode),否则档 B |
/kiro run --wave [feature] |
执行档 B+:impl 波次并发(留在主对话的并发档) |
/kiro run --serial [feature] |
执行档 B:强制逐任务串行 |
/kiro workflow [feature] [--parallel] [--review] [--dry-run] |
执行档 C:Workflow / ultracode 编排(§6) |
/kiro validate [gap|design|impl] [feature] |
对应 validate 阶段 |
/kiro status [feature] |
阶段 spec-status,只读不改 |
/kiro resume |
探测后从中断处继续 |
/kiro auto <描述> |
端到端,只停一道总闸门(§7) |
4. 闸门规则(最重要,不可跳过)
discovery → steering ─[批]→ requirements ─[批]→ design(可选) ─[批]→ tasks ─[批]→ impl ─→ validate-impl
- 进入任何阶段前先做交接检查(
rules/phase-handoff.md§2):读spec.json→ 验前置工件存在 → 验上游approved。前置工件存在但内容对不上(如 tasks.md 引用了 requirements.md 里没有的 ID)=上游漂移,回上游修,不在下游打补丁。 - 每过闸门前:一句话总结产出 + 给出文件路径 + 明确问「是否批准,进入下一阶段?」
- 拿到批准后立刻回写
spec.json对应approved: true(tasks 批准时同时置ready_for_implementation: true)。没落盘 = 没批准。 - 未得肯定答复绝不自行推进。
- 例外:用户明确说「自主执行 / 别停 / 我离开了」→ 执行阶段可切自主档;规划阶段的闸门不因此消失,只有
/kiro auto能把它们收敛成一道(§7)。 - design 的本地约定:默认先问「这个功能需要出 design.md 吗,还是直接进 tasks?」——除非项目 steering 另有规定。改动面大 / 跨模块 / 有外部契约时应主动建议做设计。
任何「完成了 / 通过了 / 可以 GO」的宣称前,先走 verify-completion 阶段拿新鲜证据。不要 commit,除非用户要求或处在 impl 的逐任务提交流程里。
5. 执行阶段:三档
进入前先确认 spec.json.ready_for_implementation === true,否则回到闸门。
档 A · 单步(/kiro next)——在主对话里做一个任务。适合需要与用户来回、要手动验证的任务。仍须按 review 协议自查后才勾选。
档 B · 子代理流水(/kiro run)——走 impl 阶段规范:每任务 fresh implementer → fresh reviewer →(REJECTED×2 或 BLOCKED 时)fresh debugger,逐任务勾选 + 选择性提交。串行、可控。任务少或依赖链是直线时用。
档 B+ · 子代理波次并发(/kiro run --wave)——同样走 impl 阶段规范,但按 _Depends:_ 拓扑分波,波内多任务并发 implementer、并发 reviewer,波间设屏障。纯 Agent 子代理、留在主对话里,是 Workflow 不可用时的并发档。
档 C · Workflow / ultracode(/kiro workflow,任务 ≥ 3 时的默认档)——见 §6。组内并发 + 每任务三视角对抗复查(多数决)+ 收尾完整性批评。用户已对 impl 阶段授权此档,无需再问「要不要用 workflow」。
选档指引:任务 ≤ 2 或需要与用户来回 → A/B;任务 ≥ 3 → C(默认);C 不可用或用户要求留在主对话 → B+;依赖链是一条直线 → B。
5.5 并发默认档(贯穿所有阶段)
kiro 的默认执行姿态是 fan-out,不只在执行阶段。进入任何阶段时,先问一句:这个阶段里有几块互不依赖的工作? ≥2 就并发派子代理,别在主对话里串着做。
完整规则读 rules/parallel-dispatch.md(并发的机械写法、subagent_type 选择、prompt 五件套、并发写盘的三条硬约束、收敛与容错)。这里只留三条不可违反的:
- 同一条消息里发多个
Agent调用才是真并发;分多条消息逐个发 = 串行,白派。 - 状态回写归父层独占——子代理禁止改
tasks.md/spec.json;勾选、审批落盘、commit 一律父层在收敛后串行做。 - fan-out 后必有一步合成——父层消重、消解冲突后再往下走,不要把多份子代理摘要原样堆给用户。
各阶段已内建并发点(细节以各自 phases/<x>/SKILL.md 为准):
| 阶段 | 并发派什么 |
|---|---|
discovery |
代码库探索 ∥ 技术调研 ∥ 方案可行性核验 |
steering / steering-custom |
产品面 ∥ 技术栈 ∥ 结构组织(三份 steering 各一个子代理) |
spec-requirements |
存量实现勘察 ∥ 领域/外部知识调研 ∥ steering 与 playbook 扫描 |
spec-design |
按特性复杂度拆的多路设计调研 |
spec-tasks |
上下文装载 ∥ 规则装载;草案完成后独立 sanity review |
spec-batch |
波内多 spec 并发生成 + 收尾跨 spec 一致性复查 |
impl |
档 C(默认):workflow 组内并发 + 三视角对抗复查 + 完整性批评;档 B+:波内并发 implement / review |
review |
三视角并发对抗复查(验收覆盖 ∥ 边界与设计 ∥ 证据与回归),多数决 |
validate-gap / validate-design / validate-impl |
多维验证并发,父层合成 GO/NO-GO |
不要硬并发的四种情形:后一步吃前一步产出(requirements→design→tasks 主链)、需要用户决策的闸门、会写同一批文件且无法 worktree 隔离、总量只有 1–2 块。
6. Workflow 原生编排(档 C)
本 skill 自带两件套:
workflows/parse-tasks.mjs— 解析tasks.md→ workflow 的args(拆 Phase、按_Depends:_拓扑分层、层内按文件冲突拆组、提取_Requirements:_与目标文件)workflows/spec-exec.workflow.js— Phase 串行 + 组内并行 + 每任务 implement→多视角对抗复查→(debug) 流水 + 收尾完整性批评workflows/recover-run.mjs— 中断后重建账本:从 transcript 目录反解每个任务的判定,供父层补回写(见铁律 7)
跑法
# 1) 生成执行计划(stdout 是 JSON,stderr 是人类可读分组摘要)
node ~/.claude/skills/kiro/workflows/parse-tasks.mjs .kiro/specs/<feature> --parallel --ultracode \
> /tmp/kiro-<feature>.args.json
读回该 JSON,先看 diagnostics:serialFallback: true 意味着开了 --parallel 却一组都并发不起来(通常是 tasks.md 缺 (P) 与 _Boundary:_/目标文件标注,分组器只能保守判冲突)。此时跑 workflow 毫无收益——要么回去补标注重生成计划,要么直接用档 B 串行,不要跑一个零并发的编排还说成在并行。
并发度正常时,把分组摘要呈给用户确认(哪些任务并行、哪些串行),再:
Workflow({
scriptPath: "/Users/hysios/.claude/skills/kiro/workflows/spec-exec.workflow.js",
args: <上面那份 JSON 对象,作为真正的 JSON 值传入,不要传字符串>
})
args 字段:specPath / feature / phases[{name,groups[[task]]}] / commands{test,typecheck,lint}(从 .kiro/steering/tech.md 填)/ parallel / review / debug / dryRun / ultracode / reviewLenses。
**ultracode: true(impl 默认开)**打开两件事:
- 三视角对抗复查——每个任务并发派 3 名复查者,各守一个视角(
acceptance验收覆盖 /boundary边界与设计 /evidence证据与回归),过半 reject 才判打回。视角分工比"同一个人问三遍"更能抓住冗余抓不到的洞。未达门槛的少数派意见进minorityConcerns,要呈报,不要丢。 - 收尾完整性批评——整批跑完后一名 critic 专找逐任务复查结构上看不见的东西:任务间集成缝、只在形式上被覆盖的需求、没有机械证据的"完成"断言、新引入却没人处理的运行时前置条件。返回在
critique.gaps,属于下一轮的输入,不是本轮的完成,必须与完成汇总分开呈报。
铁律
- 首次对某个 spec 用档 C,先跑
--dry-run验证调度链路(不改代码),再正式跑。 - 状态回写归编排层:workflow 内的子代理禁止改
tasks.md/spec.json(并行会撞车)。workflow 返回后,由你在主对话按results逐条勾选[x]、把learnings追加到tasks.md的## Implementation Notes、再按任务粒度选择性提交(git add <显式路径>,绝不git add -A)。 - 并行改文件的隔离由计划里的
isolation决定,别自己拍。parse-tasks.mjs会推导projectRoot并把写入集全部绝对化;当目标项目不在当前工作目录下时置isolation: null——harness 的 worktree 建在主会话仓库下,子代理用绝对路径写的是它外面,隔离层存在却没有任何改动经过(真机实测:worktree 空且被自动回收)。此时并发安全完全靠分组的写入集不相交,所以"写入集未知即判冲突"这条保守规则一步都不能松。 - 返回后按
summary分类汇报:完成 / 打回 / 待人工 / 受阻。打回的任务回档 B 重做,别在 workflow 里死循环。 - impl 阶段用 Workflow 属于常规档(用户已明确授权
impl走 workflow + ultracode),任务 ≥ 3 直接用,不必再问。其他阶段仍以 Agent 子代理并发为主(§5.5),不要把 requirements/design 这类需要闸门的阶段塞进 workflow。 - 打回任务带的
reasons有视角前缀([acceptance]/[boundary]/[evidence]),重做时把对应视角的意见原样交给实现者,别自行概括。 - workflow 一旦中断(被杀 / 崩溃 / 返回值滚出上下文),先跑
recover-run.mjs <transcriptDir>重建账本,再决定下一步。子代理的代码已经落盘而tasks.md还是空的——不重建就等于拿一份假账继续干。transcriptDir在 Workflow 工具的返回里。尤其当心UNREVIEWED:代码在、测试可能绿,但没有任何复查碰过它,不许直接勾[x]。
7. 端到端模式(/kiro auto)
把多道闸门收敛成一道总闸门,用交互换速度。
- 补齐信息(唯一前置交互):信息不足以写出像样需求时,用
AskUserQuestion一次性打包问清,不要挤牙膏。 - steering:缺失则静默生成初版,不逐文件停下 review。
- requirements → design(默认跳过,除非描述里明确要或改动面明显跨模块)→ tasks。
- 🚦 总闸门(唯一强制停顿):呈现需求摘要 + 完整任务清单,并明确问:
「以上是完整规划(需求 N 条 / 任务 M 个)。批准后我将自主执行全部任务、不再逐个停下。是否批准开工?」
- 批准 → 回写 spec.json 全部
approved→ 走执行档 C(任务 ≥ 3,workflow/ultracode;否则档 B)→validate-impl→verify-completion→ 汇总汇报(含critique.gaps单列)。
必须停的三处:信息严重不足、总闸门、执行中遇到需人工手测或无法自愈的错误。不提供连总闸门都免掉的无人值守模式;用户坚持则告知风险,并要求其显式写「跳过总闸门、后果自负」。
8. 子代理可以调用 skill(重要)
派出去的子代理拥有 Skill 工具,要在 prompt 里明确告诉它调哪个、什么时候调——不要指望它自己发现。派单 prompt 的其余必备要素(唯一目标 / 输入路径 / 返回格式与长度上限 / 结构化字段)见 rules/parallel-dispatch.md §3。
派单模板(Agent 与 workflow 里的 agent() 都适用):
你可用
Skill工具。必须在以下时机调用:
- 判定任务是否达标 →
Skill(kiro-review);宿主没注册该 skill 时,改读~/.claude/skills/kiro/phases/review/SKILL.md并照其协议执行。- 陷入失败、连续两轮修不好 →
Skill(kiro-debug)(回退phases/debug/SKILL.md)。- 宣称「完成/通过」前 →
Skill(kiro-verify-completion)(回退phases/verify-completion/SKILL.md)。 其余 kiro-* 阶段同理:先试Skill(kiro-<x>),不存在就读~/.claude/skills/kiro/phases/<x>/SKILL.md。
配套约定:
- 本 skill 的
phases/*/SKILL.md都已把Skill列入allowed-tools;~/.claude/agents/下的 kiro 角色(task-executor/spec-task-reviewer/strategic-planner/steering-architect)继承全部工具,同样能调。 - 复查者与调试者绝不写代码,这条在派单 prompt 里要重申。
- 子代理返回结构化字段(
STATUS/VERDICT/NEXT_ACTION,或 workflow 的 schema)。只从精确字段解析,不得从散文里猜;缺字段就重派一次,要求只回结构化块。
9. 输出风格
- 每次响应开头一行状态条:
📍 Kiro · requirements · .kiro/specs/user-auth · 闸门:待批准 - 用词直接,不复述阶段规范全文;细节以
phases/<x>/SKILL.md(或宿主同名 skill)为准。 - 所有写入项目的 Markdown 用
spec.json.language指定的语言。 - 除非用户要求或处在
impl逐任务提交流程,不要 commit。