Commit bf4144c5c892b3cf932ae6344be84bafb3547b32
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 收集上下文
Showing
4 changed files
with
27 additions
and
2 deletions
skills/plan/db-design-gen/SKILL.md
| @@ -68,5 +68,6 @@ allowed-tools: Read Write Edit Grep Glob | @@ -68,5 +68,6 @@ allowed-tools: Read Write Edit Grep Glob | ||
| 68 | - `${CLAUDE_SKILL_DIR}/templates/docs-03-header-template.md` | 68 | - `${CLAUDE_SKILL_DIR}/templates/docs-03-header-template.md` |
| 69 | - `${CLAUDE_SKILL_DIR}/templates/docs-03-table-template.md` | 69 | - `${CLAUDE_SKILL_DIR}/templates/docs-03-table-template.md` |
| 70 | - `docs/04-技术规范.md` § 一+(命名规范输入) | 70 | - `docs/04-技术规范.md` § 一+(命名规范输入) |
| 71 | +- `docs/06-实现策略.md`(A2 人工填写;影响 schema 的关键决策 / 偏离来源) | ||
| 71 | - `docs/01-需求清单/<module>/_module.md`(模块头:回填 `涉及表`) | 72 | - `docs/01-需求清单/<module>/_module.md`(模块头:回填 `涉及表`) |
| 72 | - `docs/01-需求清单/<module>/<req_id>.md`(REQ 输入 + 回填 `依赖表`) | 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,7 +17,7 @@ allowed-tools: Read Write Edit Glob Grep AskUserQuestion | ||
| 17 | 17 | ||
| 18 | **清单颗粒度**:一行一个 REQ,同一模块的 REQ 必须**连续排列**。 | 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 | 2. 为每项生成 `index`(从 1)/ `req_id` / `module_id` / `rationale`(依赖驱动短描述)/ `note`。 | 21 | 2. 为每项生成 `index`(从 1)/ `req_id` / `module_id` / `rationale`(依赖驱动短描述)/ `note`。 |
| 22 | 3. 读取并填充 `${CLAUDE_SKILL_DIR}/templates/docs-02-template.md`,写入 `docs/02-开发计划.md`。 | 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,6 +28,8 @@ allowed-tools: Read Write Edit Glob Grep AskUserQuestion | ||
| 28 | 1. 读取 `${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md`,写入 `docs/05-API接口契约.md` 头部。 | 28 | 1. 读取 `${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md`,写入 `docs/05-API接口契约.md` 头部。 |
| 29 | 2. 对所有模块的每个 REQ:读取并推断 `${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md`,追加到 docs/05。 | 29 | 2. 对所有模块的每个 REQ:读取并推断 `${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md`,追加到 docs/05。 |
| 30 | 30 | ||
| 31 | +> 推断端点时对齐 `docs/06-实现策略.md` 中影响 API 设计的关键决策(分页 / 鉴权 / 统一响应包络 / 错误码风格等),保持契约与实现策略一致。 | ||
| 32 | + | ||
| 31 | 勾选:` - [ ] docs/05 API 契约已生成` | 33 | 勾选:` - [ ] docs/05 API 契约已生成` |
| 32 | 34 | ||
| 33 | ### B2. 回填模块头 + REQ 卡片的 TBD(A5) 字段 | 35 | ### B2. 回填模块头 + REQ 卡片的 TBD(A5) 字段 |
| @@ -80,6 +82,7 @@ allowed-tools: Read Write Edit Glob Grep AskUserQuestion | @@ -80,6 +82,7 @@ allowed-tools: Read Write Edit Glob Grep AskUserQuestion | ||
| 80 | ## 参考 | 82 | ## 参考 |
| 81 | 83 | ||
| 82 | - `${CLAUDE_SKILL_DIR}/templates/docs-02-template.md` | 84 | - `${CLAUDE_SKILL_DIR}/templates/docs-02-template.md` |
| 85 | +- `docs/06-实现策略.md`(A2 人工填写;docs/02 构建顺序 + docs/05 API 决策的参考) | ||
| 83 | - `${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md` | 86 | - `${CLAUDE_SKILL_DIR}/templates/docs-05-header-template.md` |
| 84 | - `${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md` | 87 | - `${CLAUDE_SKILL_DIR}/templates/docs-05-endpoint-template.md` |
| 85 | - `prototype/**/*.html`(前端页面/布局/交互权威;C 段据此推导 FE 清单) | 88 | - `prototype/**/*.html`(前端页面/布局/交互权威;C 段据此推导 FE 清单) |
skills/plan/skeleton-gen/SKILL.md
| @@ -114,7 +114,26 @@ QA 横幅涵盖:产出文件清单(docs/04 + scripts/*.mjs + .gitignore;co | @@ -114,7 +114,26 @@ QA 横幅涵盖:产出文件清单(docs/04 + scripts/*.mjs + .gitignore;co | ||
| 114 | 通过后(N=0 且用户选「继续」),用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选: | 114 | 通过后(N=0 且用户选「继续」),用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选: |
| 115 | - `- [ ] A2 骨架生成 — skeleton-gen` | 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 | 输出 `skeleton-gen: 完成`,立即调用 `Skill(db-design-gen)`。 | 138 | 输出 `skeleton-gen: 完成`,立即调用 `Skill(db-design-gen)`。 |
| 120 | 139 |
workflows/coding.mjs
| @@ -305,11 +305,13 @@ function deriveSpecPrompt(id, phase) { | @@ -305,11 +305,13 @@ function deriveSpecPrompt(id, phase) { | ||
| 305 | `- API 契约:\`${ROOT}/docs/05-API接口契约.md\`,按本 FE 关联的 REQ 过滤出消费的端点。`, | 305 | `- API 契约:\`${ROOT}/docs/05-API接口契约.md\`,按本 FE 关联的 REQ 过滤出消费的端点。`, |
| 306 | `- Design Tokens:\`${ROOT}/src/styles/tokens.css\`(色值 / 状态色单一来源;只用 var(--color-*),禁硬编码 hex)。**与 prototype 的色值冲突时以 tokens.css 为准**(prototype 管结构/布局/交互)。`, | 306 | `- Design Tokens:\`${ROOT}/src/styles/tokens.css\`(色值 / 状态色单一来源;只用 var(--color-*),禁硬编码 hex)。**与 prototype 的色值冲突时以 tokens.css 为准**(prototype 管结构/布局/交互)。`, |
| 307 | `- 前端组件库:\`${ROOT}/docs/04-技术规范.md § 零\` 的 \`frontend.ui_lib\`,决定组件选型。`, | 307 | `- 前端组件库:\`${ROOT}/docs/04-技术规范.md § 零\` 的 \`frontend.ui_lib\`,决定组件选型。`, |
| 308 | + `- 实现策略:\`${ROOT}/docs/06-实现策略.md\`(A2 人工填写;关键技术决策 / 取舍、实现顺序与依赖、难点·风险、对默认流程的偏离——遵循其中与本 FE 相关的指引)。`, | ||
| 308 | ].join('\n') | 309 | ].join('\n') |
| 309 | : [ | 310 | : [ |
| 310 | `- REQ 卡片:\`${ROOT}/docs/01-需求清单/<module>/${id}.md\`。**忽略 UI 描述**(控件类型 / 按钮位置 / 列表布局),但校验规则、业务规则仍要落到后端 DTO + service。`, | 311 | `- REQ 卡片:\`${ROOT}/docs/01-需求清单/<module>/${id}.md\`。**忽略 UI 描述**(控件类型 / 按钮位置 / 列表布局),但校验规则、业务规则仍要落到后端 DTO + service。`, |
| 311 | `- 涉及的数据表定义:\`${ROOT}/docs/03-数据库设计文档.md\`(必要时实时查 mysql 只读)。`, | 312 | `- 涉及的数据表定义:\`${ROOT}/docs/03-数据库设计文档.md\`(必要时实时查 mysql 只读)。`, |
| 312 | `- API 契约:\`${ROOT}/docs/05-API接口契约.md\` 中本 REQ 相关端点。`, | 313 | `- API 契约:\`${ROOT}/docs/05-API接口契约.md\` 中本 REQ 相关端点。`, |
| 314 | + `- 实现策略:\`${ROOT}/docs/06-实现策略.md\`(A2 人工填写;关键技术决策 / 取舍、实现顺序与依赖、难点·风险、对默认流程的偏离——遵循其中与本 REQ 相关的指引)。`, | ||
| 313 | ].join('\n'), | 315 | ].join('\n'), |
| 314 | '', | 316 | '', |
| 315 | '## 写 spec', | 317 | '## 写 spec', |