erp-workflow
Claude Code 插件:ERP / 后端管理系统全流程开发框架。
把"从零到 N 个模块上线 + 前端整体阶段"的整个流程固化成 27 个 skill + 2 个 agent + 2 个 hook + 44 份模板,让 CC 在 schema 演化用 Flyway migration、需求可追溯、人工审核可控的前提下推进编码。后端按模块循环依次提交 MR,所有后端 merged 后进入前端整体阶段(以项目根 prototype/ 静态 HTML mockup 为页面权威)。
这个插件做什么
📋 阶段 A:规划(一次性,入口 /erp-workflow:plan-start)
A0 初始化项目 → A1 锁范围(生成 REQ 卡片)
↓
⏸ 审阅 REQ → 重新运行 /plan-start
↓
A2 生成骨架 → A3 生成 DB 设计(REQ → docs/03 + 回填依赖表)
↓
⏸ 审阅 docs/03 → 重新运行 /plan-start
↓
A4 初始化 DB(docs/03 → V1 migration → 自动 apply 到本地 MySQL)
↓
A5 生成下游文档(docs/02 / docs/05 / docs/06 § 三 / docs/10)
↓
用户显式 /erp-workflow:coding-start
🔁 阶段 B:编码(入口 /erp-workflow:coding-start)
B-后端(按模块循环)
功能循环:Brainstorm → Plan → TDD → Verify → Review
模块循环:本地测试闸门 → 写模块报告 → 创建 GitLab MR → ⏸ 用户 Approve+Merge → 下次 coding-start 自动扫描 MR 状态为 merged → 下一模块
↓ 后端全部 merged 后
B-前端(整体阶段,1 个 MR)
入口门禁:检查项目根 prototype/ 至少含 1 个 *.html mockup(缺失则 AskUserQuestion 提示用户补齐)
FE 拆分:AI 自主推导功能清单(业务功能粒度,与 HTML 文件数无关)写入 docs/08 § 三;已有则加载——无人工审阅断点(人工只在 MR Approve+Merge 处介入)
FE 循环(每个 FE-NN):fe-feature-brainstorm → -plan → -tdd → -verify → -review
收尾:test-gate(phase=frontend) → module-report(phase=frontend) → mr-create(分支 frontend-phase)→ ⏸ 用户 Approve+Merge → 全部完成
⚙️ 后台守门:占位符未填 / 中断触发 / 跨模块改动未记录
首次使用
-
进入空项目目录并启动 Claude Code:
mkdir my-erp && cd my-erp claude --plugin-dir /path/to/erp-workflow-plugin -
Plan 阶段入口(一次性规划):
/erp-workflow:plan-startPlan 阶段三段式执行,中间有两个人工审阅断点:
-
第一段(首次运行):执行 A0 → A1(创建骨架 / 锁技术栈 / 填需求 / 生成 REQ 卡片骨架)后停下,等你审阅并补全
docs/01-需求清单/<module>/REQ-*.md(CC 已起草 req_id / title / goal / rules / constraints / acceptance;输入 / 输出 各含一句简述 + N 张示例字段表,模板原样复制由你按业务编辑;依赖表 / 依赖接口保留TBD(A3/A5 自动补)由后续 skill 回填——Plan 阶段第一个人工关口:业务范围) -
第二段(REQ 审阅完重新运行):继续 A2 → A3(生成骨架 / 从 REQ 正向设计
docs/03-数据库设计文档.md并回填 REQ 依赖表)后再次停下,等你审阅 docs/03 的表 / 字段 / 索引 / 外键(第二个人工关口:数据库 schema —— A4 会基于它翻译 DDL 并 apply 到 MySQL,所以这关口与 REQ 审阅同等重要) -
第三段(docs/03 审阅完重新运行):执行 A4 → A5(解析 docs/03 → 生成 V1 migration → 自动
DROP+CREATE本地 schema 并 apply → 生成下游文档),Plan 完成后再次停下
每次运行都会自动接上次停下的地方继续;中途可以随时关闭 CC,下次运行同样的命令即可恢复。Plan 完成后不会自动进入编码,需要你手动运行 /erp-workflow:coding-start。
两个审阅断点的处理方式一致:A1 / A3 完成时 skill 已自动勾选
docs/08-模块任务管理.md § 一该阶段的全部子项 + 顶层;审阅是隐式的——你看完 REQ 卡片 / docs/03 后直接重新运行/plan-start,下次入口就会派发到下一阶段。如果审阅时发现需要修订,直接编辑 docs/01 / docs/03 即可,不依赖 docs/08 的勾选状态。
-
Coding 阶段入口(后端模块循环 → 前端整体阶段):
/erp-workflow:coding-startPlan 全部完成后由你显式触发。coding-start是阶段分发权威——每次入口都重新扫描 docs/08 § 二/§ 三 + GitLab API state,按当前进度决定派发:
路由规则(coding-start 真值表,只做分发):
| backend_done | frontend_done | coding-start 派发 |
|---|---|---|
| false | 任意 | module-start(写后端) |
| true | false | frontend-start(写前端) |
| true | true | 打印"所有阶段已完成",停下 |
GitLab API HTTP 非 200 / 查不到 / state 非法 → 停下报错(绝不静默假设未 merged)。
后端阶段(module-start 内,单一职责):
- 切到
module-<id>分支,跑功能循环(feature-brainstorm → ... → feature-review)→ 全 approve → test-gate → module-report → mr-create → ⏸ 人工 Approve+Merge → 用户重跑 coding-start,coding-start 再次路由
前端阶段(frontend-start 内,自带前置门禁):
- 步骤 1:prototype/ 门禁(≥ 1 个 *.html,缺失则 AskUserQuestion 提示用户补齐 → 停下)
- 步骤 2:准备 FE 清单(无审阅断点)。§ 三 占位则 AI 扫 prototype + docs/01 + docs/05 自主推导 FE 业务功能清单写入 § 三(每个 FE 标注关联 REQ + 关联原型;FE 数与 HTML 文件数无关);§ 三 已有则直接加载
- 步骤 4-8:MR state 判定 → 切
frontend-phase分支 → 跑 fe-feature 循环(fe-feature-brainstorm → ... → fe-feature-review,专用fe-code-revieweragent 做 7 维 review)→ 全 approve → test-gate(frontend) → module-report(frontend) → mr-create(docs/08 § 三 整体 MR)→ ⏸ 人工 Approve+Merge
docs/08 § 二 每后端模块占一行 bullet,§ 三 是前端阶段整体段,完成信号统一由 MR merged state 判定。
- 中途恢复:任何时候运行对应入口命令——根据 Plan § 一 checkbox、§ 二 各后端模块 MR state、§ 三 前端整体 MR state 跳到当前该做的事。
目录结构
erp-workflow-plugin/
├── .claude-plugin/
│ └── plugin.json # 插件清单,声明 skills 四个子目录
├── README.md # 本文档
├── hooks/
│ ├── hooks.json # hook 注册表(2 个 hook)
│ └── scripts/*.sh # 2 个 hook 脚本
├── agents/
│ ├── superpower-code-reviewer.md # 后端 code-reviewer agent(feature-review 调用)
│ └── fe-code-reviewer.md # 前端专用 reviewer(fe-feature-review 调用,硬编码 7 维 review)
└── skills/
├── plan/ # 阶段 A:6 个一次性规划 skill
├── coding/ # 阶段 B:15 个 skill = 9 个后端模块/功能循环 + frontend-start + 5 个 fe-feature-*
├── crosscut/ # 横切:2 个入口 + 1 中断守门 + 1 留痕 skill
└── internal/ # superpowers 本地 fork:2 个无门 brainstorming / writing-plans
Hook 清单(2 个,全部在 hooks/hooks.json 注册)
| Hook | 脚本 | 事件 | 触发条件 | 作用 |
|---|---|---|---|---|
| 拒绝 no-verify | deny-no-verify.sh |
PreToolUse / Bash | CC 尝试 git push --no-verify
|
硬拦截,强制 .githooks/pre-push 生效 |
| 跨模块改动留痕 | log-cross-module.sh |
PostToolUse / Edit \ | Write | 当前处于 module-* 分支 且 编辑目标路径落在 docs/08 § 二 中非当前模块的 path 范围内(无论目标模块 MR 是否已 merged) |
Skill 清单(27 个)
Plan 阶段(6 个,skills/plan/)
| # | Skill | 作用 | 流程中谁调用 |
|---|---|---|---|
| A0 | project-init |
• 依赖检查(mysql 在 PATH,缺失则尝试自动安装)• 空目录初始化: cp 模板创建 CLAUDE.md / docs/01/index.md / docs/08• git init
|
plan-start |
| A1 | scope-lock |
• 引导填项目概述 / 技术栈 / 需求索引 • 按 docs/01-需求清单/<module>/{_module.md, REQ-*.md} 子目录结构生成 REQ 卡片骨架(CC 起草 req_id / title / goal / rules / constraints / acceptance;输入 / 输出 各含一句简述 + N 张示例字段表(输入 8 列 / 输出 3 列),全部原样复制自模板,由人工按业务编辑;依赖表 / 依赖接口 留 TBD(A3/A5 自动补))• 停下等人工审阅 + 改输入 / 输出,审阅完毕用 /plan-start 恢复续进 A2 |
A0 |
| A2 | skeleton-gen |
• 生成架构文档:docs/04 § 一+ / docs/06 / docs/07 / docs/09 • 生成工具脚本:scripts/*.sh、.githooks/pre-push、.env.local • 创建 sql/migrations/ 空目录(Flyway 准备)• 合并 .gitignore(逐行判重) |
plan-start |
| A3 | db-design-gen |
• 从 docs/01 REQ 卡片正向设计 docs/03-数据库设计文档.md(schema SSoT)• 回填 REQ 卡片依赖表( TBD(A3 自动补) → 实际表名)• 停下等人工审阅 docs/03,审阅完毕用 /plan-start 恢复续进 A4 |
A2 |
| A4 | db-init |
• LLM 解析 docs/03 → sql/migrations/V1__initial_schema.sql(DDL only)• 5 维度全量校验 DDL ↔ docs/03(表名 / 列名+列序 / 类型+nullable+默认值 / 索引名 / FK 名),fail-closed • 验证 MySQL 连接 • 调 scripts/setup-test-db.sh 复用三层防护(与 B 阶段 test.sh 共用)→ DROP+CREATE 空库• apply V1 + SHOW TABLES 行数自检 |
A3 |
| A5 | downstream-gen |
• 一次性生成 docs/02 / docs/05 / docs/06 § 三 / docs/10 • 回填 REQ 卡片依赖接口( TBD(A5 自动补) → 实际 endpoint)• 追加模块清单到 docs/08 § 二 • 最终占位符扫描(TBD 自动补 + 【人工填写:】 QA 循环)• 打印 Plan 完成横幅并停下(不自动进 B) |
A4 |
Coding 阶段(15 个,skills/coding/)
触发与顺序(coding-start 是唯一由用户手动触发的入口,下面所有 skill 都由 skill 链自动调用):
/erp-workflow:coding-start ← 用户每次手动触发;阶段分发器(只做分发)
│
│ ① Plan 完成校验(docs/08 § 一 A0~A5)
│ ② 后端完成性检查(§ 二 + GitLab state)
│ ├ 未完成 → 立即派发 module-start,结束
│ └ 已完成 → 继续 ③
│ ③ 前端完成性检查(§ 三 整体 MR + state)
│ ├ 已完成 → 打印"所有阶段已完成",结束
│ └ 未完成 → 派发 frontend-start,结束
│
├─ 后端未完成 → 派发 module-start(写后端)
│ │
│ │ 切 module-<id> 分支,对每个未完成 REQ:
│ │ feature-brainstorm → -plan → -tdd → -verify → -review
│ │
│ │ review approve → 回 module-start(下一 REQ)
│ │ request-changes (<5) → fix → 回 feature-verify
│ │ request-changes (=5) → 停下(升级给人)
│ │
│ │ 本模块所有 REQ approve:
│ │ test-gate(phase=backend) → module-report → mr-create
│ │ (docs/08 § 二 写 MR iid)
│ │
│ └─ ⏸ 停下等人工 Approve + Merge
│ (合并后用户重跑 coding-start → coding-start 再次路由)
│
├─ 后端完成 & 前端完成 → 打印"所有阶段已完成",停下
│
└─ 后端完成 & 前端未完成 → 派发 frontend-start(写前端)
│
│ frontend-start 自带前置门禁(coding-start 不做):
│ ① prototype/ 门禁(≥ 1 个 *.html,缺失则 AskUserQuestion)
│ ② 准备 FE 清单(无审阅断点):
│ § 三 已有 FE bullet → 加载
│ § 三 仅占位 → AI 推导写入
│ ③ 切 frontend-phase 分支
│
│
│ 准备 FE 清单(无审阅断点):
│ § 三 占位 → 扫 prototype + docs/01 + docs/05
│ → AI 自主推导 FE 业务功能清单写入 § 三
│ (含 fe_id / 功能名 / 关联 REQ / 关联原型)
│ § 三 已有 FE bullet → 直接加载
│
│ 切 frontend-phase 分支
│ FE 是业务功能粒度(与 HTML 文件数无关,
│ 一个 HTML 可拆多个 FE / 多 HTML 可合一个 FE)
│
│ 对每个未完成 FE:
│ fe-feature-brainstorm → -plan → -tdd → -verify → -review
│ (review 委托 fe-code-reviewer agent,硬编码 7 维 checklist)
│
│ review approve → 回 frontend-start(下一 FE)
│ request-changes (<5) → fix → 回 fe-feature-verify
│ request-changes (=5) → 停下
│
│ 全部 FE approve:
│ test-gate(phase=frontend)(vitest + playwright,子会话跑)
│ → module-report(phase=frontend)
│ → mr-create(docs/08 § 三 整体 MR)
│
└─ ⏸ 停下等人工 Approve + Merge
(合并后再跑 coding-start → "所有阶段已完成")
| Skill | 做什么 | 谁触发它 |
|---|---|---|
module-start |
后端模块循环单一职责(不感知前端阶段)。切 module-<id> 分支,扫 docs/superpowers/reviews/*.md 的 verdict=approve 计算已完成 REQ,推进第一个未完成 REQ;本模块全 approve → test-gate。幂等可重入
|
coding-start 派发(仅当后端有未 merged 模块时);feature-review approve 后回调 |
feature-brainstorm |
功能循环步骤 1:交互 brainstorm → 生成 docs/superpowers/specs/*.md
|
module-start 推进 REQ 时调用 |
feature-plan |
功能循环步骤 2:spec → 任务级 plan(文件路径 + API 签名 + 测试意图 + 完成判据,代码由 TDD 阶段产出),输出 docs/superpowers/plans/*.md
|
feature-brainstorm 链式调用 |
feature-tdd |
功能循环步骤 3:红绿循环(写失败测试 → 实现 → 子会话验证通过 → commit 到 module-<id> 分支);路径硬护栏:impl_file 落 frontend/ 前缀 → 硬停(UI 推迟到前端阶段) |
feature-plan 链式调用 |
feature-verify |
功能循环步骤 4:将全量测试派发到子会话执行一次,用模板渲染 evidence |
feature-tdd 链式调用;feature-review 在 request-changes 修复后重新调用 |
feature-review |
功能循环步骤 5:AI 自审,写 docs/superpowers/reviews/*.md。approve → 回 module-start;request-changes → 逐项 Edit + fix commit → 回 feature-verify 重新执行(最多 5 轮,第 5 轮仍 request-changes 则停下) |
feature-verify 链式调用 |
test-gate |
MR 前硬闸门。按当前分支推 phase:module-* → 跑 scripts/test.sh(drop+create 空库、Flyway apply、测试);frontend-phase → 跑 vitest + playwright(命令取自 docs/04 § 零)。通过 → 写 <phase_id>-test-gate.md 并 commit 到当前分支;失败停下 |
module-start(后端 REQ 全 approve 后)/ frontend-start(FE 全 approve 后) |
module-report |
中断检查 → 生成 12 节完成报告 docs/superpowers/module-reports/<date>-<phase_id>.md(前端阶段 § ④/§ ⑥ 写 N/A)→ commit 到当前分支(后端:module-* 分支;前端:frontend-phase 分支) |
test-gate 链式调用 |
mr-create |
中断检查 → 验证当前分支 = module-<id> 或 frontend-phase 且 git status --porcelain worktree 干净 → git push 推代码与全部 evidence → 用 curl 调 GitLab REST API 创建 MR(完成报告嵌入 MR 描述)→ 追加 MR URL 到报告并 commit → 把 docs/08 § 二 该模块的 MR: —(后端) / § 三 整体 MR: —(前端) 回写为 !<iid> 并 commit → 再次 push;停下等人工 Approve+Merge。完成由 MR state 判定 |
module-report 链式调用 |
frontend-start |
写前端阶段单一职责。步骤 1 自带 prototype/ 门禁(≥ 1 个 *.html,缺失则 AskUserQuestion)。步骤 2 准备 FE 清单(无审阅断点):§ 三 占位则 AI 自主推导写入;§ 三 已有则加载。后续切 frontend-phase 分支 + 计算未完成 FE + 推进第一个 FE 的 fe-feature 循环;全 approve → test-gate(phase=frontend)
|
coding-start 派发(仅当 backend_done=true && frontend_done=false);fe-feature-review approve 后回调 |
fe-feature-brainstorm |
前端功能循环步骤 1:基于 FE 关联的 associated_prototypes[] + associated_reqs[] + docs/05 + docs/06 § 二 + docs/04 § 零前端 → spec |
frontend-start 推进 FE 时调用,传 { fe_id, name, associated_reqs[], associated_prototypes[] }
|
fe-feature-plan |
前端功能循环步骤 2:spec → 任务级计划(组件/路由/hook/API client,impl_file 必须 frontend/ 前缀) |
fe-feature-brainstorm 链式调用 |
fe-feature-tdd |
前端功能循环步骤 3:jsdom 组件测试 + Playwright E2E(E2E 派子会话);commit trailer REQ_ID: FE-NN;路径硬护栏 frontend/
|
fe-feature-plan 链式调用 |
fe-feature-verify |
前端功能循环步骤 4:派子会话跑 vitest + playwright,按模板渲染证据 |
fe-feature-tdd 链式调用;fe-feature-review request-changes 修复后重调 |
fe-feature-review |
前端功能循环步骤 5:委托 fe-code-reviewer agent 做 7 维 review。approve → 回 frontend-start;request-changes 5 轮上限 |
fe-feature-verify 链式调用 |
Crosscut(4 个,skills/crosscut/)
| Skill | 作用 | 流程中谁调用 |
|---|---|---|
plan-start |
A 阶段入口。读取 docs/08 § 一 找第一个未勾 A 子项 → 派发对应 A skill;A 全部完成时提示运行 coding-start |
用户手动运行 /erp-workflow:plan-start
|
coding-start |
B 阶段入口 + 阶段分发器(只做分发)。① 验证 Plan 已完成(docs/08 § 一 A0~A5 全勾选)② 后端完成性检查(§ 二 + GitLab state)③ 前端完成性检查(§ 三 整体 MR)④ 真值表派发:backend=false → module-start;backend=true & frontend=false → frontend-start;都 done → "全部完成"。前端阶段的 prototype/ 门禁由 frontend-start 自带,不在此处 |
用户手动运行 /erp-workflow:coding-start
|
interrupt-check |
检查 CLAUDE.md 的 3 项中断清单;触发则追加 Blocker 到计划文件并停下 | 功能循环各步骤和生成重要制品前自动调用 |
cross-module-log |
给 log-cross-module.sh 追加的跨模块改动存根批量补「原因 / 影响评估」 |
module-report § ⑦ 硬验收时一次性调用(CC 编辑中途不主动调);module-start 初始化日志文件时也会用其模板 |
Agent 清单(2 个)
| Agent | 源 | 用途 | 谁调用 |
|---|---|---|---|
superpower-code-reviewer |
superpowers:code-reviewer 5.0.7 agent,仅改 name |
对后端 REQ diff 做 AI 自审,产出 must_fix[] / nice_to_have[] / gaps
|
feature-review 步骤 1:Agent(subagent_type=superpower-code-reviewer)
|
fe-code-reviewer |
自写(前端专用) | 对前端 FE-NN diff 做 7 维 AI 自审:prototype 一致性 / Design Tokens / 无障碍 / 响应式 / 业务校验前端复刻 / API 一致性 / 状态机覆盖。明确禁止给后端建议 |
fe-feature-review 步骤 1:Agent(subagent_type=fe-code-reviewer)
|
Banners 清单(7 份,bash cat 直接输出,绕开 LLM 复读)
step 0 流程图被抽到独立 .txt 文件,SKILL.md 步骤 0 改为 bash cat 输出——保证 ASCII 边框对齐不被 LLM 复读破坏 + 减少 LLM 输出 token。
| 所属 Skill | Banner 文件 | 用途 |
|---|---|---|
| project-init | banners/flow.txt |
A 阶段流程图(▶ 标在 A0) |
| scope-lock | banners/flow.txt |
A 阶段流程图(▶ 标在 A1) |
| skeleton-gen | banners/flow.txt |
A 阶段流程图(▶ 标在 A2) |
| db-design-gen | banners/flow.txt |
A 阶段流程图(▶ 标在 A3) |
| db-init | banners/flow.txt |
A 阶段流程图(▶ 标在 A4) |
| downstream-gen | banners/flow.txt |
A 阶段流程图(▶ 标在 A5) |
| plan-start | banners/flow-done.txt |
A 阶段流程图(▶ 标在"规划阶段到此结束",仅 2.1 Plan 完成分支) |
字节对齐保证:每个文件 17 行,每行 visible width = 58 cell(内宽 56 + 2 个 │ 边框)。改动需重新校准。
Templates 清单(44 份)
| 所属 Skill | 模板文件 | 用途 |
|---|---|---|
| project-init | CLAUDE-template.md |
项目根的 CLAUDE.md(4 条通用准则 + ERP 专属约定) |
| project-init | docs-01-index-template.md |
需求清单索引骨架,等用户填模块表 |
| project-init | docs-08-initial-template.md |
工作流进度文件骨架(Plan A0~A5 checkbox) |
| project-init | docs-04-stack-template.md |
docs/04 § 零 默认技术栈总览(零槽位,cp 即可) |
| scope-lock | req-card-template.md |
单张 REQ-XXX-NNN 卡片骨架(6 个 {{...}} 占位符由 CC 替换;输入 / 输出 各含一句简述 + N 张示例字段表,模板原样复制由人工编辑) |
| scope-lock | _module-template.md |
模块子目录的 _module.md 模块头(4 行:模块代码-名 / 简述 / 依赖模块 TBD / 涉及表 TBD) |
| skeleton-gen | docs-04-skeleton-template.md |
docs/04 § 一+ 编码规范大纲(HTML 注释引导 LLM) |
| skeleton-gen | docs-06-static-template.md |
docs/06 § 一~二 大纲(通用交互 + Design Tokens;布局以 prototype/ 为权威) |
| skeleton-gen | docs-07-env-template.md |
docs/07 环境配置大纲 |
| skeleton-gen | docs-09-structure-template.md |
docs/09 目录结构大纲 |
| skeleton-gen | scripts-setup-test-db-template.sh |
运行时 drop + create 空库脚本(0 槽位);schema apply 交给 Flyway |
| skeleton-gen | scripts-test-template.sh |
test.sh 骨架(4 个命令槽位:{{build_cmd}} / {{lint_cmd}} / {{test_cmd}} / {{e2e_cmd}},由 skeleton-gen 按技术栈推断填充) |
| skeleton-gen | githooks-pre-push-template.sh |
pre-push → 调 scripts/test.sh(0 槽位) |
| skeleton-gen | env-local-template |
6 字段凭据模板(DB_* + JWT_SECRET) |
| skeleton-gen | gitignore-append-template |
插件推荐忽略项(.env.local、.tmp/、构建产物等) |
| db-design-gen | docs-03-header-template.md |
docs/03 数据库设计头部 |
| db-design-gen | docs-03-table-template.md |
docs/03 单表小节模板 |
| downstream-gen | docs-02-template.md |
docs/02 开发计划 |
| downstream-gen | docs-05-header-template.md |
docs/05 API 契约头部 |
| downstream-gen | docs-05-endpoint-template.md |
docs/05 单接口小节 |
| downstream-gen | docs-06-module-pagelist-template.md |
docs/06 § 三 单模块页面清单 |
| downstream-gen | docs-08-module-row-template.md |
docs/08 § 二 单模块 bullet 行 |
| downstream-gen | docs-10-header-template.md |
docs/10 验收清单(项目级 SOP,零槽位 + 引用指针) |
| module-start | module-start-banner-template.md |
模块启动横幅 |
| feature-brainstorm | feature-spec-template.md |
功能 spec 结构 |
| feature-plan | feature-plan-template.md |
功能 plan 结构 |
| feature-tdd | commit-message-template.md |
TDD 每步 commit 信息 |
| feature-verify | feature-verify-evidence-template.md |
验证证据渲染模板 |
| feature-review | feature-review-template.md |
自审报告结构 |
| test-gate | test-gate-result-template.md |
闸门结果渲染 |
| module-report | module-report-template.md |
12 节模块报告 |
| mr-create | mr-title-template.md |
MR 标题模板 |
| mr-create | mr-description-template.md |
MR 描述模板(嵌入模块报告) |
| interrupt-check | interrupt-block-template.md |
Blocker 节追加模板 |
| cross-module-log | cross-module-log-template.md |
cross-module 日志头(由 hook log-cross-module.sh 在首次跨模块改动时渲染创建;skill 自身不再读取) |
| cross-module-log | cross-module-log-row-template.md |
单条改动行模板 |
| frontend-start | frontend-start-banner-template.md |
前端阶段启动横幅 |
| fe-feature-brainstorm | fe-feature-spec-template.md |
前端功能规格结构(组件树 / 状态机 / API / 业务校验复刻 / token 引用) |
| fe-feature-plan | fe-feature-plan-template.md |
前端功能计划结构(组件 / 路由 / hook / API client,impl_file 必须 frontend/) |
| fe-feature-tdd | commit-message-template.md |
前端 TDD commit 信息(与后端共用格式,但 req_id = FE-NN) |
| fe-feature-verify | fe-feature-verify-evidence-template.md |
前端验证证据(vitest + playwright 双段) |
| fe-feature-review | fe-feature-review-template.md |
前端自审报告结构(含 7 维核查表) |
| fe-feature-review | commit-message-template.md |
前端 review fix commit 信息 |
流程使用情况:所有模板都被对应 skill 的 SKILL.md 引用,没有孤儿模板。
前置依赖
-
MySQL 8.x 实例已就绪(推荐本地 /
*.localhost;A4db-init的安全守护要求 host 在白名单且 schema 名含test/dev/local,避免误删生产库) -
mysql命令行:A4db-init验证连接 + 自动DROP+CREATEschema 后 apply V1;scripts/setup-test-db.sh在测试闸门前后 drop+create 空库 -
Spring Boot + Flyway(必需):pom.xml 声明
flyway-core+flyway-mysql;Spring 启动时自动 applysql/migrations/V*.sql。本插件生成的setup-test-db.sh只清库,schema 必须由 Flyway 应用 -
GitLab v3 API + Private Token:
mr-create用curlPOST/projects/:id/merge_requests建 MR;coding-start/module-start用curlGET/projects/:id/merge_requests?iid=<iid>判定 state(v3 路径参数:merge_request_id要内部数字 id,所以统一用 iid 过滤列表)。HTTP 头用PRIVATE-TOKEN;凭据(GITLAB_API_URL=.../api/v3/GITLAB_TOKEN/GITLAB_PROJECT_ID)放.env.local -
本地可运行
mvn test/pnpm test:测试闸门scripts/test.sh由skeleton-gen生成
设计原则
参见 project-init/templates/CLAUDE-template.md 末尾的「🧭 通用工作准则」4 条:① Think Before Coding ② Simplicity First ③ Surgical Changes ④ Goal-Driven Execution。
最关键的 1 条:"所有测试与验证派发到全新子会话执行,主会话只接收结构化结论"——避免主会话被测试输出污染,并让测试结果作为独立证据存档。