name: downstream-gen description: A5 下游文档生成——基于 docs/01 和 docs/03 推导,一次性生成 docs/02 + docs/05 + docs/06 § 三 + docs/10,回填 REQ 卡片依赖接口,把模块清单追加到 docs/08 § 二。 user-invocable: false
allowed-tools: Read Write Edit Glob Grep Skill AskUserQuestion
所有输出必须使用中文。
downstream-gen
执行步骤
A. docs/02 — 开发计划(含 REQ 级开发顺序清单)
清单颗粒度:一行一个 REQ,同一模块的 REQ 必须连续排列。
- 拓扑排模块得
module_topo_order[],对每个模块内部拓扑排 REQ;按模块顺序依次铺开生成req_order[](同模块 REQ 连续)。出现环(模块级或模块内 REQ 级)用启发式(字母序 / 被依赖次数多者先)破环,并把原因填入参与环的首个 REQ 的note;非环 REQnote留—。 - 为每项生成
index(从 1)/req_id/module_id/rationale(依赖驱动短描述)/note。 - 读取并填充
${CLAUDE_SKILL_DIR}/templates/docs-02-template.md,写入docs/02-开发计划.md。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] docs/02 开发计划已生成
B. docs/05 — API 接口契约
- 读取
${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md,写入docs/05-API接口契约.md头部。 - 对所有模块的每个 REQ:读取并推断
${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md,追加到 docs/05。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] docs/05 API 契约已生成
B2. 回填模块头 + REQ 卡片的 TBD(A5) 字段
- 在
docs/01-需求清单/*/_module.md(模块头)和docs/01-需求清单/*/REQ-*.md(REQ 卡片)中搜索并回填TBD(A5 自动补) - 打印回填统计:
A5 回填 <M> 处模块"依赖模块" + <N> 处 REQ"依赖接口"。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] REQ 卡片依赖接口已回填
C. docs/06 — 页面清单
对每个有前端页面的模块:读取并填充 ${CLAUDE_SKILL_DIR}/templates/docs-06-module-pagelist-template.md,追加到 docs/06-UI交互规范.md § 三。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] docs/06 § 三 页面清单已填入
D. docs/08 — 追加模块清单
读 ${CLAUDE_SKILL_DIR}/templates/docs-08-module-row-template.md,按 module_id 字母序为每个模块渲染 bullet(模块元数据 + REQ 子项清单,REQ 序保持步骤 A 模块内顺序),追加到 docs/08。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] 下方模块列表已填入
E. docs/10 — 验收清单(项目级 SOP)
用 Read 读取 ${CLAUDE_SKILL_DIR}/templates/docs-10-header-template.md,用 Write 原样写到 docs/10-验收检查清单.md(跨平台,不用 cp)。
完成后,用 Edit 在 docs/08-模块任务管理.md 中勾选:
- [ ] docs/10 验收清单已生成
F. 验证 + 勾选 docs/08 进度 + 结束 Plan
-
合并扫描三类问题(最多 3 轮自主修复,docs/01 是 REQ SSoT 不动)——一次性扫一致性 +
TBD(A3/A5 自动补)+ 结构性残留:
-
一致性:docs/01 REQ 全部出现在 docs/05;
docs/02 § 二module_id集合 =docs/08 § 二module_id集合。 -
TBD 残留:
TBD(A3 自动补)→ 查 docs/03 填依赖表;TBD(A5 自动补)→ 查 docs/05 按 REQ-ID 填依赖接口。 -
结构性:docs/05 每个
### REQ-端点段含非空- **请求**:/- **响应**:(非TBD/—/【人工填写:…】);docs/01 全部 REQ-ID 都出现在docs/02 § 二顺序清单。
命中即按对应步骤规则就地补填(缺端点 → 按 B 推测;缺 module 行 → 按 D 渲染;缺 REQ 顺序行 → 按 A 子流程拓扑插入)。3 轮后仍残留 【人工填写:】 或结构缺口 → 打印清单 + 用 AskUserQuestion 弹「继续」/「有疑问想先沟通」二选一;每次弹问前重扫一次,避免脏读放行。
docs/05 + docs/02 人工评审闸(未确认不得勾选 A5):摘要展示 docs/05 全部端点(
METHOD PATH — REQ-ID,标注「由 A5 自动推断」的项)+ docs/02req_order[](特别标note ≠ —的环依赖打破项)。AskUserQuestion多问题表单同时问两项:「docs/05 端点/字段无误」+「docs/02 构建顺序可接受」,各二选一确认/需要修改。任一需修改 → 收集修改点就地修订并重跑本闸,直到两项均确认;否则禁止勾选 A5、禁止打印横幅。-
用
Edit在docs/08-模块任务管理.md勾选 A5 父项:- [ ] A5 下游文档生成 — downstream-gen
打印 A5 完成横幅并停下:
[downstream-gen] ✅ A5 下游文档生成完成(A0~A5)
产出:docs/02 / docs/05 / docs/06 § 三 / docs/08 § 二 / docs/10;docs/08 § 一 A0~A5 已全勾。
⏭️ 下一步:运行 /erp-workflow:plan-start
参考
${CLAUDE_SKILL_DIR}/templates/docs-02-template.md${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md-
${CLAUDE_SKILL_DIR}/templates/docs-06-module-pagelist-template.md(追加到 docs/06 § 三) -
${CLAUDE_SKILL_DIR}/templates/docs-08-module-row-template.md(模块 bullet 行模板) ${CLAUDE_SKILL_DIR}/templates/docs-10-header-template.md