Commit 81036c887c33ff5cc973ab9be0acf2ccc1472fbf

Authored by yanghl
1 parent 07b660e5

新增 quick-ui:前端小功能快速通道(已有页面局部小交互,不重跑 coding)

与 quick-field 成对:纯前端直改 frontend/(lint/类型检查 + grep 自检,
不起栈、不跑行为门/e2e),可见布局变化同步 prototype/、按需更新 docs/08
§三 FE 行文字,台账重基线但绝不作废 req-done/milestone tag——前端阶段
不重跑。硬边界:只消费 docs/05 既有端点、不新增页面/路由/FE 行,超界
回落 /add-req。

同步:docs/08 §四 标题泛化为「微改待验清单(quick-field / quick-ui)」
两通道共用(quick-ui 含旧标题迁移指令);quick-field/add-req 分流提示
互指;plugin.json 注册(10→11 skill);README 目录树/入口表(4→5)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
.claude-plugin/plugin.json
1 { 1 {
2 "name": "erp-workflow", 2 "name": "erp-workflow",
3 - "description": "ERP 项目全流程框架:阶段 A 计划(plan-start 入口 + A0~A5 共 6 个 skill + 增量需求入口 add-req + 字段微改快速通道 quick-field + B 阶段瘦入口 coding-start = 10 个 skill;plan-start 终结闸 4 项前移硬校验;add-req 经 req-ledger 哈希台账识别后续新增/变更需求只跑增量;quick-field 对「加列 + 界面呈现」保 SSoT 跳流程、不重跑 coding) + 阶段 B 编码(单个静默 Workflow 脚本 coding.mjs,子代理自动跑后端+前端功能循环、测试闸门、本地里程碑 tag)。", 3 + "description": "ERP 项目全流程框架:阶段 A 计划(plan-start 入口 + A0~A5 共 6 个 skill + 增量需求入口 add-req + 微改快速通道 quick-field/quick-ui + B 阶段瘦入口 coding-start = 11 个 skill;plan-start 终结闸 4 项前移硬校验;add-req 经 req-ledger 哈希台账识别后续新增/变更需求只跑增量;quick-field 对「加列 + 界面呈现」、quick-ui 对「已有页面纯前端小交互」保 SSoT 跳流程、不作废 tag、不重跑 coding) + 阶段 B 编码(单个静默 Workflow 脚本 coding.mjs,子代理自动跑后端+前端功能循环、测试闸门、本地里程碑 tag)。",
4 "version": "0.3.0", 4 "version": "0.3.0",
5 "skills": [ 5 "skills": [
6 "./skills/plan/plan-start", 6 "./skills/plan/plan-start",
@@ -12,6 +12,7 @@ @@ -12,6 +12,7 @@
12 "./skills/plan/downstream-gen", 12 "./skills/plan/downstream-gen",
13 "./skills/plan/add-req", 13 "./skills/plan/add-req",
14 "./skills/plan/quick-field", 14 "./skills/plan/quick-field",
  15 + "./skills/plan/quick-ui",
15 "./skills/coding/coding-start" 16 "./skills/coding/coding-start"
16 ] 17 ]
17 } 18 }
README.md
@@ -119,7 +119,7 @@ Claude Code 插件:ERP / 后端管理系统全流程开发框架。 @@ -119,7 +119,7 @@ Claude Code 插件:ERP / 后端管理系统全流程开发框架。
119 ``` 119 ```
120 erp-workflow-plugin/ 120 erp-workflow-plugin/
121 ├── .claude-plugin/ 121 ├── .claude-plugin/
122 -│ └── plugin.json # 插件清单,显式列出 10 个 skill 路径 122 +│ └── plugin.json # 插件清单,显式列出 11 个 skill 路径
123 ├── README.md # 本文档 123 ├── README.md # 本文档
124 ├── workflows/ 124 ├── workflows/
125 │ └── coding.mjs # 阶段 B:整个编码阶段编排为单个静默 Workflow 125 │ └── coding.mjs # 阶段 B:整个编码阶段编排为单个静默 Workflow
@@ -132,7 +132,7 @@ erp-workflow-plugin/ @@ -132,7 +132,7 @@ erp-workflow-plugin/
132 ├── agents/ 132 ├── agents/
133 │ └── code-reviewer.md # 统一 reviewer(coding.mjs review stage 调用,phase 选维度集) 133 │ └── code-reviewer.md # 统一 reviewer(coding.mjs review stage 调用,phase 选维度集)
134 └── skills/ # 按阶段分组(slug 不变,由 SKILL.md frontmatter name 决定) 134 └── skills/ # 按阶段分组(slug 不变,由 SKILL.md frontmatter name 决定)
135 - ├── plan/ # 阶段 A:9 个 skill(入口 + A0~A5 + 增量入口 + 微改通道 135 + ├── plan/ # 阶段 A:10 个 skill(入口 + A0~A5 + 增量入口 + 微改通道×2
136 │ ├── plan-start/ # A 阶段入口 + Plan 终结硬闸 136 │ ├── plan-start/ # A 阶段入口 + Plan 终结硬闸
137 │ ├── project-init/ # A0 137 │ ├── project-init/ # A0
138 │ ├── scope-lock/ # A1 138 │ ├── scope-lock/ # A1
@@ -141,14 +141,15 @@ erp-workflow-plugin/ @@ -141,14 +141,15 @@ erp-workflow-plugin/
141 │ ├── db-init/ # A4 141 │ ├── db-init/ # A4
142 │ ├── downstream-gen/ # A5(含前端 FE 清单推导,原 A6 已并入) 142 │ ├── downstream-gen/ # A5(含前端 FE 清单推导,原 A6 已并入)
143 │ ├── add-req/ # 增量需求入口(Plan 完结后追加/修改需求,经 req-ledger 哈希台账只跑增量) 143 │ ├── add-req/ # 增量需求入口(Plan 完结后追加/修改需求,经 req-ledger 哈希台账只跑增量)
144 - │ └── quick-field/ # 字段微改快速通道(加列 + 界面呈现:保 SSoT 跳流程,不作废 tag、不重跑 coding) 144 + │ ├── quick-field/ # 字段微改快速通道(加列 + 界面呈现:保 SSoT 跳流程,不作废 tag、不重跑 coding)
  145 + │ └── quick-ui/ # 前端小功能快速通道(已有页面局部小交互,只消费既有端点:直改 frontend/,不作废 tag、不重跑 coding)
145 └── coding/ # 阶段 B:1 个 skill(瘦入口) 146 └── coding/ # 阶段 B:1 个 skill(瘦入口)
146 └── coding-start/ # 启动 workflows/coding.mjs 147 └── coding-start/ # 启动 workflows/coding.mjs
147 ``` 148 ```
148 149
149 -## Skill 清单(10 个) 150 +## Skill 清单(11 个)
150 151
151 -### 入口(4 个) 152 +### 入口(5 个)
152 153
153 | Skill | 作用 | 谁调用 | 154 | Skill | 作用 | 谁调用 |
154 |---|---|---| 155 |---|---|---|
@@ -156,6 +157,7 @@ erp-workflow-plugin/ @@ -156,6 +157,7 @@ erp-workflow-plugin/
156 | `coding-start` | **B 阶段瘦入口**(`allowed-tools: Read Glob Workflow Bash(git ...)`)。校验 Plan 完成态(docs/08 § 一 全勾)+ 取得 projectRoot(git 就绪由 coding.mjs runBranchSetup 在运行时把守)→ 读 docs/08 § 二/§ 三 + `git tag -l 'milestone/*'` 概述阶段进度(Workflow Router 再用 `req-done/*` 判定功能级 resume)→ 若有 `docs/superpowers/RESUME.md` 则读末尾条目复盘上次 halt 原因/待跑模块 → 调用 `Workflow({scriptPath:"${CLAUDE_PLUGIN_ROOT}/workflows/coding.mjs", args:{projectRoot}})` 启动整个编码阶段 → 告知"已在后台启动" | **用户手动** `/erp-workflow:coding-start` | 157 | `coding-start` | **B 阶段瘦入口**(`allowed-tools: Read Glob Workflow Bash(git ...)`)。校验 Plan 完成态(docs/08 § 一 全勾)+ 取得 projectRoot(git 就绪由 coding.mjs runBranchSetup 在运行时把守)→ 读 docs/08 § 二/§ 三 + `git tag -l 'milestone/*'` 概述阶段进度(Workflow Router 再用 `req-done/*` 判定功能级 resume)→ 若有 `docs/superpowers/RESUME.md` 则读末尾条目复盘上次 halt 原因/待跑模块 → 调用 `Workflow({scriptPath:"${CLAUDE_PLUGIN_ROOT}/workflows/coding.mjs", args:{projectRoot}})` 启动整个编码阶段 → 告知"已在后台启动" | **用户手动** `/erp-workflow:coding-start` |
157 | `add-req` | **增量需求入口**(Plan 完结后追加 / 修改需求时用)。`node lib/req-ledger.mjs scan` 用内容哈希台账(`.req-ledger.json`)识别 docs/01 REQ 卡片 + docs/08 §三 FE 行的**新增 / 变更**;只对增量做 **A3-delta**(写新 `V_n` migration + 同步 docs/03,**绝不改 V1**)+ **A5-delta**(补 docs/05 端点 / docs/02 顺序 / docs/08 模块行 / FE 行),并 `git tag -d` 作废**变更**单元已有的 `req-done/*`(及所属 `milestone/*`,复位 docs/08 里程碑字段),使 coding.mjs Router 只重跑增量。首跑无台账则先建基线。 | **用户手动** `/erp-workflow:add-req` | 158 | `add-req` | **增量需求入口**(Plan 完结后追加 / 修改需求时用)。`node lib/req-ledger.mjs scan` 用内容哈希台账(`.req-ledger.json`)识别 docs/01 REQ 卡片 + docs/08 §三 FE 行的**新增 / 变更**;只对增量做 **A3-delta**(写新 `V_n` migration + 同步 docs/03,**绝不改 V1**)+ **A5-delta**(补 docs/05 端点 / docs/02 顺序 / docs/08 模块行 / FE 行),并 `git tag -d` 作废**变更**单元已有的 `req-done/*`(及所属 `milestone/*`,复位 docs/08 里程碑字段),使 coding.mjs Router 只重跑增量。首跑无台账则先建基线。 | **用户手动** `/erp-workflow:add-req` |
158 | `quick-field` | **字段微改快速通道**(已完成需求追加纯展示/录入字段时替代 add-req 全流程)。保 schema SSoT 不缩水(`V_n` ALTER + docs/03 同步 + validate-ddl fail-closed),后端/前端代码由主会话直改(grep 清单 + 轻量编译/lint 自检),台账 `req-ledger commit` 重基线但**绝不作废任何 req-done/milestone tag**——Router 视一切已完成,不重跑 coding.mjs(不冷起栈、不跑测试门/行为门)。代价是字段未过行为验收:登记到 docs/08 §四 待验清单,攒批人工验收。仅限追加式 ADD COLUMN(可空/带 DEFAULT)+ 既有链路多带一个字段;超界即停下回落 `/add-req`。 | **用户手动** `/erp-workflow:quick-field` | 159 | `quick-field` | **字段微改快速通道**(已完成需求追加纯展示/录入字段时替代 add-req 全流程)。保 schema SSoT 不缩水(`V_n` ALTER + docs/03 同步 + validate-ddl fail-closed),后端/前端代码由主会话直改(grep 清单 + 轻量编译/lint 自检),台账 `req-ledger commit` 重基线但**绝不作废任何 req-done/milestone tag**——Router 视一切已完成,不重跑 coding.mjs(不冷起栈、不跑测试门/行为门)。代价是字段未过行为验收:登记到 docs/08 §四 待验清单,攒批人工验收。仅限追加式 ADD COLUMN(可空/带 DEFAULT)+ 既有链路多带一个字段;超界即停下回落 `/add-req`。 | **用户手动** `/erp-workflow:quick-field` |
  160 +| `quick-ui` | **前端小功能快速通道**(quick-field 的姊妹通道,已完成页面追加局部小交互时替代 add-req)。代码由主会话直改 `frontend/`(lint/类型检查 + grep 自检,不起栈、不跑行为门/e2e),可见布局变化同步 `prototype/`、按需更新 docs/08 §三 FE 行文字,台账 `req-ledger commit` 重基线但**绝不作废任何 tag**——前端阶段不重跑。待验条目登记 docs/08 §四。硬边界:纯前端、只消费 docs/05 既有端点、不新增页面/路由/FE 行;超界即停下回落 `/add-req`。 | **用户手动** `/erp-workflow:quick-ui` |
159 161
160 ### Plan 阶段 A skill(A0~A5,共 6 个) 162 ### Plan 阶段 A skill(A0~A5,共 6 个)
161 163
skills/plan/add-req/SKILL.md
@@ -13,7 +13,7 @@ allowed-tools: Read Write Edit Grep Glob AskUserQuestion Bash(node *) Bash(git * @@ -13,7 +13,7 @@ allowed-tools: Read Write Edit Grep Glob AskUserQuestion Bash(node *) Bash(git *
13 13
14 > 用法约定:先**人工**在 `docs/01-需求清单/` 里把新 REQ 卡片写好(真实业务内容,同 A1 填法)或修改已有卡片,再运行 `/erp-workflow:add-req`。本 skill 负责「识别 + 下游生成 + 作废过期完成标记」,不替你写业务需求本身。 14 > 用法约定:先**人工**在 `docs/01-需求清单/` 里把新 REQ 卡片写好(真实业务内容,同 A1 填法)或修改已有卡片,再运行 `/erp-workflow:add-req`。本 skill 负责「识别 + 下游生成 + 作废过期完成标记」,不替你写业务需求本身。
15 > 15 >
16 -> **微改分流**:若只是给已有表**追加一个纯展示/录入字段**(ADD COLUMN + 界面呈现,不改业务逻辑/端点),走 `/erp-workflow:quick-field` 更快——保 schema SSoT 但不作废 tag、不重跑 coding.mjs。语义变更 / 新端点 / 类型变更仍走本 skill。 16 +> **微改分流**:若只是给已有表**追加一个纯展示/录入字段**(ADD COLUMN + 界面呈现,不改业务逻辑/端点),走 `/erp-workflow:quick-field`;若只是**已有页面加个纯前端小交互**(只消费既有端点,不新增页面/路由),走 `/erp-workflow:quick-ui`。两者都保 SSoT 但不作废 tag、不重跑 coding.mjs。语义变更 / 新端点 / 新页面 / 类型变更仍走本 skill。
17 17
18 `<root>` = 项目根(含 `docs/`、`config-vars.yaml`、`sql/`、`.git`)。`${CLAUDE_PLUGIN_ROOT}` = 插件根。 18 `<root>` = 项目根(含 `docs/`、`config-vars.yaml`、`sql/`、`.git`)。`${CLAUDE_PLUGIN_ROOT}` = 插件根。
19 19
skills/plan/quick-field/SKILL.md
@@ -31,7 +31,7 @@ allowed-tools: Read Write Edit Grep Glob AskUserQuestion Bash(node *) Bash(git * @@ -31,7 +31,7 @@ allowed-tools: Read Write Edit Grep Glob AskUserQuestion Bash(node *) Bash(git *
31 4. **前端仅展示/录入**:列表列、详情项、表单项;不新增页面/路由/交互流程。 31 4. **前端仅展示/录入**:列表列、详情项、表单项;不新增页面/路由/交互流程。
32 5. **字段归属某个已完成的 REQ**(有 `req-done/<id>` tag 或所属模块已打 milestone)。尚未编码的 REQ 直接改它的卡片走正常流程即可,轮不到本 skill。 32 5. **字段归属某个已完成的 REQ**(有 `req-done/<id>` tag 或所属模块已打 milestone)。尚未编码的 REQ 直接改它的卡片走正常流程即可,轮不到本 skill。
33 33
34 -超界示例(一律停下,打印原因 + 建议走 `/erp-workflow:add-req` 或人工方案):改列类型、字段带联动校验、需要新查询接口、需要迁移回填存量数据、新页面。 34 +超界示例(一律停下,打印原因 + 建议走 `/erp-workflow:add-req` 或人工方案):改列类型、字段带联动校验、需要新查询接口、需要迁移回填存量数据、新页面。**纯前端小交互**(不涉 schema)→ 走姊妹通道 `/erp-workflow:quick-ui`。
35 35
36 ## 步骤 0:前置检查(全过才继续) 36 ## 步骤 0:前置检查(全过才继续)
37 37
@@ -109,10 +109,10 @@ node ${CLAUDE_PLUGIN_ROOT}/lib/req-ledger.mjs commit &lt;root&gt; @@ -109,10 +109,10 @@ node ${CLAUDE_PLUGIN_ROOT}/lib/req-ledger.mjs commit &lt;root&gt;
109 109
110 ## 步骤 6:待验登记 110 ## 步骤 6:待验登记
111 111
112 -`Read` `docs/08-模块任务管理.md`:末尾若无 `## 四、quick-field 待验字段` 小节则追加创建,然后登记一行: 112 +`Read` `docs/08-模块任务管理.md`:末尾若无 `## 四、微改待验清单(quick-field / quick-ui)` 小节则追加创建,然后登记一行:
113 113
114 ``` 114 ```
115 -- [ ] <YYYY-MM-DD> <table>.<column>(<REQ-id>;<展示/录入>)——未过测试门/行为门,待人工点验或随下次正规需求批量验收 115 +- [ ] <YYYY-MM-DD> <table>.<column>(<REQ-id>;quick-field <展示/录入>)——未过测试门/行为门,待人工点验或随下次正规需求批量验收
116 ``` 116 ```
117 117
118 (该小节位于 §三 之后,`req-ledger` 的 FE 行解析在下一个 `##` 处截断,不影响台账哈希。)验收完成后由人工勾选。 118 (该小节位于 §三 之后,`req-ledger` 的 FE 行解析在下一个 `##` 处截断,不影响台账哈希。)验收完成后由人工勾选。
skills/plan/quick-ui/SKILL.md 0 → 100644
  1 +---
  2 +name: quick-ui
  3 +description: 前端小功能快速通道——给已完成的页面追加局部小交互(按钮/筛选/排序/格式化等,只消费 docs/05 已有端点)时替代 add-req 全流程。代码由主会话直改 frontend/(不起 coding.mjs、不跑行为门/e2e),原型与 docs/08 §三 FE 行文字按需同步,台账 req-ledger 重基线但绝不作废 req-done/milestone tag,Router 视一切已完成不重跑前端阶段。涉及后端/新页面/新路由即停下回落 /add-req。与 quick-field(加列+呈现)成对。
  4 +user-invocable: true
  5 +allowed-tools: Read Write Edit Grep Glob AskUserQuestion Bash(node *) Bash(git *) Bash(ls *)
  6 +---
  7 +
  8 +**所有输出必须使用中文。**
  9 +
  10 +# quick-ui — 前端小功能快速通道
  11 +
  12 +用于**前端阶段已打 `milestone/frontend-phase`** 之后的最小前端改动形态:在已完成的页面上追加一个局部小功能。与姊妹通道的分工:
  13 +
  14 +| 改动形态 | 走哪个 |
  15 +|---|---|
  16 +| 加列 + 界面展示/录入 | `/erp-workflow:quick-field` |
  17 +| 已有页面加局部小交互(纯前端) | **本 skill** |
  18 +| 新需求 / 新端点 / 新页面 / 语义变更 | `/erp-workflow:add-req`(正规通道) |
  19 +
  20 +> 速度来自跳过前端阶段重跑(Preview 截图门 / 前端功能循环 / 行为门起全栈 / 全量 e2e),代价是**该功能未过行为验收**——步骤 6 登记待验,起栈后人工点一下。
  21 +
  22 +`<root>` = 项目根(含 `docs/`、`frontend/`、`prototype/`、`.git`)。`${CLAUDE_PLUGIN_ROOT}` = 插件根。
  23 +
  24 +## 适用边界(硬门,任一不满足即停下回落 add-req)
  25 +
  26 +1. **纯前端**:不写 `backend/` / `sql/` / `scripts/` 任何文件,不需要 schema 变化。
  27 +2. **只消费既有端点**:功能所需数据/操作在 `docs/05-API接口契约.md` 已有端点上齐备(`Grep` 确认);需要新端点或改既有端点语义 → 回落 add-req。
  28 +3. **不新增页面/路由**:改动局限在既有页面/组件内部(新增子组件文件可以,新增 router 条目不行)。
  29 +4. **归属某个已完成的 FE 行**(docs/08 §三 已有 `FE-NN` 且 `req-done/FE-NN` tag 存在)。**绝不新增 FE 行**——新增 FE 行是新功能单元,走 add-req。
  30 +5. **交互局部、低风险**:按钮/筛选/排序/格式化/展开折叠/复制导出这类;涉及跨页面状态、权限逻辑、提交链路语义变化 → 回落 add-req。
  31 +
  32 +超界示例(一律停下,打印命中条目 + 建议走 `/erp-workflow:add-req`):需要后端新查询、新页面、新路由、改表单提交语义、跨页面联动。
  33 +
  34 +## 步骤 0:前置检查(全过才继续)
  35 +
  36 +1. **Plan 已完结**:`Read` `docs/08-模块任务管理.md § 一`,存在任一 `- [ ]` 未勾 → 停下提示先跑 `/erp-workflow:plan-start`。
  37 +2. **coding.mjs 未在运行**:向用户确认没有 Coding Workflow 在后台跑。在跑 → 停下等它结束。
  38 +3. **工作树干净**:`git -C <root> status --porcelain` 为空。不干净 → 停下提示先处理。
  39 +4. **台账干净(关键)**:
  40 + ```
  41 + node ${CLAUDE_PLUGIN_ROOT}/lib/req-ledger.mjs scan <root>
  42 + ```
  43 + - `ledgerExists: false` → 停下提示先跑一次 `/erp-workflow:add-req` 建基线。
  44 + - `new[]` / `changed[]` / `removed[]` 须**全空**(`changed` 仅含本次目标 FE 行(kind=fe)和/或 `__prototype__`(kind=proto)时放行——用户可能已先手改了 FE 行文字或原型)。存在其他待处理增量 → **停下**:步骤 5 的 `req-ledger commit` 是全量重基线,会把它们悄悄吞进基线、add-req 永远检测不到。提示先跑 `/erp-workflow:add-req` 清账再来。
  45 +
  46 +## 步骤 1:收集改动意图 + 边界判定
  47 +
  48 +从用户输入(或 `AskUserQuestion`)明确:
  49 +
  50 +- **目标页面/组件**与**功能描述**(做什么、放哪、触发后发生什么);
  51 +- **归属 FE 行**:`Grep` `docs/08 §三` 按功能名/页面定位 `FE-NN`;多命中或零命中 → `AskUserQuestion` 让用户指定;
  52 +- **数据来源**:`Grep` `docs/05` 确认所需端点已存在(边界 2 的证据)。
  53 +
  54 +随后对照适用边界逐条判定,**任一超界立即停下**(打印命中条目),不做任何写操作。
  55 +
  56 +## 步骤 2:原型同步(按需)
  57 +
  58 +原型(`prototype/**/*.html`)是前端布局/页面/交互的权威。若本功能带来**可见的布局/控件变化**(新按钮、新筛选控件等)→ `Edit` 对应原型页面同步加上(静态呈现即可,无需真交互逻辑);纯行为变化(如点击已有按钮的新反馈)可不动原型。
  59 +
  60 +> 改了原型 → `__prototype__` 哈希变化,由步骤 5 重基线吸收;**绝不**因此删任何 `req-done/FE-*` / `milestone/frontend-phase` tag——那是 add-req 的语义(整个前端重跑),恰是本 skill 要避免的。
  61 +
  62 +## 步骤 3:代码直改 + 轻量自检
  63 +
  64 +**改代码**(`Grep` 在 `frontend/` 定位目标组件;分层/状态管理/请求封装遵循 `docs/04-技术规范.md § 二`,组件选型对齐 § 零 `frontend.ui_lib`,色值用 `src/styles/tokens.css` 的 token):
  65 +
  66 +- 在既有页面/组件内实现该功能;请求走项目既有的请求封装调 docs/05 已有端点。
  67 +- **不写** `backend/` / `sql/` / router 新条目——写到一半发现绕不开即停,回落 add-req(已写的前端改动 `git checkout` 丢弃)。
  68 +
  69 +**轻量自检(必做,不搭测试 harness、不起栈)**:
  70 +
  71 +1. **grep 清单**:新增控件文案/函数名/端点调用在目标组件内逐一 `Grep` 确认落位;确认没碰 `backend/`/`sql/`(`git status` 复核改动全在 `frontend/` + `prototype/` + docs)。
  72 +2. **语法/类型门(若命令轻量)**:docs/04 § 零 有前端 lint / 类型检查命令(如 lint script、`vue-tsc`)则跑一次,红了就修;该组件若有既有 vitest 单测且能按文件过滤,可顺带跑**该文件**;**不跑**全量测试 / e2e / 行为门。
  73 +
  74 +## 步骤 4:FE 行文字同步(按需)
  75 +
  76 +若新功能值得体现在功能清单里(对后续维护者有信息量)→ `Edit` `docs/08 §三` 该 `FE-NN` 行的功能描述文字(**改文字,不新增行、不动 checkbox**)。琐碎改动可不改。
  77 +
  78 +改了行文字 → 该 FE 单元哈希变化,由步骤 5 重基线吸收。
  79 +
  80 +## 步骤 5:台账重基线(绝不作废 tag)
  81 +
  82 +仅当步骤 2/4 改动了 `prototype/` 或 docs/08 §三 FE 行(否则台账无变化,跳过本步):
  83 +
  84 +```
  85 +node ${CLAUDE_PLUGIN_ROOT}/lib/req-ledger.mjs scan <root>
  86 +```
  87 +
  88 +复核输出:`changed` **仅含**本次目标 FE 行和/或 `__prototype__`,`new`/`removed` 为空(步骤 0 已保证,此处防中途意外)。确认后:
  89 +
  90 +```
  91 +node ${CLAUDE_PLUGIN_ROOT}/lib/req-ledger.mjs commit <root>
  92 +```
  93 +
  94 +**本 skill 全程绝不执行任何 `git tag -d`**——`req-done/FE-*` / `milestone/frontend-phase` 全部保留,Router 视前端阶段已完成,coding.mjs 不会因本次微改重跑。
  95 +
  96 +## 步骤 6:待验登记
  97 +
  98 +`Read` `docs/08-模块任务管理.md`:末尾若无 `## 四、微改待验清单(quick-field / quick-ui)` 小节则追加创建(若已有旧标题 `## 四、quick-field 待验字段` 则把标题更新为前者,存量条目保留),然后登记一行:
  99 +
  100 +```
  101 +- [ ] <YYYY-MM-DD> <页面/组件> <功能摘要>(<FE-NN>;quick-ui)——未过行为门/e2e,待人工点验或随下次正规需求批量验收
  102 +```
  103 +
  104 +(该小节位于 §三 之后,`req-ledger` 的 FE 行解析在下一个 `##` 处截断,不影响台账哈希。)验收完成后由人工勾选。
  105 +
  106 +## 步骤 7:git 提交 + 完成横幅
  107 +
  108 +1. 在**当前分支(默认分支)**提交全部产物:
  109 + ```
  110 + git -C <root> add frontend prototype docs/08-模块任务管理.md .req-ledger.json
  111 + git -C <root> commit -m "feat(quick-ui): <页面> <功能摘要>(<FE-NN>;纯前端直改 + 台账重基线,不重跑 coding)"
  112 + ```
  113 +2. `git -C <root> status --porcelain` 复核干净,有残留则排查补提交。
  114 +3. 打印横幅并**停下**:
  115 +
  116 +```
  117 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  118 + [quick-ui] ✅ 前端小功能完成(未重跑 coding)
  119 +
  120 + 功能:<页面/组件 + 功能摘要>(归属 <FE-NN>)
  121 + 端点:<复用的 docs/05 端点 或 纯展示无请求>
  122 + 原型:<已同步 <文件> 或 无布局变化未动>
  123 + 自检:grep 清单通过<;lint/类型检查通过 或 —><;<组件>单测通过 或 —>
  124 + 台账:<已重基线 或 无变化未动>;req-done/milestone tag 全部保留
  125 + 待验:docs/08 §四 已登记(未过行为门/e2e)
  126 +
  127 + 起栈后请人工点验该功能;攒批待验条目可随下次正规需求一并验收后勾销。
  128 + [ERP-HALT] 前端微改完成,已停下。
  129 +━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
  130 +```
  131 +
  132 +## 参考
  133 +
  134 +- `${CLAUDE_PLUGIN_ROOT}/skills/plan/quick-field/SKILL.md`(姊妹通道:加列+呈现)
  135 +- `${CLAUDE_PLUGIN_ROOT}/skills/plan/add-req/SKILL.md`(正规增量通道;超界回落目标)
  136 +- `${CLAUDE_PLUGIN_ROOT}/lib/req-ledger.mjs`(台账 scan/commit;本 skill 只重基线、不作废 tag)
  137 +- `docs/04-技术规范.md § 二 前端规范 / § 零 命令`(分层、组件库、lint/类型检查命令)
  138 +- `docs/05-API接口契约.md`(既有端点清单,边界 2 判据)
  139 +- `docs/08-模块任务管理.md § 三`(FE 行)/ `§ 四`(微改待验清单)
  140 +- `prototype/`(前端布局/交互权威,可见变化需同步)