Commit 304fb9fba4f6a72e23aafc248ea3f17afe6e7183
1 parent
378ce81f
feat(lite): rewire entries to lite stages + phase-driver, add lite flow banner, …
…trim interrupt-check, drop cross-module-log
Showing
10 changed files
with
87 additions
and
192 deletions
skills/crosscut/coding-start/SKILL.md
| 1 | --- | 1 | --- |
| 2 | name: coding-start | 2 | name: coding-start |
| 3 | -description: B 阶段(Coding)入口与阶段分发器。验证 Plan 完成后做后端 + 前端的完成性检查,每段检查后立即派发:后端未完成 → module-start(写后端);后端已完成 + 前端未完成 → frontend-start(写前端);都完成 → 全部完成。本 skill 只做分发,不做 prototype/ 门禁。 | 3 | +description: 编码阶段入口与分发器。验证计划完成(docs/08 § 一 ①②③ 全勾)后按"先后端、再前端"次序检查并立即派发:后端未完成 → phase-driver {phase:backend};后端已完成 + 前端未完成 → phase-driver {phase:frontend};都完成 → 全部完成。本 skill 只做分发。 |
| 4 | user-invocable: true | 4 | user-invocable: true |
| 5 | allowed-tools: Skill Read Glob Grep Bash(cat *) Bash(git tag *) | 5 | allowed-tools: Skill Read Glob Grep Bash(cat *) Bash(git tag *) |
| 6 | --- | 6 | --- |
| 7 | 7 | ||
| 8 | **所有输出必须使用中文。** | 8 | **所有输出必须使用中文。** |
| 9 | 9 | ||
| 10 | -B 阶段(Coding)的入口分发器。**`module-start` 写后端,`frontend-start` 写前端**——coding-start 在每次入口时按"先后端、再前端"的次序检查并立即派发。本 skill **只做分发,不做 prototype/ 门禁**——前端阶段的前置检查由 `frontend-start` 内部承担。 | ||
| 11 | - | ||
| 12 | -`module-start` 与 `frontend-start` 互不感知对方。 | 10 | +编码阶段的入口分发器。按"先后端、再前端"次序检查并立即派发到 `phase-driver`——本 skill **只做分发,不做功能实现**。 |
| 13 | 11 | ||
| 14 | ## 执行步骤 | 12 | ## 执行步骤 |
| 15 | 13 | ||
| 16 | -### 步骤 0:打印 B 阶段整体流程图 | 14 | +### 步骤 0:打印流程图 |
| 15 | + | ||
| 16 | +**第一件事**:打印 lite 整体流程图。 | ||
| 17 | 17 | ||
| 18 | ```bash | 18 | ```bash |
| 19 | -cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/coding-start/banners/flow-overview.txt" | 19 | +cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/coding-start/banners/flow-lite.txt" |
| 20 | ``` | 20 | ``` |
| 21 | 21 | ||
| 22 | ### 步骤 1:确认 docs/08 存在 | 22 | ### 步骤 1:确认 docs/08 存在 |
| @@ -24,18 +24,18 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/coding-start/banners/flow-overview.tx | @@ -24,18 +24,18 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/coding-start/banners/flow-overview.tx | ||
| 24 | 检查 `docs/08-模块任务管理.md` 存在。 | 24 | 检查 `docs/08-模块任务管理.md` 存在。 |
| 25 | - 不存在 → 打印"⚠️ 项目尚未初始化,请先运行 `/erp-workflow:plan-start`"并停下。 | 25 | - 不存在 → 打印"⚠️ 项目尚未初始化,请先运行 `/erp-workflow:plan-start`"并停下。 |
| 26 | 26 | ||
| 27 | -### 步骤 2:Plan 完成性检查 | 27 | +### 步骤 2:计划完成性检查 |
| 28 | 28 | ||
| 29 | -读取 `docs/08-模块任务管理.md § 一`,判断 A0~A5 是否全部勾选(含子项)。 | 29 | +读取 `docs/08-模块任务管理.md § 一`,判断 ①②③ 三个 lite 计划阶段是否**全部勾选**(含各阶段子项)。 |
| 30 | 30 | ||
| 31 | -- 任一未勾选 → 提示用户先运行 `/erp-workflow:plan-start` 完成 A 阶段,并停下 | ||
| 32 | -- 全部勾选 → 进入步骤 3 | 31 | +- 任一未勾选 → 提示用户先运行 `/erp-workflow:plan-start` 完成计划阶段,并停下。 |
| 32 | +- 全部勾选 → 进入步骤 3。 | ||
| 33 | 33 | ||
| 34 | ### 步骤 3:后端完成性检查 + 派发 | 34 | ### 步骤 3:后端完成性检查 + 派发 |
| 35 | 35 | ||
| 36 | 读 `docs/08 § 二`,对每个后端模块的 `里程碑:` 字段(并用 `git tag -l 'milestone/<module_id>'` 校验 tag 真实存在): | 36 | 读 `docs/08 § 二`,对每个后端模块的 `里程碑:` 字段(并用 `git tag -l 'milestone/<module_id>'` 校验 tag 真实存在): |
| 37 | 37 | ||
| 38 | -- **任一模块 `里程碑: —` 或对应 `milestone/<module_id>` tag 不存在** → 后端未完成,打印 `[coding-start] 后端未完成 → 派发 module-start(写后端)`,立即用 Skill 工具调用 module-start,本 skill 结束,不进入步骤 4。 | 38 | +- **任一模块 `里程碑: —` 或对应 `milestone/<module_id>` tag 不存在** → 后端未完成,打印 `[coding-start] 后端未完成 → 派发 phase-driver(phase=backend)`,立即用 `Skill` 工具调用 `phase-driver` 并传入 `{ "phase": "backend" }`,本 skill 结束,不进入步骤 4。 |
| 39 | 39 | ||
| 40 | - **所有模块 `里程碑: milestone/<module_id>` 且 tag 存在** → 后端已完成,进入步骤 4。 | 40 | - **所有模块 `里程碑: milestone/<module_id>` 且 tag 存在** → 后端已完成,进入步骤 4。 |
| 41 | 41 | ||
| @@ -43,17 +43,17 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/coding-start/banners/flow-overview.tx | @@ -43,17 +43,17 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/coding-start/banners/flow-overview.tx | ||
| 43 | 43 | ||
| 44 | 读 `docs/08 § 三 整体里程碑:` 字段(并用 `git tag -l 'milestone/frontend-phase'` 校验): | 44 | 读 `docs/08 § 三 整体里程碑:` 字段(并用 `git tag -l 'milestone/frontend-phase'` 校验): |
| 45 | 45 | ||
| 46 | -- **`整体里程碑: milestone/frontend-phase` 且 tag 存在** → 前端已完成,打印 `所有阶段已完成(后端模块 + 前端阶段里程碑均已标记)`,结束本 skill。 | 46 | +- **`整体里程碑: —` 或 tag 不存在** → 前端未完成,打印 `[coding-start] 后端已完成、前端未完成 → 派发 phase-driver(phase=frontend)`,立即用 `Skill` 工具调用 `phase-driver` 并传入 `{ "phase": "frontend" }`,本 skill 结束。 |
| 47 | 47 | ||
| 48 | -- **`整体里程碑: —` 或 tag 不存在** → 前端未完成,打印 `[coding-start] 后端已完成、前端未完成 → 派发 frontend-start(写前端)`,立即用 Skill 工具调用 frontend-start,本 skill 结束。 | 48 | +- **`整体里程碑: milestone/frontend-phase` 且 tag 存在** → 前端已完成,打印 `所有阶段已完成(后端模块 + 前端阶段里程碑均已标记)`,结束本 skill。 |
| 49 | 49 | ||
| 50 | ## 参考 | 50 | ## 参考 |
| 51 | 51 | ||
| 52 | -- `docs/08-模块任务管理.md § 一`(A0~A5 进度勾选,步骤 2 读取) | 52 | +- `docs/08-模块任务管理.md § 一`(①②③ 计划阶段进度,步骤 2 读取) |
| 53 | - `docs/08-模块任务管理.md § 二`(后端模块元数据 + 里程碑字段,步骤 3 读取) | 53 | - `docs/08-模块任务管理.md § 二`(后端模块元数据 + 里程碑字段,步骤 3 读取) |
| 54 | - `docs/08-模块任务管理.md § 三`(前端阶段整体里程碑,步骤 4 读取) | 54 | - `docs/08-模块任务管理.md § 三`(前端阶段整体里程碑,步骤 4 读取) |
| 55 | - 下游: | 55 | - 下游: |
| 56 | - - `module-start`(写后端:步骤 3 派发) | ||
| 57 | - - `frontend-start`(写前端:步骤 4 派发) | ||
| 58 | -- `plan-start`(姊妹入口,A 阶段) | 56 | + - `phase-driver {phase:backend}`(写后端:步骤 3 派发) |
| 57 | + - `phase-driver {phase:frontend}`(写前端:步骤 4 派发) | ||
| 58 | +- `plan-start`(姊妹入口,计划阶段) | ||
| 59 | - `CLAUDE.md`(项目指令) | 59 | - `CLAUDE.md`(项目指令) |
skills/crosscut/coding-start/banners/flow-lite.txt
0 → 100644
| 1 | +┌────────────────────────────────────────────────────────┐ | ||
| 2 | +│ erp-workflow-lite │ | ||
| 3 | +│ │ | ||
| 4 | +│ 计划(/plan-start,一次性,2 个审阅断点) │ | ||
| 5 | +│ ① lite-init 初始化 + REQ 卡片 ⏸ 审阅 REQ │ | ||
| 6 | +│ ② lite-design 脚手架 + docs/03 ⏸ 审阅 schema │ | ||
| 7 | +│ ③ lite-build-db V1+apply + docs/05/08 │ | ||
| 8 | +│ │ | ||
| 9 | +│ 编码(/coding-start,统一功能循环) │ | ||
| 10 | +│ 后端模块循环 ┐ │ | ||
| 11 | +│ 前端整体阶段 ┘→ phase-driver │ | ||
| 12 | +│ feature-spec → feature-tdd → feature-review │ | ||
| 13 | +│ 全 approve → milestone(test→报告→merge+tag) │ | ||
| 14 | +└────────────────────────────────────────────────────────┘ |
skills/crosscut/coding-start/banners/flow-overview.txt deleted
| 1 | -┌────────────────────────────────────────────────────────┐ | ||
| 2 | -│ 🛠️ 阶段 B:编码(后端模块循环 → 前端整体阶段) │ | ||
| 3 | -│ │ | ||
| 4 | -│ coding-start (只做分发) │ | ||
| 5 | -│ ① Plan 完成校验(docs/08 § 一 A0~A5) │ | ||
| 6 | -│ ② 后端完成性检查(§ 二 + git tag) │ | ||
| 7 | -│ ├ 未完成 → 立即派发 module-start,结束 │ | ||
| 8 | -│ └ 已完成 → 继续 ③ │ | ||
| 9 | -│ ③ 前端完成性检查(§ 三 整体里程碑 + tag) │ | ||
| 10 | -│ ├ 已完成 → 打印"全部完成",结束 │ | ||
| 11 | -│ └ 未完成 → 派发 frontend-start,结束 │ | ||
| 12 | -│ │ | ||
| 13 | -│ ┌────┴───────────────────────┐ │ | ||
| 14 | -│ ▼ 写后端 ▼ 写前端 │ | ||
| 15 | -│ │ | ||
| 16 | -│ module-start frontend-start │ | ||
| 17 | -│ 切 module-<id> 分支 ① 检查 prototype │ | ||
| 18 | -│ 缺失 → AskUserQuestion│ | ||
| 19 | -│ ② 准备 FE 清单 │ | ||
| 20 | -│ § 三 已有 → 加载 │ | ||
| 21 | -│ § 三 占位 → AI 推导写入│ | ||
| 22 | -│ (无审阅断点) │ | ||
| 23 | -│ ③ 切 frontend-phase 分支 │ | ||
| 24 | -│ │ | ||
| 25 | -│ ┌─ 后端功能循环(每 REQ)────────┐ │ | ||
| 26 | -│ │ feature-brainstorm │ │ | ||
| 27 | -│ │ ↓ │ │ | ||
| 28 | -│ │ feature-plan │ │ | ||
| 29 | -│ │ ↓ │ │ | ||
| 30 | -│ │ feature-tdd(路径硬护栏) │ │ | ||
| 31 | -│ │ ↓ │ │ | ||
| 32 | -│ │ feature-verify │ │ | ||
| 33 | -│ │ ↓ │ │ | ||
| 34 | -│ │ feature-review │ │ | ||
| 35 | -│ │ ├ approve → 回 module-start │ │ | ||
| 36 | -│ │ └ request-changes ↺ ≤5 轮 │ │ | ||
| 37 | -│ └────────────────────────────────┘ │ | ||
| 38 | -│ ↓ 本模块所有 REQ approve │ | ||
| 39 | -│ test-gate(phase=backend) │ | ||
| 40 | -│ ↓ │ | ||
| 41 | -│ module-report → milestone-tag │ | ||
| 42 | -│ ↓ 本地 merge 进默认分支 + 打 milestone tag │ | ||
| 43 | -│ ↺ 自动回 coding-start → 再分发(无人工) │ | ||
| 44 | -│ │ | ||
| 45 | -│ ┌─ 前端功能循环(每 FE-NN)─────┐ │ | ||
| 46 | -│ │ fe-feature-brainstorm │ │ | ||
| 47 | -│ │ ↓ │ │ | ||
| 48 | -│ │ fe-feature-plan │ │ | ||
| 49 | -│ │ ↓ │ │ | ||
| 50 | -│ │ fe-feature-tdd(jsdom + E2E)│ │ | ||
| 51 | -│ │ ↓ │ │ | ||
| 52 | -│ │ fe-feature-verify │ │ | ||
| 53 | -│ │ ↓ │ │ | ||
| 54 | -│ │ fe-feature-review │ │ | ||
| 55 | -│ │ (fe-code-reviewer agent) │ │ | ||
| 56 | -│ │ ├ approve → 回 frontend-start │ | ||
| 57 | -│ │ └ request-changes ↺ ≤5 轮 │ │ | ||
| 58 | -│ └───────────────────────────────┘ │ | ||
| 59 | -│ ↓ 全部 FE approve │ | ||
| 60 | -│ test-gate(phase=frontend) │ | ||
| 61 | -│ ↓ │ | ||
| 62 | -│ module-report → milestone-tag │ | ||
| 63 | -│ (分支 frontend-phase,docs/08 § 三 整体里程碑)│ | ||
| 64 | -│ ↓ 本地 merge + 打 milestone/frontend-phase │ | ||
| 65 | -│ ↺ 自动回 coding-start → 全部完成 │ | ||
| 66 | -└────────────────────────────────────────────────────────┘ |
skills/crosscut/cross-module-log/SKILL.md deleted
| 1 | ---- | ||
| 2 | -name: cross-module-log | ||
| 3 | -description: 批量补填跨模块改动日志中 hook 留下的 `TBD(CC 补)`(原因 / 影响评估两列)。仅由 module-report § ⑦ 硬验收时调用。 | ||
| 4 | -user-invocable: false | ||
| 5 | -allowed-tools: Read Write Edit Bash(git branch *) | ||
| 6 | ---- | ||
| 7 | - | ||
| 8 | -**所有输出必须使用中文。** | ||
| 9 | - | ||
| 10 | -# cross-module-log | ||
| 11 | - | ||
| 12 | -软规则 S2 自动留痕:hook `log-cross-module.sh` 在每次对**非当前模块**文件的改动时追加 4 列存根(时间戳 / 目标模块 / 文件 / 改动摘要),「原因」「影响评估」两列写 `TBD(CC 补)`。本 skill 在 `module-report § ⑦` 硬验收阶段一次性推断补齐两列;CC 编辑代码中途不主动调用(节省 LLM 调用次数)。 | ||
| 13 | - | ||
| 14 | -## 执行步骤 | ||
| 15 | - | ||
| 16 | -1. 从 `git branch --show-current` 取 `module_id`(去掉 `module-` 前缀;`module-start` 步骤 3 保证此时在 `module-*` 分支)。 | ||
| 17 | -2. 打开 `docs/superpowers/module-reports/<module_id>-cross-module.md`。文件不存在 → 输出 `cross-module-log: 无跨模块改动,跳过` 并结束(hook 是日志文件唯一创建者;缺失意味着本模块周期内没有跨模块改动)。 | ||
| 18 | -3. 用 `Edit` 逐行替换「原因」或「影响评估」列含 `TBD(CC 补)` 的行: | ||
| 19 | - - **保持时间戳 / 目标模块 / 文件 / 改动摘要四列不变** | ||
| 20 | - - **原因**:为什么要改目标模块的代码?当前模块的哪个 REQ 迫使这样做? | ||
| 21 | - - **影响评估**:目标模块的哪些 API / 行为 / 调用方可能受影响?现有测试是否仍有效?是否需要新测试?(1-3 句话) | ||
| 22 | - - 推断依据:当前 session 的改动上下文 + REQ 卡片 + 目标模块代码 | ||
| 23 | -4. 输出 `cross-module-log: 更新了 N 行`。 | ||
| 24 | - | ||
| 25 | -## 参考 | ||
| 26 | - | ||
| 27 | -- `${CLAUDE_SKILL_DIR}/templates/cross-module-log-template.md`(hook 创建日志文件时渲染表头,本 skill 不读) | ||
| 28 | -- `${CLAUDE_SKILL_DIR}/templates/cross-module-log-row-template.md`(行结构参考,hook 拼接用;本 skill 直接 Edit 已有行) | ||
| 29 | -- `CLAUDE.md § 🟡 软规则 S2` | ||
| 30 | -- 上游:`module-report § ⑦`(唯一调用方) | ||
| 31 | -- 下游:`module-report` 把补齐后的日志原文嵌入 § ⑦ |
skills/crosscut/cross-module-log/templates/cross-module-log-row-template.md deleted
| 1 | -| {{timestamp}} | {{target_module}} | {{file_path}} | {{change_summary}} | {{reason}} | {{impact}} | |
skills/crosscut/cross-module-log/templates/cross-module-log-template.md deleted
| 1 | -# 跨模块改动日志 — {{module_name}} | ||
| 2 | - | ||
| 3 | -软规则 S2:本模块开发期间对**非当前模块**代码的改动(无论目标模块是否已打里程碑)记录在此;模块完成报告必须单列「跨模块改动」节完整贴入。漏留痕或未评估影响 → 升级为中断。 | ||
| 4 | - | ||
| 5 | -**本日志由 CC 自主维护**——hook `log-cross-module.sh` 自动落存根(含 `TBD(CC 补)` 占位),CC 调 `cross-module-log` skill 自主推断补「原因 / 影响评估」两列。**不需要人工填写**。 | ||
| 6 | - | ||
| 7 | -| 时间戳 | 目标模块 | 文件 | 改动摘要 | 原因 | 影响评估 | | ||
| 8 | -|---|---|---|---|---|---| |
skills/crosscut/interrupt-check/SKILL.md
| 1 | --- | 1 | --- |
| 2 | name: interrupt-check | 2 | name: interrupt-check |
| 3 | -description: 检查 CLAUDE.md § 🚩 中断机制 3 项是否触发,触发则追加 Blocker 到当前 plan 文件并停下,等用户决策。 | 3 | +description: 检查 CLAUDE.md § 🚩 中断机制 3 项是否触发,触发则追加 Blocker 到当前 spec 文件并停下,等用户决策。 |
| 4 | user-invocable: false | 4 | user-invocable: false |
| 5 | allowed-tools: Read Write Bash(mysql *) | 5 | allowed-tools: Read Write Bash(mysql *) |
| 6 | --- | 6 | --- |
| @@ -9,31 +9,30 @@ allowed-tools: Read Write Bash(mysql *) | @@ -9,31 +9,30 @@ allowed-tools: Read Write Bash(mysql *) | ||
| 9 | 9 | ||
| 10 | # interrupt-check | 10 | # interrupt-check |
| 11 | 11 | ||
| 12 | -核对 CLAUDE.md § 🚩 中断机制中的 3 项是否触发;任一触发 → 按模板渲染 Blocker 块追加到当前 plan 文件,**停下,用户决策前不调用任何下游 skill**。 | 12 | +核对 CLAUDE.md § 🚩 中断机制中的 3 项是否触发;任一触发 → 按模板渲染 Blocker 块追加到当前 spec 文件,**停下,用户决策前不调用任何下游 skill**。 |
| 13 | 13 | ||
| 14 | > 需求歧义 / schema 缺口 / 技术栈外组件引入等场景不在本清单,由各 feature-* 的 `AskUserQuestion` 流程处理。 | 14 | > 需求歧义 / schema 缺口 / 技术栈外组件引入等场景不在本清单,由各 feature-* 的 `AskUserQuestion` 流程处理。 |
| 15 | 15 | ||
| 16 | ## 调用方(现役) | 16 | ## 调用方(现役) |
| 17 | 17 | ||
| 18 | - **feature-tdd 步骤 3.e**:同一测试连续 >10 次修复失败时主动调用(命中条件 1) | 18 | - **feature-tdd 步骤 3.e**:同一测试连续 >10 次修复失败时主动调用(命中条件 1) |
| 19 | -- **test-gate 失败横幅 ③**:环境/依赖问题时引导用户手工调用(命中条件 3) | 19 | +- **milestone 失败横幅 ③**:环境/依赖问题时引导用户手工调用(命中条件 3) |
| 20 | 20 | ||
| 21 | 其它 skill 均已不再预防性调用本 skill;条件 2 / 3 在自然出错路径上由各 skill 自身的诊断信息覆盖,本 skill 主要承接条件 1 的硬触发与用户主动登记。 | 21 | 其它 skill 均已不再预防性调用本 skill;条件 2 / 3 在自然出错路径上由各 skill 自身的诊断信息覆盖,本 skill 主要承接条件 1 的硬触发与用户主动登记。 |
| 22 | 22 | ||
| 23 | ## 检查清单(权威来源:`CLAUDE.md § 🚩 中断机制`) | 23 | ## 检查清单(权威来源:`CLAUDE.md § 🚩 中断机制`) |
| 24 | 24 | ||
| 25 | 1. **测试反复失败** — 同一功能中同一测试连续 10 次修复失败 | 25 | 1. **测试反复失败** — 同一功能中同一测试连续 10 次修复失败 |
| 26 | -2. **要改密钥/账密/包名** — 涉及 `docs/07-环境配置.md` 中的人工填写字段 | 26 | +2. **要改密钥/账密/包名** — 涉及 `.env.local` / `docs/04 § 零环境` 中的密钥 / 账密字段 |
| 27 | 3. **外部接口不可达** — 第三方 API / 证书 / 网络问题 | 27 | 3. **外部接口不可达** — 第三方 API / 证书 / 网络问题 |
| 28 | 28 | ||
| 29 | ## 执行步骤 | 29 | ## 执行步骤 |
| 30 | 30 | ||
| 31 | 1. 逐项核对 3 个中断条件。**全部未触发** → 输出 `interrupt-check: 通过`,结束。 | 31 | 1. 逐项核对 3 个中断条件。**全部未触发** → 输出 `interrupt-check: 通过`,结束。 |
| 32 | -2. **触发任一** → 按 `${CLAUDE_SKILL_DIR}/templates/interrupt-block-template.md` 渲染 Blocker 块,追加到当前 plan 文件(典型路径 `docs/superpowers/plans/<YYYY-MM-DD>-<REQ-id>.md`;test-gate 场景下追加到本模块任一已有 plan 文件)。 | ||
| 33 | -3. 向会话打印一句话摘要 + 指向 plan 文件路径,**停下**。 | 32 | +2. **触发任一** → 按 `${CLAUDE_SKILL_DIR}/templates/interrupt-block-template.md` 渲染 Blocker 块,追加到当前 spec 文件(典型路径 `docs/superpowers/specs/<YYYY-MM-DD>-<id>.md`;milestone 场景下追加到本模块任一已有 spec 文件)。 |
| 33 | +3. 向会话打印一句话摘要 + 指向 spec 文件路径,**停下**。 | ||
| 34 | 34 | ||
| 35 | ## 参考 | 35 | ## 参考 |
| 36 | 36 | ||
| 37 | - `${CLAUDE_SKILL_DIR}/templates/interrupt-block-template.md` | 37 | - `${CLAUDE_SKILL_DIR}/templates/interrupt-block-template.md` |
| 38 | - `CLAUDE.md § 🚩 中断机制`(权威 3 条) | 38 | - `CLAUDE.md § 🚩 中断机制`(权威 3 条) |
| 39 | -- `CLAUDE.md § 🟡 软规则`(S2 跨模块改动不触发中断;由 `cross-module-log` 处理) |
skills/crosscut/plan-start/SKILL.md
| 1 | --- | 1 | --- |
| 2 | name: plan-start | 2 | name: plan-start |
| 3 | -description: A 阶段(Plan)入口与分发器。根据 docs/08 § 一 的 checkbox 状态派发到 A0~A5 对应 skill。Plan 全部完成(A5 已勾)时打印提示让用户运行 /erp-workflow:coding-start 进入 B 阶段。 | 3 | +description: 计划阶段(Plan)入口与分发器。根据 docs/08 § 一 的 checkbox 状态派发到 ①②③ 对应的 lite 计划 skill。三阶段全部完成后打印提示让用户运行 /erp-workflow:coding-start 进入编码阶段。 |
| 4 | user-invocable: true | 4 | user-invocable: true |
| 5 | allowed-tools: Skill Read Glob Grep Bash(cat *) | 5 | allowed-tools: Skill Read Glob Grep Bash(cat *) |
| 6 | --- | 6 | --- |
| 7 | 7 | ||
| 8 | **所有输出必须使用中文。** | 8 | **所有输出必须使用中文。** |
| 9 | 9 | ||
| 10 | -你是 ERP 项目**规划阶段的编排器**。你**只派发 A 阶段(A0~A5)的 skill**;docs/08 § 一 全部勾选后即停下,提示用户显式运行 `/erp-workflow:coding-start` 进入 B 阶段。你不直接生成任何文件。 | 10 | +你是 ERP 项目**计划阶段的编排器**。你**只派发计划阶段(①②③)的 skill**;docs/08 § 一 全部勾选后即停下,提示用户显式运行 `/erp-workflow:coding-start` 进入编码阶段。你不直接生成任何文件。 |
| 11 | 11 | ||
| 12 | -## 第一步:读取 docs/08 + 决定分发目标 | 12 | +## 步骤 0:打印流程图 |
| 13 | 13 | ||
| 14 | -docs/08 § 一 是**Plan 阶段进度追踪**(A0~A5 的 checkbox)。§ 二的模块元数据由 coding-start 读写,本 skill 不读。 | 14 | +**第一件事**:打印 lite 整体流程图。 |
| 15 | 15 | ||
| 16 | -### 分发判定 | 16 | +```bash |
| 17 | +cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-lite.txt" | ||
| 18 | +``` | ||
| 17 | 19 | ||
| 18 | -1. **docs/08 是否存在** | ||
| 19 | - 用 `Glob` 检查 `docs/08-模块任务管理.md`。 | ||
| 20 | - - 如果不存在 → 后续 = `project-init`。 | 20 | +## 步骤 1:读取 docs/08 + 决定分发目标 |
| 21 | 21 | ||
| 22 | -2. **根据 § 一 找到当前进度** | 22 | +docs/08 § 一 是**计划阶段进度追踪**(①②③ 的 checkbox)。 |
| 23 | 23 | ||
| 24 | -| `进度` | `后续` | `阶段` | | ||
| 25 | -|---|---|---| | ||
| 26 | -| 无 docs/08 | `project-init` | `A0` | | ||
| 27 | -| 含 `A0` / `A0 子项` | `project-init` | `A0` | | ||
| 28 | -| 含 `A1` / `A1 子项` | `scope-lock` | `A1` | | ||
| 29 | -| 含 `A2` / `A2 子项` | `skeleton-gen` | `A2` | | ||
| 30 | -| 含 `A3` / `A3 子项` | `db-design-gen` | `A3` | | ||
| 31 | -| 含 `A4` / `A4 子项` | `db-init` | `A4` | | ||
| 32 | -| 含 `A5` / `A5 子项` | `downstream-gen` | `A5` | | ||
| 33 | -| `A` 全勾,Plan 阶段结束 | **无分发** | - | | 24 | +用 `Glob` 检查 `docs/08-模块任务管理.md` 是否存在: |
| 25 | +- 不存在 → 后续 = `lite-init`(对应阶段 ①) | ||
| 34 | 26 | ||
| 35 | -## 第二步:分发通知 + 调用目标 skill | 27 | +若存在,读取 `docs/08-模块任务管理.md § 一`,找到**第一个未勾选(`- [ ]`)的 lite 计划阶段**: |
| 36 | 28 | ||
| 37 | -### 2.1 Plan 已完成 | 29 | +| 进度 | 后续 | |
| 30 | +|---|---| | ||
| 31 | +| 无 docs/08,或 ① 未勾选 | `lite-init` | | ||
| 32 | +| ① 已勾、② 未勾选 | `lite-design` | | ||
| 33 | +| ①② 已勾、③ 未勾选 | `lite-build-db` | | ||
| 34 | +| ①②③ 全部勾选 | **无分发**(计划阶段结束) | | ||
| 38 | 35 | ||
| 39 | -A 阶段所有 checkbox 均 `[x]`。无后续 skill,本步骤**先打印整体流程图**,再输出完成横幅,然后**停下**: | 36 | +## 步骤 2:分发通知 + 调用目标 skill |
| 40 | 37 | ||
| 41 | -```bash | ||
| 42 | -cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" | ||
| 43 | -``` | 38 | +### 2.1 计划已完成 |
| 44 | 39 | ||
| 45 | -再向用户输出完成横幅: | 40 | +①②③ 全部 `[x]`。无后续 skill,输出完成横幅,然后**停下**: |
| 46 | 41 | ||
| 47 | ``` | 42 | ``` |
| 48 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | 43 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |
| 49 | - [plan-start] ✅ Plan 阶段全部完成 | ||
| 50 | - | ||
| 51 | - ⚠️ 进入 B 阶段前必须完成: | ||
| 52 | - 1. 人工通读 docs/* + CLAUDE.md + sql/migrations/V1 + 各 scripts/* | ||
| 53 | - | ||
| 54 | - 2. 把全部 Plan 产物 commit 到本地默认分支(main / master): | ||
| 55 | - git add -A && git commit -m "chore: plan phase A0~A5 done" | ||
| 56 | - | ||
| 57 | - 3. B 阶段全程纯本地(无需远程仓库 / push / MR): | ||
| 58 | - 每个模块由 milestone-tag 本地 merge 进默认分支并打 milestone/<id> tag。 | 44 | + [plan-start] ✅ 计划阶段全部完成(①②③) |
| 45 | + | ||
| 46 | + ⚠️ 进入编码阶段前必须完成: | ||
| 47 | + 1. 人工通读 docs/* + CLAUDE.md + sql/migrations/V1__init.sql | ||
| 48 | + 2. 把全部计划产物 commit 到本地默认分支(main / master): | ||
| 49 | + git add -A && git commit -m "chore: plan phase done" | ||
| 50 | + 3. 编码阶段全程纯本地(无需远程 push): | ||
| 51 | + 每个模块/前端阶段由 milestone 本地 merge 进默认分支并打 milestone/<id> tag。 | ||
| 59 | 确认当前已在本地默认分支(main / master)上即可。 | 52 | 确认当前已在本地默认分支(main / master)上即可。 |
| 60 | - | ||
| 61 | - 4. 运行 /erp-workflow:coding-start 进入 B 阶段 | 53 | + 4. 运行 /erp-workflow:coding-start 进入编码阶段 |
| 62 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | 54 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |
| 63 | ``` | 55 | ``` |
| 64 | 56 | ||
| @@ -66,12 +58,6 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" | @@ -66,12 +58,6 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" | ||
| 66 | 58 | ||
| 67 | ### 2.2 正常派发(`后续` 非空) | 59 | ### 2.2 正常派发(`后续` 非空) |
| 68 | 60 | ||
| 69 | -先打印整体流程图,再打印分发通知: | ||
| 70 | - | ||
| 71 | -```bash | ||
| 72 | -cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" | ||
| 73 | -``` | ||
| 74 | - | ||
| 75 | 打印简短分发通知: | 61 | 打印简短分发通知: |
| 76 | 62 | ||
| 77 | ``` | 63 | ``` |
| @@ -81,10 +67,13 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" | @@ -81,10 +67,13 @@ cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" | ||
| 81 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ | 67 | ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ |
| 82 | ``` | 68 | ``` |
| 83 | 69 | ||
| 84 | -立即用 `Skill` 工具调用 `后续`。 | 70 | +立即用 `Skill` 工具调用 `后续`: |
| 71 | +- ① → `Skill(lite-init)` | ||
| 72 | +- ② → `Skill(lite-design)` | ||
| 73 | +- ③ → `Skill(lite-build-db)` | ||
| 85 | 74 | ||
| 86 | ## 参考 | 75 | ## 参考 |
| 87 | 76 | ||
| 88 | -- `docs/08-模块任务管理.md`(进度追踪) | 77 | +- `docs/08-模块任务管理.md § 一`(计划阶段进度追踪,①②③ checkbox) |
| 89 | - `CLAUDE.md`(项目指令) | 78 | - `CLAUDE.md`(项目指令) |
| 90 | -- 后续 skills(通过 `Skill` 工具按名称调用) | 79 | +- 后续 skills(通过 `Skill` 工具按名称调用):`lite-init`、`lite-design`、`lite-build-db` |
skills/crosscut/plan-start/banners/flow-lite.txt
0 → 100644
| 1 | +┌────────────────────────────────────────────────────────┐ | ||
| 2 | +│ erp-workflow-lite │ | ||
| 3 | +│ │ | ||
| 4 | +│ 计划(/plan-start,一次性,2 个审阅断点) │ | ||
| 5 | +│ ① lite-init 初始化 + REQ 卡片 ⏸ 审阅 REQ │ | ||
| 6 | +│ ② lite-design 脚手架 + docs/03 ⏸ 审阅 schema │ | ||
| 7 | +│ ③ lite-build-db V1+apply + docs/05/08 │ | ||
| 8 | +│ │ | ||
| 9 | +│ 编码(/coding-start,统一功能循环) │ | ||
| 10 | +│ 后端模块循环 ┐ │ | ||
| 11 | +│ 前端整体阶段 ┘→ phase-driver │ | ||
| 12 | +│ feature-spec → feature-tdd → feature-review │ | ||
| 13 | +│ 全 approve → milestone(test→报告→merge+tag) │ | ||
| 14 | +└────────────────────────────────────────────────────────┘ |
skills/crosscut/plan-start/banners/flow-overview.txt deleted
| 1 | -┌────────────────────────────────────────────────────────┐ | ||
| 2 | -│ 📋 阶段 A:规划(一次性) │ | ||
| 3 | -│ │ | ||
| 4 | -│ A0 初始化项目 │ | ||
| 5 | -│ ↓ │ | ||
| 6 | -│ A1 锁范围(生成 REQ 卡片) → 人工审核 │ | ||
| 7 | -│ ↓ │ | ||
| 8 | -│ A2 生成骨架 │ | ||
| 9 | -│ ↓ │ | ||
| 10 | -│ A3 生成 DB 设计 → 人工审核 │ | ||
| 11 | -│ ↓ │ | ||
| 12 | -│ A4 初始化 DB │ | ||
| 13 | -│ ↓ │ | ||
| 14 | -│ A5 生成下游文档 │ | ||
| 15 | -└────────────────────────────────────────────────────────┘ |