从系统规格自动生成完整的开发计划和 Task Contracts
将系统规格文档转化为可执行的 Task Contracts。 这是项目启动的第一个动作,在创建任何 task 之前执行。
context/spec/ 目录下至少有一个 .md 规格文件(README.md 除外)context/constitution.md 已根据项目需求修改templates/task-contract.yaml 模板存在检查前置条件:
# 确认规格文件存在
ls context/spec/*.md 2>/dev/null | grep -v README.md
# 确认 constitution 存在
test -f context/constitution.md
# 确认模板存在
test -f templates/task-contract.yaml
如果 context/spec/ 为空或只有 README.md,终止并提示:
"请将系统规格文档放入 context/spec/ 目录下(支持多个 .md 文件)"
如果 constitution.md 仍是默认模板(项目名称为 "My Project"),发出警告: "constitution.md 尚未修改,建议先根据项目需求调整技术栈和约束"
调用 @spec-planner,传入以下上下文:
context/spec/ 下所有 .md 文件(README.md 除外)context/constitution.mdcontext/architecture.md(如存在)context/modules/index.yaml(如存在)templates/task-contract.yamltemplates/task-state.yaml等待 spec-planner 完成 Phase 1-5,输出到 tasks/ 目录。
对 spec-planner 生成的每个 Task Contract 调用 @contract-reviewer:
遍历 tasks/S*.yaml:
对每个文件调用 @contract-reviewer
收集审查意见(YAML 格式:decision + issues + summary)
如果有 critical 级别问题 → 标记该 Contract 需要修改
将审查结果汇总输出到 tasks/REVIEW-REPORT.md:
# Contract 审查报告
生成时间:{ISO timestamp}
审查范围:tasks/S*.yaml
## 通过(无问题)
- S01: 标题 ✅
- S02: 标题 ✅
## 有 warning(可接受)
- S05: 标题
- [warning] 具体问题描述
## 需要修改(有 critical)
- S07: 标题
- [critical] 具体问题描述
- [warning] 具体问题描述
## 规格覆盖检查
- 未覆盖章节:{列出或 "无 ✅"}
- 重复覆盖章节:{列出或 "无"}
对审查中有 critical 问题的 Contract,调用 @spec-planner 进入修正模式:
对每个有 critical 的 Contract:
将审查意见传给 @spec-planner
@spec-planner 修正 Contract YAML
再次调用 @contract-reviewer 验证
最多 2 轮修正
2 轮后仍有 critical → 标记 needs-human: true,记入 REVIEW-REPORT.md
生成最终的计划汇总,输出到终端 + tasks/PLAN-SUMMARY.md:
# 规划汇总
## Gate 概览
### Gate-1: {用户故事}
S01 ~ S{NN}({N} 个 task)
### Gate-2: {用户故事}
S{NN} ~ S{NN}({N} 个 task)
...
## 统计
- 总计:{N} 个 task,{M} 个 Gate
- 审查结果:✅ 通过 {X} 个 / ⚠️ warning {Y} 个 / ❌ 需人工确认 {Z} 个
## 产出文件
- `tasks/GATE-PLAN.md` — Gate 规划文档
- `tasks/PLAN-COVERAGE.md` — 规格覆盖矩阵
- `tasks/PLAN-SELF-CHECK.md` — 自检报告
- `tasks/REVIEW-REPORT.md` — 审查报告
- `tasks/S*.yaml` — Task Contracts
- `tasks/GATE-*.yaml` — Gate 验收 Contracts
## 下一步
1. 查看 tasks/GATE-PLAN.md 了解整体规划
2. 查看 tasks/REVIEW-REPORT.md 了解审查详情
3. 确认后运行 `make approve-plan` 批准全部 task
4. 或逐个批准:`make approve TASK=S01`
5. 运行 `make start` 开始执行
不自动开始执行。 人工检查产出文件后:
# 批准全部 task(将 approval_status 从 draft 改为 approved)
make approve-plan
# 或逐个批准
make approve TASK=S01
# 开始执行
make start
| 场景 | 处理 |
|---|---|
| 规格文档格式不清晰 | spec-planner 在 PLAN-SELF-CHECK.md 中标注 |
| contract-reviewer 发现 critical | 自动修正最多 2 轮,仍失败则标记 needs-human |
| 规格覆盖有遗漏 | PLAN-COVERAGE.md 标出未覆盖章节,不阻断其他 Contract |
| 依赖链有环 | 自检时报错,spec-planner 自动调整依赖关系 |
| 规格与 constitution 矛盾 | 自检时标出矛盾点,标记 needs-human |