@agile-team/wl-skills-kit 2.7.2 → 2.7.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +17 -0
- package/README.md +8 -1
- package/bin/wl-skills.js +1 -1
- package/files/.github/guides/architecture.md +1 -1
- package/files/.github/skills/_best-practices.md +220 -220
- package/files/.github/skills/sync/_mcp-guardrail.md +109 -109
- package/files/.github/skills/sync/dict-sync/SKILL.md +208 -208
- package/files/.github/skills/sync/permission-sync/SKILL.md +240 -275
- package/mcp/api/client.js +83 -83
- package/mcp/tools/dictSync.js +6 -1
- package/mcp/tools/menuSync.js +11 -0
- package/package.json +3 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,22 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.7.3] - 2026-05-13
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **`tests/mcp-tools.test.js`**(30 个测试):覆盖 `menuSync` 8 个纯函数(cleanCell / splitMarkdownRow / isDividerRow / parseBoolean / normalizeTree / flattenMenus / findExisting / parseReport)、`dictSync.extractModules`、`handleDictUpsert` 参数校验、`handleRoleUpsert` / `handleRoleAssignMenus` 参数校验,填补最易出 Bug 的 MCP 工具层零覆盖空白。
|
|
8
|
+
- **`.gitattributes`**:统一 `eol=lf`,消除 Windows 开发者打开文件后 CRLF 行尾符变更噪音。
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **`scripts/lint-skills.js`** 扩展 core/ops Skill 校验:有写操作的 5 个 Skill(page-codegen / convention-audit / business-doc-extract / template-extract / code-fix)必须包含 Pre-flight 声明 + standards 引用,防止关键约束被遗漏;同时清理旧版 AI-bypass 警告规则(误报率高,作用有限)。输出信息更新为"公共文件 N 个、sync Skill N 个、write Skill N 个全部合规"。
|
|
13
|
+
- **`mcp/tools/menuSync.js` / `dictSync.js`**:新增 `_internal` 导出,暴露纯工具函数供单测调用,不影响运行时行为。
|
|
14
|
+
- **`files/.github/skills/sync/permission-sync/SKILL.md`**:275 → 240 行(-13%),命名规范表从 9 行精简为 1 行覆盖范例、后端接口参考表删去冗余 Body 示例列、报告输出改为一句话描述。
|
|
15
|
+
|
|
16
|
+
### Notes
|
|
17
|
+
|
|
18
|
+
- 纯工程质量提升,无 Skill 行为变更、无 MCP API 变更,业务项目无需操作。
|
|
19
|
+
|
|
3
20
|
## [2.7.2] - 2026-05-13
|
|
4
21
|
|
|
5
22
|
### Added
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @agile-team/wl-skills-kit
|
|
2
2
|
|
|
3
|
-
**AI Skill 模板包 v2.7.
|
|
3
|
+
**AI Skill 模板包 v2.7.3** — 一键将 13 条规范、10 个 AI Skill、17 个 MCP Tool、编辑器 MCP 配置、文档导入 Vue 3 项目。
|
|
4
4
|
|
|
5
5
|
让 AI 编辑器(Copilot / Cursor / Windsurf / Claude Code / Cline / Kiro / Trae / Qoder / 通用 Agents)**真正理解项目规范**,从原型/详设到完整页面代码全流程自动化。
|
|
6
6
|
|
|
@@ -23,6 +23,13 @@ npm run standards:init # 本包维护/业务项目均可复用
|
|
|
23
23
|
|
|
24
24
|
## 版本亮点
|
|
25
25
|
|
|
26
|
+
**v2.7.3**:工程质量提升 — MCP tools 单测覆盖、lint-skills 扩展到 core Skill、.gitattributes 消除行尾符噪音、permission-sync SKILL.md 精简。
|
|
27
|
+
|
|
28
|
+
- 新增 `tests/mcp-tools.test.js`(30 个测试)覆盖 menuSync/dictSync/permissionSync 核心纯函数与参数校验
|
|
29
|
+
- `lint-skills` 新增 core/ops SKILL.md 规则:有写操作 Skill 必须含 Pre-flight + standards 引用
|
|
30
|
+
- 新增 `.gitattributes` 统一 LF 行尾,消除 Windows 开发者提交噪音
|
|
31
|
+
- `permission-sync/SKILL.md` 压缩 275 → 240 行,命名规范表与报告示例精简
|
|
32
|
+
|
|
26
33
|
**v2.7.2**:sync 类 Skill 自愈闭环 + 场景索引路由。
|
|
27
34
|
|
|
28
35
|
- 新增 `skills/_best-practices.md` 场景索引(AI 每轮默认加载,弱化关键词命中)
|
package/bin/wl-skills.js
CHANGED
|
@@ -1,220 +1,220 @@
|
|
|
1
|
-
# 最佳实践索引(Best Practices Playbook)
|
|
2
|
-
|
|
3
|
-
> **本文件是 AI 与团队成员共享的"按场景查手册"**。
|
|
4
|
-
>
|
|
5
|
-
> - 对 AI:**每次进入项目对话时默认读取一次**,用于把用户的自然表达精准映射到推荐流程,减少"靠关键词猜触发"
|
|
6
|
-
> - 对人:当成 Runbook 用,按场景找最佳实践、触发话术、避坑要点
|
|
7
|
-
>
|
|
8
|
-
> 维护策略:场景由实战沉淀,每次踩坑都回写到对应条目;新增 Skill / MCP 工具必须在此登记典型用法。
|
|
9
|
-
|
|
10
|
-
---
|
|
11
|
-
|
|
12
|
-
## 0. 通用前置规则(任一场景共用)
|
|
13
|
-
|
|
14
|
-
| # | 规则 |
|
|
15
|
-
|---|---|
|
|
16
|
-
| 1 | 用户的"自然表达"优先于"关键词命中"。先理解意图再决定是否触发 Skill |
|
|
17
|
-
| 2 | 涉及 **sync 类**(菜单/字典/权限)操作时,**必读** `skills/sync/_mcp-guardrail.md`,调用失败不绕开 MCP,按 guardrail §2 自愈剧本引导用户 |
|
|
18
|
-
| 3 | 每个场景都允许「单步执行」或「流水线执行」两种方式,由用户决定 |
|
|
19
|
-
| 4 | 写文件 / 调写接口 / 修改代码前,输出 Pre-flight 声明并等待用户确认 |
|
|
20
|
-
| 5 | 报告类产物统一写入 `.github/reports/`,**追加不覆盖** |
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## 1. 场景:新建模块完整闭环(最常用)
|
|
25
|
-
|
|
26
|
-
> 从原型/详设 → 页面 → 菜单注册 → 字典/权限补齐 → 审计通过
|
|
27
|
-
|
|
28
|
-
**用户典型话术**:
|
|
29
|
-
- "帮我做一个新模块"
|
|
30
|
-
- "根据原型/详设生成 XX 模块"
|
|
31
|
-
- "我要新建客户管理模块"
|
|
32
|
-
|
|
33
|
-
**推荐流程**:
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
prototype-scan
|
|
37
|
-
→ business-doc-extract(资料完整时)
|
|
38
|
-
→ api-contract
|
|
39
|
-
→ page-codegen ← 产物:src/views/.../{index.vue,data.ts,api.md,SYS_MENU_INFO.md}
|
|
40
|
-
→ menu-sync ← 推荐工具:wls_menu_sync_from_report
|
|
41
|
-
→ dict-sync(页面用到字典时)
|
|
42
|
-
→ permission-sync(需角色授权 / 动作按钮时)
|
|
43
|
-
→ convention-audit
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
**关键检查点**:
|
|
47
|
-
- pages.ts 是否注册了新页面(否则路由不存在)
|
|
48
|
-
- `.github/reports/SYS_MENU_INFO.md` 是否包含本次新增页面
|
|
49
|
-
- 同步菜单后端 4004 / 401 → 走 guardrail 引导用户改 env.local.json
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## 2. 场景:补菜单 / 注册菜单
|
|
54
|
-
|
|
55
|
-
**用户典型话术**:
|
|
56
|
-
- "帮我创建菜单"
|
|
57
|
-
- "同步菜单"
|
|
58
|
-
- "页面写完了点不进去"
|
|
59
|
-
- "补菜单"
|
|
60
|
-
|
|
61
|
-
**推荐流程**(默认一步到位):
|
|
62
|
-
|
|
63
|
-
```
|
|
64
|
-
wls_menu_sync_from_report ← MCP 工具,自动读报告 + 查菜单树 + 一二级有序创建
|
|
65
|
-
└─ 首次先传 dryRun: true 预览,确认无误再正式执行
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
**前置**:
|
|
69
|
-
- `.github/reports/SYS_MENU_INFO.md` 已生成(由 page-codegen 产出,或手工维护)
|
|
70
|
-
- `env.local.json` 配齐:gatewayPath / token(纯 JWT)/ sysAppNo / menu.parentMenuId / menu.domainId
|
|
71
|
-
|
|
72
|
-
**典型故障 → 处理**:
|
|
73
|
-
- 工具列表里没有 `wls_menu_sync_from_report` → guardrail §2.2
|
|
74
|
-
- 报错"请填写真实的 domainId" → guardrail §2.3
|
|
75
|
-
- 返回 401 → guardrail §2.4
|
|
76
|
-
- 返回 4004(路径不存在)→ guardrail §2.5
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## 3. 场景:补字典 / 同步字典
|
|
81
|
-
|
|
82
|
-
**用户典型话术**:
|
|
83
|
-
- "同步字典"
|
|
84
|
-
- "data.ts 里 logicValue 缺字典"
|
|
85
|
-
- "字典对比 / 字典审计"
|
|
86
|
-
|
|
87
|
-
**推荐流程**:
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
1. 用 wls_dict_query 查线上已有
|
|
91
|
-
2. 扫 data.ts 收集所有 logicValue(DICT_CODE)
|
|
92
|
-
3. 差集 = 待新建 → 用户确认
|
|
93
|
-
4. 逐个调 wls_dict_upsert(含 module + items)
|
|
94
|
-
5. 更新 .github/reports/SYS_DICT_INFO.md
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
**配置依赖**:env.local.json → `dict.moduleId`
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
## 4. 场景:角色授权 / 加动作按钮
|
|
102
|
-
|
|
103
|
-
**用户典型话术**:
|
|
104
|
-
- "给 XX 角色分配菜单"
|
|
105
|
-
- "给页面挂动作按钮"
|
|
106
|
-
- "注册权限码"
|
|
107
|
-
|
|
108
|
-
**推荐流程**:
|
|
109
|
-
|
|
110
|
-
| 子场景 | MCP 工具序列 |
|
|
111
|
-
|---|---|
|
|
112
|
-
| 创建角色 | `wls_role_query`(查重)→ `wls_role_upsert` |
|
|
113
|
-
| 角色授权 | `wls_role_query` → `wls_assignable_menus_query` → `wls_role_assign_menus`(⚠️ **全量覆盖**,AI 需自动合并旧 menuIds + 新增)|
|
|
114
|
-
| 挂动作 | `wls_menu_query` 找页面 id → `wls_action_query` 查重 → `wls_action_upsert` 批量新增 → 修改 `data.ts` 给按钮加 `permission: [xxx]` 字段 |
|
|
115
|
-
|
|
116
|
-
**避坑**:
|
|
117
|
-
- 角色分配是**全量覆盖**,传 `[A,B]` 会把原有 C 移除,必须先查再合并
|
|
118
|
-
- 权限码命名遵循项目既有风格(`资源_动作` 或 `模块:资源:动作`)
|
|
119
|
-
|
|
120
|
-
---
|
|
121
|
-
|
|
122
|
-
## 5. 场景:存量项目体检 / 接手新项目
|
|
123
|
-
|
|
124
|
-
**用户典型话术**:
|
|
125
|
-
- "接手新项目"
|
|
126
|
-
- "项目体检"
|
|
127
|
-
- "规范审计"
|
|
128
|
-
|
|
129
|
-
**推荐流程**:
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
wls_code_scan ← 概览:页面目录、API_CONFIG、文件完整性
|
|
133
|
-
→ convention-audit ← 13 条规范全量扫描,产出 AUDIT_*.md
|
|
134
|
-
→ code-fix(可选) ← 自动修复可整改项
|
|
135
|
-
```
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## 6. 场景:仅 mock 跑通 / 后端没好先能跑
|
|
140
|
-
|
|
141
|
-
**用户典型话术**:"先 mock 一下"、"假数据"、"后端没好先能跑"
|
|
142
|
-
|
|
143
|
-
**推荐**:`page-codegen` 的 mock-first 规则,生成假数据 + 注释好真实接口对接位置。
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## 7. 场景:模板沉淀
|
|
148
|
-
|
|
149
|
-
**用户典型话术**:"这页面成熟了,沉淀成模板"
|
|
150
|
-
|
|
151
|
-
**推荐**:`template-extract` Skill → 产出 `templates/domains/**/TPL-*.md` → 下次 `page-codegen` 复用。
|
|
152
|
-
|
|
153
|
-
---
|
|
154
|
-
|
|
155
|
-
## 8. 场景:业务文档/字段字典维护
|
|
156
|
-
|
|
157
|
-
**用户典型话术**:用户提供完整原型/详设/字段或字典资料,意图为业务沉淀
|
|
158
|
-
|
|
159
|
-
**推荐**:`business-doc-extract`(**语义级触发**,碎片需求默认跳过)
|
|
160
|
-
|
|
161
|
-
---
|
|
162
|
-
|
|
163
|
-
## 9. 场景:Git 提交 / 分支管理
|
|
164
|
-
|
|
165
|
-
**用户典型话术**:"提交"、"发布"、"打 tag"
|
|
166
|
-
|
|
167
|
-
**推荐**:遵循 `standards/08-*.md` Git 规范,使用 `pnpm cz` / `pnpm release:*` 命令。
|
|
168
|
-
|
|
169
|
-
---
|
|
170
|
-
|
|
171
|
-
## 10. 索引:Skill / MCP 工具速查
|
|
172
|
-
|
|
173
|
-
### Skills(详见 `_registry.md`)
|
|
174
|
-
|
|
175
|
-
| Skill | 一句话 |
|
|
176
|
-
|---|---|
|
|
177
|
-
| prototype-scan | 原型/详设 → 页面清单 |
|
|
178
|
-
| business-doc-extract | 模块级资料 → 业务文档沉淀 |
|
|
179
|
-
| api-contract | 生成 `api.md` 接口约定 |
|
|
180
|
-
| page-codegen | 生成 Vue 页面三件套 + api.md + SYS_MENU_INFO.md |
|
|
181
|
-
| convention-audit | 13 条规范审计 |
|
|
182
|
-
| code-fix | 按审计报告自动修复 |
|
|
183
|
-
| menu-sync | 后端菜单同步(MCP)|
|
|
184
|
-
| dict-sync | 后端字典同步(MCP)|
|
|
185
|
-
| permission-sync | 角色 / 授权 / 动作(MCP)|
|
|
186
|
-
| template-extract | 成熟页面沉淀为模板 |
|
|
187
|
-
|
|
188
|
-
### MCP 工具(详见 `mcp/registry.js`)
|
|
189
|
-
|
|
190
|
-
| 工具 | 用途 |
|
|
191
|
-
|---|---|
|
|
192
|
-
| `wls_menu_query` / `wls_menu_upsert` / `wls_menu_sync_from_report` | 菜单 |
|
|
193
|
-
| `wls_dict_query` / `wls_dict_upsert` | 字典 |
|
|
194
|
-
| `wls_role_query` / `wls_role_upsert` / `wls_assignable_menus_query` / `wls_role_assign_menus` / `wls_action_query` / `wls_action_upsert` | 角色 / 授权 / 动作 |
|
|
195
|
-
| `wls_code_scan` / `wls_validate_page` / `wls_doctor_ui` / `wls_route_check` / `wls_git_log_extract` / `wls_audit_report_push` | 辅助 |
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## 11. 如何扩展本文件
|
|
200
|
-
|
|
201
|
-
新增场景请按此模板:
|
|
202
|
-
|
|
203
|
-
```markdown
|
|
204
|
-
## N. 场景:{一句话描述}
|
|
205
|
-
|
|
206
|
-
**用户典型话术**:
|
|
207
|
-
- "..."
|
|
208
|
-
|
|
209
|
-
**推荐流程**:
|
|
210
|
-
- 用什么 Skill / MCP 工具
|
|
211
|
-
- 关键顺序
|
|
212
|
-
- 配置依赖
|
|
213
|
-
|
|
214
|
-
**避坑**:
|
|
215
|
-
- ...
|
|
216
|
-
```
|
|
217
|
-
|
|
218
|
-
---
|
|
219
|
-
|
|
220
|
-
> ✅ AI 在每轮对话开始时(首次进入项目或长时间未刷新上下文时),优先 `read_file` 加载本文件 + `_registry.md` + `_pipeline.md`,三者联合作为路由依据。
|
|
1
|
+
# 最佳实践索引(Best Practices Playbook)
|
|
2
|
+
|
|
3
|
+
> **本文件是 AI 与团队成员共享的"按场景查手册"**。
|
|
4
|
+
>
|
|
5
|
+
> - 对 AI:**每次进入项目对话时默认读取一次**,用于把用户的自然表达精准映射到推荐流程,减少"靠关键词猜触发"
|
|
6
|
+
> - 对人:当成 Runbook 用,按场景找最佳实践、触发话术、避坑要点
|
|
7
|
+
>
|
|
8
|
+
> 维护策略:场景由实战沉淀,每次踩坑都回写到对应条目;新增 Skill / MCP 工具必须在此登记典型用法。
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## 0. 通用前置规则(任一场景共用)
|
|
13
|
+
|
|
14
|
+
| # | 规则 |
|
|
15
|
+
|---|---|
|
|
16
|
+
| 1 | 用户的"自然表达"优先于"关键词命中"。先理解意图再决定是否触发 Skill |
|
|
17
|
+
| 2 | 涉及 **sync 类**(菜单/字典/权限)操作时,**必读** `skills/sync/_mcp-guardrail.md`,调用失败不绕开 MCP,按 guardrail §2 自愈剧本引导用户 |
|
|
18
|
+
| 3 | 每个场景都允许「单步执行」或「流水线执行」两种方式,由用户决定 |
|
|
19
|
+
| 4 | 写文件 / 调写接口 / 修改代码前,输出 Pre-flight 声明并等待用户确认 |
|
|
20
|
+
| 5 | 报告类产物统一写入 `.github/reports/`,**追加不覆盖** |
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## 1. 场景:新建模块完整闭环(最常用)
|
|
25
|
+
|
|
26
|
+
> 从原型/详设 → 页面 → 菜单注册 → 字典/权限补齐 → 审计通过
|
|
27
|
+
|
|
28
|
+
**用户典型话术**:
|
|
29
|
+
- "帮我做一个新模块"
|
|
30
|
+
- "根据原型/详设生成 XX 模块"
|
|
31
|
+
- "我要新建客户管理模块"
|
|
32
|
+
|
|
33
|
+
**推荐流程**:
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
prototype-scan
|
|
37
|
+
→ business-doc-extract(资料完整时)
|
|
38
|
+
→ api-contract
|
|
39
|
+
→ page-codegen ← 产物:src/views/.../{index.vue,data.ts,api.md,SYS_MENU_INFO.md}
|
|
40
|
+
→ menu-sync ← 推荐工具:wls_menu_sync_from_report
|
|
41
|
+
→ dict-sync(页面用到字典时)
|
|
42
|
+
→ permission-sync(需角色授权 / 动作按钮时)
|
|
43
|
+
→ convention-audit
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**关键检查点**:
|
|
47
|
+
- pages.ts 是否注册了新页面(否则路由不存在)
|
|
48
|
+
- `.github/reports/SYS_MENU_INFO.md` 是否包含本次新增页面
|
|
49
|
+
- 同步菜单后端 4004 / 401 → 走 guardrail 引导用户改 env.local.json
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## 2. 场景:补菜单 / 注册菜单
|
|
54
|
+
|
|
55
|
+
**用户典型话术**:
|
|
56
|
+
- "帮我创建菜单"
|
|
57
|
+
- "同步菜单"
|
|
58
|
+
- "页面写完了点不进去"
|
|
59
|
+
- "补菜单"
|
|
60
|
+
|
|
61
|
+
**推荐流程**(默认一步到位):
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
wls_menu_sync_from_report ← MCP 工具,自动读报告 + 查菜单树 + 一二级有序创建
|
|
65
|
+
└─ 首次先传 dryRun: true 预览,确认无误再正式执行
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
**前置**:
|
|
69
|
+
- `.github/reports/SYS_MENU_INFO.md` 已生成(由 page-codegen 产出,或手工维护)
|
|
70
|
+
- `env.local.json` 配齐:gatewayPath / token(纯 JWT)/ sysAppNo / menu.parentMenuId / menu.domainId
|
|
71
|
+
|
|
72
|
+
**典型故障 → 处理**:
|
|
73
|
+
- 工具列表里没有 `wls_menu_sync_from_report` → guardrail §2.2
|
|
74
|
+
- 报错"请填写真实的 domainId" → guardrail §2.3
|
|
75
|
+
- 返回 401 → guardrail §2.4
|
|
76
|
+
- 返回 4004(路径不存在)→ guardrail §2.5
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## 3. 场景:补字典 / 同步字典
|
|
81
|
+
|
|
82
|
+
**用户典型话术**:
|
|
83
|
+
- "同步字典"
|
|
84
|
+
- "data.ts 里 logicValue 缺字典"
|
|
85
|
+
- "字典对比 / 字典审计"
|
|
86
|
+
|
|
87
|
+
**推荐流程**:
|
|
88
|
+
|
|
89
|
+
```
|
|
90
|
+
1. 用 wls_dict_query 查线上已有
|
|
91
|
+
2. 扫 data.ts 收集所有 logicValue(DICT_CODE)
|
|
92
|
+
3. 差集 = 待新建 → 用户确认
|
|
93
|
+
4. 逐个调 wls_dict_upsert(含 module + items)
|
|
94
|
+
5. 更新 .github/reports/SYS_DICT_INFO.md
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**配置依赖**:env.local.json → `dict.moduleId`
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 4. 场景:角色授权 / 加动作按钮
|
|
102
|
+
|
|
103
|
+
**用户典型话术**:
|
|
104
|
+
- "给 XX 角色分配菜单"
|
|
105
|
+
- "给页面挂动作按钮"
|
|
106
|
+
- "注册权限码"
|
|
107
|
+
|
|
108
|
+
**推荐流程**:
|
|
109
|
+
|
|
110
|
+
| 子场景 | MCP 工具序列 |
|
|
111
|
+
|---|---|
|
|
112
|
+
| 创建角色 | `wls_role_query`(查重)→ `wls_role_upsert` |
|
|
113
|
+
| 角色授权 | `wls_role_query` → `wls_assignable_menus_query` → `wls_role_assign_menus`(⚠️ **全量覆盖**,AI 需自动合并旧 menuIds + 新增)|
|
|
114
|
+
| 挂动作 | `wls_menu_query` 找页面 id → `wls_action_query` 查重 → `wls_action_upsert` 批量新增 → 修改 `data.ts` 给按钮加 `permission: [xxx]` 字段 |
|
|
115
|
+
|
|
116
|
+
**避坑**:
|
|
117
|
+
- 角色分配是**全量覆盖**,传 `[A,B]` 会把原有 C 移除,必须先查再合并
|
|
118
|
+
- 权限码命名遵循项目既有风格(`资源_动作` 或 `模块:资源:动作`)
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## 5. 场景:存量项目体检 / 接手新项目
|
|
123
|
+
|
|
124
|
+
**用户典型话术**:
|
|
125
|
+
- "接手新项目"
|
|
126
|
+
- "项目体检"
|
|
127
|
+
- "规范审计"
|
|
128
|
+
|
|
129
|
+
**推荐流程**:
|
|
130
|
+
|
|
131
|
+
```
|
|
132
|
+
wls_code_scan ← 概览:页面目录、API_CONFIG、文件完整性
|
|
133
|
+
→ convention-audit ← 13 条规范全量扫描,产出 AUDIT_*.md
|
|
134
|
+
→ code-fix(可选) ← 自动修复可整改项
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## 6. 场景:仅 mock 跑通 / 后端没好先能跑
|
|
140
|
+
|
|
141
|
+
**用户典型话术**:"先 mock 一下"、"假数据"、"后端没好先能跑"
|
|
142
|
+
|
|
143
|
+
**推荐**:`page-codegen` 的 mock-first 规则,生成假数据 + 注释好真实接口对接位置。
|
|
144
|
+
|
|
145
|
+
---
|
|
146
|
+
|
|
147
|
+
## 7. 场景:模板沉淀
|
|
148
|
+
|
|
149
|
+
**用户典型话术**:"这页面成熟了,沉淀成模板"
|
|
150
|
+
|
|
151
|
+
**推荐**:`template-extract` Skill → 产出 `templates/domains/**/TPL-*.md` → 下次 `page-codegen` 复用。
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
## 8. 场景:业务文档/字段字典维护
|
|
156
|
+
|
|
157
|
+
**用户典型话术**:用户提供完整原型/详设/字段或字典资料,意图为业务沉淀
|
|
158
|
+
|
|
159
|
+
**推荐**:`business-doc-extract`(**语义级触发**,碎片需求默认跳过)
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## 9. 场景:Git 提交 / 分支管理
|
|
164
|
+
|
|
165
|
+
**用户典型话术**:"提交"、"发布"、"打 tag"
|
|
166
|
+
|
|
167
|
+
**推荐**:遵循 `standards/08-*.md` Git 规范,使用 `pnpm cz` / `pnpm release:*` 命令。
|
|
168
|
+
|
|
169
|
+
---
|
|
170
|
+
|
|
171
|
+
## 10. 索引:Skill / MCP 工具速查
|
|
172
|
+
|
|
173
|
+
### Skills(详见 `_registry.md`)
|
|
174
|
+
|
|
175
|
+
| Skill | 一句话 |
|
|
176
|
+
|---|---|
|
|
177
|
+
| prototype-scan | 原型/详设 → 页面清单 |
|
|
178
|
+
| business-doc-extract | 模块级资料 → 业务文档沉淀 |
|
|
179
|
+
| api-contract | 生成 `api.md` 接口约定 |
|
|
180
|
+
| page-codegen | 生成 Vue 页面三件套 + api.md + SYS_MENU_INFO.md |
|
|
181
|
+
| convention-audit | 13 条规范审计 |
|
|
182
|
+
| code-fix | 按审计报告自动修复 |
|
|
183
|
+
| menu-sync | 后端菜单同步(MCP)|
|
|
184
|
+
| dict-sync | 后端字典同步(MCP)|
|
|
185
|
+
| permission-sync | 角色 / 授权 / 动作(MCP)|
|
|
186
|
+
| template-extract | 成熟页面沉淀为模板 |
|
|
187
|
+
|
|
188
|
+
### MCP 工具(详见 `mcp/registry.js`)
|
|
189
|
+
|
|
190
|
+
| 工具 | 用途 |
|
|
191
|
+
|---|---|
|
|
192
|
+
| `wls_menu_query` / `wls_menu_upsert` / `wls_menu_sync_from_report` | 菜单 |
|
|
193
|
+
| `wls_dict_query` / `wls_dict_upsert` | 字典 |
|
|
194
|
+
| `wls_role_query` / `wls_role_upsert` / `wls_assignable_menus_query` / `wls_role_assign_menus` / `wls_action_query` / `wls_action_upsert` | 角色 / 授权 / 动作 |
|
|
195
|
+
| `wls_code_scan` / `wls_validate_page` / `wls_doctor_ui` / `wls_route_check` / `wls_git_log_extract` / `wls_audit_report_push` | 辅助 |
|
|
196
|
+
|
|
197
|
+
---
|
|
198
|
+
|
|
199
|
+
## 11. 如何扩展本文件
|
|
200
|
+
|
|
201
|
+
新增场景请按此模板:
|
|
202
|
+
|
|
203
|
+
```markdown
|
|
204
|
+
## N. 场景:{一句话描述}
|
|
205
|
+
|
|
206
|
+
**用户典型话术**:
|
|
207
|
+
- "..."
|
|
208
|
+
|
|
209
|
+
**推荐流程**:
|
|
210
|
+
- 用什么 Skill / MCP 工具
|
|
211
|
+
- 关键顺序
|
|
212
|
+
- 配置依赖
|
|
213
|
+
|
|
214
|
+
**避坑**:
|
|
215
|
+
- ...
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
> ✅ AI 在每轮对话开始时(首次进入项目或长时间未刷新上下文时),优先 `read_file` 加载本文件 + `_registry.md` + `_pipeline.md`,三者联合作为路由依据。
|