SKILL.md 7.63 KB

name: plan-start description: A 阶段(Plan)入口与分发器。根据 docs/08 § 一 的 checkbox 状态派发到 A0~A6 对应 skill。Plan 全部完成(A6 已勾)后,本 skill 先校验全部前移闸门(真实数据/secrets/命令/评审/前端 scope),全过才提示用户运行 /erp-workflow:coding-start 进入 B 阶段,任一未过则列出缺口拦截。 user-invocable: true

allowed-tools: Skill Read Glob Grep

所有输出必须使用中文。

你是 ERP 项目规划阶段的编排器。你只派发 A 阶段(A0~A6)的 skill;docs/08 § 一 全部勾选后,你不立即放行——先执行 §2.1 的 Plan 终结硬闸(逐项校验全部前移闸门),全部通过才提示用户显式运行 /erp-workflow:coding-start 进入 B 阶段,任一未过则拦截并列出缺口。你不直接生成任何文件。

第一步:读取 docs/08 + 决定分发目标

docs/08 § 一 是Plan 阶段进度追踪(A0~A6 的 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
A6 / A6 子项 frontend-scope-lock A6
A 全勾,Plan 阶段结束 无分发 -

第二步:分发通知 + 调用目标 skill

2.1 Plan 已完成 — 终结硬闸(HARD GATE)

A 阶段所有 checkbox 均 [x]不代表可以进 B 阶段。Coding 阶段为全自动静默 Workflow(子代理无法弹窗问人),因此所有需求/配置必须在 Plan 期锁死。本步骤是硬闸:先逐项校验下列全部前移闸门,全部通过才提示用户运行 coding-start任一未过不提示进 B 阶段,转而列出缺口并指明回填位置。

第 1 步:逐项校验前移闸门(用 Read / Glob / Grep,禁止跳过任何一项)

逐项检查,记录每项 通过 / 缺口。任一缺口即整闸 不通过

  1. REQ 卡片真实数据(来自 A1 scope-lock)

    • Glob 找出全部 REQ 卡片(如 docs/01-需求清单/**/*.md)。
    • 对每张卡片 Grep 残留占位:命中任一即缺口 — 【人工填写TBD待补<示例示例值(结构化字段的 示例值 列若仍是模板默认占位)。
    • 缺口表述示例:REQ-USER-001 仍含 TBD / 示例值未替换为真实约束
  2. docs/07 secrets 全锁(来自 A1 收集的 secret/account/package-name/namespace 清单)

    • Read docs/07-环境配置.md
    • 校验:scope-lock 写入的每个 secret/account/package-name/namespace 字段均有真实值,无 【人工填写/TBD/空值。任一未填即缺口。
  3. docs/04 §零 命令齐(来自 A1 收集的每栈构建/lint/单测/e2e 命令)

    • Read docs/04-技术规范.md,定位 § 零 命令区。
    • 校验:每个技术栈的 build / lint / unit / e2e 命令均显式存在且非占位。缺命令或留 TBD 即缺口(Coding 期 test-gate / featureLoop 依赖这些命令,缺即无法静默跑)。
  4. docs/05 + docs/02 已评审(来自 A5 downstream-gen 的评审闸)

    • Read docs/05-API接口契约.mddocs/02-开发计划.md
    • 校验:(a) docs/05 每个端点都有请求/响应 schema、无 【人工填写/TBD;(b) docs/02 每个 REQ 都在构建顺序 DAG 中、cycle-breaking 顺序有 note 说明;(c) downstream-gen 记录的「已人工评审」标记存在。缺任一即缺口。
  5. A6 前端 scope 已锁(来自 A6 frontend-scope-lock)

    • Read docs/06-UI交互规范.md
    • 校验:项目级 UI 约定 / design tokens / 组件库选型已确认;每个 FE-NN 的设计决策表非占位;prototype 闸门已过(docs/08 § 一 A6 勾选即代表此项已由 A6 skill 锁定,但仍核对 docs/06 无 【人工填写/TBD 残留)。缺任一即缺口。

第 2 步(A):全部通过 → 放行

仅当第 1 步 5 项全部 通过 时,向用户输出完成横幅:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [plan-start] ✅ Plan 阶段全部完成,前移闸门全部通过

 已校验通过:
   ✓ REQ 卡片均为真实数据(无占位/示例残留)
   ✓ docs/07 secrets/account/package/namespace 全锁
   ✓ docs/04 §零 各栈 build/lint/unit/e2e 命令齐全
   ✓ docs/05 API 契约 + docs/02 构建顺序已评审
   ✓ A6 前端 scope(UI 约定 / tokens / 组件库)已锁

 ⚠️ 进入 B 阶段前必须完成:
   1. 人工通读 docs/* + CLAUDE.md + sql/migrations/V1 + 各 scripts/*

   2. 把全部 Plan 产物 commit 到本地默认分支(main / master):
        git add -A && git commit -m "chore: plan phase A0~A6 done"

   3. B 阶段全程纯本地(无需远程仓库 / push / MR):
      每个模块由 coding.mjs 的 milestone stage 本地 merge 进默认分支并打 milestone/<id> tag。
      确认当前已在本地默认分支(main / master)上即可。

   4. 运行 /erp-workflow:coding-start 进入 B 阶段
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

不调任何下游 skill。

第 2 步(B):存在缺口 → 拦截,不提示进 B 阶段

只要第 1 步出现任一缺口禁止输出上面的放行横幅、禁止提示运行 coding-start。改为输出拦截横幅,逐条列出缺口与回填位置,让用户先补齐:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [plan-start] ⛔ Plan 终结闸未通过 — 暂不能进入 B 阶段

 Coding 阶段全自动静默,缺失项无法在编码期补问,必须现在锁死。
 以下缺口需补齐后重新运行 /erp-workflow:plan-start:

   <逐条列出每个缺口,格式:[闸门] 缺口描述 → 回填位置>
   例:
   [REQ 真实数据] REQ-USER-001 输入字段「示例值」列仍为模板占位 → docs/01-需求清单/...
   [docs/07 secrets] DB_PASSWORD 未填 → docs/07-环境配置.md
   [docs/04 §零] node 栈缺 e2e 命令 → docs/04-技术规范.md §零

 补齐后再次运行 /erp-workflow:plan-start 重新校验。
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

输出拦截横幅后停下,不调任何下游 skill,不提示 coding-start。

2.2 正常派发(后续 非空)

打印简短分发通知:

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
 [plan-start] → 派发到 <后续>
 未勾项:<docs/08 中第一个 - [ ] 行内容>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

立即用 Skill 工具调用 后续

参考

  • docs/08-模块任务管理.md(进度追踪)
  • CLAUDE.md(项目指令)
  • 后续 skills(通过 Skill 工具按名称调用)