@agile-team/wl-skills-kit 2.11.1 → 2.11.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.
Files changed (91) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +38 -21
  3. package/bin/wl-skills.js +27 -3
  4. package/files/.wl-skills/docs/jh-pagination.md +505 -505
  5. package/files/.wl-skills/docs/request.md +940 -940
  6. package/files/.wl-skills/docs/validate-exempt.md +113 -0
  7. package/files/.wl-skills/guides/architecture.md +1 -1
  8. package/files/.wl-skills/skills/_compat/headers/cursor-mdc.txt +1 -1
  9. package/files/.wl-skills/skills/_compat/headers/kiro.txt +1 -1
  10. package/files/.wl-skills/skills/_compat/headers/trae.txt +1 -1
  11. package/files/.wl-skills/skills/core/convention-audit/SKILL.md +3 -3
  12. package/files/.wl-skills/skills/core/spec-doc-parse/SKILL.md +332 -332
  13. package/files/.wl-skills/skills/core/spec-doc-parse/USAGE.md +97 -97
  14. package/files/.wl-skills/skills/sync/permission-sync/USAGE.md +107 -107
  15. package/files/.wl-skills/src/components/global/C_ParentView/index.vue +3 -3
  16. package/files/.wl-skills/src/components/global/C_RightToolbar/index.vue +157 -157
  17. package/files/.wl-skills/src/components/global/C_SvgIcon/index.vue +31 -31
  18. package/files/.wl-skills/src/components/global/C_SvgIcon/svgicon.js +10 -10
  19. package/files/.wl-skills/src/components/global/C_TagStatus/README.md +264 -264
  20. package/files/.wl-skills/src/components/global/C_TagStatus/config.ts +192 -192
  21. package/files/.wl-skills/src/components/global/C_TagStatus/index.vue +106 -106
  22. package/files/.wl-skills/src/components/global/C_TagStatus/types.ts +64 -64
  23. package/files/.wl-skills/src/components/global/C_Tree/README.md +153 -153
  24. package/files/.wl-skills/src/components/global/C_Tree/index.scss +42 -42
  25. package/files/.wl-skills/src/components/global/C_Tree/index.vue +78 -78
  26. package/files/.wl-skills/src/components/global/C_Tree/types.ts +59 -59
  27. package/files/.wl-skills/src/components/local/c_formModal/README.md +235 -235
  28. package/files/.wl-skills/src/components/local/c_formModal/data.ts +95 -95
  29. package/files/.wl-skills/src/components/local/c_formModal/index.scss +8 -8
  30. package/files/.wl-skills/src/components/local/c_formModal/index.vue +107 -107
  31. package/files/.wl-skills/src/components/local/c_formSections/data.ts +175 -175
  32. package/files/.wl-skills/src/components/local/c_formSections/index.scss +280 -280
  33. package/files/.wl-skills/src/components/local/c_formSections/index.vue +429 -429
  34. package/files/.wl-skills/src/components/local/c_listModal/data.ts +41 -41
  35. package/files/.wl-skills/src/components/local/c_listModal/index.vue +136 -136
  36. package/files/.wl-skills/src/components/local/c_spliterTitle/index.scss +25 -25
  37. package/files/.wl-skills/src/components/local/c_spliterTitle/index.vue +21 -21
  38. package/files/.wl-skills/src/components/remote/AGGrid/README.md +530 -530
  39. package/files/.wl-skills/src/components/remote/BaseForm/README.md +508 -508
  40. package/files/.wl-skills/src/components/remote/BaseQuery/README.md +865 -865
  41. package/files/.wl-skills/src/components/remote/BaseTable/README.md +941 -941
  42. package/files/.wl-skills/src/components/remote/BaseToolbar/README.md +496 -496
  43. package/files/.wl-skills/src/types/page.ts +24 -24
  44. package/files/.wl-skills/standards/04-coding-basics.md +39 -1
  45. package/files/.wl-skills/standards/09-typescript.md +26 -3
  46. package/files/.wl-skills/standards/12-base-table.md +56 -4
  47. package/files/.wl-skills/standards/13-platform-components.md +1 -0
  48. package/files/.wl-skills/standards/index.md +2 -2
  49. package/files/.wl-skills/templates/README.md +44 -44
  50. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/api.md +54 -54
  51. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/data.ts +346 -346
  52. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.scss +1 -1
  53. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.vue +28 -28
  54. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/data.ts +115 -115
  55. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.scss +44 -44
  56. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.vue +43 -43
  57. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/data.ts +338 -338
  58. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.scss +1 -1
  59. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.vue +28 -28
  60. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/data.ts +115 -115
  61. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.scss +44 -44
  62. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.vue +43 -43
  63. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/api.md +88 -88
  64. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/data.ts +601 -601
  65. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.scss +1 -1
  66. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.vue +64 -64
  67. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/api.md +67 -67
  68. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/data.ts +286 -286
  69. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.scss +139 -139
  70. package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.vue +318 -318
  71. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/api.md +98 -98
  72. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/data.ts +543 -543
  73. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.scss +1 -1
  74. package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.vue +52 -52
  75. package/files/.wl-skills/templates/sale/demo/add-demo/data.ts +518 -518
  76. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/data.ts +524 -524
  77. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.scss +154 -154
  78. package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.vue +117 -117
  79. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/data.ts +308 -308
  80. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.scss +99 -99
  81. package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.vue +77 -77
  82. package/files/.wl-skills/templates/sale/demo/heat-batch-return/data.ts +367 -367
  83. package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.scss +100 -100
  84. package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.vue +170 -170
  85. package/files/.wl-skills/templates/sale/demo/heat-batch-return/meltDialog.vue +320 -320
  86. package/files/.wl-skills/templates/sale/demo/metallurgical-spec/data.ts +824 -824
  87. package/lib/ast-rules.js +395 -12
  88. package/mcp/config.js +46 -46
  89. package/mcp/registry.js +6 -1
  90. package/mcp/tools/projectTools.js +9 -1
  91. package/package.json +2 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,30 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.11.3] - 2026-06-21
4
+
5
+ ### Added
6
+
7
+ - **validate 项目级豁免配置(零功能影响)**:业务项目根可放 `.wl-skills-validate.json`,对表单设计器/行内编辑明细表等 BaseTable 受限场景批量豁免 `R3`/`R10`,kit 不主动创建、不存在时行为完全不变。新增 `lib/ast-rules.js` 的 `loadExemptions`,`runAstRules` 内部加载(CLI/MCP 自动一致);与单文件注释豁免(`wl-skills:ignore R3`)互补。配置 schema 详见 `.wl-skills/docs/validate-exempt.md`
8
+ - **standards/12 豁免规则重写**:明确"标准列表强制 BaseTable+AGGrid / BaseTable 可胜任仍优先 BaseTable / BaseTable 受限特殊场景可降级 el-table"三层优先级,两层豁免机制(单文件注释 + 项目级配置),不再一棍子拍死
9
+
10
+ ### Fixed
11
+
12
+ - **README/脚本系统性滞后修正**:v2.11.0 目录从 `.github/` 迁移到 `.wl-skills/` 后,README 大量路径残留未同步;`sync-version.js`/`verify-version.js` 仍硬编码"13 条"(规范已升 14 条),导致 verify-version 的 headers 校验**静默失效**、`npm version` 触发 sync-version 会把"14 条"**回写成 13 条**。全部修正为 14 条 + `.wl-skills/` 路径,校验链路恢复
13
+ - `_compat/headers/{cursor-mdc,trae,kiro}.txt` 源文件注释 `.github/copilot-instructions.md` → `.wl-skills/copilot-instructions-full.md`
14
+
15
+ ## [2.11.2] - 2026-06-21
16
+
17
+ ### Added
18
+
19
+ - **R13 圈复杂度执行器(standard 04,阻断级)**:新增 `lib/ast-rules.js` 的 R13,对 `index.vue`/`data.ts` 的每个函数计算 McCabe 圈复杂度(与 ESLint `complexity` 规则定义一致),`> 10` 报 error 阻断提交。补齐 standard 04 第 14 条核心约定 + 降复杂度手法示例(提前 return / 查表驱动 / 抽子函数)
20
+ - **R14 类型错误零容忍执行器(standard 09,阻断级)**:新增 `runTypeCheck`,委托 `vue-tsc --noEmit`(回退 `tsc`)解析 TS error;无 `tsconfig`/checker 时优雅降级 warn。CLI 新增 `--typecheck`、MCP `wls_validate_page` 新增 `typecheck` 入参双通道一致。CI 应固定 `validate --typecheck --strict`
21
+
22
+ ### Changed
23
+
24
+ - **standard 09 由 🟡建议 升级为 🔴必遵 + 阻断**:`vue-tsc --noEmit` 必须 0 error,职责分离——ESLint 管风格,R14 管类型正确性
25
+ - `rule-coverage.md` 执行器图例 R1~R12 → R1~R14,登记 R13/R14 两条阻断约定;`convention-audit` 维度 09 改为 R14 委托
26
+ - `eslint.config.ts` 复杂度 `warn 60` 修正为 `warn 10`(项目级硬阻断由 R13 兜底,此处仅作 kit 自身开发提示)
27
+
3
28
  ## [2.11.1] - 2026-06-15
4
29
 
5
30
  ### Added
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @agile-team/wl-skills-kit
2
2
 
3
- **AI Skill 模板包 v2.11.1** — 一键将 14 条规范、11 个 AI Skill、17 个 MCP Tool、编辑器 MCP 配置、文档导入 Vue 3 项目。
3
+ **AI Skill 模板包 v2.11.3** — 一键将 14 条规范、11 个 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
 
@@ -25,7 +25,13 @@ pnpm standards:init # 本包维护/业务项目均可
25
25
 
26
26
  ## 版本亮点
27
27
 
28
- **v2.11.1**:精准卡控闭环 —— "约定"接线到确定性执行器,生成即精确。
28
+ **v2.11.3**:确定性闭环再加固 —— 编码最佳实践从"文档约定"接线到执行器,特殊场景豁免可配置。
29
+
30
+ - **新增 R13 圈复杂度执行器(standard 04)**:对每个函数计 McCabe 圈复杂度(与 ESLint `complexity` 一致),`>10` 报 error 阻断;补"降复杂度手法"示例
31
+ - **新增 R14 类型错误零容忍(standard 09 升级为 🔴必遵)**:委托 `vue-tsc/tsc --noEmit` 解析 TS error,`validate --typecheck` / MCP `typecheck:true` 触发,无 checker 优雅降级;ESLint 管风格、R14 管正确性,职责分离
32
+ - **新增 validate 项目级豁免配置**:`.wl-skills-validate.json` 对表单设计器/行内编辑明细表等 BaseTable 受限场景批量豁免 R3/R10,零功能影响(kit 不主动创建);与单文件注释豁免互补
33
+
34
+ **v2.11.1**:精准卡控闭环 —— 把"约定"接线到确定性执行器,生成即精准。
29
35
 
30
36
  - **新增 page-spec 落盘 + spec-align 确定性比对(S1~S5)**:`page-codegen` 生成页面时同步写出 `page-spec.json`(原型约定真值),`validate` 用 AST 解析 `data.ts` 的 `queryDef/columnsDef/toolbarDef` 与之逐项比对——查询字段顺序、表格列顺序、工具栏按钮顺序与颜色、操作列按钮集合、label 文字保真。过去只靠 AI 自觉的 6 条"精准实现"约定,现在变成可阻断的硬卡控
31
37
  - **新增 `wl-skills fix` 确定性机械修复**:对幂等、零语义判断的偏差(BaseTable 补 `render-type`、`::v-deep`→`:deep()`、行尾空白、文件末尾换行)做确定性自动修复,AI 只处理需语义判断的部分;`--dry-run` 预览
@@ -115,7 +121,7 @@ docs/business/0X-xx/{index,requirement,dictionary,field}.md
115
121
  api.md(页面级前后端契约)
116
122
 
117
123
  ▼ [Skill: page-codegen]
118
- data.ts + index.vue + index.scss(13 条 standards 自动满足)
124
+ data.ts + index.vue + index.scss(14 条 standards 自动满足)
119
125
 
120
126
  ▼ [Skill: convention-audit] ← 也可对存量代码单独触发
121
127
  reports/AUDIT_AI_*.md + AUDIT_HUMAN_*.md
@@ -147,9 +153,9 @@ wl-skills-kit/ ← 你正看的这个仓库
147
153
  │ └── wl-skills.js CLI 实现(init / update / clean / check / diff / validate / validate-page / fix / doctor-ui / export / mock-clean)
148
154
 
149
155
  ├── files/ ★★★ 真正会被打包并复制到业务项目的内容 ★★★
150
- │ ├── .github/
151
- │ │ ├── copilot-instructions.mdAI 主入口(编辑这里,不要编辑业务项目里的副本)
152
- │ │ ├── standards/ 13 条规范
156
+ │ ├── .wl-skills/ 统一隔离目录(所有 Skill/规范/指南/报告/模板)
157
+ │ │ ├── copilot-instructions-full.md AI 主入口完整指令(业务项目根另有薄壳)
158
+ │ │ ├── standards/ 14 条规范
153
159
  │ │ ├── skills/ Skill 目录(含 _compat/ 多编辑器适配源)
154
160
  │ │ ├── guides/ 人读指南
155
161
  │ │ └── reports/ 领域基线模板(菜单/字典/权限)
@@ -182,14 +188,14 @@ wl-skills-kit/ ← 你正看的这个仓库
182
188
  ```
183
189
  你的业务项目/
184
190
 
185
- ├── .github/ ← 来自本包 files/.github/
186
- │ ├── copilot-instructions.md Copilot 主入口(精简 ~340 行)
187
- │ ├── standards/ 13 条模块化规范 + index.md 门控
191
+ ├── .wl-skills/ ← 来自本包 files/.wl-skills/(统一隔离)
192
+ │ ├── copilot-instructions-full.md Copilot 完整指令
193
+ │ ├── standards/ 14 条模块化规范 + index.md 门控
188
194
  │ │ ├── 01-toolchain.md
189
195
  │ │ ├── 02-code-structure.md
190
- │ │ ├── ... (共 13 条)
191
- │ │ └── 13-platform-components.md
192
- │ ├── skills/ 10 个启用 Skill(全部激活)
196
+ │ │ ├── ... (共 14 条)
197
+ │ │ └── 14-layout-containers.md
198
+ │ ├── skills/ 11 个启用 Skill(全部激活)
193
199
  │ │ ├── _registry.md ★ 触发词 → SKILL 路径单一数据源
194
200
  │ │ ├── _compat/ 多 AI 编辑器适配(配置 + headers)
195
201
  │ │ ├── core/ 核心通用 Skill
@@ -208,6 +214,7 @@ wl-skills-kit/ ← 你正看的这个仓库
208
214
  │ │ │ └── code-fix/ { SKILL.md } 已启用
209
215
  │ │ └── domain/ 领域专属(按需创建)
210
216
  │ ├── guides/ 人读指南(usage.md / architecture.md)
217
+ │ ├── docs/ 组件 API 文档 + validate 豁免配置说明
211
218
  │ └── reports/ AI 生成报告(追加不覆盖)
212
219
  │ ├── SYS_MENU_INFO.md 线上菜单基线
213
220
  │ ├── SYS_DICT_INFO.md 线上字典基线
@@ -225,12 +232,13 @@ wl-skills-kit/ ← 你正看的这个仓库
225
232
  ├── .trae/rules/conventions.md Trae(含 alwaysApply frontmatter)
226
233
  ├── .qoder/rules/conventions.md Qoder
227
234
 
235
+ ├── .wl-skills-validate.json ← 可选:validate 项目级豁免配置(kit 不创建)
228
236
  ├── mock/ ← 来自本包 files/mock/(init 自动写入)
229
237
  │ ├── _utils.ts 共享工具(pageResult / ok / paginate / nowStr / pick)
230
238
  │ └── [业务域]/[模块].ts 按域分目录,page-codegen 自动生成
231
239
 
232
- ├── docs/ 12 个组件 API 文档 + mock-architecture.md
233
- ├── demo/ 13 个领域样例
240
+ ├── docs/ 组件 API 文档 + mock-architecture.md
241
+ ├── demo/ 领域样例
234
242
  └── src/
235
243
  ├── components/ 全局/局部/远程组件
236
244
  └── types/ 类型桶文件
@@ -238,7 +246,7 @@ wl-skills-kit/ ← 你正看的这个仓库
238
246
 
239
247
  > **业务项目方准则**:
240
248
  >
241
- > - 主入口是 `.github/copilot-instructions.md`(Copilot 用),**其他根配置文件是它的拷贝 + 各自特化 frontmatter**
249
+ > - 主入口是 `.wl-skills/copilot-instructions-full.md`(Copilot 用),业务项目根的薄壳文件指向它;**其他根配置文件是它的拷贝 + 各自特化 frontmatter**
242
250
  > - 修改规范 → **不要**改业务项目里的副本,**升级 wl-skills-kit 包 + `update`** 才不会被覆盖
243
251
  > - reports/ 里的内容是团队累积数据,`update` 不会覆盖,可放心 commit
244
252
 
@@ -262,11 +270,19 @@ pnpm dlx @agile-team/wl-skills-kit check
262
270
  pnpm dlx @agile-team/wl-skills-kit diff
263
271
 
264
272
  # 静态检查 src/views 页面文件完整性 + AGGrid/cid/skills-ui/mock
273
+ # 内含 AST 语义级检测 R1~R14(正则覆盖不到的语义约束)
274
+ # R13 圈复杂度 / R14 类型错误需 --typecheck 开启
265
275
  pnpm dlx @agile-team/wl-skills-kit validate
266
276
 
277
+ # 含类型检查 R14(vue-tsc/tsc --noEmit,CI / 发版前用)
278
+ pnpm dlx @agile-team/wl-skills-kit validate --typecheck --strict
279
+
267
280
  # 单页/指定目录校验
268
281
  pnpm dlx @agile-team/wl-skills-kit validate-page src/views/mdata/model/mdata-model-config
269
282
 
283
+ # 特殊场景(表单设计器/行内编辑明细表等 BaseTable 受限)批量豁免 R3/R10:
284
+ # 在项目根创建 .wl-skills-validate.json(详见 .wl-skills/docs/validate-exempt.md)
285
+
270
286
  # spec-align:页面目录存在 page-spec.json 时,确定性比对"约定 vs 代码"
271
287
  # (查询字段/表格列顺序、工具栏按钮顺序与颜色、操作列严格对应、label 保真)
272
288
  # 已内置于 validate,无需额外参数
@@ -340,7 +356,7 @@ pnpm dlx @agile-team/wl-skills-kit update
340
356
  2. **迁移清理** — 检测并移除旧版遗留文件(如 `skills/prototype-scan/`、`docs/menu-sync-design.md` 等),避免新旧路径并存产生歧义
341
357
  3. **保护累积数据** — `reports/*.md` 已存在则跳过,团队累积的菜单/字典数据不丢失
342
358
 
343
- > **注意**:如果项目在旧的 `.github/skills/menu-sync/env/env.local.json` 中有自定义配置,`update` 会将其迁移位置(删旧、新路径文件由 `init` 写入默认模板)。**请在 `update` 前备份** 或 `update` 后手动迁移到 `.github/skills/sync/menu-sync/env/env.local.json`。
359
+ > **注意**:如果项目在旧的 `.wl-skills/skills/menu-sync/env/env.local.json` 中有自定义配置,`update` 会将其迁移位置。**请在 `update` 前备份** 或 `update` 后手动迁移到 `.wl-skills/skills/sync/menu-sync/env/env.local.json`。
344
360
 
345
361
  ---
346
362
 
@@ -352,7 +368,7 @@ pnpm dlx @agile-team/wl-skills-kit update
352
368
  | `spec-doc-parse` | ✅ 启用 | `skills/core/spec-doc-parse/` | 规范线:wl-skills-design 标准说明书 → 页面清单 |
353
369
  | `api-contract` | ✅ 启用 | `skills/core/api-contract/` | 生成 api.md 前后端契约 |
354
370
  | `page-codegen` | ✅ 启用 | `skills/core/page-codegen/` | 页面骨架生成 + 模板调度 |
355
- | `convention-audit` | ✅ 启用 | `skills/core/convention-audit/` | 13 条规范扫描 + 双报告 |
371
+ | `convention-audit` | ✅ 启用 | `skills/core/convention-audit/` | 14 条规范扫描 + 双报告 |
356
372
  | `business-doc-extract` | ✅ 启用 | `skills/core/business-doc-extract/` | 语义触发,业务文档抽取与维护 |
357
373
  | `template-extract` | ✅ 启用 | `skills/core/template-extract/` | 现有页面 → 领域模板 |
358
374
  | `menu-sync` | ✅ 启用 | `skills/sync/menu-sync/` | 菜单基线 ↔ 后端接口 |
@@ -389,9 +405,9 @@ pnpm dlx @agile-team/wl-skills-kit update
389
405
 
390
406
  | 命令 | 保护路径 | 说明 |
391
407
  | ---------------------- | -------------------------------- | ------------------------ |
392
- | `init` / `update` | `.github/reports/*.md` | 已存在则跳过,不覆盖累积 |
408
+ | `init` / `update` | `.wl-skills/reports/*.md` | 已存在则跳过,不覆盖累积 |
393
409
  | `clean`(默认) | `src/components/` + `src/types/` | 业务代码必需,永不删除 |
394
- | `clean --keep-reports` | + `.github/reports/` | 保留菜单/字典/权限基线 |
410
+ | `clean --keep-reports` | + `.wl-skills/reports/` | 保留菜单/字典/权限基线 |
395
411
 
396
412
  ---
397
413
 
@@ -424,8 +440,9 @@ AbstractPageQueryHook + BaseQuery + BaseToolbar + BaseTable(render-type="agGrid"
424
440
  - 🔁 Agent Pipeline 运行手册:[docs/agent-pipeline-runbook.md](docs/agent-pipeline-runbook.md)
425
441
  - 🛡️ MCP Tool 风险矩阵:[docs/mcp-tool-risk-matrix.md](docs/mcp-tool-risk-matrix.md)
426
442
  - 📝 业务文档抽取 Skill:[files/.wl-skills/skills/core/business-doc-extract/USAGE.md](files/.wl-skills/skills/core/business-doc-extract/USAGE.md)
427
- - 📚 业务方使用指南:`.github/guides/usage.md`(业务项目内)
428
- - 🏗️ 架构与决策:`.github/guides/architecture.md`(业务项目内)
443
+ - 📚 业务方使用指南:`.wl-skills/guides/usage.md`(业务项目内)
444
+ - 🏗️ 架构与决策:`.wl-skills/guides/architecture.md`(业务项目内)
445
+ - 🛡️ validate 豁免配置:[files/.wl-skills/docs/validate-exempt.md](files/.wl-skills/docs/validate-exempt.md)
429
446
  - 🔧 维护者文档:[kit-internal/README.md](kit-internal/README.md)(仅本仓库)
430
447
  - 🤖 多编辑器适配机制:[files/.wl-skills/skills/\_compat/README.md](files/.wl-skills/skills/_compat/README.md)
431
448
  - 🛠️ Jenkins 流水线参考:[kit-internal/jenkins-pipeline.md](kit-internal/jenkins-pipeline.md)
package/bin/wl-skills.js CHANGED
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env node
2
2
 
3
3
  /**
4
- * wl-skills-kit CLI v2.11.1
4
+ * wl-skills-kit CLI v2.11.3
5
5
  *
6
6
  * 命令:
7
7
  * init 全量安装(默认,向后兼容)
@@ -27,6 +27,7 @@ const {
27
27
  runAstRules,
28
28
  getStagedFiles,
29
29
  hasAstAvailable,
30
+ runTypeCheck,
30
31
  } = require("../lib/ast-rules");
31
32
 
32
33
  // ─── page-spec 比对引擎(v2.11.1+,"约定 vs 代码"确定性核对)────────────
@@ -66,6 +67,7 @@ const KNOWN_FLAGS = new Set([
66
67
  "--all",
67
68
  "--pre-commit",
68
69
  "--strict",
70
+ "--typecheck",
69
71
  ]);
70
72
 
71
73
  const dryRun = args.includes("--dry-run");
@@ -74,6 +76,7 @@ const keepReports = args.includes("--keep-reports");
74
76
  const force = args.includes("--force");
75
77
  const preCommit = args.includes("--pre-commit");
76
78
  const strict = args.includes("--strict");
79
+ const typeCheck = args.includes("--typecheck");
77
80
 
78
81
  // 校验所有 flag 是否已知(--help 优先,跳过校验直接显示帮助)
79
82
  if (!showHelp) {
@@ -118,7 +121,8 @@ if (showHelp) {
118
121
  check 环境预检(Node / 工具链 / MCP 配置 / manifest)
119
122
  diff 对比已安装文件与当前 kit 版本的差异
120
123
  validate 静态检查 src/views 页面文件、AGGrid、skills-ui runtime、mock
121
- v2.10.1+ 集成 AST 语义级检测(R1~R7),覆盖正则无法检测的规则
124
+ v2.10.1+ 集成 AST 语义级检测(R1~R14),覆盖正则无法检测的规则
125
+ R13 圈复杂度 / R14 类型错误(R14 需 --typecheck 开启)
122
126
  validate-page validate 的别名,适用于单页/目录检查
123
127
  doctor-ui 检查 @agile-team/wk-skills-ui 接入完整性
124
128
  export 导出 reports/SYS_* 数据为 xlsx
@@ -133,6 +137,8 @@ if (showHelp) {
133
137
  --all mock-clean 清理全部 mock(保留 _utils.ts)
134
138
  --pre-commit validate 仅检测 git staged 文件,error 阻断提交,warn 仅提示
135
139
  --strict validate 的 error 和 warn 都导致退出码 1(CI 用)
140
+ --typecheck validate 额外执行 vue-tsc/tsc --noEmit(R14 类型错误零容忍)
141
+ 体积较大,CI / pre-push 必跑,pre-commit 不建议开启
136
142
  --help 显示帮助
137
143
 
138
144
  示例:
@@ -142,6 +148,7 @@ if (showHelp) {
142
148
  pnpm dlx @agile-team/wl-skills-kit check 检查本地环境
143
149
  pnpm dlx @agile-team/wl-skills-kit diff 查看当前项目与最新 kit 差异
144
150
  pnpm dlx @agile-team/wl-skills-kit validate 检查 src/views 页面文件
151
+ pnpm dlx @agile-team/wl-skills-kit validate --typecheck 含类型检查 R14(CI 用)
145
152
  pnpm dlx @agile-team/wl-skills-kit validate-page src/views/mdata/model/demo
146
153
  pnpm dlx @agile-team/wl-skills-kit doctor-ui 检查 wk-skills-ui 接入
147
154
  pnpm dlx @agile-team/wl-skills-kit export 导出菜单/字典/权限 xlsx
@@ -1272,12 +1279,27 @@ function runValidate() {
1272
1279
  issues.push(...specIssues);
1273
1280
  }
1274
1281
 
1282
+ // ── 类型检查 R14(v2.11.2+,vue-tsc/tsc 委托,仅 --typecheck 触发)───
1283
+ // 体积较大(整项目编译),validate 默认不跑;pre-commit 不建议开启,CI 必跑。
1284
+ // 无 tsconfig / 无 checker → 优雅降级为 warn,不阻断。
1285
+ let tcRan = false;
1286
+ let tcErrors = 0;
1287
+ if (typeCheck) {
1288
+ const tc = runTypeCheck(TARGET_DIR);
1289
+ tcRan = tc.ran;
1290
+ tcErrors = tc.errorCount || 0;
1291
+ issues.push(...tc.issues);
1292
+ }
1293
+
1275
1294
  // ── 输出 ───────────────────────────────────────────────────────────
1276
1295
  console.log(
1277
1296
  " 页面目录: " +
1278
1297
  pages.length +
1279
1298
  (astResult.pages ? "(AST 扫描 " + astResult.pages + ")" : "") +
1280
- (specAlignedPages ? "(spec-align " + specAlignedPages + ")" : ""),
1299
+ (specAlignedPages ? "(spec-align " + specAlignedPages + ")" : "") +
1300
+ (typeCheck
1301
+ ? "(类型检查 " + (tcRan ? "已执行 " + tcErrors + " error" : "已跳过") + ")"
1302
+ : ""),
1281
1303
  );
1282
1304
  console.log(" 提示项: " + issues.length);
1283
1305
  console.log("");
@@ -1384,6 +1406,8 @@ const AST_FIX_SUGGESTIONS = {
1384
1406
  R10: { fix: '\u66ff\u6362\u539f\u751f el-* \u7ec4\u4ef6\u4e3a\u5e73\u53f0\u5c01\u88c5\uff08jh-select/jh-date/jh-pagination \u7b49\uff09', ref: 'standards/13-platform-components.md', auto: true },
1385
1407
  R11: { fix: '\u4ece data.ts \u4e2d\u79fb\u9664 Pinia Store import\uff0cStore \u5e94\u5728\u7ec4\u4ef6\u5c42\u4f7f\u7528', ref: 'standards/10-pinia.md', auto: true },
1386
1408
  R12: { fix: '\u5c06\u786c\u7f16\u7801 IP/URL \u79fb\u81f3 .env.* \u73af\u5883\u53d8\u91cf', ref: 'standards/07-config.md', auto: true },
1409
+ R13: { fix: '\u62c6\u5206\u9ad8\u590d\u6742\u5ea6\u51fd\u6570\uff1a\u6309\u804c\u8d23\u62bd\u53d6\u5b50\u51fd\u6570\u3001\u7528\u63d0\u524d return \u4ee3\u66ff\u5d4c\u5957 if\u3001\u67e5\u8868\u9a71\u52a8\u53d6\u4ee3 if-else \u94fe\u3001\u7b56\u7565\u6a21\u5f0f\u6d88\u9664\u591a\u5206\u652f', ref: 'standards/04-coding-basics.md', auto: false },
1410
+ R14: { fix: '\u6309 TS \u9519\u8bef\u4fee\u590d\u7c7b\u578b\uff08\u8865\u7c7b\u578b\u6807\u6ce8 / \u4fee\u6b63\u8c03\u7528\u53c2\u6570 / \u8865 any \u8fb9\u754c\u6ce8\u91ca\uff09\uff1b\u672a\u88c5 vue-tsc \u65f6\u5b89\u88c5\u540e\u7eb3\u5165 CI', ref: 'standards/09-typescript.md', auto: false },
1387
1411
  // S 系列:page-spec 约定 vs 代码确定性核对(v2.11.1+)
1388
1412
  S0: { fix: '\u4fee\u6b63 page-spec.json \u7ed3\u6784\uff08page/query/columns/toolbar/operations\uff09', ref: '.wl-skills/skills/core/page-codegen/SKILL.md', auto: false },
1389
1413
  S1: { fix: '\u8c03\u6574 queryDef() \u67e5\u8be2\u5b57\u6bb5\u987a\u5e8f\u4e0e page-spec.json query \u4e25\u683c\u4e00\u81f4', ref: '.wl-skills/skills/core/page-codegen/SKILL.md', auto: true },