@agile-team/wl-skills-kit 2.3.7 → 2.4.0
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 +495 -404
- package/README.md +286 -261
- package/bin/wl-skills.js +796 -503
- package/docs/ai/345/205/250/346/231/257/345/210/206/346/236/220.md +144 -0
- package/docs/input-spec-api.md +263 -0
- package/docs/input-spec-detailed-design.md +238 -0
- package/docs/input-spec-page-spec.md +371 -0
- package/docs/input-spec-prototype.md +176 -0
- package/docs//345/205/250/347/233/230/345/210/206/346/236/220/344/270/216/346/231/272/350/203/275/344/275/223/346/220/255/345/273/272/346/214/207/345/215/227.md +267 -0
- package/files/.github/copilot-instructions.md +3 -3
- package/files/.github/guides/architecture.md +11 -11
- package/files/.github/guides/usage.md +5 -4
- package/files/.github/skills/_compat/headers/cursor-mdc.txt +1 -1
- package/files/.github/skills/_compat/headers/kiro.txt +1 -1
- package/files/.github/skills/_compat/headers/trae.txt +1 -1
- package/files/.github/skills/_pipeline.md +91 -0
- package/files/.github/skills/_registry.md +4 -2
- package/files/.github/skills/core/convention-audit/SKILL.md +241 -65
- package/files/.github/skills/core/page-codegen/SKILL.md +3 -3
- package/files/.github/skills/core/page-codegen/USAGE.md +1 -1
- package/files/.github/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +1 -1
- package/files/.github/skills/core/template-extract/SKILL.md +1 -1
- package/files/.github/skills/sync/env.local.json +20 -18
- package/files/.github/standards/02-code-structure.md +34 -4
- package/files/.github/standards/08-git.md +24 -0
- package/files/.github/standards/12-base-table.md +44 -0
- package/files/.github/standards/index.md +2 -2
- package/mcp/server.js +411 -330
- package/mcp/tools/projectTools.js +228 -0
- package/package.json +40 -39
|
@@ -3,11 +3,12 @@ name: convention-audit
|
|
|
3
3
|
description: "Use when: auditing project source code against the 13 modular standards in .github/standards/. Outputs deviation report and component-extraction suggestions to reports/. Triggers on: 规范审计, 规范检查, 代码审计, 对齐规范, 规范偏差, 接手新项目, 存量代码分析, 项目体检, audit code, check conventions, onboard project."
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Skill: 规范审计(convention-audit)
|
|
6
|
+
# Skill: 规范审计(convention-audit)v2
|
|
7
7
|
|
|
8
8
|
以 `.github/standards/` 13 条规范为唯一基线,扫描项目源码,输出**偏差报告**和**组件提取建议**到 `reports/` 目录。
|
|
9
9
|
|
|
10
|
-
>
|
|
10
|
+
> **核心理念**:审查全覆盖、结果强量化、规则场景化、新增严格 + 存量渐进。
|
|
11
|
+
> 本 Skill 只负责发现偏差并给出整改建议,**不自动修复**(修复由 code-fix Skill 完成)。
|
|
11
12
|
|
|
12
13
|
---
|
|
13
14
|
|
|
@@ -25,6 +26,7 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
25
26
|
✅ 已读取 standards/01 ~ 13 → 完整 13 条规范基线(审计场景需全量加载)
|
|
26
27
|
✅ 已读取 reports/规范审查报告.md → 现有报告(用于追加,不覆盖)
|
|
27
28
|
✅ 审计范围:{用户指定的目录或单文件}
|
|
29
|
+
✅ 工具链检测:ESLint {状态} / tsc {状态} / Husky {状态}
|
|
28
30
|
```
|
|
29
31
|
|
|
30
32
|
---
|
|
@@ -38,27 +40,60 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
38
40
|
| 项目迁移/升级 | 老项目引入新架构,批量评估改造量 |
|
|
39
41
|
| 团队培训 | 新成员提交代码前,用审计验证是否符合规范 |
|
|
40
42
|
| page-codegen 后置自检 | 页面生成完成后自动跑一次审计,确认合规 |
|
|
43
|
+
| 修复闭环复扫 | code-fix 修复后复扫,生成前后对比 |
|
|
41
44
|
| CI/CD(PLANNED) | PR 上自动跑审计,不合规 PR 阻断合并 |
|
|
42
45
|
|
|
43
46
|
---
|
|
44
47
|
|
|
45
48
|
## 审计范围(13 条规范全覆盖)
|
|
46
49
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
|
50
|
-
|
|
51
|
-
|
|
|
52
|
-
|
|
|
53
|
-
|
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
|
|
|
60
|
-
|
|
|
61
|
-
|
|
|
50
|
+
### 审计方式分层
|
|
51
|
+
|
|
52
|
+
| 方式 | 说明 |
|
|
53
|
+
|---|---|
|
|
54
|
+
| **静态扫描** | 文件存在性检测、正则匹配(高可信度) |
|
|
55
|
+
| **工具链委托** | ESLint / tsc --noEmit / Git 命令(高可信度,不浪费 AI 算力) |
|
|
56
|
+
| **AI 场景判断** | 页面类型识别、豁免判定(中可信度,需人工确认) |
|
|
57
|
+
|
|
58
|
+
### 13 条规范审计维度
|
|
59
|
+
|
|
60
|
+
| 编号 | 审计维度 | 审计方式 | 严重度判定 |
|
|
61
|
+
| ---- | -------- | -------- | ---------- |
|
|
62
|
+
| 01 | 工具链就绪 | 静态扫描 | 缺少 `.prettierrc.js` / `eslint.config.ts` / `.husky/` → 🔴 |
|
|
63
|
+
| 02 | 三文件分离 + 接口契约 | 静态 + AI 场景判断 | 应拆未拆 `data.ts` → 🔴(新增)/🟡(存量);`api.md` 缺失见场景规则;`index.vue` 含业务逻辑 → 🔴/🟡;段落顺序乱 → 🟡 |
|
|
64
|
+
| 03 | 注释规范 | 静态扫描 | 死代码注释 → 🟡;TODO 不规范 → 🟡;显而易见注释 → 🟢;文件头缺失 → 🟢 |
|
|
65
|
+
| 04 | 基础编码(13 条) | ESLint + 静态扫描 | `var` / `for...in` / 字符串拼接 / `.then()` / `::v-deep` → 🟡 |
|
|
66
|
+
| 05 | console 残留 | 静态扫描 | src/ 下无守卫的 console → 🟡 |
|
|
67
|
+
| 06 | 安全规范 | 静态扫描 | `v-html` 无注释 / `import axios` / `eval` / `new Function` → 🔴 |
|
|
68
|
+
| 07 | 配置管理 | 静态扫描 | 硬编码 `http://` IP → 🔴;API 路径散落 → 🟡 |
|
|
69
|
+
| 08 | Git 规范 | Git 命令 + 文件检测 | 工具链缺失 → 🔴;分支名不规范 → 🟡;近期提交不规范 → 🟡;历史 → 🟢 |
|
|
70
|
+
| 09 | TypeScript | tsc / ESLint 委托 | AI 不逐文件做类型推导,读取工具链输出归类;`any` 滥用 → 🟡 |
|
|
71
|
+
| 10 | Pinia | 静态扫描 | `data.ts` 内 import Store → 🔴 |
|
|
72
|
+
| 11 | 表单校验 | AI 场景判断 | FORM_ROUTE 缺 validate / resetFields → 🔴 |
|
|
73
|
+
| 12 | BaseTable + cid | 静态 + 场景判断 | 主列表用 el-table → 🔴;cid 缺失/重复 → 🔴;弹窗小表格见豁免规则 |
|
|
74
|
+
| 13 | 平台组件合规 | 静态扫描 | 业务页面用 el-form/el-table/el-date-picker 替代封装 → 🔴;封装组件内部 → ⚠️ 待确认;3+ 复用 → 提取建议 |
|
|
75
|
+
|
|
76
|
+
---
|
|
77
|
+
|
|
78
|
+
## 目录分层审查
|
|
79
|
+
|
|
80
|
+
> 不同目录类型适用不同规则强度,避免封装组件内部与业务页面混淆。
|
|
81
|
+
|
|
82
|
+
| 目录 | 规则强度 | 说明 |
|
|
83
|
+
|---|---|---|
|
|
84
|
+
| `src/views/**` | 最严格 | 业务页面,全规范覆盖 |
|
|
85
|
+
| `src/components/local/**` | 中等 | 业务封装组件,检查复用性和命名 |
|
|
86
|
+
| `src/components/**`(基础/历史) | 宽松 | 不套页面三文件原则;内部使用 el-* 需单独评审 |
|
|
87
|
+
|
|
88
|
+
---
|
|
89
|
+
|
|
90
|
+
## 新增 vs 存量代码区分
|
|
91
|
+
|
|
92
|
+
| 类型 | 处理策略 |
|
|
93
|
+
|---|---|
|
|
94
|
+
| **新增页面**(AI 生成 / 手动新增) | 必须全规约,阻断项严格执行 |
|
|
95
|
+
| **本次修改页面** | 不新增违规,触碰范围内尽量修 |
|
|
96
|
+
| **存量未触碰页面** | 报告记录,后续治理,不阻断 |
|
|
62
97
|
|
|
63
98
|
---
|
|
64
99
|
|
|
@@ -66,22 +101,31 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
66
101
|
|
|
67
102
|
### 步骤 1:确定审计范围
|
|
68
103
|
|
|
69
|
-
| 用户输入
|
|
70
|
-
|
|
71
|
-
| "审计整个项目"
|
|
72
|
-
| "审计 produce/mmwr"
|
|
73
|
-
| "审计 mmwr-customer-archive 页面" |
|
|
104
|
+
| 用户输入 | 范围 |
|
|
105
|
+
|---|---|
|
|
106
|
+
| "审计整个项目" | `src/views/` |
|
|
107
|
+
| "审计 produce/mmwr" | 该子目录 |
|
|
108
|
+
| "审计 mmwr-customer-archive 页面" | 单页面文件 |
|
|
74
109
|
|
|
75
|
-
### 步骤 2:加载规范基线
|
|
110
|
+
### 步骤 2:加载规范基线 + 工具链检测
|
|
76
111
|
|
|
77
|
-
读取 `standards/01 ~ 13`
|
|
112
|
+
1. 读取 `standards/01 ~ 13` 全部规范文件
|
|
113
|
+
2. 检测工具链状态:
|
|
114
|
+
- ESLint:是否可执行
|
|
115
|
+
- TypeScript:`tsc --noEmit` 是否可执行
|
|
116
|
+
- Git:当前分支 / 最近提交
|
|
117
|
+
- Husky:`.husky/pre-commit`、`.husky/commit-msg` 是否存在
|
|
118
|
+
3. 读取 `package.json` 获取项目脚本名称
|
|
78
119
|
|
|
79
120
|
### 步骤 3:扫描源码
|
|
80
121
|
|
|
81
122
|
逐个文件检查 13 个维度。同时记录:
|
|
82
123
|
|
|
124
|
+
- **扫描统计**:目录数、文件数、页面数、类型分布
|
|
83
125
|
- **跨页面相同 el-\* 模式**(统计出现次数和位置)
|
|
84
126
|
- **每个偏差所在文件的菜单位置**(从 koroFileHeader 文件头注释解析)
|
|
127
|
+
- **页面类型识别**:判断是否需要 `data.ts`、`api.md`,是否属于豁免场景
|
|
128
|
+
- **code-fix 能力评估**:每个偏差标注是否可自动修复
|
|
85
129
|
|
|
86
130
|
### 步骤 4:追加写入两份报告
|
|
87
131
|
|
|
@@ -90,36 +134,117 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
90
134
|
```markdown
|
|
91
135
|
## 🕐 {YYYY-MM-DD HH:mm} | 范围:{范围} | 触发:{user / page-codegen / CI}
|
|
92
136
|
|
|
93
|
-
###
|
|
137
|
+
### 1. 扫描范围与数据量
|
|
138
|
+
|
|
139
|
+
| 指标 | 值 |
|
|
140
|
+
|---|---|
|
|
141
|
+
| 扫描根目录 | {路径} |
|
|
142
|
+
| 扫描目录数 | {N} |
|
|
143
|
+
| 扫描文件数 | {N} |
|
|
144
|
+
| Vue 文件数 | {N} |
|
|
145
|
+
| TS/JS 文件数 | {N} |
|
|
146
|
+
| SCSS/CSS 文件数 | {N} |
|
|
147
|
+
| 业务页面目录数 | {N} |
|
|
148
|
+
| 豁免/不适用页面数 | {N} |
|
|
149
|
+
|
|
150
|
+
### 2. 工具链与 Git 状态
|
|
151
|
+
|
|
152
|
+
| 项目 | 状态 |
|
|
153
|
+
|---|---|
|
|
154
|
+
| ESLint | {已配置 / 未配置 / 执行失败} |
|
|
155
|
+
| Prettier | {.prettierrc.js 存在 / 缺失} |
|
|
156
|
+
| TypeScript | {tsc 可用 / 不可用} |
|
|
157
|
+
| Husky | {pre-commit ✓ commit-msg ✓ / 缺失} |
|
|
158
|
+
| @robot-admin/git-standards | {已初始化 / 未安装} |
|
|
159
|
+
| 当前分支 | {分支名} — {符合规范 / 不符合规范} |
|
|
160
|
+
| 最近提交规范性 | {N}/{总数} 条符合 type(scope): 格式 |
|
|
161
|
+
|
|
162
|
+
### 3. 13 条规范覆盖矩阵
|
|
163
|
+
|
|
164
|
+
| 规范 | 审查方式 | 结果 | 🔴 | 🟡 | 🟢 |
|
|
165
|
+
|---|---|---|---:|---:|---:|
|
|
166
|
+
| 01 工具链 | 文件检测 | {结果} | {N} | {N} | {N} |
|
|
167
|
+
| 02 结构 | 静态+AI | {结果} | {N} | {N} | {N} |
|
|
168
|
+
| 03 注释 | 静态扫描 | {结果} | {N} | {N} | {N} |
|
|
169
|
+
| 04 基础编码 | ESLint/静态 | {结果} | {N} | {N} | {N} |
|
|
170
|
+
| 05 日志 | 静态扫描 | {结果} | {N} | {N} | {N} |
|
|
171
|
+
| 06 安全 | 静态扫描 | {结果} | {N} | {N} | {N} |
|
|
172
|
+
| 07 配置 | 静态扫描 | {结果} | {N} | {N} | {N} |
|
|
173
|
+
| 08 Git | Git+文件 | {结果} | {N} | {N} | {N} |
|
|
174
|
+
| 09 TS | tsc/ESLint | {结果} | {N} | {N} | {N} |
|
|
175
|
+
| 10 Pinia | 静态扫描 | {结果} | {N} | {N} | {N} |
|
|
176
|
+
| 11 表单校验 | 场景扫描 | {结果} | {N} | {N} | {N} |
|
|
177
|
+
| 12 BaseTable | 静态+场景 | {结果} | {N} | {N} | {N} |
|
|
178
|
+
| 13 平台组件 | 静态扫描 | {结果} | {N} | {N} | {N} |
|
|
179
|
+
|
|
180
|
+
### 4. 🔴 严重偏差(必须整改)
|
|
181
|
+
|
|
182
|
+
#### {编号}. 违反规范 {XX}({规范名})— {问题描述}
|
|
183
|
+
|
|
184
|
+
- **影响文件数**:{N}
|
|
185
|
+
- **出现次数**:{N}
|
|
186
|
+
- **菜单位置**(来自文件头):{位置}
|
|
187
|
+
- **现状**:{描述}
|
|
188
|
+
- **应为**:{描述}
|
|
189
|
+
- **整改建议**:{建议}
|
|
190
|
+
- **自动修复**:{✅ 可自动修 / ⚠️ 需确认 / ❌ 人工处理}
|
|
191
|
+
- **涉及文件 Top N**:
|
|
192
|
+
1. `src/views/.../index.vue` — {N} 处
|
|
193
|
+
2. ...
|
|
194
|
+
|
|
195
|
+
(按规范条目分组列出全部偏差)
|
|
94
196
|
|
|
95
|
-
|
|
96
|
-
| -------- | --- |
|
|
97
|
-
| 扫描页面 | 12 |
|
|
98
|
-
| 合规页面 | 8 |
|
|
99
|
-
| 偏差页面 | 4 |
|
|
100
|
-
| 🔴 严重 | 5 |
|
|
101
|
-
| 🟡 轻微 | 7 |
|
|
197
|
+
### 5. 🟡 警告偏差(建议整改)
|
|
102
198
|
|
|
103
|
-
|
|
199
|
+
(同格式,增加自动修复标记)
|
|
104
200
|
|
|
105
|
-
|
|
201
|
+
### 6. 🟢 提示与后续关注
|
|
106
202
|
|
|
107
|
-
|
|
108
|
-
- **现状**:使用 `<el-table>` 渲染数据
|
|
109
|
-
- **应为**:使用 `<BaseTable render-type="agGrid" cid="...">`
|
|
110
|
-
- **整改建议**:参考 templates/universal/TPL-LIST.md
|
|
111
|
-
- **修复标记**:🔧 待修复
|
|
203
|
+
(注释、TS 类型优化、存量历史问题等)
|
|
112
204
|
|
|
113
|
-
|
|
205
|
+
### 7. 豁免 / 不适用清单
|
|
206
|
+
|
|
207
|
+
| 文件/目录 | 规则 | 原因 | 结论 |
|
|
208
|
+
|---|---|---|---|
|
|
209
|
+
| {路径} | data.ts | 纯静态说明页 | 不适用 |
|
|
210
|
+
| {路径} | api.md | 无接口调用 | 豁免 |
|
|
211
|
+
| {路径} | AGGrid | 弹窗小型明细表 | 待人工确认 |
|
|
212
|
+
| {路径} | el-dialog | 封装组件内部实现 | 合理 |
|
|
213
|
+
|
|
214
|
+
### 8. 本次建议 code-fix 修复清单
|
|
215
|
+
|
|
216
|
+
| 问题 | 影响文件数 | 自动修复 | 建议 |
|
|
217
|
+
|---|---:|---|---|
|
|
218
|
+
| console 清理 | {N} | ✅ | 本轮修复 |
|
|
219
|
+
| var → const/let | {N} | ✅ | 本轮修复 |
|
|
220
|
+
| ::v-deep → :deep() | {N} | ✅ | 本轮修复 |
|
|
221
|
+
| BaseTable 缺 cid | {N} | ✅ | 本轮修复 |
|
|
222
|
+
| 简单 .then() → async/await | {N} | ⚠️ | 需确认 |
|
|
223
|
+
|
|
224
|
+
### 9. 本次不建议修复 / 后续治理清单
|
|
114
225
|
|
|
115
|
-
|
|
226
|
+
| 问题 | 原因 | 建议时间 |
|
|
227
|
+
|---|---|---|
|
|
228
|
+
| 存量页面迁移 data.ts | 大规模重构 | 按模块渐进 |
|
|
229
|
+
| el-table 全量迁移 | 需逐页面验证 | P1 分批 |
|
|
230
|
+
| 存量 api.md 补齐 | 非阻断项 | 后续补充 |
|
|
116
231
|
|
|
117
|
-
|
|
232
|
+
### 10. 目录/模块问题分布
|
|
118
233
|
|
|
119
|
-
|
|
234
|
+
| 模块目录 | 🔴 | 🟡 | 🟢 | 合计 | 建议 |
|
|
235
|
+
|---|---:|---:|---:|---:|---|
|
|
236
|
+
| {模块路径}/ | {N} | {N} | {N} | {N} | {建议} |
|
|
120
237
|
|
|
121
|
-
|
|
122
|
-
|
|
238
|
+
### 11. 修复闭环与复扫
|
|
239
|
+
|
|
240
|
+
| 指标 | 本次值 | 上次值 | 变化 |
|
|
241
|
+
|---|---:|---:|---|
|
|
242
|
+
| 🔴 严重 | {N} | {N/-} | {±N} |
|
|
243
|
+
| 🟡 警告 | {N} | {N/-} | {±N} |
|
|
244
|
+
| el-table 文件数 | {N} | {N/-} | {±N} |
|
|
245
|
+
| console 文件数 | {N} | {N/-} | {±N} |
|
|
246
|
+
|
|
247
|
+
> 📌 后续提交必须使用 `git cz`,不符合规范的提交视为闭环失败。
|
|
123
248
|
|
|
124
249
|
---
|
|
125
250
|
|
|
@@ -133,10 +258,9 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
133
258
|
|
|
134
259
|
### 📦 组件提取建议(共 N 处)
|
|
135
260
|
|
|
136
|
-
| 建议组件名
|
|
137
|
-
|
|
138
|
-
| c_statusBadge | 5 处
|
|
139
|
-
| c_priceFormat | 4 处 | src/views/.../... | ... | 千分位金额显示 |
|
|
261
|
+
| 建议组件名 | 出现次数 | 页面路径 | 菜单位置 | 模式描述 |
|
|
262
|
+
|---|---|---|---|---|
|
|
263
|
+
| c_statusBadge | 5 处 | src/views/sale/.../{a,b,c,d,e}/index.vue | 销售管理 > 多个子菜单 | 状态枚举彩色标签 |
|
|
140
264
|
|
|
141
265
|
> ⚠️ 以上为建议,不自动提取。
|
|
142
266
|
> 人工确认后,触发 `template-extract` Skill(页面级模板)或手动封装为 `c_*` 组件。
|
|
@@ -147,14 +271,17 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
147
271
|
```
|
|
148
272
|
📦 审计完成
|
|
149
273
|
─────────────────────────────────────────────────────
|
|
150
|
-
|
|
151
|
-
✅ reports
|
|
274
|
+
📊 扫描:{N} 个目录 / {N} 个文件 / {N} 个业务页面
|
|
275
|
+
✅ reports/规范审查报告.md → 已追加(🔴{N} 🟡{N} 🟢{N})
|
|
276
|
+
✅ reports/组件提取建议.md → 已追加 {M} 条
|
|
152
277
|
─────────────────────────────────────────────────────
|
|
153
278
|
📌 后续步骤:
|
|
154
|
-
1. 人工 review
|
|
155
|
-
2.
|
|
156
|
-
3.
|
|
279
|
+
1. 人工 review 报告,确认豁免清单和修复优先级
|
|
280
|
+
2. 触发 code-fix 修复"本次建议修复清单"中 ✅ 项
|
|
281
|
+
3. 需确认项(⚠️)人工评审后决定是否 code-fix
|
|
157
282
|
4. 提取建议人工评审 → template-extract 或手动封装
|
|
283
|
+
5. 修复后复扫,生成前后对比指标
|
|
284
|
+
6. 所有修复提交使用 git cz,确保 Git 规范合规
|
|
158
285
|
─────────────────────────────────────────────────────
|
|
159
286
|
```
|
|
160
287
|
|
|
@@ -162,22 +289,69 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
162
289
|
|
|
163
290
|
## 偏差严重度定义
|
|
164
291
|
|
|
165
|
-
| 级别 | 标记 | 定义
|
|
166
|
-
| ---- | ---- |
|
|
167
|
-
| 🔴
|
|
168
|
-
| 🟡
|
|
169
|
-
| 🟢
|
|
292
|
+
| 级别 | 标记 | 定义 | 自动修复 |
|
|
293
|
+
| ---- | ---- | ---- | ---- |
|
|
294
|
+
| 🔴 | 严重 | 架构性违反,影响可维护性 / 安全 / 团队协作 | 部分可自动修,部分需人工 |
|
|
295
|
+
| 🟡 | 警告 | 风格不统一 / 最佳实践偏离,不影响功能 | 大部分可自动修 |
|
|
296
|
+
| 🟢 | 提示 | 优化建议,可逐步改进 | 按需 |
|
|
297
|
+
|
|
298
|
+
### code-fix 能力标记
|
|
299
|
+
|
|
300
|
+
| 标记 | 含义 | 处理方式 |
|
|
301
|
+
|---|---|---|
|
|
302
|
+
| ✅ 可自动修复 | 模式明确、风险低 | 直接交给 code-fix |
|
|
303
|
+
| ⚠️ 需确认后修复 | 有业务风险 | 人工确认后 code-fix |
|
|
304
|
+
| ❌ 人工处理 | 需要理解业务 | 不自动修 |
|
|
305
|
+
| 👀 后续关注 | 本轮不修 | 持续观察 |
|
|
306
|
+
|
|
307
|
+
---
|
|
308
|
+
|
|
309
|
+
## 阻断条件
|
|
310
|
+
|
|
311
|
+
以下问题视为阻断项,修复闭环前必须解决:
|
|
312
|
+
|
|
313
|
+
- 工具链缺失(husky / commitlint / prettierrc / eslint)
|
|
314
|
+
- 新增 AI 页面缺 `api.md`
|
|
315
|
+
- 新增业务页面应拆未拆 `data.ts`
|
|
316
|
+
- 新增页面主列表使用 `el-table`
|
|
317
|
+
- 明显安全问题:`eval`、未声明的 `v-html`、硬编码 secret
|
|
318
|
+
- 修复后提交不符合 Git 规范
|
|
319
|
+
|
|
320
|
+
以下问题**不阻断**,作为后续治理:
|
|
321
|
+
|
|
322
|
+
- 注释规范问题
|
|
323
|
+
- 存量复杂页面缺 `api.md`
|
|
324
|
+
- 存量页面未拆 `data.ts`
|
|
325
|
+
- 部分 TS `any`
|
|
326
|
+
- 历史提交信息不规范
|
|
327
|
+
- 弹窗小表格 AGGrid 待确认
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## 报告可信度说明
|
|
332
|
+
|
|
333
|
+
> 审计报告应在概要处标注各检查方式的可信度,便于人工评审。
|
|
334
|
+
|
|
335
|
+
| 检查类型 | 可信度 |
|
|
336
|
+
|---|---|
|
|
337
|
+
| 文件是否存在 | 高 |
|
|
338
|
+
| 正则匹配(el-table / console / var 等) | 高 |
|
|
339
|
+
| 工具链输出(ESLint / tsc) | 高 |
|
|
340
|
+
| Git 提交历史 | 高 |
|
|
341
|
+
| 页面是否需要 data.ts | 中(需人工确认) |
|
|
342
|
+
| AGGrid 是否适配弹窗表格 | 中(需人工确认) |
|
|
343
|
+
| 复杂业务逻辑是否应提取 | 中 |
|
|
170
344
|
|
|
171
345
|
---
|
|
172
346
|
|
|
173
347
|
## 与其他 Skill 的关系
|
|
174
348
|
|
|
175
|
-
| Skill
|
|
176
|
-
|
|
177
|
-
| **page-codegen**
|
|
178
|
-
| **template-extract**
|
|
179
|
-
| **code-fix**
|
|
180
|
-
| **CI/CD**
|
|
349
|
+
| Skill | 关系 |
|
|
350
|
+
|---|---|
|
|
351
|
+
| **page-codegen** | 审计发现偏差后,可调用 page-codegen 重新生成合规代码 |
|
|
352
|
+
| **template-extract** | 审计输出的"组件提取建议",确认后可触发 template-extract |
|
|
353
|
+
| **code-fix** | 审计报告中 ✅/⚠️ 标记项作为修复输入 |
|
|
354
|
+
| **CI/CD** | 审计可作为 PR 检查项,不合规 PR 阻断合并 |
|
|
181
355
|
|
|
182
356
|
---
|
|
183
357
|
|
|
@@ -187,3 +361,5 @@ description: "Use when: auditing project source code against the 13 modular stan
|
|
|
187
361
|
2. **追加不覆盖**:每次审计追加新章节到报告,**不删除历史**,便于追溯整改进度
|
|
188
362
|
3. **菜单位置解析**:依赖 koroFileHeader 文件头注释,缺失文件头时标记 `菜单位置:未知`
|
|
189
363
|
4. **AI 自我审计**:page-codegen 生成代码后,建议立即跑一次单页审计验证合规
|
|
364
|
+
5. **工具链优先**:TS 类型 / ESLint 规则优先借助工具链扫描,AI 负责监督验证和归类,不浪费算力逐文件做语义分析
|
|
365
|
+
6. **场景化判定**:`data.ts` / `api.md` / AGGrid 均按场景规则判定,不机械检查文件数量
|
|
@@ -12,11 +12,11 @@ description: "Use when: generating complete Vue 3 page code (index.vue + data.ts
|
|
|
12
12
|
## Pre-flight 规范声明(执行前必须输出)
|
|
13
13
|
|
|
14
14
|
```
|
|
15
|
-
🚀 已触发技能 page-codegen/SKILL.md →
|
|
15
|
+
🚀 已触发技能 page-codegen/SKILL.md → 页面代码生成:骨架文件 + 模板调度 + 前置检查
|
|
16
16
|
✅ 已读取 templates/_index.md → 模板注册表,匹配 → {TPL路径}
|
|
17
17
|
✅ 已读取 templates/{universal|domains/xxx}/TPL-XXX.md → {当前模板说明}
|
|
18
18
|
✅ 已读取 standards/index.md → 规范门控(任务类型 A:生成新页面)
|
|
19
|
-
✅ 已读取 standards/02-code-structure.md →
|
|
19
|
+
✅ 已读取 standards/02-code-structure.md → 三文件分离+接口契约 + 三段式 + script 9段顺序
|
|
20
20
|
✅ 已读取 standards/12-base-table.md → AGGrid必用 + cid命名规范
|
|
21
21
|
✅ 已读取 standards/13-platform-components.md → 平台组件对照表 + docs前置读取清单
|
|
22
22
|
✅ 已读取 docs/{涉及的jh-*文档} → 当前页涉及组件的使用规范
|
|
@@ -72,7 +72,7 @@ description: "Use when: generating complete Vue 3 page code (index.vue + data.ts
|
|
|
72
72
|
|
|
73
73
|
---
|
|
74
74
|
|
|
75
|
-
##
|
|
75
|
+
## 生成产物(标准页面文件)
|
|
76
76
|
|
|
77
77
|
```
|
|
78
78
|
src/views/[域]/[模块]/[子模块]/[kebab-case-目录名]/
|
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
|
|
8
8
|
## 这个 Skill 解决什么问题
|
|
9
9
|
|
|
10
|
-
基于《页面清单》+ `api.md`,**自动生成符合项目规范的 Vue
|
|
10
|
+
基于《页面清单》+ `api.md`,**自动生成符合项目规范的 Vue 页面**(标准页面骨架:index.vue / data.ts / index.scss + api.md 按需),并跑一遍内部规范自检(Pre-flight + 完成摘要)。
|
|
11
11
|
|
|
12
12
|
生成出来的代码**满足 13 条 standards**,无需手工改语法/命名。
|
|
13
13
|
|
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
```
|
|
28
28
|
开发者:触发模板提取,目标页:src/views/produce/.../mmwr-rolling-management/
|
|
29
29
|
|
|
30
|
-
AI: 1.
|
|
30
|
+
AI: 1. 读取目标页文件(index.vue + data.ts + index.scss + api.md)
|
|
31
31
|
2. 自动识别交互模式,对比已有 TPL,输出识别结论
|
|
32
32
|
3. 反问 3 个问题:领域归属 / 模板命名 / 脱敏需求
|
|
33
33
|
4. 生成标准 TPL 文件
|
|
@@ -1,18 +1,20 @@
|
|
|
1
|
-
{
|
|
2
|
-
"_readme": "wl-skills-kit 同步配置 — 已加入 .gitignore,请勿提交此文件。详细说明见 menu-sync/env/guide.md",
|
|
3
|
-
|
|
4
|
-
"gatewayPath": "http://你的网关地址:端口",
|
|
5
|
-
"sysAppNo": "应用编码(从已有菜单接口响应中获取,非明文)",
|
|
6
|
-
"token": "你的Bearer Token(不含bearer前缀)",
|
|
7
|
-
|
|
8
|
-
"menu": {
|
|
9
|
-
"_comment": "menu-sync 专属配置",
|
|
10
|
-
"parentMenuId": "父级菜单ID(从菜单管理后台获取,新建菜单时的父节点)",
|
|
11
|
-
"domainId": "应用域ID(从 Network 面板 getMenuTreeByDomainId?domainId=xxx 中获取,MCP wls_menu_query 使用)"
|
|
12
|
-
},
|
|
13
|
-
|
|
14
|
-
"dict": {
|
|
15
|
-
"_comment": "dict-sync 专属配置",
|
|
16
|
-
"moduleId": "字典所属模块ID(从字典管理后台获取,如 7C909G0U2F8HI7E305LV0135LSJ3UBIO)"
|
|
17
|
-
}
|
|
18
|
-
|
|
1
|
+
{
|
|
2
|
+
"_readme": "wl-skills-kit 同步配置 — 已加入 .gitignore,请勿提交此文件。详细说明见 menu-sync/env/guide.md",
|
|
3
|
+
|
|
4
|
+
"gatewayPath": "http://你的网关地址:端口",
|
|
5
|
+
"sysAppNo": "应用编码(从已有菜单接口响应中获取,非明文)",
|
|
6
|
+
"token": "你的Bearer Token(不含bearer前缀)",
|
|
7
|
+
|
|
8
|
+
"menu": {
|
|
9
|
+
"_comment": "menu-sync 专属配置",
|
|
10
|
+
"parentMenuId": "父级菜单ID(从菜单管理后台获取,新建菜单时的父节点)",
|
|
11
|
+
"domainId": "应用域ID(从 Network 面板 getMenuTreeByDomainId?domainId=xxx 中获取,MCP wls_menu_query 使用)"
|
|
12
|
+
},
|
|
13
|
+
|
|
14
|
+
"dict": {
|
|
15
|
+
"_comment": "dict-sync 专属配置",
|
|
16
|
+
"moduleId": "字典所属模块ID(从字典管理后台获取,如 7C909G0U2F8HI7E305LV0135LSJ3UBIO)"
|
|
17
|
+
},
|
|
18
|
+
|
|
19
|
+
"feishu_webhook": "可选:飞书自定义机器人 webhook,用于 wls_audit_report_push"
|
|
20
|
+
}
|
|
@@ -4,17 +4,47 @@
|
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
##
|
|
7
|
+
## 三文件分离原则 + 接口契约文档(页面目录结构)
|
|
8
8
|
|
|
9
9
|
```
|
|
10
10
|
src/views/[域]/[模块]/[子模块]/[kebab-case目录]/
|
|
11
11
|
├── index.vue ← 纯模板 + 解构,不写业务逻辑
|
|
12
|
-
├── data.ts ← AbstractPageQueryHook 类 + API_CONFIG
|
|
12
|
+
├── data.ts ← AbstractPageQueryHook 类 + API_CONFIG(按需,见下方判定规则)
|
|
13
13
|
├── index.scss ← 页面样式(可为空)
|
|
14
|
-
└── api.md ←
|
|
14
|
+
└── api.md ← 接口约定文档(按需,见下方判定规则)
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
-
**禁止**:把业务逻辑写在 index.vue
|
|
17
|
+
**禁止**:把业务逻辑写在 index.vue。
|
|
18
|
+
|
|
19
|
+
### `data.ts` 判定规则
|
|
20
|
+
|
|
21
|
+
满足以下**任意一项**的页面,必须拆出 `data.ts`:
|
|
22
|
+
|
|
23
|
+
- 有接口调用(request / getAction / postAction 等)
|
|
24
|
+
- 有分页查询 / 表格 columns / toolbar / query 配置
|
|
25
|
+
- 有表单 fields / rules / modalConfig 配置
|
|
26
|
+
- 有大量数据驱动配置(字段映射、枚举、状态机等)
|
|
27
|
+
- 有复杂状态管理(3+ 个 ref/reactive/computed/watch)
|
|
28
|
+
- 有业务方法(新增/编辑/删除/审批/导入/导出等)
|
|
29
|
+
- `<script setup>` 明显过长(参考 80 行以上)
|
|
30
|
+
|
|
31
|
+
以下场景**允许没有** `data.ts`(标记为"不适用"):
|
|
32
|
+
|
|
33
|
+
- 纯静态说明页 / 路由容器页 / redirect 页
|
|
34
|
+
- 只组合子组件、不拥有业务状态的壳页面
|
|
35
|
+
- 数据完全由父组件 props 传入的简单详情展示页
|
|
36
|
+
- 无接口、无复杂状态、无数据驱动配置的极简页面
|
|
37
|
+
|
|
38
|
+
### `api.md` 判定规则
|
|
39
|
+
|
|
40
|
+
| 场景 | 要求 | 严重度 |
|
|
41
|
+
|---|---|---|
|
|
42
|
+
| AI 生成页面 | 必须有 `api.md` | 🔴 |
|
|
43
|
+
| 新增业务页面 | 必须有 `api.md` | 🔴 |
|
|
44
|
+
| 存量复杂接口页面 | 建议补充 | 🟡 |
|
|
45
|
+
| 无接口页面 / 纯静态页面 | 完全豁免 | 不报 |
|
|
46
|
+
|
|
47
|
+
> `api.md` 是前后端接口契约文档,用于对齐联调、追溯变更、AI 二次维护。它是**接口治理项**,不作为文件结构的硬性阻断项。
|
|
18
48
|
|
|
19
49
|
## 弹窗组件归属
|
|
20
50
|
|
|
@@ -58,3 +58,27 @@ feat(模块名): 中文描述
|
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
不主动执行 `git commit`,由开发者通过 `git cz` 交互式确认。
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## 规范审计时的 Git 检查(convention-audit 适用)
|
|
65
|
+
|
|
66
|
+
> 旧版本此处标注"审计时不检测"。自 v2.3.8 起,Git 规范纳入审计范围。
|
|
67
|
+
|
|
68
|
+
### 审计检测项
|
|
69
|
+
|
|
70
|
+
| 检查项 | 方式 | 严重度 |
|
|
71
|
+
|---|---|---|
|
|
72
|
+
| `.husky/` 目录存在 | 文件检测 | 🔴 |
|
|
73
|
+
| `.husky/pre-commit` 钩子存在 | 文件检测 | 🔴 |
|
|
74
|
+
| `.husky/commit-msg` 钩子存在 | 文件检测 | 🔴 |
|
|
75
|
+
| `@robot-admin/git-standards` 已初始化 | 配置文件检测 | 🔴 |
|
|
76
|
+
| 当前分支名符合规范 | `git branch --show-current` | 🟡 |
|
|
77
|
+
| 最近 N 条提交符合 `type(scope): 描述` | `git log` 检查 | 🟡 |
|
|
78
|
+
|
|
79
|
+
### 审计原则
|
|
80
|
+
|
|
81
|
+
- **历史提交不强制追溯**:已有不规范的历史提交只做提示(🟢),不要求重写 `git rebase`
|
|
82
|
+
- **后续提交必须合规**:审计报告发出后,所有新提交必须通过 `git cz` 交互式提交
|
|
83
|
+
- **修复闭环检查**:`code-fix` 修复后的提交如果不符合规范,视为闭环失败
|
|
84
|
+
- **工具链优先**:核心目标是确保 husky + commitlint 工具链已安装生效,工具链在位则后续自然合规
|
|
@@ -105,6 +105,50 @@ subColumnsDef(): TableColumnDesc<any>[] {
|
|
|
105
105
|
|
|
106
106
|
---
|
|
107
107
|
|
|
108
|
+
## AGGrid 场景化判定(v2.3.8+)
|
|
109
|
+
|
|
110
|
+
> 默认所有业务列表表格必须使用 `BaseTable + AGGrid + cid`。
|
|
111
|
+
> 但部分特殊场景允许使用 `BaseTable` 非 AGGrid 模式,需在审查报告中标记理由。
|
|
112
|
+
|
|
113
|
+
### 必须使用 AGGrid 的场景
|
|
114
|
+
|
|
115
|
+
- 主列表页(分页查询列表)
|
|
116
|
+
- 台账类页面
|
|
117
|
+
- 数据量较大的列表
|
|
118
|
+
- 需要列配置持久化(列宽、顺序、显隐)
|
|
119
|
+
- 需要排序、筛选、拖拽列宽
|
|
120
|
+
- 业务核心列表
|
|
121
|
+
|
|
122
|
+
### 允许豁免 AGGrid 的场景(仍优先使用 BaseTable)
|
|
123
|
+
|
|
124
|
+
| 场景 | 判定 | 说明 |
|
|
125
|
+
|---|---|---|
|
|
126
|
+
| 弹窗内小型表格 | 🟢 可豁免 | 数据量小、无持久化需求 |
|
|
127
|
+
| 表单内行内编辑明细表 | 🟢 可豁免 | AGGrid 行编辑成本高于收益 |
|
|
128
|
+
| 嵌套子表(数据量极小) | 🟢 可豁免 | 无独立分页、无列配置需求 |
|
|
129
|
+
| 只读展示型小表格 | 🟢 可豁免 | 无交互需求 |
|
|
130
|
+
| 特殊合并单元格/复杂行列布局 | ⚠️ 待确认 | AGGrid 不易实现时允许降级 |
|
|
131
|
+
| 平台封装组件内部实现 | ⚠️ 待确认 | 封装层内部使用 el-table 需单独评审 |
|
|
132
|
+
|
|
133
|
+
### 豁免规则
|
|
134
|
+
|
|
135
|
+
- 豁免场景仍**优先使用 `BaseTable`**(非 AGGrid 模式),而非裸 `el-table`
|
|
136
|
+
- 豁免场景如果支持列持久化,仍**必须有 `cid`**
|
|
137
|
+
- 审查报告中豁免项必须标注**原因**,避免滥用
|
|
138
|
+
- 如果豁免场景后续升级为主列表,必须迁移到 AGGrid
|
|
139
|
+
|
|
140
|
+
### 审查报告中的分类
|
|
141
|
+
|
|
142
|
+
| 现状 | 审查判定 |
|
|
143
|
+
|---|---|
|
|
144
|
+
| 主列表使用 `el-table` | 🔴 严重 |
|
|
145
|
+
| 主列表 `BaseTable` 但非 AGGrid | 🔴/🟡 |
|
|
146
|
+
| 弹窗小表格 `BaseTable` 非 AGGrid | 🟢 可豁免 |
|
|
147
|
+
| 弹窗小表格 `el-table` | 🟡 建议改 BaseTable |
|
|
148
|
+
| 封装组件内部 `el-table` | ⚠️ 需确认,不直接报红 |
|
|
149
|
+
|
|
150
|
+
---
|
|
151
|
+
|
|
108
152
|
## 禁止事项
|
|
109
153
|
|
|
110
154
|
- ❌ 随机短字符串 `cid="ipiCfsb"`(AI 重新生成时极易碰撞)
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
| 05 | `05-logging.md` | 日志输出 | 🔴 必遵 |
|
|
17
17
|
| 06 | `06-security.md` | 安全规范 | 🔴 必遵 |
|
|
18
18
|
| 07 | `07-config.md` | 配置管理 | 🔴 必遵 |
|
|
19
|
-
| 08 | `08-git.md` | Git 分支 & 提交
|
|
19
|
+
| 08 | `08-git.md` | Git 分支 & 提交 + 审计 | 🔴 必遵 |
|
|
20
20
|
| 09 | `09-typescript.md` | TypeScript 类型 | 🟡 建议 |
|
|
21
21
|
| 10 | `10-pinia.md` | Pinia 状态管理 | 🔴 必遵 |
|
|
22
22
|
| 11 | `11-form-validation.md` | 表单与校验 | 🔴 必遵 |
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
|
|
74
74
|
```
|
|
75
75
|
✅ 已读取 standards/index.md → 规范门控,匹配任务类型 A(生成新页面)
|
|
76
|
-
✅ 已读取 standards/02-code-structure.md →
|
|
76
|
+
✅ 已读取 standards/02-code-structure.md → 三文件分离+接口契约 + 三段式 + script 9 段顺序
|
|
77
77
|
✅ 已读取 standards/12-base-table.md → AGGrid 必用 + cid 命名规范
|
|
78
78
|
✅ 已读取 standards/13-platform-components.md → 平台组件对照表
|
|
79
79
|
```
|