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