Commit bf4144c5c892b3cf932ae6344be84bafb3547b32

Authored by zichun
1 parent 22b5005b

plan: 新增 docs/06 实现策略文档 + 接入 A3/A5/Coding 生成参考

- A2 skeleton-gen 末尾新增 step F:创建空白 docs/06-实现策略.md,QA 闸循环至用户确认填完才进 A3(原 F 进入 A3 顺延为 G)
- A3 db-design-gen 读取清单 + 步骤B + 参考接入 docs/06
- A5 downstream-gen docs/02 构建顺序 / docs/05 端点 + 参考接入 docs/06
- coding.mjs deriveSpecPrompt(前端+后端)把 docs/06 作为 spec 收集上下文
skills/plan/db-design-gen/SKILL.md
... ... @@ -68,5 +68,6 @@ allowed-tools: Read Write Edit Grep Glob
68 68 - `${CLAUDE_SKILL_DIR}/templates/docs-03-header-template.md`
69 69 - `${CLAUDE_SKILL_DIR}/templates/docs-03-table-template.md`
70 70 - `docs/04-技术规范.md` § 一+(命名规范输入)
  71 +- `docs/06-实现策略.md`(A2 人工填写;影响 schema 的关键决策 / 偏离来源)
71 72 - `docs/01-需求清单/<module>/_module.md`(模块头:回填 `涉及表`)
72 73 - `docs/01-需求清单/<module>/<req_id>.md`(REQ 输入 + 回填 `依赖表`)
... ...
skills/plan/downstream-gen/SKILL.md
... ... @@ -17,7 +17,7 @@ allowed-tools: Read Write Edit Glob Grep AskUserQuestion
17 17  
18 18 **清单颗粒度**:一行一个 REQ,同一模块的 REQ 必须**连续排列**。
19 19  
20   -1. 拓扑排模块得 `module_topo_order[]`,对每个模块内部拓扑排 REQ;按模块顺序依次铺开生成 `req_order[]`(同模块 REQ 连续)。出现环(模块级或模块内 REQ 级)用启发式(字母序 / 被依赖次数多者先)破环,并把原因填入参与环的首个 REQ 的 `note`;非环 REQ `note` 留 `—`。
  20 +1. **先读 `docs/06-实现策略.md`**:若其载明模块 / REQ 的实现顺序或优先级,作为构建顺序的**约束优先采纳**(与依赖拓扑冲突时以 docs/06 为准,并在该 REQ 的 `note` 注明取舍依据)。随后拓扑排模块得 `module_topo_order[]`,对每个模块内部拓扑排 REQ;按模块顺序依次铺开生成 `req_order[]`(同模块 REQ 连续)。出现环(模块级或模块内 REQ 级)用启发式(字母序 / 被依赖次数多者先)破环,并把原因填入参与环的首个 REQ 的 `note`;非环 REQ `note` 留 `—`。
21 21 2. 为每项生成 `index`(从 1)/ `req_id` / `module_id` / `rationale`(依赖驱动短描述)/ `note`。
22 22 3. 读取并填充 `${CLAUDE_SKILL_DIR}/templates/docs-02-template.md`,写入 `docs/02-开发计划.md`。
23 23  
... ... @@ -28,6 +28,8 @@ allowed-tools: Read Write Edit Glob Grep AskUserQuestion
28 28 1. 读取 `${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md`,写入 `docs/05-API接口契约.md` 头部。
29 29 2. 对所有模块的每个 REQ:读取并推断 `${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md`,追加到 docs/05。
30 30  
  31 +> 推断端点时对齐 `docs/06-实现策略.md` 中影响 API 设计的关键决策(分页 / 鉴权 / 统一响应包络 / 错误码风格等),保持契约与实现策略一致。
  32 +
31 33 勾选:` - [ ] docs/05 API 契约已生成`
32 34  
33 35 ### B2. 回填模块头 + REQ 卡片的 TBD(A5) 字段
... ... @@ -80,6 +82,7 @@ allowed-tools: Read Write Edit Glob Grep AskUserQuestion
80 82 ## 参考
81 83  
82 84 - `${CLAUDE_SKILL_DIR}/templates/docs-02-template.md`
  85 +- `docs/06-实现策略.md`(A2 人工填写;docs/02 构建顺序 + docs/05 API 决策的参考)
83 86 - `${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md`
84 87 - `${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md`
85 88 - `prototype/**/*.html`(前端页面/布局/交互权威;C 段据此推导 FE 清单)
... ...
skills/plan/skeleton-gen/SKILL.md
... ... @@ -114,7 +114,26 @@ QA 横幅涵盖:产出文件清单(docs/04 + scripts/*.mjs + .gitignore;co
114 114 通过后(N=0 且用户选「继续」),用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选:
115 115 - `- [ ] A2 骨架生成 — skeleton-gen`
116 116  
117   -### F. 进入 A3
  117 +### F. 创建 docs/06-实现策略.md 并等待人工填写(QA 闸门)
  118 +
  119 +先用 `Glob` 检查 `docs/06-实现策略.md`:**已存在**则跳过创建(保留用户已填内容,幂等);**不存在**则用 `Write` 创建以下空白骨架(供开发者填写实现策略):
  120 +
  121 +```markdown
  122 +# 06-实现策略
  123 +
  124 +> 由开发者自行填写:记录项目的实现策略——关键技术决策与取舍、模块实现顺序与依赖、难点 / 风险与应对、对默认流程的偏离等。
  125 +
  126 +【人工填写:实现策略】
  127 +```
  128 +
  129 +创建 / 确认存在后,**QA ——未确认前不得进入步骤 G**:
  130 +
  131 +1. 打印提示,告诉用户在编辑器中打开并填写 `docs/06-实现策略.md`。
  132 +2. 用 `AskUserQuestion` 问「`docs/06-实现策略.md` 是否已填写完成?」,给「已填完,继续」/「还没填完」两个选项:
  133 + - 选「还没填完」→ **不进入下一步**,重新提示后再次弹 QA(循环)。
  134 + - 选「已填完,继续」→ 进入步骤 G。
  135 +
  136 +### G. 进入 A3
118 137  
119 138 输出 `skeleton-gen: 完成`,立即调用 `Skill(db-design-gen)`。
120 139  
... ...
workflows/coding.mjs
... ... @@ -305,11 +305,13 @@ function deriveSpecPrompt(id, phase) {
305 305 `- API 契约:\`${ROOT}/docs/05-API接口契约.md\`,按本 FE 关联的 REQ 过滤出消费的端点。`,
306 306 `- Design Tokens:\`${ROOT}/src/styles/tokens.css\`(色值 / 状态色单一来源;只用 var(--color-*),禁硬编码 hex)。**与 prototype 的色值冲突时以 tokens.css 为准**(prototype 管结构/布局/交互)。`,
307 307 `- 前端组件库:\`${ROOT}/docs/04-技术规范.md § 零\` 的 \`frontend.ui_lib\`,决定组件选型。`,
  308 + `- 实现策略:\`${ROOT}/docs/06-实现策略.md\`(A2 人工填写;关键技术决策 / 取舍、实现顺序与依赖、难点·风险、对默认流程的偏离——遵循其中与本 FE 相关的指引)。`,
308 309 ].join('\n')
309 310 : [
310 311 `- REQ 卡片:\`${ROOT}/docs/01-需求清单/<module>/${id}.md\`。**忽略 UI 描述**(控件类型 / 按钮位置 / 列表布局),但校验规则、业务规则仍要落到后端 DTO + service。`,
311 312 `- 涉及的数据表定义:\`${ROOT}/docs/03-数据库设计文档.md\`(必要时实时查 mysql 只读)。`,
312 313 `- API 契约:\`${ROOT}/docs/05-API接口契约.md\` 中本 REQ 相关端点。`,
  314 + `- 实现策略:\`${ROOT}/docs/06-实现策略.md\`(A2 人工填写;关键技术决策 / 取舍、实现顺序与依赖、难点·风险、对默认流程的偏离——遵循其中与本 REQ 相关的指引)。`,
313 315 ].join('\n'),
314 316 '',
315 317 '## 写 spec',
... ...