@agile-team/wl-skills-kit 2.3.0 → 2.3.1

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.
Files changed (93) hide show
  1. package/CHANGELOG.md +33 -63
  2. package/README.md +15 -148
  3. package/bin/wl-skills.js +2 -100
  4. package/files/.github/guides/README.md +13 -13
  5. package/files/.github/guides/architecture.md +555 -576
  6. package/files/.github/guides/usage.md +176 -176
  7. package/files/.github/reports/README.md +65 -65
  8. package/files/.github/reports/SYS_DICT_INFO.md +50 -50
  9. package/files/.github/reports/SYS_MENU_INFO.md +247 -247
  10. package/files/.github/reports/SYS_PERMISSION_INFO.md +20 -20
  11. package/files/.github/reports//347/273/204/344/273/266/346/217/220/345/217/226/345/273/272/350/256/256.md +33 -33
  12. package/files/.github/reports//350/247/204/350/214/203/345/256/241/346/237/245/346/212/245/345/221/212.md +44 -44
  13. package/files/.github/skills/_compat/README.md +108 -108
  14. package/files/.github/skills/_compat/headers/agents.txt +8 -8
  15. package/files/.github/skills/_compat/headers/claude-code.txt +7 -7
  16. package/files/.github/skills/_compat/headers/cline.txt +7 -7
  17. package/files/.github/skills/_compat/headers/cursor-mdc.txt +16 -16
  18. package/files/.github/skills/_compat/headers/cursor-rules.txt +7 -7
  19. package/files/.github/skills/_compat/headers/github-copilot.txt +1 -1
  20. package/files/.github/skills/_compat/headers/kiro.txt +10 -10
  21. package/files/.github/skills/_compat/headers/trae.txt +11 -11
  22. package/files/.github/skills/_compat/headers/windsurf.txt +7 -7
  23. package/files/.github/skills/_registry.md +81 -81
  24. package/files/.github/skills/core/api-contract/SKILL.md +344 -344
  25. package/files/.github/skills/core/api-contract/USAGE.md +110 -110
  26. package/files/.github/skills/core/convention-audit/SKILL.md +189 -189
  27. package/files/.github/skills/core/convention-audit/USAGE.md +99 -99
  28. package/files/.github/skills/core/page-codegen/SKILL.md +973 -973
  29. package/files/.github/skills/core/page-codegen/USAGE.md +102 -102
  30. package/files/.github/skills/core/page-codegen/templates/_index.md +46 -46
  31. package/files/.github/skills/core/page-codegen/templates/domains/_CONTRIBUTING.md +107 -107
  32. package/files/.github/skills/core/page-codegen/templates/domains/produce/TPL-OPERATION-STATION.md +442 -442
  33. package/files/.github/skills/core/page-codegen/templates/domains/sale/README.md +26 -26
  34. package/files/.github/skills/core/page-codegen/templates/universal/TPL-CHANGE-HISTORY.md +276 -276
  35. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DETAIL-TABS.md +1145 -1145
  36. package/files/.github/skills/core/page-codegen/templates/universal/TPL-DRIVEN.md +124 -124
  37. package/files/.github/skills/core/page-codegen/templates/universal/TPL-FORM-ROUTE.md +436 -436
  38. package/files/.github/skills/core/page-codegen/templates/universal/TPL-LIST.md +191 -191
  39. package/files/.github/skills/core/page-codegen/templates/universal/TPL-MASTER-DETAIL.md +148 -148
  40. package/files/.github/skills/core/page-codegen/templates/universal/TPL-RECORD-FORM.md +376 -376
  41. package/files/.github/skills/core/page-codegen/templates/universal/TPL-TREE-LIST.md +186 -186
  42. package/files/.github/skills/core/prototype-scan/SKILL.md +498 -498
  43. package/files/.github/skills/core/prototype-scan/USAGE.md +95 -95
  44. package/files/.github/skills/core/template-extract/SKILL.md +139 -139
  45. package/files/.github/skills/core/template-extract/USAGE.md +93 -93
  46. package/files/.github/skills/domain/README.md +51 -51
  47. package/files/.github/skills/sync/menu-sync/SKILL.md +263 -263
  48. package/files/.github/skills/sync/menu-sync/USAGE.md +104 -104
  49. package/files/.github/skills/sync/menu-sync/env/env.local.json +7 -7
  50. package/files/.github/skills/sync/menu-sync/env/guide.md +99 -99
  51. package/files/.github/skills/sync/permission-sync/SKILL.draft.md +91 -91
  52. package/files/.github/standards/01-toolchain.md +57 -57
  53. package/files/.github/standards/02-code-structure.md +111 -111
  54. package/files/.github/standards/03-comments.md +53 -53
  55. package/files/.github/standards/04-coding-basics.md +33 -33
  56. package/files/.github/standards/05-logging.md +38 -38
  57. package/files/.github/standards/06-security.md +44 -44
  58. package/files/.github/standards/07-config.md +52 -52
  59. package/files/.github/standards/08-git.md +60 -60
  60. package/files/.github/standards/09-typescript.md +71 -71
  61. package/files/.github/standards/10-pinia.md +57 -57
  62. package/files/.github/standards/11-form-validation.md +81 -81
  63. package/files/.github/standards/12-base-table.md +153 -153
  64. package/files/.github/standards/13-platform-components.md +123 -123
  65. package/files/.github/standards/index.md +89 -89
  66. package/files/demo/produce/aiflow/mmwr-customer-apply-add/api.md +1 -1
  67. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/data.ts +196 -196
  68. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.scss +150 -150
  69. package/files/demo/produce/aiflow/mmwr-customer-apply-change-history/index.vue +79 -79
  70. package/files/docs/jh-date-range.md +257 -257
  71. package/files/docs/jh-date.md +222 -222
  72. package/files/docs/jh-dept-picker.md +190 -190
  73. package/files/docs/jh-drag-row.md +590 -590
  74. package/files/docs/jh-file-upload.md +216 -216
  75. package/files/docs/jh-picker.md +218 -218
  76. package/files/docs/jh-select.md +148 -148
  77. package/files/docs/jh-text.md +248 -248
  78. package/files/docs/jh-user-picker.md +197 -197
  79. package/files/docs/request.md +24 -9
  80. package/files/src/components/global/C_RightToolbar/data.ts +228 -0
  81. package/files/src/components/global/C_RightToolbar/index.scss +44 -0
  82. package/files/src/components/global/C_RightToolbar/index.vue +34 -336
  83. package/files/src/components/global/C_Splitter/index.scss +61 -0
  84. package/files/src/components/global/C_Splitter/index.vue +2 -64
  85. package/files/src/components/global/C_SvgIcon/index.scss +15 -0
  86. package/files/src/components/global/C_SvgIcon/index.vue +20 -50
  87. package/files/src/components/global/C_TagStatus/index.scss +20 -0
  88. package/files/src/components/global/C_TagStatus/index.vue +1 -22
  89. package/files/src/components/global/C_Tree/data.ts +61 -0
  90. package/files/src/components/global/C_Tree/index.vue +12 -53
  91. package/files/src/components/local/c_listModal/index.scss +4 -0
  92. package/files/src/components/local/c_listModal/index.vue +1 -1
  93. package/package.json +5 -9
@@ -1,110 +1,110 @@
1
- # 使用指南:api-contract(接口约定)
2
-
3
- > **谁读这个文档**:团队成员(前端/后端/产品)
4
- > **AI 触发文件**:同目录 `SKILL.md`
5
-
6
- ---
7
-
8
- ## 这个 Skill 解决什么问题
9
-
10
- 为每个页面生成一份 `api.md`,**作为前后端联调的契约**:
11
-
12
- - 前端:`data.ts` 里的 `API_CONFIG` URL、查询字段直接来源于此
13
- - 后端:拿 api.md 即可写 Controller + Service + Entity,字段名一致零联调成本
14
-
15
- ---
16
-
17
- ## 何时使用
18
-
19
- - 拿到《页面清单》(来自 `prototype-scan`),准备让后端开发接口
20
- - 已有页面但接口未定义,需要补齐契约
21
- - 接口字段需要变更,更新 api.md 让前后端同步
22
-
23
- ---
24
-
25
- ## 触发关键词
26
-
27
- `接口约定` / `api.md` / `字段定义` / `前后端对齐` / `接口设计`
28
-
29
- ---
30
-
31
- ## 真实响应契约(务必背下来)
32
-
33
- ```json
34
- // 分页
35
- { "code": 2000, "message": "操作成功", "data": { "records": [...], "total": 100, "current": 1, "size": 20, "pages": 5, "countId": null, "maxLimit": null, "orders": [], "searchCount": true } }
36
-
37
- // 单条 / 数组
38
- { "code": 2000, "message": "...", "data": { /* 或 [] */ } }
39
-
40
- // 失败
41
- { "code": 4001, "message": "...", "data": null }
42
- ```
43
-
44
- - **code 成功值是 `2000`**(不是 200!)
45
- - **包裹字段是 `data`**(不是 `result`!)
46
- - 业务代码 `.then(res => res)` 拿到的已是 `data` 内容(拦截器剥壳)
47
-
48
- ---
49
-
50
- ## 标准对话示例
51
-
52
- ```
53
- 你:基于 reports/PROTOTYPE_SCAN_客户管理_20260426.md 生成各页面的 api.md
54
- AI:[Pre-flight]
55
- 将生成 7 个 api.md 文件,输出位置:
56
- src/views/produce/aiflow/mmwr-customer-archive/api.md
57
- src/views/produce/aiflow/mmwr-customer-detail/api.md
58
- ...
59
- 服务缩写:mmwr,资源名:mmwrCustomer*
60
- 需向你确认 3 项:
61
- 1. 主键字段是 customerCode 还是 customerNo?
62
- 2. 状态字典 logicValue 是 customer_state 还是 mmwr_customer_state?
63
- 3. 临时客户转正式客户是 /convert 还是单独接口?
64
- ```
65
-
66
- ---
67
-
68
- ## 输出物
69
-
70
- 每个页面目录下生成 `api.md`,结构:
71
-
72
- 1. **API_CONFIG**(粘贴到 data.ts 用)
73
- 2. **实体定义**(字段名、类型、字典、必填)
74
- 3. **接口清单**(list/getById/save/update/remove/export + 业务操作如 release/approve)
75
- 4. **数据字典**(dictCode 列表)
76
- 5. **联调注意**
77
-
78
- ---
79
-
80
- ## 团队协作流程
81
-
82
- 1. 前端基于 prototype-scan 输出生成 api.md(标 🟡 待确认)
83
- 2. **发后端 review**(钉钉/IM 直接发文件路径)
84
- 3. 后端确认字段,标 🟢 已确认
85
- 4. 后端按 api.md 出接口,前端按 api.md 写 data.ts
86
- 5. 联调时若有变更,更新 api.md 并标 🔴 有变更,双方同步修改
87
-
88
- ---
89
-
90
- ## 常见踩坑
91
-
92
- | 现象 | 原因 | 解法 |
93
- | ------------------------------------------------- | ------------------------------ | --------------------------------------------- |
94
- | 字段名不一致(前端 customerNo 后端 customerCode) | 没走 api.md 直接编码 | 强制约定:**先 api.md 再 data.ts** |
95
- | 拦截器报"code 不是 2000" | mock 数据用了 200 | 改 mock 为 2000 |
96
- | 业务代码报 `data.records is undefined` | 后端忘记包装外壳,返回了纯数组 | 后端按契约包 `{ code, message, data: {...} }` |
97
- | 雪花 ID 精度丢失 | 后端返回 number | 后端 ID 字段统一 String 序列化 |
98
-
99
- ---
100
-
101
- ## FAQ
102
-
103
- **Q:api.md 一定要放在页面目录下吗?**
104
- A:是。便于 PR review 时一眼看到改了哪个页面的契约。
105
-
106
- **Q:可以跳过 api.md 直接 codegen 吗?**
107
- A:技术上可以,AI 会用通用模板字段,但**联调时必踩坑**。建议至少写到"实体定义"段落。
108
-
109
- **Q:业务操作(如 release / approve)需要写吗?**
110
- A:写。`page-codegen` 会读取 api.md 中的业务操作列表,自动在 toolbar 里加按钮。
1
+ # 使用指南:api-contract(接口约定)
2
+
3
+ > **谁读这个文档**:团队成员(前端/后端/产品)
4
+ > **AI 触发文件**:同目录 `SKILL.md`
5
+
6
+ ---
7
+
8
+ ## 这个 Skill 解决什么问题
9
+
10
+ 为每个页面生成一份 `api.md`,**作为前后端联调的契约**:
11
+
12
+ - 前端:`data.ts` 里的 `API_CONFIG` URL、查询字段直接来源于此
13
+ - 后端:拿 api.md 即可写 Controller + Service + Entity,字段名一致零联调成本
14
+
15
+ ---
16
+
17
+ ## 何时使用
18
+
19
+ - 拿到《页面清单》(来自 `prototype-scan`),准备让后端开发接口
20
+ - 已有页面但接口未定义,需要补齐契约
21
+ - 接口字段需要变更,更新 api.md 让前后端同步
22
+
23
+ ---
24
+
25
+ ## 触发关键词
26
+
27
+ `接口约定` / `api.md` / `字段定义` / `前后端对齐` / `接口设计`
28
+
29
+ ---
30
+
31
+ ## 真实响应契约(务必背下来)
32
+
33
+ ```json
34
+ // 分页
35
+ { "code": 2000, "message": "操作成功", "data": { "records": [...], "total": 100, "current": 1, "size": 20, "pages": 5, "countId": null, "maxLimit": null, "orders": [], "searchCount": true } }
36
+
37
+ // 单条 / 数组
38
+ { "code": 2000, "message": "...", "data": { /* 或 [] */ } }
39
+
40
+ // 失败
41
+ { "code": 4001, "message": "...", "data": null }
42
+ ```
43
+
44
+ - **code 成功值是 `2000`**(不是 200!)
45
+ - **包裹字段是 `data`**(不是 `result`!)
46
+ - 业务代码 `.then(res => res)` 拿到的已是 `data` 内容(拦截器剥壳)
47
+
48
+ ---
49
+
50
+ ## 标准对话示例
51
+
52
+ ```
53
+ 你:基于 reports/PROTOTYPE_SCAN_客户管理_20260426.md 生成各页面的 api.md
54
+ AI:[Pre-flight]
55
+ 将生成 7 个 api.md 文件,输出位置:
56
+ src/views/produce/aiflow/mmwr-customer-archive/api.md
57
+ src/views/produce/aiflow/mmwr-customer-detail/api.md
58
+ ...
59
+ 服务缩写:mmwr,资源名:mmwrCustomer*
60
+ 需向你确认 3 项:
61
+ 1. 主键字段是 customerCode 还是 customerNo?
62
+ 2. 状态字典 logicValue 是 customer_state 还是 mmwr_customer_state?
63
+ 3. 临时客户转正式客户是 /convert 还是单独接口?
64
+ ```
65
+
66
+ ---
67
+
68
+ ## 输出物
69
+
70
+ 每个页面目录下生成 `api.md`,结构:
71
+
72
+ 1. **API_CONFIG**(粘贴到 data.ts 用)
73
+ 2. **实体定义**(字段名、类型、字典、必填)
74
+ 3. **接口清单**(list/getById/save/update/remove/export + 业务操作如 release/approve)
75
+ 4. **数据字典**(dictCode 列表)
76
+ 5. **联调注意**
77
+
78
+ ---
79
+
80
+ ## 团队协作流程
81
+
82
+ 1. 前端基于 prototype-scan 输出生成 api.md(标 🟡 待确认)
83
+ 2. **发后端 review**(钉钉/IM 直接发文件路径)
84
+ 3. 后端确认字段,标 🟢 已确认
85
+ 4. 后端按 api.md 出接口,前端按 api.md 写 data.ts
86
+ 5. 联调时若有变更,更新 api.md 并标 🔴 有变更,双方同步修改
87
+
88
+ ---
89
+
90
+ ## 常见踩坑
91
+
92
+ | 现象 | 原因 | 解法 |
93
+ | ------------------------------------------------- | ------------------------------ | --------------------------------------------- |
94
+ | 字段名不一致(前端 customerNo 后端 customerCode) | 没走 api.md 直接编码 | 强制约定:**先 api.md 再 data.ts** |
95
+ | 拦截器报"code 不是 2000" | mock 数据用了 200 | 改 mock 为 2000 |
96
+ | 业务代码报 `data.records is undefined` | 后端忘记包装外壳,返回了纯数组 | 后端按契约包 `{ code, message, data: {...} }` |
97
+ | 雪花 ID 精度丢失 | 后端返回 number | 后端 ID 字段统一 String 序列化 |
98
+
99
+ ---
100
+
101
+ ## FAQ
102
+
103
+ **Q:api.md 一定要放在页面目录下吗?**
104
+ A:是。便于 PR review 时一眼看到改了哪个页面的契约。
105
+
106
+ **Q:可以跳过 api.md 直接 codegen 吗?**
107
+ A:技术上可以,AI 会用通用模板字段,但**联调时必踩坑**。建议至少写到"实体定义"段落。
108
+
109
+ **Q:业务操作(如 release / approve)需要写吗?**
110
+ A:写。`page-codegen` 会读取 api.md 中的业务操作列表,自动在 toolbar 里加按钮。
@@ -1,189 +1,189 @@
1
- ---
2
- name: convention-audit
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
- ---
5
-
6
- # Skill: 规范审计(convention-audit)
7
-
8
- 以 `.github/standards/` 13 条规范为唯一基线,扫描项目源码,输出**偏差报告**和**组件提取建议**到 `reports/` 目录。
9
-
10
- > **核心理念**:规范是"标准",代码必须对齐标准。本 Skill 只负责发现偏差并给出整改建议,**不自动修复**(修复由 [PLANNED] code-fix Skill 完成)。
11
-
12
- ---
13
-
14
- ## 触发词
15
-
16
- `规范审计` / `规范检查` / `代码审计` / `对齐规范` / `规范偏差` / `audit code`
17
-
18
- ---
19
-
20
- ## Pre-flight 声明(执行前必须输出)
21
-
22
- ```
23
- 🚀 已触发技能 convention-audit/SKILL.md → 规范审计:扫描源码 + 偏差报告 + 提取建议
24
- ✅ 已读取 standards/index.md → 规范门控
25
- ✅ 已读取 standards/01 ~ 13 → 完整 13 条规范基线(审计场景需全量加载)
26
- ✅ 已读取 reports/规范审查报告.md → 现有报告(用于追加,不覆盖)
27
- ✅ 审计范围:{用户指定的目录或单文件}
28
- ```
29
-
30
- ---
31
-
32
- ## 适用场景
33
-
34
- | 场景 | 说明 |
35
- | --------------------------- | ---------------------------------------- |
36
- | 新项目导入 wl-skills-kit 后 | 扫描旧代码,输出整改清单,逐步迁移 |
37
- | 日常 Code Review 辅助 | 比对单文件或目录,快速发现偏差 |
38
- | 项目迁移/升级 | 老项目引入新架构,批量评估改造量 |
39
- | 团队培训 | 新成员提交代码前,用审计验证是否符合规范 |
40
- | page-codegen 后置自检 | 页面生成完成后自动跑一次审计,确认合规 |
41
- | CI/CD(PLANNED) | PR 上自动跑审计,不合规 PR 阻断合并 |
42
-
43
- ---
44
-
45
- ## 审计范围(13 条规范全覆盖)
46
-
47
- | 编号 | 审计维度 | 严重度判定 |
48
- | ---- | ---------------------------- | -------------------------------------------------------------------- |
49
- | 01 | 工具链就绪 | 缺少 `.prettierrc.js` / `eslint.config.ts` / `.husky/` → 🔴 严重 |
50
- | 02 | 4 文件原则、三段式、9 段顺序 | 缺 data.ts / index.vue 含业务逻辑 → 🔴;段落顺序乱 → 🟡 |
51
- | 03 | 注释规范 | 文件头缺失 → 🟡;显而易见的注释 → 🟢 提示 |
52
- | 04 | 基础编码(13 条) | 用 var / for...in / 字符串拼接 → 🟡 |
53
- | 05 | console 残留 | src/ 下任何 console.log / warn / error → 🟡 |
54
- | 06 | 安全规范 | v-html 无注释 / import axios / eval → 🔴 |
55
- | 07 | 配置管理 | 硬编码 `http://` / `https://` IP → 🔴;非 VITE\_ 环境变量 → 🟡 |
56
- | 08 | Git 规范 | (审计时不检测,由 husky 自动拦截) |
57
- | 09 | TypeScript | 滥用 any(>3 处/页) → 🟡 |
58
- | 10 | Pinia | data.ts 内 import Store → 🔴 |
59
- | 11 | 表单校验 | FORM_ROUTE 缺 validate / resetFields → 🔴 |
60
- | 12 | BaseTable + cid | 用 el-table / 缺 render-type / cid 缺失或重复 → 🔴;cid 后缀使用旧格式(十进制截断后6位)→ 🟡;列级 cid 只用缩写作前缀(同页面两张表同名列碰撞)→ 🔴;**存量代码迁移期**:已存在旧格式 cid(缩写作前缀的列级 cid)→ 降级为 🟡,由 code-fix 逐步整改,不必一刀切全报红 |
61
- | 13 | 平台组件合规 | 用 el-form/el-table/el-date-picker 替代封装 → 🔴;3+ 复用 → 提取建议 |
62
-
63
- ---
64
-
65
- ## 执行流程
66
-
67
- ### 步骤 1:确定审计范围
68
-
69
- | 用户输入 | 范围 |
70
- | --------------------------------- | ------------- |
71
- | "审计整个项目" | `src/views/` |
72
- | "审计 produce/mmwr" | 该子目录 |
73
- | "审计 mmwr-customer-archive 页面" | 单页面 4 文件 |
74
-
75
- ### 步骤 2:加载规范基线
76
-
77
- 读取 `standards/01 ~ 13` 全部规范文件(审计场景必须全量加载)。
78
-
79
- ### 步骤 3:扫描源码
80
-
81
- 逐个文件检查 13 个维度。同时记录:
82
-
83
- - **跨页面相同 el-\* 模式**(统计出现次数和位置)
84
- - **每个偏差所在文件的菜单位置**(从 koroFileHeader 文件头注释解析)
85
-
86
- ### 步骤 4:追加写入两份报告
87
-
88
- #### 报告 A:`reports/规范审查报告.md`(追加,最新章节在顶)
89
-
90
- ```markdown
91
- ## 🕐 {YYYY-MM-DD HH:mm} | 范围:{范围} | 触发:{user / page-codegen / CI}
92
-
93
- ### 概要
94
-
95
- | 指标 | 值 |
96
- | -------- | --- |
97
- | 扫描页面 | 12 |
98
- | 合规页面 | 8 |
99
- | 偏差页面 | 4 |
100
- | 🔴 严重 | 5 |
101
- | 🟡 轻微 | 7 |
102
-
103
- ### 🔴 严重偏差(必须整改)
104
-
105
- #### {页面路径} — 违反规范 13(平台组件合规)
106
-
107
- - **菜单位置**(来自文件头):销售管理 > 国内贸易订单
108
- - **现状**:使用 `<el-table>` 渲染数据
109
- - **应为**:使用 `<BaseTable render-type="agGrid" cid="...">`
110
- - **整改建议**:参考 templates/universal/TPL-LIST.md
111
- - **修复标记**:🔧 待修复
112
-
113
- (按规范条目分组列出全部偏差)
114
-
115
- ### 🟡 轻微偏差(建议整改)
116
-
117
- (同格式)
118
-
119
- ### ✅ 合规页面
120
-
121
- - src/views/produce/.../mmwr-customer-archive/
122
- - ...
123
-
124
- ---
125
-
126
- (历史章节自然下沉)
127
- ```
128
-
129
- #### 报告 B:`reports/组件提取建议.md`(追加)
130
-
131
- ```markdown
132
- ## 🕐 {YYYY-MM-DD HH:mm} | 范围:{范围}
133
-
134
- ### 📦 组件提取建议(共 N 处)
135
-
136
- | 建议组件名 | 出现次数 | 页面路径 | 菜单位置 | 模式描述 |
137
- | ------------- | -------- | ---------------------------------------- | --------------------- | ---------------- |
138
- | c_statusBadge | 5 处 | src/views/sale/.../{a,b,c,d,e}/index.vue | 销售管理 > 多个子菜单 | 状态枚举彩色标签 |
139
- | c_priceFormat | 4 处 | src/views/.../... | ... | 千分位金额显示 |
140
-
141
- > ⚠️ 以上为建议,不自动提取。
142
- > 人工确认后,触发 `template-extract` Skill(页面级模板)或手动封装为 `c_*` 组件。
143
- ```
144
-
145
- ### 步骤 5:输出摘要
146
-
147
- ```
148
- 📦 审计完成
149
- ─────────────────────────────────────────────────────
150
- ✅ reports/规范审查报告.md → 已追加章节({N} 个偏差)
151
- ✅ reports/组件提取建议.md → 已追加 {M} 条提取建议
152
- ─────────────────────────────────────────────────────
153
- 📌 后续步骤:
154
- 1. 人工 review 报告,标记需要修复的条目
155
- 2. 严重偏差优先修复(用 page-codegen 重新生成)
156
- 3. 触发 code-fix 自动整改 🟢/🟡 等级偏差
157
- 4. 提取建议人工评审 → template-extract 或手动封装
158
- ─────────────────────────────────────────────────────
159
- ```
160
-
161
- ---
162
-
163
- ## 偏差严重度定义
164
-
165
- | 级别 | 标记 | 定义 | 示例 |
166
- | ---- | ---- | ------------------------------------------ | ----------------------------------------------------- |
167
- | 🔴 | 严重 | 架构性违反,影响可维护性 / 安全 / 团队协作 | 不用 AbstractPageQueryHook、用 el-table、import axios |
168
- | 🟡 | 轻微 | 风格 / 命名不统一,不影响功能 | for...in、目录名 camelCase、缺 api.md |
169
- | 🟢 | 提示 | 优化建议,可逐步改进 | 重复表达式可抽 computed、超长函数可拆分 |
170
-
171
- ---
172
-
173
- ## 与其他 Skill 的关系
174
-
175
- | Skill | 关系 |
176
- | ---------------------- | ------------------------------------------------------- |
177
- | **page-codegen** | 审计发现偏差后,可调用 page-codegen 重新生成合规代码 |
178
- | **template-extract** | 审计输出的"组件提取建议",确认后可触发 template-extract |
179
- | **code-fix** | 审计报告作为修复输入,自动整改 🟢🟡 等级偏差 |
180
- | **CI/CD** | 审计可作为 PR 检查项,不合规 PR 阻断合并 |
181
-
182
- ---
183
-
184
- ## 注意事项
185
-
186
- 1. **规范基线唯一**:以 `standards/index.md` 加载的 13 条文件为准,**不接受**"旧代码一直这么写"的辩解
187
- 2. **追加不覆盖**:每次审计追加新章节到报告,**不删除历史**,便于追溯整改进度
188
- 3. **菜单位置解析**:依赖 koroFileHeader 文件头注释,缺失文件头时标记 `菜单位置:未知`
189
- 4. **AI 自我审计**:page-codegen 生成代码后,建议立即跑一次单页审计验证合规
1
+ ---
2
+ name: convention-audit
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
+ ---
5
+
6
+ # Skill: 规范审计(convention-audit)
7
+
8
+ 以 `.github/standards/` 13 条规范为唯一基线,扫描项目源码,输出**偏差报告**和**组件提取建议**到 `reports/` 目录。
9
+
10
+ > **核心理念**:规范是"标准",代码必须对齐标准。本 Skill 只负责发现偏差并给出整改建议,**不自动修复**(修复由 [PLANNED] code-fix Skill 完成)。
11
+
12
+ ---
13
+
14
+ ## 触发词
15
+
16
+ `规范审计` / `规范检查` / `代码审计` / `对齐规范` / `规范偏差` / `audit code`
17
+
18
+ ---
19
+
20
+ ## Pre-flight 声明(执行前必须输出)
21
+
22
+ ```
23
+ 🚀 已触发技能 convention-audit/SKILL.md → 规范审计:扫描源码 + 偏差报告 + 提取建议
24
+ ✅ 已读取 standards/index.md → 规范门控
25
+ ✅ 已读取 standards/01 ~ 13 → 完整 13 条规范基线(审计场景需全量加载)
26
+ ✅ 已读取 reports/规范审查报告.md → 现有报告(用于追加,不覆盖)
27
+ ✅ 审计范围:{用户指定的目录或单文件}
28
+ ```
29
+
30
+ ---
31
+
32
+ ## 适用场景
33
+
34
+ | 场景 | 说明 |
35
+ | --------------------------- | ---------------------------------------- |
36
+ | 新项目导入 wl-skills-kit 后 | 扫描旧代码,输出整改清单,逐步迁移 |
37
+ | 日常 Code Review 辅助 | 比对单文件或目录,快速发现偏差 |
38
+ | 项目迁移/升级 | 老项目引入新架构,批量评估改造量 |
39
+ | 团队培训 | 新成员提交代码前,用审计验证是否符合规范 |
40
+ | page-codegen 后置自检 | 页面生成完成后自动跑一次审计,确认合规 |
41
+ | CI/CD(PLANNED) | PR 上自动跑审计,不合规 PR 阻断合并 |
42
+
43
+ ---
44
+
45
+ ## 审计范围(13 条规范全覆盖)
46
+
47
+ | 编号 | 审计维度 | 严重度判定 |
48
+ | ---- | ---------------------------- | -------------------------------------------------------------------- |
49
+ | 01 | 工具链就绪 | 缺少 `.prettierrc.js` / `eslint.config.ts` / `.husky/` → 🔴 严重 |
50
+ | 02 | 4 文件原则、三段式、9 段顺序 | 缺 data.ts / index.vue 含业务逻辑 → 🔴;段落顺序乱 → 🟡 |
51
+ | 03 | 注释规范 | 文件头缺失 → 🟡;显而易见的注释 → 🟢 提示 |
52
+ | 04 | 基础编码(13 条) | 用 var / for...in / 字符串拼接 → 🟡 |
53
+ | 05 | console 残留 | src/ 下任何 console.log / warn / error → 🟡 |
54
+ | 06 | 安全规范 | v-html 无注释 / import axios / eval → 🔴 |
55
+ | 07 | 配置管理 | 硬编码 `http://` / `https://` IP → 🔴;非 VITE\_ 环境变量 → 🟡 |
56
+ | 08 | Git 规范 | (审计时不检测,由 husky 自动拦截) |
57
+ | 09 | TypeScript | 滥用 any(>3 处/页) → 🟡 |
58
+ | 10 | Pinia | data.ts 内 import Store → 🔴 |
59
+ | 11 | 表单校验 | FORM_ROUTE 缺 validate / resetFields → 🔴 |
60
+ | 12 | BaseTable + cid | 用 el-table / 缺 render-type / cid 缺失或重复 → 🔴;cid 后缀使用旧格式(十进制截断后6位)→ 🟡;列级 cid 只用缩写作前缀(同页面两张表同名列碰撞)→ 🔴;**存量代码迁移期**:已存在旧格式 cid(缩写作前缀的列级 cid)→ 降级为 🟡,由 code-fix 逐步整改,不必一刀切全报红 |
61
+ | 13 | 平台组件合规 | 用 el-form/el-table/el-date-picker 替代封装 → 🔴;3+ 复用 → 提取建议 |
62
+
63
+ ---
64
+
65
+ ## 执行流程
66
+
67
+ ### 步骤 1:确定审计范围
68
+
69
+ | 用户输入 | 范围 |
70
+ | --------------------------------- | ------------- |
71
+ | "审计整个项目" | `src/views/` |
72
+ | "审计 produce/mmwr" | 该子目录 |
73
+ | "审计 mmwr-customer-archive 页面" | 单页面 4 文件 |
74
+
75
+ ### 步骤 2:加载规范基线
76
+
77
+ 读取 `standards/01 ~ 13` 全部规范文件(审计场景必须全量加载)。
78
+
79
+ ### 步骤 3:扫描源码
80
+
81
+ 逐个文件检查 13 个维度。同时记录:
82
+
83
+ - **跨页面相同 el-\* 模式**(统计出现次数和位置)
84
+ - **每个偏差所在文件的菜单位置**(从 koroFileHeader 文件头注释解析)
85
+
86
+ ### 步骤 4:追加写入两份报告
87
+
88
+ #### 报告 A:`reports/规范审查报告.md`(追加,最新章节在顶)
89
+
90
+ ```markdown
91
+ ## 🕐 {YYYY-MM-DD HH:mm} | 范围:{范围} | 触发:{user / page-codegen / CI}
92
+
93
+ ### 概要
94
+
95
+ | 指标 | 值 |
96
+ | -------- | --- |
97
+ | 扫描页面 | 12 |
98
+ | 合规页面 | 8 |
99
+ | 偏差页面 | 4 |
100
+ | 🔴 严重 | 5 |
101
+ | 🟡 轻微 | 7 |
102
+
103
+ ### 🔴 严重偏差(必须整改)
104
+
105
+ #### {页面路径} — 违反规范 13(平台组件合规)
106
+
107
+ - **菜单位置**(来自文件头):销售管理 > 国内贸易订单
108
+ - **现状**:使用 `<el-table>` 渲染数据
109
+ - **应为**:使用 `<BaseTable render-type="agGrid" cid="...">`
110
+ - **整改建议**:参考 templates/universal/TPL-LIST.md
111
+ - **修复标记**:🔧 待修复
112
+
113
+ (按规范条目分组列出全部偏差)
114
+
115
+ ### 🟡 轻微偏差(建议整改)
116
+
117
+ (同格式)
118
+
119
+ ### ✅ 合规页面
120
+
121
+ - src/views/produce/.../mmwr-customer-archive/
122
+ - ...
123
+
124
+ ---
125
+
126
+ (历史章节自然下沉)
127
+ ```
128
+
129
+ #### 报告 B:`reports/组件提取建议.md`(追加)
130
+
131
+ ```markdown
132
+ ## 🕐 {YYYY-MM-DD HH:mm} | 范围:{范围}
133
+
134
+ ### 📦 组件提取建议(共 N 处)
135
+
136
+ | 建议组件名 | 出现次数 | 页面路径 | 菜单位置 | 模式描述 |
137
+ | ------------- | -------- | ---------------------------------------- | --------------------- | ---------------- |
138
+ | c_statusBadge | 5 处 | src/views/sale/.../{a,b,c,d,e}/index.vue | 销售管理 > 多个子菜单 | 状态枚举彩色标签 |
139
+ | c_priceFormat | 4 处 | src/views/.../... | ... | 千分位金额显示 |
140
+
141
+ > ⚠️ 以上为建议,不自动提取。
142
+ > 人工确认后,触发 `template-extract` Skill(页面级模板)或手动封装为 `c_*` 组件。
143
+ ```
144
+
145
+ ### 步骤 5:输出摘要
146
+
147
+ ```
148
+ 📦 审计完成
149
+ ─────────────────────────────────────────────────────
150
+ ✅ reports/规范审查报告.md → 已追加章节({N} 个偏差)
151
+ ✅ reports/组件提取建议.md → 已追加 {M} 条提取建议
152
+ ─────────────────────────────────────────────────────
153
+ 📌 后续步骤:
154
+ 1. 人工 review 报告,标记需要修复的条目
155
+ 2. 严重偏差优先修复(用 page-codegen 重新生成)
156
+ 3. 触发 code-fix 自动整改 🟢/🟡 等级偏差
157
+ 4. 提取建议人工评审 → template-extract 或手动封装
158
+ ─────────────────────────────────────────────────────
159
+ ```
160
+
161
+ ---
162
+
163
+ ## 偏差严重度定义
164
+
165
+ | 级别 | 标记 | 定义 | 示例 |
166
+ | ---- | ---- | ------------------------------------------ | ----------------------------------------------------- |
167
+ | 🔴 | 严重 | 架构性违反,影响可维护性 / 安全 / 团队协作 | 不用 AbstractPageQueryHook、用 el-table、import axios |
168
+ | 🟡 | 轻微 | 风格 / 命名不统一,不影响功能 | for...in、目录名 camelCase、缺 api.md |
169
+ | 🟢 | 提示 | 优化建议,可逐步改进 | 重复表达式可抽 computed、超长函数可拆分 |
170
+
171
+ ---
172
+
173
+ ## 与其他 Skill 的关系
174
+
175
+ | Skill | 关系 |
176
+ | ---------------------- | ------------------------------------------------------- |
177
+ | **page-codegen** | 审计发现偏差后,可调用 page-codegen 重新生成合规代码 |
178
+ | **template-extract** | 审计输出的"组件提取建议",确认后可触发 template-extract |
179
+ | **code-fix** | 审计报告作为修复输入,自动整改 🟢🟡 等级偏差 |
180
+ | **CI/CD** | 审计可作为 PR 检查项,不合规 PR 阻断合并 |
181
+
182
+ ---
183
+
184
+ ## 注意事项
185
+
186
+ 1. **规范基线唯一**:以 `standards/index.md` 加载的 13 条文件为准,**不接受**"旧代码一直这么写"的辩解
187
+ 2. **追加不覆盖**:每次审计追加新章节到报告,**不删除历史**,便于追溯整改进度
188
+ 3. **菜单位置解析**:依赖 koroFileHeader 文件头注释,缺失文件头时标记 `菜单位置:未知`
189
+ 4. **AI 自我审计**:page-codegen 生成代码后,建议立即跑一次单页审计验证合规