--- name: coding-start description: B 阶段(Coding)瘦入口。校验 Plan 终结闸(docs/08 §一 A0~A6 全勾、已在本地默认分支、工作树干净)后,读取 docs/08 §二/§三 概述模块/前端进度,然后调用 workflows/coding.mjs Workflow 在后台全自动、静默地跑完整个编码阶段(后端+前端功能循环、测试闸、里程碑 tag),跑完或 halt 时通知用户。本入口不写任何文件、不做编码决策。 user-invocable: true allowed-tools: Read Glob Workflow --- **所有输出必须使用中文。** 你是 B 阶段(Coding)的**瘦入口**。你的唯一职责是:**校验 Plan 终结闸 → 概述进度 → 启动 `workflows/coding.mjs` Workflow**。 编码阶段是**全自动、静默的 Workflow**——其子代理物理上无法弹窗问人。因此本入口**不做任何编码决策、不写任何文件、不调用其他 skill**;全部需求/配置必须已在 Plan 期(A0~A6)锁死。真正的进度判定与 `git tag` 核对由 `coding.mjs` 的 router stage 从 `docs/08` + tag 重算——本入口的进度概述仅为给用户的信息提要。 > 工具约束:本 skill 只允许 `Read` / `Glob` / `Workflow`,**不允许 Bash**。门禁与进度概述全部基于 `docs/08` 文本(其 `里程碑:` 字段已记录每模块/前端阶段的 tag 名),权威的 `git tag -l 'milestone/*'` 核对交由 Workflow 内 router stage 完成。 ## 执行步骤 ### 步骤 0:打印 B 阶段流程概览(模型直接输出,不用 cat) 直接向用户输出以下横幅(逐字输出文本本身,**不要**用任何命令读文件): ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [coding-start] B 阶段(Coding)= 一个全自动静默 Workflow Router → 读 docs/08 + git tag,算出未完成模块 每个模块: 后端功能循环 spec → plan → tdd → verify → review(≤5轮) 后端测试闸 test-gate(RED 自动重试 1 次,仍 RED → halt) 前端功能循环 同一流水线,phase=frontend(FE-NN,限 frontend/) 前端测试闸 test-gate 跨模块记录 → 模块报告 → 里程碑(merge --no-ff + milestone/ tag) 任一模块 halt → fail-fast 停在该模块,修复后重跑本入口即可续跑 全程无 Q&A:缺值表现为带诊断的 halt,不是对话框。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ### 步骤 1:确认 docs/08 存在 用 `Glob` 检查 `docs/08-模块任务管理.md`。 - 不存在 → 输出「⚠️ 项目尚未初始化,请先运行 `/erp-workflow:plan-start`」并**停下**,不启动 Workflow。 ### 步骤 2:Plan 终结闸校验(HARD GATE) `Read` `docs/08-模块任务管理.md`,逐项校验,任一不满足即**拦截、不启动 Workflow**: 1. **docs/08 § 一 A0~A6 全部勾选** - 读 § 一 进度表,确认 A0/A1/A2/A3/A4/A5/A6(含各自子项)均为 `[x]`。 - 任一未勾 → 缺口:`Plan 未完成(<未勾项>)→ 先运行 /erp-workflow:plan-start`。 2. **当前在本地默认分支(main / master)** - 本入口无 Bash,无法直接查 git。改为信任用户:在放行横幅中**显式要求**用户确认当前已在默认分支。若用户已说明不在默认分支,则拦截。 - (权威的分支/tag 状态由 `coding.mjs` 的 milestone stage 在 merge 时校验。) 3. **工作树干净(Plan 产物已 commit)** - 同样无法用 Bash 直接查。在放行横幅中**显式要求**用户确认工作树干净、Plan 产物已提交。 > 第 2/3 项受 `allowed-tools` 限制(无 Bash)无法程序化核对,故以放行横幅中的明确前置要求承担;Workflow 的 milestone stage 在本地 merge 时会再次校验分支与工作树,不干净则该 stage 失败并 halt。 任一缺口 → 输出拦截横幅,逐条列出缺口与回填位置,**停下**,不启动 Workflow: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [coding-start] ⛔ 未满足进入 B 阶段的前置条件 <逐条列出缺口,格式:[项] 缺口描述 → 回填/处理位置> 例:[Plan 进度] A6 前端 scope 未勾 → 先运行 /erp-workflow:plan-start 处理后重新运行 /erp-workflow:coding-start。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` ### 步骤 3:概述进度(信息提要) 仅当步骤 2 的 § 一 校验通过后,`Read` `docs/08 § 二`(后端模块元数据 + `里程碑:` 字段)与 `§ 三`(前端阶段 `整体里程碑:` 字段),概述: - 后端:每个模块的 `里程碑:` 是否已是 `milestone/`(已完成)还是 `—`(待跑)。 - 前端:`§ 三 整体里程碑:` 是否已是 `milestone/frontend-phase`(已完成)还是 `—`(待跑)。 向用户简述「已完成 N 个模块 / 待跑 M 个模块;前端阶段:已完成 / 待跑」。 > 这是基于 docs/08 文本的提要;权威的 `git tag -l 'milestone/*'` 核对与未完成集合的最终判定由 Workflow 的 router stage 完成(router 以 docs/08 + tag 双重为准)。本入口不因提要里看似"全部完成"就跳过启动——是否有事可做由 router 决定。 ### 步骤 4:启动 Coding Workflow 用 `Workflow` 工具调用编码编排脚本(`` 替换为当前项目根的绝对路径): ``` Workflow({ scriptPath: "${CLAUDE_PLUGIN_ROOT}/workflows/coding.mjs", args: { projectRoot: "" } }) ``` ### 步骤 5:告知用户已后台启动 启动后向用户输出: ``` ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ [coding-start] ✅ Coding Workflow 已在后台启动 进度概述:<步骤 3 概述,如「待跑 3 模块 + 前端阶段」> ⚠️ 请确认(本入口无法程序化核对): • 当前已在本地默认分支(main / master) • 工作树干净,Plan 产物(docs/* + skeleton + DDL)已 commit Workflow 将按模块顺序全自动、静默推进;跑完所有模块或在某模块 halt(测试闸持续 RED / review 5 轮未过 / 缺值阻塞等)时会通知你。 halt 后请按诊断修复,再重新运行 /erp-workflow:coding-start 续跑。 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ``` 本 skill 到此结束,**不调用任何下游 skill**。 ## 参考 - `docs/08-模块任务管理.md § 一`(A0~A6 Plan 进度,步骤 2 读取) - `docs/08-模块任务管理.md § 二`(后端模块元数据 + 里程碑字段,步骤 3 读取) - `docs/08-模块任务管理.md § 三`(前端阶段整体里程碑,步骤 3 读取) - `workflows/coding.mjs`(B 阶段编排脚本,步骤 4 启动) - `plan-start`(姊妹入口,A 阶段) - `CLAUDE.md`(项目指令)