From 91a6322cd5770abf0f069c1a19dfa9dad61d8895 Mon Sep 17 00:00:00 2001 From: zichun Date: Mon, 25 May 2026 14:29:34 +0800 Subject: [PATCH] fix(lite): restore frontend phase in lite-init (docs/08 §三 + CLAUDE-template two-phase model + S2 soft rule) --- skills/plan/lite-init/templates/CLAUDE-template.md | 49 ++++++++++++++++++++++++++++--------------------- skills/plan/lite-init/templates/docs-08-initial-template.md | 17 ++++++++++++++++- 2 files changed, 44 insertions(+), 22 deletions(-) diff --git a/skills/plan/lite-init/templates/CLAUDE-template.md b/skills/plan/lite-init/templates/CLAUDE-template.md index 02930e0..8da923c 100644 --- a/skills/plan/lite-init/templates/CLAUDE-template.md +++ b/skills/plan/lite-init/templates/CLAUDE-template.md @@ -13,36 +13,43 @@ --- -## 🔄 编码开发流程(统一循环) +## 🔄 编码开发流程(两阶段 + 统一功能循环) -编码阶段入口:`/erp-workflow:coding-start`。所有模块统一走同一个 phase-driver 循环,无前后端分段。 +编码阶段入口:`/erp-workflow:coding-start`。lite 保留**后端模块阶段**与**前端整体阶段**两段,但两段共用**同一套功能循环 skill**(`feature-spec → feature-tdd → feature-review`),由 `phase` 参数区分。 ### 阶段路由(coding-start 内,只做分发) -`coding-start` 每次入口扫描 `docs/08 § 二` 的 `里程碑:` 字段 + 本地 `git tag -l 'milestone/'`,找第一个未打里程碑的模块分发到 `phase-driver`;所有模块里程碑均已打 → 输出"全部完成"。 +`coding-start` 每次入口按"先后端、再前端"检查并派发到 `phase-driver`: -### 统一功能循环 +1. 扫 `docs/08 § 二` 各后端模块 `里程碑:` 字段 + `git tag -l 'milestone/'`:有未打里程碑模块 → 派发 `phase-driver`(phase=backend),结束。 +2. 后端全部打里程碑 → 读 `docs/08 § 三` `整体里程碑:` + `git tag -l 'milestone/frontend-phase'`:未完成 → 派发 `phase-driver`(phase=frontend),结束。 +3. 后端 + 前端都完成 → 输出"所有阶段已完成"。 -**模块循环(外)**:`phase-driver` → feature 循环 → `milestone`(本地 merge 进默认分支 + 打 `milestone/` tag)→ 自动回调 `coding-start` 路由下一模块(无人工介入)。 +### 统一功能循环(两阶段共用) -**功能循环(内,每个 REQ-XXX-NNN 一遍)**:`feature-spec` → `feature-tdd` → `feature-review`。 -- `feature-review` verdict=approve → 勾选 docs/08 § 二 对应功能子项,继续下一 feature; -- 模块所有 feature 完成 → 调用 `milestone` 打里程碑 tag + 回调 `coding-start`。 +**阶段驱动(外)**:`phase-driver`(phase=backend 走后端模块;phase=frontend 走前端整体阶段——自带 prototype/ 门禁 + 从 prototype/docs01/docs05 推导 FE 清单写入 docs/08 § 三)→ feature 循环 → `milestone`(本地 merge 进默认分支 + 打 `milestone/` 或 `milestone/frontend-phase` tag)→ 自动回调 `coding-start` 路由下一阶段(无人工介入)。 + +**功能循环(内,每个 REQ-XXX-NNN 或 FE-NN 一遍)**:`feature-spec` → `feature-tdd` → `feature-review`。 +- phase=backend:单元是 REQ,分支 `module-`,产出 controller/service/repository/DTO/migration; +- phase=frontend:单元是 FE,分支 `frontend-phase`,产出 `frontend/` 下组件/路由/API client(以 prototype 为页面权威); +- `feature-review` verdict=approve → 勾选 docs/08 § 二(后端 REQ)/ § 三(前端 FE)对应子项,继续下一单元; +- 本阶段单元全部完成 → 调用 `milestone` 打里程碑 tag + 回调 `coding-start`。 ### 里程碑前守门 -- `milestone` 在打 tag 前内置测试闸门(后端:`scripts/test.sh`);红色不得跳过。 +- `milestone` 在打 tag 前内置测试闸门(phase 由分支推断:后端 `scripts/test.sh`;前端 vitest + Playwright,命令取自 docs/04 § 零);红色不得跳过。 - 测试 / 验证统一派发到 Agent 子会话执行,主会话只接收结构化结论。 --- ## ✅ 阶段完成判定规则 -`docs/08-模块任务管理.md` 分两段: +`docs/08-模块任务管理.md` 分三段: - `§ 一`:计划阶段三段(①②③)进度勾选 -- `§ 二`:编码模块元数据表(每个模块一行 bullet,记录依赖 / 路径 / 里程碑 tag / 功能子项) +- `§ 二`:后端编码模块元数据表(每个模块一行 bullet,记录依赖 / 路径 / 里程碑 tag / REQ 功能子项;行序即 REQ 开发顺序,是 phase-driver 的排序权威) +- `§ 三`:前端整体阶段(`整体里程碑:` 字段 + FE 功能清单,由 phase-driver(phase=frontend) 推导填入) -**阶段完成判定**统一以 `里程碑:` 字段 + 本地 `git tag -l 'milestone/'` 判定;子项勾选只作可视化进度,不参与完成判定。 +**阶段完成判定**统一以 `里程碑:` 字段(§二 模块 / §三 整体)+ 本地 `git tag -l 'milestone/'` 判定;子项勾选只作可视化进度,不参与完成判定。 ### 后端模块格式 @@ -165,7 +172,7 @@ | # | 软规则 | 允许动作 | 强制后续 | | - | ----- | ------- | ------- | | S1 | **技术栈外组件引入** | 用 `AskUserQuestion` 给用户三选一:接受引入 / 换方案 / 拒绝 | ① **接受** → 同会话直接在 `docs/04 § 零` 追加一行 → 继续流程 ② **换方案 / 拒绝** → 视为常规歧义澄清,继续 Q&A 收敛 ③ 不写 Blocker、不中断流程 | -| S2 | **跨模块改动** | **默认不改**,仅为当前模块实现所必需时允许修改 | ① hook `log-cross-module.sh` 自动落存根 ② `milestone` 在打里程碑前调用 `interrupt-check` skill 批量补齐「原因 / 影响评估」节 | +| S2 | **跨模块改动** | **默认不改**,仅为当前模块实现所必需时允许修改 | 在该模块 `milestone` 完成报告的「⑤ 偏离与取舍」节如实记录改了哪个非当前模块的文件 + 原因(lite 无自动留痕 hook,靠报告人工记录) | --- @@ -236,7 +243,7 @@ Strong success criteria let you loop independently. Weak criteria ("make it work | Skill | 描述 | |-------|------| | `plan-start` | 计划阶段入口——扫 docs/08 § 一找第一个未完成计划段(①②③)并派发 | -| `coding-start` | 编码阶段入口——扫 docs/08 § 二找第一个未打里程碑模块并派发 phase-driver | +| `coding-start` | 编码阶段入口 + 阶段分发器——先后端(docs/08 § 二)后前端(§ 三),派发 phase-driver(phase=backend/frontend);都完成则输出全部完成 | ### 计划阶段 @@ -250,11 +257,11 @@ Strong success criteria let you loop independently. Weak criteria ("make it work | Skill | 描述 | |-------|------| -| `phase-driver` | 模块驱动——加载当前模块 REQ 清单,逐个派发 feature 循环 | -| `feature-spec` | 功能规格——为 REQ 生成 spec 文档(API 签名、数据变更、边界) | -| `feature-tdd` | TDD 实现——按 spec 写测试先行,再实现,Agent 子会话跑测试 | -| `feature-review` | AI 代码审查——审查当前 REQ 实现,verdict approve/reject,approve 时勾选进度 | -| `milestone` | 里程碑——内置测试闸门(Agent 子会话),green 则本地 merge + 打 tag,生成模块完成报告 | +| `phase-driver` | 阶段驱动(phase 参数区分)——backend:加载当前模块 REQ 清单逐个派发;frontend:prototype/ 门禁 + 推导 FE 清单写 docs/08 § 三后逐个派发 | +| `feature-spec` | 功能规格(两阶段共用)——为 REQ(后端)/ FE(前端)生成"规格 + 任务级计划"合并文档 | +| `feature-tdd` | TDD 实现(两阶段共用)——按 plan 测试先行再实现,Agent 子会话跑测试;路径护栏按 phase 区分 | +| `feature-review` | 验证 + AI 自审(两阶段共用)——子会话跑测试 + reviewer agent(后端 superpower / 前端 fe-code-reviewer),approve 勾选进度回 phase-driver | +| `milestone` | 里程碑(phase 由分支推断)——内置测试闸门(Agent 子会话),green 则本地 merge + 打 tag,生成完成报告 | ### 守门 @@ -268,6 +275,6 @@ Strong success criteria let you loop independently. Weak criteria ("make it work |------|------| | `docs/01-需求清单/` | REQ 卡片目录(模块子目录 + index.md) | | `docs/03-数据库设计文档.md` | 表/字段/索引/外键 SSoT(lite-design 生成,编码阶段同步更新) | -| `docs/04-技术规范.md` | 技术栈总览(§ 零)+ 架构规范 + 环境变量说明(含 .env.local 密钥字段) | +| `docs/04-技术规范.md` | 技术栈总览(§ 零)+ 架构规范 + 前端 Design Tokens / 交互约定 + 环境变量说明(含 .env.local 密钥字段)——lite 把原 UI 规范与环境配置并入此文件 | | `docs/05-API接口契约.md` | 所有后端接口契约(lite-build-db 生成,feature-spec 按需追加) | -| `docs/08-模块任务管理.md` | 全流程进度跟踪(§ 一计划 / § 二编码) | +| `docs/08-模块任务管理.md` | 全流程进度跟踪(§ 一计划 / § 二后端模块 / § 三前端整体) | diff --git a/skills/plan/lite-init/templates/docs-08-initial-template.md b/skills/plan/lite-init/templates/docs-08-initial-template.md index 4294e88..af432ad 100644 --- a/skills/plan/lite-init/templates/docs-08-initial-template.md +++ b/skills/plan/lite-init/templates/docs-08-initial-template.md @@ -2,7 +2,8 @@ > 全流程进度跟踪。CC 每完成一项产出就勾选一项。 > - **§ 一 计划阶段**:`plan-start` 找第一个未勾的计划段(①②③)分发到对应 skill -> - **§ 二 Coding(模块)**:`coding-start` 扫描 docs/08 § 二 的 `里程碑:` 字段 + 本地 `git tag -l 'milestone/'`,找第一个未打里程碑模块分发。本 § 二 行序无语义,仅作模块元数据表 +> - **§ 二 Coding(后端模块)**:`coding-start` 扫描 docs/08 § 二 的 `里程碑:` 字段 + 本地 `git tag -l 'milestone/'`,找第一个未打里程碑模块,派发 `phase-driver`(phase=backend)。本 § 二 行序即 REQ 开发顺序(lite-build-db 按依赖拓扑写入),是 phase-driver 的排序权威 +> - **§ 三 Coding(前端整体)**:后端全部打里程碑后,`coding-start` 读 § 三 `整体里程碑:` + `git tag -l 'milestone/frontend-phase'`,未完成则派发 `phase-driver`(phase=frontend) ## 一、计划阶段进度 @@ -35,3 +36,17 @@ - [ ] REQ-SYS-001 用户登录 - [ ] REQ-SYS-002 用户注册 --> + +## 三、Coding 阶段(前端整体) + +(`phase-driver`(phase=frontend)进入时扫 prototype/ + docs/01 + docs/05 → AI 自主推导 FE 业务功能清单写到下方"功能:"项(无人工审阅断点;合理性由整体里程碑标记时统一校核)。已有清单则直接加载。整个前端阶段 1 个里程碑 tag,分支 `frontend-phase`。) + +- 整体里程碑: — +- 功能: + -- libgit2 0.22.2