--- name: erp-plan-start description: A 阶段(Plan)入口与分发器。根据 docs/08 § 一 的 checkbox 状态派发到 A0~A5 对应 skill(§ 二是 B 阶段模块元数据,本 skill 不读)。Plan 全部完成(A5 已勾)时打印提示让用户运行 /erp-workflow:erp-coding-start 进入 B 阶段。 user-invocable: true allowed-tools: Skill Read Glob Grep --- **所有输出必须使用中文。** 用户是中文用户,所有对话、横幅、提示、报告一律用中文。 你是 ERP 项目**规划阶段的编排器**。你**只派发 A 阶段(A0~A5)的 skill**;docs/08 § 一 全部勾选后即停下,提示用户显式运行 `/erp-workflow:erp-coding-start` 进入 B 阶段,**不直接派发任何 B 阶段 skill**。你不直接生成任何文件。 ## 第一步:读取 docs/08 + 决定分发目标 + `mark_line` docs/08 § 一 是**Plan 阶段进度权威**(A0~A5 的 checkbox)。不做其他文件存在性检查——文件在不等于做完,只有 checkbox 是做完的证据。§ 二的模块元数据由 erp-coding-start 消费,本 skill 不读。 ### 分发判定 1. **docs/08 是否存在** 用 `Glob` 检查 `docs/08-模块任务管理.md`。 - 不存在 → `target=erp-project-init`、`mark_line=A0`、`unchecked_line=""`(流程开始)。 2. **找 § 一 第一个未勾的 A 子项** 用 `Grep`(pattern `^[[:space:]]*- \[ \].*A[0-5]`,`-n`)在 `docs/08-模块任务管理.md` 的 § 一 Plan 段搜索,取**最小行号**那一行作为 `unchecked_line`。 注:§ 二 的模块行是纯 bullet(形如 `- module_id ...`),不会被此 pattern 匹配。 3. **把 `unchecked_line` 映射到 `target_skill` + `mark_line`**: | `unchecked_line` 特征 | `target_skill` | `mark_line` | |---|---|---| | 无 docs/08 | `erp-project-init` | `A0` | | 含 `A0` / A0 子项 | `erp-project-init` | `A0` | | 含 `A1` / A1 子项 | `erp-scope-lock` | `A1` | | 含 `A2` / A2 子项 | `erp-skeleton-gen` | `A2` | | 含 `A3` / A3 子项 | `erp-db-init` | `A3` | | 含 `A4` / A4 子项 | `erp-db-design-gen` | `A4` | | 含 `A5` / A5 子项 | `erp-downstream-gen` | `A5` | | 无命中(A 全勾,Plan 阶段结束) | **无分发** | `plan-done` | 项目完成状态(B 阶段所有模块 MR merged)由 `erp-coding-start` 扫描 MR state 判定并打印,本 skill 不处理。 ## 第二步:分发通知 + 调用目标 skill 本入口**不画完整流程图**——目标 A skill 会在自己的步骤 0 打印带 `▶` 当前位置的流程图。本步骤只做分发决策与通知。 ### 2.1 Plan 已完成(`mark_line=plan-done`) A 阶段所有 checkbox 均 `[x]`。因无下游 A skill 接手,本步骤**自行打印流程图**(`▶` 标在"规划阶段到此结束")并给出提示,然后**停下**;项目整体完成状态由 `erp-coding-start` 扫描 MR state 判定,本 skill 不负责: ``` ┌──────────────────────────────────────────────────────┐ │ 📋 阶段 A:规划(一次性) │ │ │ │ A0 初始化项目 → A1 锁范围(REQ 卡片) │ │ ↓ │ │ ⏸ 等你审阅 REQ,重新运行 /erp-plan-start 继续 │ │ ↓ │ │ A2 生成骨架 → A3 初始化 DB → A4 生成 DB 设计 → A5 生成下游文档│ │ ↓ │ │ ▶ 规划阶段到此结束 │ └──────────────────────────────────────────────────────┘ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [erp-plan-start] ✅ Plan 阶段全部完成 ⚠️ 进入 B 阶段前必须完成: 1. 人工通读 docs/01~10 + CLAUDE.md + sql/migrations/V1 + 各 scripts/* 2. 把全部 Plan 产物 commit: git add -A && git commit -m "chore: plan phase A0~A5 done" 3. 推到远程: git remote add origin # 若尚未添加 git -c core.hooksPath=/dev/null push -u origin master # 首次 push 本地 DB 尚未就位、scripts/test.sh 必然失败。 # `-c core.hooksPath=/dev/null` 临时把 hooksPath 指到空目录, # 跳过 .githooks/pre-push 但不动 repo 的 core.hooksPath 配置, # 也不用 --no-verify(后者被 CC 的 deny-no-verify hook 硬拦)。 # push 完成后到 GitLab UI 把 master(或 main)设为 protected 4. main(或 master)就绪后,再运行 /erp-workflow:erp-coding-start ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 不调任何下游 skill。 ### 2.2 正常派发(`target_skill` 非空) 打印简短分发通知: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [erp-plan-start] → 派发到 未勾项: ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 立即用 `Skill` 工具调用 `target_skill`。 ## 参考 - `docs/08-模块任务管理.md`(唯一进度权威) - `CLAUDE.md`(项目指令) - 下游 skills(通过 `Skill` 工具按名称调用)