@agile-team/wl-skills-kit 2.11.0 → 2.11.2
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 +47 -9
- package/README.md +41 -23
- package/bin/wl-skills.js +133 -39
- package/docs/agent-pipeline-runbook.md +3 -3
- 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 +4 -4
- package/files/.wl-skills/copilot-instructions-full.md +233 -233
- package/files/.wl-skills/docs/jh-pagination.md +505 -505
- package/files/.wl-skills/docs/page-spec-schema.md +109 -0
- package/files/.wl-skills/docs/request.md +940 -940
- package/files/.wl-skills/guides/architecture.md +1 -1
- package/files/.wl-skills/skills/core/convention-audit/SKILL.md +3 -3
- package/files/.wl-skills/skills/core/page-codegen/SKILL.md +10 -4
- package/files/.wl-skills/skills/core/spec-doc-parse/SKILL.md +332 -332
- package/files/.wl-skills/skills/core/spec-doc-parse/USAGE.md +97 -97
- package/files/.wl-skills/skills/sync/permission-sync/USAGE.md +107 -107
- package/files/.wl-skills/src/components/global/C_ParentView/index.vue +3 -3
- package/files/.wl-skills/src/components/global/C_RightToolbar/index.vue +157 -157
- package/files/.wl-skills/src/components/global/C_SvgIcon/index.vue +31 -31
- package/files/.wl-skills/src/components/global/C_SvgIcon/svgicon.js +10 -10
- package/files/.wl-skills/src/components/global/C_TagStatus/README.md +264 -264
- package/files/.wl-skills/src/components/global/C_TagStatus/config.ts +192 -192
- package/files/.wl-skills/src/components/global/C_TagStatus/index.vue +106 -106
- package/files/.wl-skills/src/components/global/C_TagStatus/types.ts +64 -64
- package/files/.wl-skills/src/components/global/C_Tree/README.md +153 -153
- package/files/.wl-skills/src/components/global/C_Tree/index.scss +42 -42
- package/files/.wl-skills/src/components/global/C_Tree/index.vue +78 -78
- package/files/.wl-skills/src/components/global/C_Tree/types.ts +59 -59
- package/files/.wl-skills/src/components/local/c_formModal/README.md +235 -235
- package/files/.wl-skills/src/components/local/c_formModal/data.ts +95 -95
- package/files/.wl-skills/src/components/local/c_formModal/index.scss +8 -8
- package/files/.wl-skills/src/components/local/c_formModal/index.vue +107 -107
- package/files/.wl-skills/src/components/local/c_formSections/data.ts +175 -175
- package/files/.wl-skills/src/components/local/c_formSections/index.scss +280 -280
- package/files/.wl-skills/src/components/local/c_formSections/index.vue +429 -429
- package/files/.wl-skills/src/components/local/c_listModal/data.ts +41 -41
- package/files/.wl-skills/src/components/local/c_listModal/index.vue +136 -136
- package/files/.wl-skills/src/components/local/c_spliterTitle/index.scss +25 -25
- package/files/.wl-skills/src/components/local/c_spliterTitle/index.vue +21 -21
- package/files/.wl-skills/src/components/remote/AGGrid/README.md +530 -530
- package/files/.wl-skills/src/components/remote/BaseForm/README.md +508 -508
- package/files/.wl-skills/src/components/remote/BaseQuery/README.md +865 -865
- package/files/.wl-skills/src/components/remote/BaseTable/README.md +941 -941
- package/files/.wl-skills/src/components/remote/BaseToolbar/README.md +496 -496
- package/files/.wl-skills/src/types/page.ts +24 -24
- package/files/.wl-skills/standards/04-coding-basics.md +39 -1
- package/files/.wl-skills/standards/09-typescript.md +26 -3
- package/files/.wl-skills/standards/14-layout-containers.md +6 -6
- package/files/.wl-skills/standards/index.md +2 -2
- package/files/.wl-skills/templates/README.md +44 -44
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/api.md +54 -54
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/data.ts +346 -346
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.scss +1 -1
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add/index.vue +28 -28
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/data.ts +115 -115
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.scss +44 -44
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-add-form/index.vue +43 -43
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/data.ts +338 -338
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.scss +1 -1
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change/index.vue +28 -28
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/data.ts +115 -115
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.scss +44 -44
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-apply-change-form/index.vue +43 -43
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/api.md +88 -88
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/data.ts +601 -601
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.scss +1 -1
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-archive/index.vue +64 -64
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/api.md +67 -67
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/data.ts +286 -286
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.scss +139 -139
- package/files/.wl-skills/templates/produce/aiflow/mmwr-customer-detail/index.vue +318 -318
- package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/api.md +98 -98
- package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/data.ts +543 -543
- package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.scss +1 -1
- package/files/.wl-skills/templates/produce/aiflow/mmwr-temp-customer-archive/index.vue +52 -52
- package/files/.wl-skills/templates/sale/demo/add-demo/data.ts +518 -518
- package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/data.ts +524 -524
- package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.scss +154 -154
- package/files/.wl-skills/templates/sale/demo/billet-flame-cut-plan/index.vue +117 -117
- package/files/.wl-skills/templates/sale/demo/domestic-trade-order/data.ts +308 -308
- package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.scss +99 -99
- package/files/.wl-skills/templates/sale/demo/domestic-trade-order/index.vue +77 -77
- package/files/.wl-skills/templates/sale/demo/heat-batch-return/data.ts +367 -367
- package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.scss +100 -100
- package/files/.wl-skills/templates/sale/demo/heat-batch-return/index.vue +170 -170
- package/files/.wl-skills/templates/sale/demo/heat-batch-return/meltDialog.vue +320 -320
- package/files/.wl-skills/templates/sale/demo/metallurgical-spec/data.ts +824 -824
- package/lib/ast-rules.js +304 -9
- package/lib/page-spec.js +588 -0
- package/lib/safe-fix.js +115 -0
- package/mcp/config.js +47 -47
- package/mcp/registry.js +6 -1
- package/mcp/tools/projectTools.js +19 -1
- package/package.json +16 -11
- package/files/.wl-skills/src/components/global/C_Splitter/index.scss +0 -61
- package/files/.wl-skills/src/components/global/C_Splitter/index.vue +0 -149
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,43 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.11.2] - 2026-06-21
|
|
4
|
+
|
|
5
|
+
### Added
|
|
6
|
+
|
|
7
|
+
- **R13 圈复杂度执行器(standard 04,阻断级)**:新增 `lib/ast-rules.js` 的 R13,对 `index.vue`/`data.ts` 的每个函数计算 McCabe 圈复杂度(与 ESLint `complexity` 规则定义一致),`> 10` 报 error 阻断提交。补齐 standard 04 第 14 条核心约定 + 降复杂度手法示例(提前 return / 查表驱动 / 抽子函数)
|
|
8
|
+
- **R14 类型错误零容忍执行器(standard 09,阻断级)**:新增 `runTypeCheck`,委托 `vue-tsc --noEmit`(回退 `tsc`)解析 TS error;无 `tsconfig`/checker 时优雅降级 warn。CLI 新增 `--typecheck`、MCP `wls_validate_page` 新增 `typecheck` 入参双通道一致。CI 应固定 `validate --typecheck --strict`
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **standard 09 由 🟡建议 升级为 🔴必遵 + 阻断**:`vue-tsc --noEmit` 必须 0 error,职责分离——ESLint 管风格,R14 管类型正确性
|
|
13
|
+
- `rule-coverage.md` 执行器图例 R1~R12 → R1~R14,登记 R13/R14 两条阻断约定;`convention-audit` 维度 09 改为 R14 委托
|
|
14
|
+
- `eslint.config.ts` 复杂度 `warn 60` 修正为 `warn 10`(项目级硬阻断由 R13 兜底,此处仅作 kit 自身开发提示)
|
|
15
|
+
|
|
16
|
+
## [2.11.1] - 2026-06-15
|
|
17
|
+
|
|
18
|
+
### Added
|
|
19
|
+
|
|
20
|
+
- **page-spec 落盘 + spec-align 确定性比对(S1~S5)**:新增 `lib/page-spec.js` 引擎,把"按原型精准实现"从 AI 自觉升级为代码卡控。page-codegen 生成时落盘 `page-spec.json`(单一真值),`validate` 自动比对 `data.ts` 实际实现:
|
|
21
|
+
- S1 查询字段顺序(warn)/ S2 表格列顺序与集合(error)/ S3 工具栏按钮顺序·集合·颜色(error)/ S4 操作列按钮严格对应(error)/ S5 按钮·列 label 文字保真(warn)
|
|
22
|
+
- 同步接入 MCP `wls_validate_page`,CLI 与 MCP 双通道一致
|
|
23
|
+
- 新增 `.wl-skills/docs/page-spec-schema.md` 字段规范
|
|
24
|
+
- **`wl-skills fix` 确定性机械修复(F1~F5)**:新增 `lib/safe-fix.js`,对幂等零语义偏差自动修复——BaseTable 补 `render-type="agGrid"`、`::v-deep`/`/deep/` → `:deep()`、行尾空白、文件末尾换行;支持 `--dry-run` 预览。语义级偏差仍交 AI/人工
|
|
25
|
+
- **规则覆盖矩阵治理**:新增 `kit-internal/rule-coverage.md`,登记每条约定的执行器(R*/S*/regex/AI);`lint-skills.js` 校验标记「阻断」的规则必须有确定性执行器,防止"文档约定"退化
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
|
|
29
|
+
- **C_Splitter 彻底删除**:从 kit 移除 `C_Splitter` 组件(`onMounted` 冻结 vnode 导致响应式失效的 bug 写法),`lint-skills` 全量禁止 `<C_Splitter>` / `import C_Splitter`(无任何例外),standards/14 更新为"已删除"
|
|
30
|
+
- page-codegen SKILL.md 新增"生成时落盘 page-spec.json + 自检跑 spec-align"硬约束
|
|
31
|
+
- **维护链路统一 pnpm-first**:新增 `packageManager: pnpm@11.5.3`、`pnpm-lock.yaml`、`pnpm verify` / `pnpm ci`,删除 `package-lock.json`;npm 仅保留在 `npm pack` / `npm publish` 发版环节
|
|
32
|
+
- **导出依赖安全替换**:`wl-skills export` 从存在高危漏洞的 `xlsx@0.18.5` 迁移到 `write-excel-file`,并将运行时 Node 基线提升到 `>=18`
|
|
33
|
+
|
|
34
|
+
### Fixed
|
|
35
|
+
|
|
36
|
+
- 修复 `scripts/verify-version.js` / `scripts/sync-version.js` / `scripts/lint-skills.js` 仍指向旧版 `.github/` 路径导致 v2.11 后完全失效的问题(统一迁移到 `.wl-skills/`)
|
|
37
|
+
- 清理仓库根残留的旧版 `.wl-skills-manifest.json`(v2.6.0)
|
|
38
|
+
- 移除仓库 `.npmrc` 中误提交的 npm token,仅保留 registry 配置;本地私密 npmrc 已加入 ignore
|
|
39
|
+
- 修复 `export` 仍读取旧 `.github/reports` 的迁移漏点,现优先读取 `.wl-skills/reports` 并兼容旧目录
|
|
40
|
+
|
|
3
41
|
## [2.11.0] - 2026-06-14
|
|
4
42
|
|
|
5
43
|
### Changed
|
|
@@ -14,7 +52,7 @@
|
|
|
14
52
|
|
|
15
53
|
### Migration
|
|
16
54
|
|
|
17
|
-
- 已安装 v2.10.x 的项目执行 `
|
|
55
|
+
- 已安装 v2.10.x 的项目执行 `pnpm dlx @agile-team/wl-skills-kit@latest update` 即可自动迁移
|
|
18
56
|
- 旧版 `.github/skills/`、`.github/standards/`、`.github/guides/`、`.github/reports/` 目录将被自动清理
|
|
19
57
|
- `.github/copilot-instructions.md` 自动替换为薄壳入口
|
|
20
58
|
|
|
@@ -89,7 +127,7 @@
|
|
|
89
127
|
### Notes
|
|
90
128
|
|
|
91
129
|
- 测试矩阵:cli + lint-skills + doctor-ui + registry + version-tools 合计 **53 测试通过**
|
|
92
|
-
- 升级路径:`
|
|
130
|
+
- 升级路径:`pnpm dlx @agile-team/wl-skills-kit@latest update` 同步 standards/14;CI 增挂 `wl-skills doctor-ui` 即可
|
|
93
131
|
|
|
94
132
|
## [2.9.1] - 2026-05-17
|
|
95
133
|
|
|
@@ -191,7 +229,7 @@
|
|
|
191
229
|
|
|
192
230
|
### Notes
|
|
193
231
|
|
|
194
|
-
- 纯文档 + MCP 运行时增强,无 SDK 行为破坏性变更,业务项目 `
|
|
232
|
+
- 纯文档 + MCP 运行时增强,无 SDK 行为破坏性变更,业务项目 `pnpm dlx @agile-team/wl-skills-kit update` 即可同步。
|
|
195
233
|
|
|
196
234
|
## [2.7.1] - 2026-05-13
|
|
197
235
|
|
|
@@ -212,7 +250,7 @@
|
|
|
212
250
|
|
|
213
251
|
### Notes
|
|
214
252
|
|
|
215
|
-
- 纯文档修正,无功能变更,业务项目 `
|
|
253
|
+
- 纯文档修正,无功能变更,业务项目 `pnpm dlx @agile-team/wl-skills-kit update` 即可同步最新文档
|
|
216
254
|
|
|
217
255
|
## [2.7.0] - 2026-05-12
|
|
218
256
|
|
|
@@ -220,7 +258,7 @@
|
|
|
220
258
|
|
|
221
259
|
- **CLI 未知 flag/命令防护**:`bin/wl-skills.js` 引入 `KNOWN_COMMANDS` / `KNOWN_FLAGS` 白名单。`node bin/wl-skills.js --version` 等未识别参数不再默认走 `init`,而是**退出非零并提示**,彻底消除 v2.6.x 时段被验证过的"误装风险"。
|
|
222
260
|
- **MCP Tool auto-discovery**:新增 `mcp/registry.js` 集中维护 17 个工具描述符(含 `handle` / `needsBackendConfig`)。`mcp/server.js` 大幅瘦身(496 行 → 130 行),不再硬编码 17 项 switch case;新增 / 修改 Tool 仅改 `mcp/registry.js`。
|
|
223
|
-
- **版本一致性自检脚本**:新增 `scripts/verify-version.js`(`
|
|
261
|
+
- **版本一致性自检脚本**:新增 `scripts/verify-version.js`(`pnpm version:verify`),跨文件校验 `package.json#version` 与 CLI header / README / `guides/architecture.md` / headers 中描述行的一致性,并交叉校验 `_registry.md` 的 ✅ 启用 行数与 README / `package.json#description` 中的 "N 个 AI Skill" 数字一致。
|
|
224
262
|
- **prepublishOnly 守门**:`npm publish` 前自动运行 `version:verify` + `vitest run`,不一致或测试失败则阻断发版。
|
|
225
263
|
- **vitest 单元测试**:`tests/registry.test.js`(17 项 Tool 描述符 / Skill 计数 / package.json 一致性,9 测试)+ `tests/cli.test.js`(A1 防护黑盒测试 + dry-run 隔离验证,6 测试)+ `tests/version-tools.test.js`(version 工具脚本,3 测试)。共 **18 测试**全绿。
|
|
226
264
|
- 新增 `dict-sync` / `code-fix` 的 `USAGE.md`,与其他 8 个启用 Skill 文档结构一致。
|
|
@@ -234,10 +272,10 @@
|
|
|
234
272
|
|
|
235
273
|
### Notes
|
|
236
274
|
|
|
237
|
-
- 业务项目升级 `
|
|
275
|
+
- 业务项目升级 `pnpm dlx @agile-team/wl-skills-kit update` 即可,无破坏性变更。
|
|
238
276
|
- 维护者新增 Skill:仅改 `_registry.md` 与 `_pipeline.md` + 写 SKILL.md/USAGE.md,**不再需要手改 sync-version 常量与 copilot Skill 表**。
|
|
239
277
|
- 维护者新增 MCP Tool:仅改 `mcp/registry.js` 加一条描述符,**不再需要改 server.js**。
|
|
240
|
-
- 验证:`
|
|
278
|
+
- 验证:`pnpm version:verify && pnpm test` 应全绿,CI 可直接接入。
|
|
241
279
|
|
|
242
280
|
## [2.6.0] - 2026-05-12
|
|
243
281
|
|
|
@@ -303,7 +341,7 @@
|
|
|
303
341
|
### Added
|
|
304
342
|
|
|
305
343
|
- CLI 安装完成后新增 `@agile-team/wk-skills-ui` 可选桥接提醒,保持两包独立分工、不强耦合
|
|
306
|
-
- 新增 `standards:init` 脚本,统一指向 `
|
|
344
|
+
- 新增 `standards:init` 脚本,统一指向 `pnpm dlx @robot-admin/git-standards init`
|
|
307
345
|
- README 补充 wk-skills-ui 可选桥接说明与规范插件入口
|
|
308
346
|
|
|
309
347
|
## [2.4.0] - 2026-05-02
|
|
@@ -689,7 +727,7 @@
|
|
|
689
727
|
|
|
690
728
|
### 迁移指南(从 v1.x 升级)
|
|
691
729
|
|
|
692
|
-
执行 `
|
|
730
|
+
执行 `pnpm dlx @agile-team/wl-skills-kit@latest update` 即可。注意:
|
|
693
731
|
|
|
694
732
|
1. 老的 `docs/SYS_MENU_INFO.md` 需手动迁移到 `reports/SYS_MENU_INFO.md`
|
|
695
733
|
2. 老的 `docs/menu-sync-design.md` / `docs/wl-skills-kit.md` 已删除,相关内容见 `guides/architecture.md`
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @agile-team/wl-skills-kit
|
|
2
2
|
|
|
3
|
-
**AI Skill 模板包 v2.11.
|
|
3
|
+
**AI Skill 模板包 v2.11.2** — 一键将 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
|
|
|
@@ -9,9 +9,9 @@
|
|
|
9
9
|
## TL;DR
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
12
|
+
pnpm dlx @robot-admin/git-standards init # 工程化前置(必须)
|
|
13
|
+
pnpm dlx @agile-team/wl-skills-kit # 安装 AI 体系
|
|
14
|
+
pnpm standards:init # 本包维护/业务项目均可复用的规范插件入口
|
|
15
15
|
# 在 AI 对话中:
|
|
16
16
|
"扫描 docs/prototypes/ 下的原型生成页面清单"
|
|
17
17
|
"基于上一步生成所有 api.md,再 codegen 出页面"
|
|
@@ -19,10 +19,20 @@ npm run standards:init # 本包维护/业务项目均可复用
|
|
|
19
19
|
|
|
20
20
|
> 可选桥接:如业务项目也需要统一 UI 风格、老系统化妆层和 UI 扫描修复,可单独安装 `@agile-team/wk-skills-ui`。两包职责独立,不互相强依赖:`wl-skills-kit` 负责编码规范/页面生成/菜单字典权限,`wk-skills-ui` 负责视觉一致性/设计令牌/化妆层/Runtime 渲染。
|
|
21
21
|
|
|
22
|
+
> 包管理策略:本仓库维护链路 **pnpm-first**,使用 `pnpm-lock.yaml`、`pnpm verify`、`pnpm ci`;npm 只用于 `npm pack` / `npm publish` 发版环节,不提交 `package-lock.json` 和 npm token。
|
|
23
|
+
|
|
22
24
|
---
|
|
23
25
|
|
|
24
26
|
## 版本亮点
|
|
25
27
|
|
|
28
|
+
**v2.11.1**:精准卡控闭环 —— 把"约定"接线到确定性执行器,生成即精确。
|
|
29
|
+
|
|
30
|
+
- **新增 page-spec 落盘 + spec-align 确定性比对(S1~S5)**:`page-codegen` 生成页面时同步写出 `page-spec.json`(原型约定真值),`validate` 用 AST 解析 `data.ts` 的 `queryDef/columnsDef/toolbarDef` 与之逐项比对——查询字段顺序、表格列顺序、工具栏按钮顺序与颜色、操作列按钮集合、label 文字保真。过去只靠 AI 自觉的 6 条"精准实现"约定,现在变成可阻断的硬卡控
|
|
31
|
+
- **新增 `wl-skills fix` 确定性机械修复**:对幂等、零语义判断的偏差(BaseTable 补 `render-type`、`::v-deep`→`:deep()`、行尾空白、文件末尾换行)做确定性自动修复,AI 只处理需语义判断的部分;`--dry-run` 预览
|
|
32
|
+
- **新增「规则 → 执行器」覆盖矩阵治理**:`kit-internal/rule-coverage.md` 登记每条约定由谁兜底(R*/S*/regex/AI),`lint:skills` 校验标记「阻断」的规则必须有真实执行器,杜绝"文档约定"退化为纯文档
|
|
33
|
+
- **C_Splitter 彻底删除**:废弃组件(onMounted 冻 vnode 致响应式失效)从包内移除,`lint:skills` 全量禁止任何引用,无例外
|
|
34
|
+
- **修复 v2.11 目录迁移遗留**:`lint-skills.js` / `verify-version.js` / `sync-version.js` 的 `.github/` 路径全部修正为 `.wl-skills/`,CI 自检链路恢复可用
|
|
35
|
+
|
|
26
36
|
**v2.8.0**:Mock 架构体系固化 + `mock-clean` CLI 命令。
|
|
27
37
|
|
|
28
38
|
- 新增 `docs/mock-architecture.md` — Mock 目录约定、开关机制、模块化规范、一键清理流程
|
|
@@ -45,7 +55,7 @@ npm run standards:init # 本包维护/业务项目均可复用
|
|
|
45
55
|
- 新增 `skills/sync/_mcp-guardrail.md` 公共护栏(含 L0~L4 错误自愈剧本,MCP 失败时引导用户完善 `env.local.json` 而不是绕开自拼 HTTP)
|
|
46
56
|
- 修复 `dict-sync/SKILL.md` 旧版残留与错路径;统一 `menu-sync/USAGE.md` 字段命名
|
|
47
57
|
- MCP server 启动 banner(stderr,不污染 JSON-RPC);client.js 401/4004 友好提示
|
|
48
|
-
- 新增 `
|
|
58
|
+
- 新增 `pnpm lint:skills` 静态护栏,已串入 `prepublishOnly`
|
|
49
59
|
|
|
50
60
|
**v2.7.1**:JH 组件文档全面修正,基于 `@jhlc/common-core` 源码校准 Props/API/映射规则。
|
|
51
61
|
|
|
@@ -56,9 +66,9 @@ npm run standards:init # 本包维护/业务项目均可复用
|
|
|
56
66
|
|
|
57
67
|
**v2.7.0**:一致性治理与可测性升级,安全防护加固。
|
|
58
68
|
|
|
59
|
-
- **CLI 未知 flag / 命令防护**:`
|
|
69
|
+
- **CLI 未知 flag / 命令防护**:`pnpm dlx @agile-team/wl-skills-kit --version` 等未识别参数不再默认走 `init` 误装,而是退出非零并提示
|
|
60
70
|
- **MCP Tool auto-discovery**:新增 `mcp/registry.js`,17 个 Tool 描述符集中维护;`mcp/server.js` 从 496 行瘦身到 130 行,新增 Tool 仅改 registry
|
|
61
|
-
- **版本一致性自检**:`
|
|
71
|
+
- **版本一致性自检**:`pnpm version:verify` 跨文件校验版本 + Skill 计数;`prepublishOnly` 在 `npm publish` 前自动运行它与 `vitest`,不一致则阻断发版
|
|
62
72
|
- **单元测试**:registry / CLI / version-tools 共 18 项覆盖,上面三项防护都有连动验证
|
|
63
73
|
- **单一数据源加固**:`SKILL_COUNT` 从常量改为从 `_registry.md` 动态计算;copilot-instructions 删除内嵌 Skill 表改为指针;dict-sync / code-fix 补 USAGE.md
|
|
64
74
|
|
|
@@ -134,7 +144,7 @@ wl-skills-kit/ ← 你正看的这个仓库
|
|
|
134
144
|
├── package.json name: @agile-team/wl-skills-kit
|
|
135
145
|
│
|
|
136
146
|
├── bin/
|
|
137
|
-
│ └── wl-skills.js CLI 实现(init / update / clean / check / diff / validate / validate-page / doctor-ui / export / mock-clean)
|
|
147
|
+
│ └── wl-skills.js CLI 实现(init / update / clean / check / diff / validate / validate-page / fix / doctor-ui / export / mock-clean)
|
|
138
148
|
│
|
|
139
149
|
├── files/ ★★★ 真正会被打包并复制到业务项目的内容 ★★★
|
|
140
150
|
│ ├── .github/
|
|
@@ -167,7 +177,7 @@ wl-skills-kit/ ← 你正看的这个仓库
|
|
|
167
177
|
> - 多 AI 编辑器适配要改 → 改 `files/.wl-skills/skills/_compat/`(**不是**改业务项目里的根配置文件)
|
|
168
178
|
> - 维护文档要写 → 进 `kit-internal/`(不会污染业务项目)
|
|
169
179
|
|
|
170
|
-
### B. 业务项目结构(执行 `
|
|
180
|
+
### B. 业务项目结构(执行 `pnpm dlx @agile-team/wl-skills-kit` 之后)
|
|
171
181
|
|
|
172
182
|
```
|
|
173
183
|
你的业务项目/
|
|
@@ -240,43 +250,51 @@ wl-skills-kit/ ← 你正看的这个仓库
|
|
|
240
250
|
|
|
241
251
|
```bash
|
|
242
252
|
# 全量安装(默认)
|
|
243
|
-
|
|
253
|
+
pnpm dlx @agile-team/wl-skills-kit
|
|
244
254
|
|
|
245
255
|
# 增量更新(仅覆盖有变化的文件,自动保护 reports/)
|
|
246
|
-
|
|
256
|
+
pnpm dlx @agile-team/wl-skills-kit update
|
|
247
257
|
|
|
248
258
|
# 环境预检(Node / 工具链 / MCP 配置 / manifest)
|
|
249
|
-
|
|
259
|
+
pnpm dlx @agile-team/wl-skills-kit check
|
|
250
260
|
|
|
251
261
|
# 对比已安装文件与当前 kit 版本差异
|
|
252
|
-
|
|
262
|
+
pnpm dlx @agile-team/wl-skills-kit diff
|
|
253
263
|
|
|
254
264
|
# 静态检查 src/views 页面文件完整性 + AGGrid/cid/skills-ui/mock
|
|
255
|
-
|
|
265
|
+
pnpm dlx @agile-team/wl-skills-kit validate
|
|
256
266
|
|
|
257
267
|
# 单页/指定目录校验
|
|
258
|
-
|
|
268
|
+
pnpm dlx @agile-team/wl-skills-kit validate-page src/views/mdata/model/mdata-model-config
|
|
269
|
+
|
|
270
|
+
# spec-align:页面目录存在 page-spec.json 时,确定性比对"约定 vs 代码"
|
|
271
|
+
# (查询字段/表格列顺序、工具栏按钮顺序与颜色、操作列严格对应、label 保真)
|
|
272
|
+
# 已内置于 validate,无需额外参数
|
|
273
|
+
|
|
274
|
+
# 确定性机械修复(缺 render-type、::v-deep→:deep、行尾空白等,幂等安全)
|
|
275
|
+
pnpm dlx @agile-team/wl-skills-kit fix
|
|
276
|
+
pnpm dlx @agile-team/wl-skills-kit fix --dry-run
|
|
259
277
|
|
|
260
278
|
# 检查 wk-skills-ui 是否真正接入
|
|
261
|
-
|
|
279
|
+
pnpm dlx @agile-team/wl-skills-kit doctor-ui
|
|
262
280
|
|
|
263
281
|
# 导出菜单/字典/权限基线为 xlsx
|
|
264
|
-
|
|
282
|
+
pnpm dlx @agile-team/wl-skills-kit export
|
|
265
283
|
|
|
266
284
|
# 构建前清理(保留 src/components + src/types)
|
|
267
|
-
|
|
285
|
+
pnpm dlx @agile-team/wl-skills-kit clean
|
|
268
286
|
|
|
269
287
|
# 清理但保留 reports/(菜单/字典/权限累积数据)
|
|
270
|
-
|
|
288
|
+
pnpm dlx @agile-team/wl-skills-kit clean --keep-reports
|
|
271
289
|
|
|
272
290
|
# 清理指定业务域的 mock 文件(保留 _utils.ts)
|
|
273
|
-
|
|
291
|
+
pnpm dlx @agile-team/wl-skills-kit mock-clean --domain mdata
|
|
274
292
|
|
|
275
293
|
# 清理全部 mock(保留 _utils.ts)
|
|
276
|
-
|
|
294
|
+
pnpm dlx @agile-team/wl-skills-kit mock-clean --all
|
|
277
295
|
|
|
278
296
|
# 任何命令都可加 --dry-run 预览
|
|
279
|
-
|
|
297
|
+
pnpm dlx @agile-team/wl-skills-kit update --dry-run
|
|
280
298
|
```
|
|
281
299
|
|
|
282
300
|
> 全局安装后也可直接用 `wl-skills` 命令(如 `wl-skills update`)。
|
|
@@ -313,7 +331,7 @@ npx @agile-team/wl-skills-kit update --dry-run
|
|
|
313
331
|
|
|
314
332
|
```bash
|
|
315
333
|
# 执行增量更新即可
|
|
316
|
-
|
|
334
|
+
pnpm dlx @agile-team/wl-skills-kit update
|
|
317
335
|
```
|
|
318
336
|
|
|
319
337
|
`update` 命令会自动完成:
|
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.
|
|
4
|
+
* wl-skills-kit CLI v2.11.2
|
|
5
5
|
*
|
|
6
6
|
* 命令:
|
|
7
7
|
* init 全量安装(默认,向后兼容)
|
|
@@ -27,8 +27,15 @@ const {
|
|
|
27
27
|
runAstRules,
|
|
28
28
|
getStagedFiles,
|
|
29
29
|
hasAstAvailable,
|
|
30
|
+
runTypeCheck,
|
|
30
31
|
} = require("../lib/ast-rules");
|
|
31
32
|
|
|
33
|
+
// ─── page-spec 比对引擎(v2.11.1+,"约定 vs 代码"确定性核对)────────────
|
|
34
|
+
const { alignPage } = require("../lib/page-spec");
|
|
35
|
+
|
|
36
|
+
// ─── 安全修复引擎(v2.11.1+,确定性机械修复 F1~F5)────────────────────────
|
|
37
|
+
const { runSafeFix } = require("../lib/safe-fix");
|
|
38
|
+
|
|
32
39
|
const FILES_DIR = path.resolve(__dirname, "..", "files");
|
|
33
40
|
const TARGET_DIR = process.cwd();
|
|
34
41
|
const MANIFEST_NAME = ".wl-skills-manifest.json";
|
|
@@ -48,6 +55,7 @@ const KNOWN_COMMANDS = new Set([
|
|
|
48
55
|
"doctor-ui",
|
|
49
56
|
"export",
|
|
50
57
|
"mock-clean",
|
|
58
|
+
"fix",
|
|
51
59
|
]);
|
|
52
60
|
const KNOWN_FLAGS = new Set([
|
|
53
61
|
"--dry-run",
|
|
@@ -59,6 +67,7 @@ const KNOWN_FLAGS = new Set([
|
|
|
59
67
|
"--all",
|
|
60
68
|
"--pre-commit",
|
|
61
69
|
"--strict",
|
|
70
|
+
"--typecheck",
|
|
62
71
|
]);
|
|
63
72
|
|
|
64
73
|
const dryRun = args.includes("--dry-run");
|
|
@@ -67,6 +76,7 @@ const keepReports = args.includes("--keep-reports");
|
|
|
67
76
|
const force = args.includes("--force");
|
|
68
77
|
const preCommit = args.includes("--pre-commit");
|
|
69
78
|
const strict = args.includes("--strict");
|
|
79
|
+
const typeCheck = args.includes("--typecheck");
|
|
70
80
|
|
|
71
81
|
// 校验所有 flag 是否已知(--help 优先,跳过校验直接显示帮助)
|
|
72
82
|
if (!showHelp) {
|
|
@@ -102,7 +112,7 @@ if (showHelp) {
|
|
|
102
112
|
wl-skills-kit v${PKG.version} — AI Skill 模板包
|
|
103
113
|
|
|
104
114
|
用法:
|
|
105
|
-
|
|
115
|
+
pnpm dlx @agile-team/wl-skills-kit [命令] [选项]
|
|
106
116
|
|
|
107
117
|
命令:
|
|
108
118
|
init 全量安装模板文件到当前项目(默认)
|
|
@@ -111,11 +121,13 @@ if (showHelp) {
|
|
|
111
121
|
check 环境预检(Node / 工具链 / MCP 配置 / manifest)
|
|
112
122
|
diff 对比已安装文件与当前 kit 版本的差异
|
|
113
123
|
validate 静态检查 src/views 页面文件、AGGrid、skills-ui runtime、mock
|
|
114
|
-
v2.10.1+ 集成 AST 语义级检测(R1~
|
|
124
|
+
v2.10.1+ 集成 AST 语义级检测(R1~R14),覆盖正则无法检测的规则
|
|
125
|
+
R13 圈复杂度 / R14 类型错误(R14 需 --typecheck 开启)
|
|
115
126
|
validate-page validate 的别名,适用于单页/目录检查
|
|
116
127
|
doctor-ui 检查 @agile-team/wk-skills-ui 接入完整性
|
|
117
128
|
export 导出 reports/SYS_* 数据为 xlsx
|
|
118
129
|
mock-clean 清理 mock 文件(按域或全部),保留 _utils.ts
|
|
130
|
+
fix 确定性机械修复(agGrid/:deep/未用 import 等),AI 无关
|
|
119
131
|
|
|
120
132
|
选项:
|
|
121
133
|
--dry-run 预览模式,不实际写入/删除任何文件
|
|
@@ -125,24 +137,27 @@ if (showHelp) {
|
|
|
125
137
|
--all mock-clean 清理全部 mock(保留 _utils.ts)
|
|
126
138
|
--pre-commit validate 仅检测 git staged 文件,error 阻断提交,warn 仅提示
|
|
127
139
|
--strict validate 的 error 和 warn 都导致退出码 1(CI 用)
|
|
140
|
+
--typecheck validate 额外执行 vue-tsc/tsc --noEmit(R14 类型错误零容忍)
|
|
141
|
+
体积较大,CI / pre-push 必跑,pre-commit 不建议开启
|
|
128
142
|
--help 显示帮助
|
|
129
143
|
|
|
130
144
|
示例:
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
145
|
+
pnpm dlx @agile-team/wl-skills-kit 安装全量文件
|
|
146
|
+
pnpm dlx @agile-team/wl-skills-kit update 仅更新有变化的文件
|
|
147
|
+
pnpm dlx @agile-team/wl-skills-kit update --force 强制更新(忽略同版本检测)
|
|
148
|
+
pnpm dlx @agile-team/wl-skills-kit check 检查本地环境
|
|
149
|
+
pnpm dlx @agile-team/wl-skills-kit diff 查看当前项目与最新 kit 差异
|
|
150
|
+
pnpm dlx @agile-team/wl-skills-kit validate 检查 src/views 页面文件
|
|
151
|
+
pnpm dlx @agile-team/wl-skills-kit validate --typecheck 含类型检查 R14(CI 用)
|
|
152
|
+
pnpm dlx @agile-team/wl-skills-kit validate-page src/views/mdata/model/demo
|
|
153
|
+
pnpm dlx @agile-team/wl-skills-kit doctor-ui 检查 wk-skills-ui 接入
|
|
154
|
+
pnpm dlx @agile-team/wl-skills-kit export 导出菜单/字典/权限 xlsx
|
|
155
|
+
pnpm dlx @agile-team/wl-skills-kit clean 清理开发期文件
|
|
156
|
+
pnpm dlx @agile-team/wl-skills-kit clean --keep-reports 保留 reports/中的菜单/字典数据
|
|
157
|
+
pnpm dlx @agile-team/wl-skills-kit clean --dry-run 预览将要清理哪些文件
|
|
158
|
+
pnpm dlx @agile-team/wl-skills-kit mock-clean --domain mdata 清理 mdata 域 mock
|
|
159
|
+
pnpm dlx @agile-team/wl-skills-kit mock-clean --all 清理全部 mock
|
|
160
|
+
pnpm dlx @agile-team/wl-skills-kit mock-clean --all --dry-run 预览将要清理的 mock 文件
|
|
146
161
|
|
|
147
162
|
保护路径(init / update 不覆盖已存在的):
|
|
148
163
|
.wl-skills/reports/ AI 生成报告(团队累积数据,存在则跳过)
|
|
@@ -297,7 +312,7 @@ const LEGACY_DIR_PREFIXES = [
|
|
|
297
312
|
|
|
298
313
|
const AUTO_HEADER_NOTE =
|
|
299
314
|
"<!-- 由 @agile-team/wl-skills-kit 自动生成。薄壳入口 → .wl-skills/copilot-instructions-full.md -->\n" +
|
|
300
|
-
"<!-- 请勿手动编辑本文件,更新时重新执行:
|
|
315
|
+
"<!-- 请勿手动编辑本文件,更新时重新执行:pnpm dlx @agile-team/wl-skills-kit@latest update -->\n\n";
|
|
301
316
|
|
|
302
317
|
function getEditorConfigs(raw) {
|
|
303
318
|
// v2.11+: _compat 目录已迁移到 .wl-skills/skills/_compat/
|
|
@@ -375,7 +390,7 @@ function runInstall(incremental) {
|
|
|
375
390
|
if (oldManifest.version === PKG.version) {
|
|
376
391
|
console.log(" ✔ 当前项目已安装 v" + PKG.version + ",无需重复操作");
|
|
377
392
|
console.log(
|
|
378
|
-
" 如需强制重装:
|
|
393
|
+
" 如需强制重装:pnpm dlx @agile-team/wl-skills-kit@latest " +
|
|
379
394
|
label +
|
|
380
395
|
" --force",
|
|
381
396
|
);
|
|
@@ -604,7 +619,7 @@ function runInstall(incremental) {
|
|
|
604
619
|
);
|
|
605
620
|
}
|
|
606
621
|
console.log(
|
|
607
|
-
" ℹ 规范插件:建议执行
|
|
622
|
+
" ℹ 规范插件:建议执行 pnpm dlx @robot-admin/git-standards init 接入代码质量与提交规范。",
|
|
608
623
|
);
|
|
609
624
|
console.log("");
|
|
610
625
|
|
|
@@ -622,7 +637,7 @@ function runInstall(incremental) {
|
|
|
622
637
|
* 3. 如果存在且已含但格式过旧 → 刷新为最新格式
|
|
623
638
|
* 4. 如果存在且格式最新 → 跳过
|
|
624
639
|
*
|
|
625
|
-
* hook
|
|
640
|
+
* hook 使用包管理器动态解析,避免硬编码 node_modules 路径在 pnpm 下失效。
|
|
626
641
|
* 包含存在性守卫:kit 未安装时优雅跳过,不阻断提交。
|
|
627
642
|
*/
|
|
628
643
|
function ensurePreCommitHook(targetDir) {
|
|
@@ -737,7 +752,7 @@ function runClean() {
|
|
|
737
752
|
const manifest = readManifest();
|
|
738
753
|
if (!manifest) {
|
|
739
754
|
console.log(" ⚠ 未找到 " + MANIFEST_NAME);
|
|
740
|
-
console.log(" 请先执行
|
|
755
|
+
console.log(" 请先执行 pnpm dlx @agile-team/wl-skills-kit init 安装一次。");
|
|
741
756
|
console.log("");
|
|
742
757
|
process.exit(1);
|
|
743
758
|
}
|
|
@@ -1253,8 +1268,39 @@ function runValidate() {
|
|
|
1253
1268
|
// 合并 AST 结果(降级和正常都 push)
|
|
1254
1269
|
issues.push(...astResult.issues);
|
|
1255
1270
|
|
|
1271
|
+
// ── page-spec 比对(v2.11.1+,"约定 vs 代码"确定性核对 S1~S5)───────
|
|
1272
|
+
// 页面目录存在 page-spec.json 时,比对 data.ts 实际实现与原型约定真值。
|
|
1273
|
+
// 无 page-spec.json 的页面静默跳过,不影响其他检查。
|
|
1274
|
+
let specAlignedPages = 0;
|
|
1275
|
+
for (const page of pages) {
|
|
1276
|
+
const absDir = path.join(TARGET_DIR, page.dir);
|
|
1277
|
+
const { issues: specIssues, hasSpec } = alignPage(absDir, page.dir);
|
|
1278
|
+
if (hasSpec) specAlignedPages++;
|
|
1279
|
+
issues.push(...specIssues);
|
|
1280
|
+
}
|
|
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
|
+
|
|
1256
1294
|
// ── 输出 ───────────────────────────────────────────────────────────
|
|
1257
|
-
console.log(
|
|
1295
|
+
console.log(
|
|
1296
|
+
" 页面目录: " +
|
|
1297
|
+
pages.length +
|
|
1298
|
+
(astResult.pages ? "(AST 扫描 " + astResult.pages + ")" : "") +
|
|
1299
|
+
(specAlignedPages ? "(spec-align " + specAlignedPages + ")" : "") +
|
|
1300
|
+
(typeCheck
|
|
1301
|
+
? "(类型检查 " + (tcRan ? "已执行 " + tcErrors + " error" : "已跳过") + ")"
|
|
1302
|
+
: ""),
|
|
1303
|
+
);
|
|
1258
1304
|
console.log(" 提示项: " + issues.length);
|
|
1259
1305
|
console.log("");
|
|
1260
1306
|
const errors = issues.filter((issue) => issue.level === "error").length;
|
|
@@ -1360,6 +1406,14 @@ const AST_FIX_SUGGESTIONS = {
|
|
|
1360
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 },
|
|
1361
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 },
|
|
1362
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 },
|
|
1411
|
+
// S 系列:page-spec 约定 vs 代码确定性核对(v2.11.1+)
|
|
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 },
|
|
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 },
|
|
1414
|
+
S2: { fix: '\u8c03\u6574 columnsDef() \u8868\u683c\u5217\u987a\u5e8f/\u96c6\u5408\u4e0e page-spec.json columns \u4e25\u683c\u4e00\u81f4', ref: '.wl-skills/skills/core/page-codegen/SKILL.md', auto: true },
|
|
1415
|
+
S3: { fix: '\u8c03\u6574 toolbarDef() \u6309\u94ae\u987a\u5e8f/\u989c\u8272\u4e0e page-spec.json toolbar \u4e25\u683c\u4e00\u81f4', ref: '.wl-skills/skills/core/page-codegen/SKILL.md', auto: true },
|
|
1416
|
+
S4: { fix: '\u64cd\u4f5c\u5217\u6309\u94ae\u4e0e page-spec.json operations \u4e25\u683c\u5bf9\u5e94\uff0c\u4e0d\u591a\u4e0d\u5c11', ref: '.wl-skills/skills/core/page-codegen/SKILL.md', auto: true },
|
|
1363
1417
|
};
|
|
1364
1418
|
|
|
1365
1419
|
function printFixSuggestions(blockingIssues) {
|
|
@@ -1595,13 +1649,18 @@ function parseMarkdownTable(content) {
|
|
|
1595
1649
|
);
|
|
1596
1650
|
}
|
|
1597
1651
|
|
|
1598
|
-
function runExport() {
|
|
1652
|
+
async function runExport() {
|
|
1599
1653
|
console.log("");
|
|
1600
1654
|
console.log(" wl-skills-kit v" + PKG.version + " [export]");
|
|
1601
1655
|
console.log(" 目标目录: " + TARGET_DIR);
|
|
1602
1656
|
console.log("");
|
|
1603
1657
|
|
|
1604
|
-
const reportDir =
|
|
1658
|
+
const reportDir =
|
|
1659
|
+
[
|
|
1660
|
+
path.join(TARGET_DIR, ".wl-skills", "reports"),
|
|
1661
|
+
path.join(TARGET_DIR, ".github", "reports"),
|
|
1662
|
+
].find((dir) => fs.existsSync(dir)) ||
|
|
1663
|
+
path.join(TARGET_DIR, ".wl-skills", "reports");
|
|
1605
1664
|
const files = [
|
|
1606
1665
|
["菜单", "SYS_MENU_INFO.md"],
|
|
1607
1666
|
["字典", "SYS_DICT_INFO.md"],
|
|
@@ -1636,25 +1695,22 @@ function runExport() {
|
|
|
1636
1695
|
console.log(" 将导出: " + outFile);
|
|
1637
1696
|
console.log(" sheet 数: " + addedSheets);
|
|
1638
1697
|
} else {
|
|
1639
|
-
let
|
|
1698
|
+
let writeXlsxFile;
|
|
1640
1699
|
try {
|
|
1641
|
-
|
|
1700
|
+
writeXlsxFile = require("write-excel-file/node");
|
|
1642
1701
|
} catch {
|
|
1643
1702
|
console.error(
|
|
1644
|
-
" ✖ 未找到
|
|
1703
|
+
" ✖ 未找到 write-excel-file 依赖,请重新安装最新 @agile-team/wl-skills-kit",
|
|
1645
1704
|
);
|
|
1646
1705
|
process.exit(1);
|
|
1647
1706
|
}
|
|
1648
|
-
const wb = XLSX.utils.book_new();
|
|
1649
|
-
for (const [sheetName, rows] of sheets) {
|
|
1650
|
-
XLSX.utils.book_append_sheet(
|
|
1651
|
-
wb,
|
|
1652
|
-
XLSX.utils.aoa_to_sheet(rows),
|
|
1653
|
-
sheetName,
|
|
1654
|
-
);
|
|
1655
|
-
}
|
|
1656
1707
|
fs.mkdirSync(outDir, { recursive: true });
|
|
1657
|
-
|
|
1708
|
+
await writeXlsxFile(
|
|
1709
|
+
sheets.map(([sheetName, rows]) => ({
|
|
1710
|
+
sheet: sheetName,
|
|
1711
|
+
data: rows,
|
|
1712
|
+
})),
|
|
1713
|
+
).toFile(outFile);
|
|
1658
1714
|
console.log(" ✔ 已导出: " + outFile);
|
|
1659
1715
|
console.log(" sheet 数: " + addedSheets);
|
|
1660
1716
|
}
|
|
@@ -1742,6 +1798,38 @@ function runMockClean() {
|
|
|
1742
1798
|
|
|
1743
1799
|
// ─── 主路由 ─────────────────────────────────────────────────────────────
|
|
1744
1800
|
|
|
1801
|
+
// ─── 命令: fix(确定性机械修复)──────────────────────────────────────────
|
|
1802
|
+
|
|
1803
|
+
function runFix() {
|
|
1804
|
+
const scanPath =
|
|
1805
|
+
args.find((a) => !a.startsWith("-") && a !== command) || "src/views";
|
|
1806
|
+
console.log("");
|
|
1807
|
+
console.log(" wl-skills-kit v" + PKG.version + " [fix]" + (dryRun ? " [dry-run]" : ""));
|
|
1808
|
+
console.log(" 扫描目录: " + scanPath);
|
|
1809
|
+
console.log("");
|
|
1810
|
+
|
|
1811
|
+
const result = runSafeFix(TARGET_DIR, scanPath, { dryRun });
|
|
1812
|
+
if (result.files.length === 0) {
|
|
1813
|
+
console.log(" ✔ 未发现可自动修复的机械偏差");
|
|
1814
|
+
console.log("");
|
|
1815
|
+
return;
|
|
1816
|
+
}
|
|
1817
|
+
for (const f of result.files) {
|
|
1818
|
+
for (const change of f.changes) {
|
|
1819
|
+
console.log(" " + (dryRun ? "将修复" : "已修复") + " " + f.rel + " — " + change);
|
|
1820
|
+
}
|
|
1821
|
+
}
|
|
1822
|
+
console.log("");
|
|
1823
|
+
console.log(
|
|
1824
|
+
" " + (dryRun ? "预览" : "完成") + ":" + result.fixedCount + " 处机械修复,涉及 " + result.files.length + " 个文件",
|
|
1825
|
+
);
|
|
1826
|
+
if (!dryRun) {
|
|
1827
|
+
console.log("");
|
|
1828
|
+
console.log(" → 建议执行 wl-skills validate 复扫确认;语义级偏差仍需 AI 或人工处理");
|
|
1829
|
+
}
|
|
1830
|
+
console.log("");
|
|
1831
|
+
}
|
|
1832
|
+
|
|
1745
1833
|
switch (command) {
|
|
1746
1834
|
case "init":
|
|
1747
1835
|
runInstall(false);
|
|
@@ -1766,11 +1854,17 @@ switch (command) {
|
|
|
1766
1854
|
runDoctorUi();
|
|
1767
1855
|
break;
|
|
1768
1856
|
case "export":
|
|
1769
|
-
runExport()
|
|
1857
|
+
runExport().catch((e) => {
|
|
1858
|
+
console.error(" ✖ 导出失败: " + (e && e.message ? e.message : e));
|
|
1859
|
+
process.exit(1);
|
|
1860
|
+
});
|
|
1770
1861
|
break;
|
|
1771
1862
|
case "mock-clean":
|
|
1772
1863
|
runMockClean();
|
|
1773
1864
|
break;
|
|
1865
|
+
case "fix":
|
|
1866
|
+
runFix();
|
|
1867
|
+
break;
|
|
1774
1868
|
default:
|
|
1775
1869
|
console.error(
|
|
1776
1870
|
' ✖ 未知命令: "' + command + '",请使用 --help 查看可用命令',
|
|
@@ -136,9 +136,9 @@ page-codegen 产出 SYS_* 报告
|
|
|
136
136
|
### 本地页面质量
|
|
137
137
|
|
|
138
138
|
```bash
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
139
|
+
pnpm dlx @agile-team/wl-skills-kit validate
|
|
140
|
+
pnpm dlx @agile-team/wl-skills-kit validate-page src/views/xxx/yyy
|
|
141
|
+
pnpm dlx @agile-team/wl-skills-kit doctor-ui
|
|
142
142
|
```
|
|
143
143
|
|
|
144
144
|
### MCP 项目感知
|
|
@@ -132,9 +132,9 @@ prototype-scan
|
|
|
132
132
|
### Step 1:安装与环境预检
|
|
133
133
|
|
|
134
134
|
```bash
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
135
|
+
pnpm dlx @robot-admin/git-standards init
|
|
136
|
+
pnpm dlx @agile-team/wl-skills-kit@latest
|
|
137
|
+
pnpm dlx @agile-team/wl-skills-kit@latest check
|
|
138
138
|
```
|
|
139
139
|
|
|
140
140
|
检查点:
|
|
@@ -224,7 +224,7 @@ Agent 完成任一 Skill 后,必须输出:
|
|
|
224
224
|
建议组合:
|
|
225
225
|
|
|
226
226
|
```bash
|
|
227
|
-
|
|
227
|
+
pnpm dlx @agile-team/wl-skills-kit@latest validate
|
|
228
228
|
```
|
|
229
229
|
|
|
230
230
|
MCP 验证:
|