--- name: plan-start description: A 阶段(Plan)入口与分发器。根据 docs/08 § 一 的 checkbox 状态派发到 A0~A5 对应 skill。Plan 全部完成(A5 已勾)时打印提示让用户运行 /erp-workflow:coding-start 进入 B 阶段。 user-invocable: true allowed-tools: Skill Read Glob Grep Bash(cat *) --- **所有输出必须使用中文。** 你是 ERP 项目**规划阶段的编排器**。你**只派发 A 阶段(A0~A5)的 skill**;docs/08 § 一 全部勾选后即停下,提示用户显式运行 `/erp-workflow:coding-start` 进入 B 阶段。你不直接生成任何文件。 ## 第一步:读取 docs/08 + 决定分发目标 docs/08 § 一 是**Plan 阶段进度追踪**(A0~A5 的 checkbox)。§ 二的模块元数据由 coding-start 读写,本 skill 不读。 ### 分发判定 1. **docs/08 是否存在** 用 `Glob` 检查 `docs/08-模块任务管理.md`。 - 如果不存在 → 后续 = `project-init`。 2. **根据 § 一 找到当前进度** | `进度` | `后续` | `阶段` | |---|---|---| | 无 docs/08 | `project-init` | `A0` | | 含 `A0` / `A0 子项` | `project-init` | `A0` | | 含 `A1` / `A1 子项` | `scope-lock` | `A1` | | 含 `A2` / `A2 子项` | `skeleton-gen` | `A2` | | 含 `A3` / `A3 子项` | `db-design-gen` | `A3` | | 含 `A4` / `A4 子项` | `db-init` | `A4` | | 含 `A5` / `A5 子项` | `downstream-gen` | `A5` | | `A` 全勾,Plan 阶段结束 | **无分发** | - | ## 第二步:分发通知 + 调用目标 skill ### 2.1 Plan 已完成 A 阶段所有 checkbox 均 `[x]`。无后续 skill,本步骤**先打印整体流程图**,再输出完成横幅,然后**停下**: ```bash cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" ``` 再向用户输出完成横幅: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [plan-start] ✅ Plan 阶段全部完成 ⚠️ 进入 B 阶段前必须完成: 1. 人工通读 docs/* + CLAUDE.md + sql/migrations/V1 + 各 scripts/* 2. 把全部 Plan 产物 commit 到本地默认分支(main / master): git add -A && git commit -m "chore: plan phase A0~A5 done" 3. B 阶段全程纯本地(无需远程仓库 / push / MR): 每个模块由 milestone-tag 本地 merge 进默认分支并打 milestone/ tag。 确认当前已在本地默认分支(main / master)上即可。 4. 运行 /erp-workflow:coding-start 进入 B 阶段 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 不调任何下游 skill。 ### 2.2 正常派发(`后续` 非空) 先打印整体流程图,再打印分发通知: ```bash cat "${CLAUDE_PLUGIN_ROOT}/skills/crosscut/plan-start/banners/flow-overview.txt" ``` 打印简短分发通知: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [plan-start] → 派发到 <后续> 未勾项: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 立即用 `Skill` 工具调用 `后续`。 ## 参考 - `docs/08-模块任务管理.md`(进度追踪) - `CLAUDE.md`(项目指令) - 后续 skills(通过 `Skill` 工具按名称调用)