Commit 12b0d6d48f0bcc611d2349e29d4a9d562604107b

Authored by zichun
1 parent bf4144c5

cleanup: 清理历史包袱并修复历史遗留的失效引用

- coding-start / plan-start:去掉已失效的「git 就绪由本入口预检/校验」表述(git 闸已移入 coding.mjs 运行时)
- skeleton-gen:删除「A2 不再单独出 docs/06/07/09」「原 docs/09 并入」等历史演进注释
- downstream-gen:描述去掉「A6 已并入此处」历史包袱
- CLAUDE-template:补全被截断的 migration 规约残句(旧 V_n.sql 保持原样、永不回改)
- README:修正悬空的「🧭 通用工作准则」引用、删「4 条通用准则」、模板计数 26→19、coding-start git 就绪描述
README.md
... ... @@ -126,7 +126,7 @@ erp-workflow-plugin/
126 126 | Skill | 作用 | 谁调用 |
127 127 |---|---|---|
128 128 | `plan-start` | **A 阶段入口 + Plan 终结硬闸**。读 docs/08 § 一 找第一个未勾 A 子项 → 派发对应 A skill;A 全部完成时校验 4 项前移闸门(REQ 真实数据、`config-vars.yaml` 全部配置(含 DB 凭据 / 密钥)全锁、docs/04 § 零 命令齐、docs/05+02 已评审),全过才提示运行 `/erp-workflow:coding-start`,否则指出缺口不放行 | **用户手动** `/erp-workflow:plan-start` |
129   -| `coding-start` | **B 阶段瘦入口**(`allowed-tools: Read Glob Workflow Bash(git ...)`)。校验 Plan 完成态 + git 就绪(docs/08 § 一 全勾、git 在默认分支或自动切回 halt 残留功能分支、工作树干净)→ 读 docs/08 § 二/§ 三 + `git tag -l 'milestone/*'` 概述阶段进度(Workflow Router 再用 `req-done/*` 判定功能级 resume)→ 调用 `Workflow({scriptPath:"${CLAUDE_PLUGIN_ROOT}/workflows/coding.mjs", args:{projectRoot}})` 启动整个编码阶段 → 告知"已在后台启动" | **用户手动** `/erp-workflow:coding-start` |
  129 +| `coding-start` | **B 阶段瘦入口**(`allowed-tools: Read Glob Workflow Bash(git ...)`)。校验 Plan 完成态(docs/08 § 一 全勾)+ 取得 projectRoot(git 就绪由 coding.mjs runBranchSetup 在运行时把守)→ 读 docs/08 § 二/§ 三 + `git tag -l 'milestone/*'` 概述阶段进度(Workflow Router 再用 `req-done/*` 判定功能级 resume)→ 调用 `Workflow({scriptPath:"${CLAUDE_PLUGIN_ROOT}/workflows/coding.mjs", args:{projectRoot}})` 启动整个编码阶段 → 告知"已在后台启动" | **用户手动** `/erp-workflow:coding-start` |
130 130  
131 131 ### Plan 阶段 A skill(A0~A5,共 6 个)
132 132  
... ... @@ -149,11 +149,11 @@ erp-workflow-plugin/
149 149 |---|---|---|
150 150 | `code-reviewer` | 统一 reviewer。`phase=backend` 跑通用代码审查维度;`phase=frontend` 附加前端 8 维 checklist(prototype 一致性 / design tokens / a11y / 响应式 / 业务校验前端复刻 / API 一致性 / 状态机覆盖 / 测试文件隔离,主观维度仅标记明显问题不触发 request-changes)。非交互,返回结构化 verdict,绝不弹窗 | `workflows/coding.mjs` 的 review stage:`agent(..., {agentType:'erp-workflow:code-reviewer'})`(必须带 `erp-workflow:` 插件命名空间——裸 `code-reviewer` 会与其它插件的同名 agent 歧义) |
151 151  
152   -## Templates 清单(26 份)
  152 +## Templates 清单(19 份)
153 153  
154 154 | 所属 Skill | 模板文件 | 用途 |
155 155 |---|---|---|
156   -| project-init | `CLAUDE-template.md` | 项目根的 CLAUDE.md(4 条通用准则 + ERP 专属约定) |
  156 +| project-init | `CLAUDE-template.md` | 项目根的 CLAUDE.md(ERP 专属编码约束 + Schema 演化 + Git 提交规范) |
157 157 | project-init | `docs-01-index-template.md` | 需求清单索引骨架,等用户填子模块索引表(五列,一行一个子模块) |
158 158 | project-init | `docs-04-stack-template.md` | docs/04 § 零 默认技术栈总览(零槽位,拷即可) |
159 159 | project-init | `docs-08-initial-template.md` | 工作流进度文件骨架(Plan A0~A5 checkbox) |
... ... @@ -184,4 +184,4 @@ erp-workflow-plugin/
184 184  
185 185 ## 设计原则
186 186  
187   -参见 `skills/plan/project-init/templates/CLAUDE-template.md` 末尾的「🧭 通用工作准则」。
  187 +参见 `skills/plan/project-init/templates/CLAUDE-template.md` 的「📐 编码行为约束」。
... ...
skills/coding/coding-start/SKILL.md
... ... @@ -45,7 +45,7 @@ allowed-tools: Read Glob Workflow Bash(git rev-parse *) Bash(git tag *)
45 45  
46 46 > 注:REQ 真实数据 / config 全锁 / docs/04 命令齐 / docs/05+02 已评审等**内容闸**由 `plan-start` 终结硬闸把守;本步只校验「Plan 完成态(checkbox)」,不重复内容校验。
47 47 >
48   -> 注:git 就绪(在默认分支 / 工作树干净 / 功能分支创建与合并)由 coding.mjs `runBranchSetup` 在运行时把守——分支已存在则 checkout、不存在则从默认分支新建(与当前所停分支无关),工作树不干净会立即 HALT;续跑点由 Router 从 `milestone/*` tag + docs/08 字段重算,与所在分支无关。故本入口不做 git 就绪预检,只取 `projectRoot` 供步骤 4。
  48 +> 注:git 就绪(在默认分支 / 工作树干净 / 功能分支创建与合并)由 coding.mjs `runBranchSetup` 在运行时把守——分支已存在则 checkout、不存在则从默认分支新建(与当前所停分支无关),工作树不干净会立即 HALT;续跑点由 Router 从 `milestone/*` tag + docs/08 字段重算,与所在分支无关。故本入口不做 git 就绪预检,只取 `projectRoot` 供步骤 4。
49 49  
50 50 1. **docs/08 § 一 A0~A5 全部勾选**
51 51 - 读 § 一 进度表,确认 A0/A1/A2/A3/A4/A5(含各自子项)均为 `[x]`。
... ...
skills/plan/downstream-gen/SKILL.md
1 1 ---
2 2 name: downstream-gen
3   -description: A5 下游文档生成——基于 docs/01 和 docs/03 推导,一次性生成 docs/02 + docs/05,回填 REQ 卡片依赖接口,把模块清单追加到 docs/08 § 二,并由 prototype/ + docs/01 + docs/05 推导 FE 清单写入 docs/08 § 三。这是 Plan 阶段最后一个 A 步骤(A6 已并入此处)
  3 +description: A5 下游文档生成——基于 docs/01 和 docs/03 推导,一次性生成 docs/02 + docs/05,回填 REQ 卡片依赖接口,把模块清单追加到 docs/08 § 二,并由 prototype/ + docs/01 + docs/05 推导 FE 清单写入 docs/08 § 三。这是 Plan 阶段最后一个 A 步骤
4 4 user-invocable: false
5 5 allowed-tools: Read Write Edit Glob Grep AskUserQuestion
6 6 ---
... ...
skills/plan/plan-start/SKILL.md
... ... @@ -76,7 +76,7 @@ A 阶段 checkbox 全部 `[x]` 后先跑下面 4 项前移闸门; 全过才放
76 76 ✓ docs/04 §零 各栈 build/lint/unit/e2e 命令齐全
77 77 ✓ docs/05 API 契约 + docs/02 构建顺序已评审
78 78  
79   - 运行 /erp-workflow:coding-start 进入 B 阶段 (coding-start 会校验 git 状态).
  79 + 运行 /erp-workflow:coding-start 进入 B 阶段.
80 80 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
81 81 ```
82 82  
... ...
skills/plan/project-init/templates/CLAUDE-template.md
... ... @@ -32,7 +32,7 @@
32 32 1. **文件命名**:`sql/migrations/V<n>__<snake_case_desc>.sql`,例:`V5__add_user_email_unique_index.sql`
33 33 2. **版本号分配**:建文件前 `ls sql/migrations/V*.sql` 查当前最大 n,新文件 `n_max + 1`
34 34 3. **Apply 方式**:Spring Boot 启动 / 测试启动时 Flyway 自动 apply(项目必须在 `build.gradle` 声明 `flyway-core` + `flyway-mysql` 依赖)。`scripts/setup-test-db.mjs` 只负责清空库,不做 apply
35   -4. **已合并的 migration 永不修改**:发现错了写一个补救 migration(如 `V7__fix_V5_index_name.sql`),旧 `V_n.sql`
  35 +4. **已合并的 migration 永不修改**:如果发现错了,写一个补救 migration(如 `V7__fix_V5_index_name.sql`)修正,旧 `V_n.sql` 保持原样、永不回改
36 36 5. **临时调试 DDL**:临时在本地试字段/索引可手动 `mysql -e`,但不写 migration;下次 `setup-test-db.mjs` 会 drop+create 清掉
37 37 6. **A4 生成的 V1**:`V1__initial_schema.sql` 是 A 阶段由 `db-init` 从 `docs/03-数据库设计文档.md`(A3 正向设计的 schema SSoT)翻译生成的初始版本;后续 V2/V3/... 由 B 阶段每个 REQ 按需写入,**同时**反向同步更新 docs/03 对应表小节以保持 SSoT 一致
38 38  
... ...
skills/plan/skeleton-gen/SKILL.md
... ... @@ -24,14 +24,9 @@ docs/04 已由 scope-lock 写入 § 零。本步骤追加 § 一 ~ 三:
24 24  
25 25 1. 读取 `docs/04-技术规范.md`(现有 § 零 完整内容)。
26 26 2. 读取 `${CLAUDE_SKILL_DIR}/templates/docs-04-skeleton-template.md`。
27   -3. 基于技术栈,按大纲生成 § 一 ~ 三 的项目专属内容,剥掉 HTML 注释。**§ 1.2 分层结构 / § 2.1 目录约定要写清后端/前端的实际目录布局**(原 docs/09 内容并入此处,供 Coding 阶段落盘 + 跨模块判定参照)。
  27 +3. 基于技术栈,按大纲生成 § 一 ~ 三 的项目专属内容,剥掉 HTML 注释。**§ 1.2 分层结构 / § 2.1 目录约定要写清后端/前端的实际目录布局**(供 Coding 阶段落盘 + 跨模块判定参照)。
28 28 4. 拼接原有内容和新生成内容,写回 `docs/04-技术规范.md`。
29 29  
30   -> **A2 不再单独出 docs/06 / 07 / 09**——它们的内容各有归属:
31   -> - 环境 / 配置值(含凭据) → `config-vars.yaml`(A1 产出);构建 / 测试命令 → docs/04 § 零。
32   -> - 项目目录布局 → docs/04 § 1.2 分层结构 / § 2.1 目录约定;跨模块「路径→模块」→ docs/08 § 二 模块行 `路径:`。
33   -> - 前端 UI / 交互 / 布局 → 项目根 `prototype/`(完整 demo,权威);Design Tokens → `src/styles/tokens.css`(**色值冲突时 tokens.css 优先于 prototype**);前端编码规范 → docs/04 § 二。
34   -
35 30 完成后,用 `Edit` 在 `docs/08-模块任务管理.md` 中勾选:
36 31 - ` - [ ] 架构文档已生成(docs/04 § 一+)`
37 32  
... ...