@agile-team/wl-skills-kit 2.9.1 → 2.9.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 CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.9.2] - 2026-05-17
4
+
5
+ ### Added
6
+
7
+ - **`doctor-ui` 新增 C_Splitter 残留扫描(standards/14 一致性)**:
8
+ - 业务代码(`.vue / .ts / .scss / .js`)命中 → `✖ error`,列出文件:行号:片段
9
+ - 文档/规则(`.md / .mdc`)命中 → `⚠ warn`
10
+ - 自动豁免:上下文 ±1 行含 `已废弃 / DEPRECATED / 严禁 / 不再需要 / 已迁移 / deprecated`;`C_Splitter/` 组件目录自身豁免
11
+ - 明细分组打印,单次最多列 60 条,超出汇总"另有 X 处未列出"
12
+ - **`standards/14-layout-containers.md` 扩充**:
13
+ - §6 lint/codegen 强制项追加 `validate` / `doctor-ui` 命令矩阵
14
+ - 新增 §7 FAQ(旧页面是否要改、阈值配置、嵌套性能、过渡期保留)
15
+ - **`tests/doctor-ui.test.js`**:4 项新单测覆盖无残留、业务代码命中、豁免词、自身组件豁免
16
+
17
+ ### Notes
18
+
19
+ - 测试矩阵:cli + lint-skills + doctor-ui + registry + version-tools 合计 **53 测试通过**
20
+ - 升级路径:`npx @agile-team/wl-skills-kit@latest update` 同步 standards/14;CI 增挂 `wl-skills doctor-ui` 即可
21
+
3
22
  ## [2.9.1] - 2026-05-17
4
23
 
5
24
  ### Added
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @agile-team/wl-skills-kit
2
2
 
3
- **AI Skill 模板包 v2.9.1 ** — 一键将 13 条规范、10 个 AI Skill、17 个 MCP Tool、编辑器 MCP 配置、文档导入 Vue 3 项目。
3
+ **AI Skill 模板包 v2.9.2 ** — 一键将 13 条规范、10 个 AI Skill、17 个 MCP Tool、编辑器 MCP 配置、文档导入 Vue 3 项目。
4
4
 
5
5
  让 AI 编辑器(Copilot / Cursor / Windsurf / Claude Code / Cline / Kiro / Trae / Qoder / 通用 Agents)**真正理解项目规范**,从原型/详设到完整页面代码全流程自动化。
6
6
 
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.9.1
4
+ * wl-skills-kit CLI v2.9.2
5
5
  *
6
6
  * 命令:
7
7
  * init 全量安装(默认,向后兼容)
@@ -1106,11 +1106,75 @@ function runDoctorUi() {
1106
1106
  );
1107
1107
  add("renderOps", /renderOps\s*\(/.test(allSource), "操作列需使用 renderOps");
1108
1108
 
1109
+ // —— C_Splitter 残留扫描(standards/14 一致性)——
1110
+ // 业务代码(.vue / .scss / .ts)禁止任何 C_Splitter;文档/规则(.md / .mdc)只允许"废弃说明"句式
1111
+ const EXEMPT_KEYWORDS =
1112
+ /已废弃|DEPRECATED|严禁|不再需要|已迁移|deprecated/i;
1113
+ const splitterFiles = files.filter(
1114
+ (rel) =>
1115
+ /\.(ts|vue|scss|js|tsx|md|mdc)$/.test(rel) &&
1116
+ !rel.startsWith("node_modules/") &&
1117
+ !rel.startsWith("dist/") &&
1118
+ !rel.startsWith(".git/"),
1119
+ );
1120
+ const codeHits = [];
1121
+ const docHits = [];
1122
+ for (const rel of splitterFiles) {
1123
+ if (
1124
+ rel.includes("/C_Splitter/") ||
1125
+ rel.endsWith("/C_Splitter/index.vue") ||
1126
+ rel.endsWith("/C_Splitter/index.scss")
1127
+ )
1128
+ continue; // 组件自身保留(带 deprecation warning)
1129
+ const full = path.join(TARGET_DIR, rel);
1130
+ let content;
1131
+ try {
1132
+ content = fs.readFileSync(full, "utf8");
1133
+ } catch {
1134
+ continue;
1135
+ }
1136
+ if (!/C_Splitter/.test(content)) continue;
1137
+ const lines = content.split(/\r?\n/);
1138
+ lines.forEach((line, idx) => {
1139
+ if (!/C_Splitter/.test(line)) return;
1140
+ // 取上下文 ±1 行做豁免判断
1141
+ const ctx = [lines[idx - 1] || "", line, lines[idx + 1] || ""].join("\n");
1142
+ if (EXEMPT_KEYWORDS.test(ctx)) return;
1143
+ const item = { rel, line: idx + 1, text: line.trim().slice(0, 100) };
1144
+ if (/\.(vue|ts|scss|js|tsx)$/.test(rel)) codeHits.push(item);
1145
+ else docHits.push(item);
1146
+ });
1147
+ }
1148
+ add(
1149
+ "C_Splitter 业务代码残留",
1150
+ codeHits.length === 0,
1151
+ codeHits.length === 0
1152
+ ? "无"
1153
+ : codeHits.length + " 处(详见下方明细,需改 jh-drag-col/-row)",
1154
+ );
1155
+ add(
1156
+ "C_Splitter 文档/规则残留",
1157
+ docHits.length === 0,
1158
+ docHits.length === 0
1159
+ ? "无"
1160
+ : docHits.length + " 处(详见下方明细,建议同步说明)",
1161
+ );
1162
+
1109
1163
  for (const item of checks) {
1110
1164
  console.log(
1111
1165
  " " + statusIcon(item.ok) + " " + item.name + " — " + item.detail,
1112
1166
  );
1113
1167
  }
1168
+ if (codeHits.length || docHits.length) {
1169
+ console.log("");
1170
+ console.log(" ── C_Splitter 残留明细 ──");
1171
+ for (const h of codeHits.slice(0, 30))
1172
+ console.log(" ✖ " + h.rel + ":" + h.line + " " + h.text);
1173
+ for (const h of docHits.slice(0, 30))
1174
+ console.log(" ⚠ " + h.rel + ":" + h.line + " " + h.text);
1175
+ const overflow = codeHits.length + docHits.length - 60;
1176
+ if (overflow > 0) console.log(" … 另有 " + overflow + " 处未列出");
1177
+ }
1114
1178
  const failed = checks.filter((item) => !item.ok).length;
1115
1179
  console.log("");
1116
1180
  console.log(
@@ -2,7 +2,7 @@
2
2
 
3
3
  > **读者**:团队技术负责人 / wl-skills-kit 维护者 / 对体系设计感兴趣的团队成员
4
4
  > **更新方式**:重大架构变更后追加对应章节,旧章节原文保留(历史可溯)
5
- > **当前版本**:v2.9.1 (2026-05-17)
5
+ > **当前版本**:v2.9.2(2026-05-17)
6
6
 
7
7
  ---
8
8
 
@@ -129,6 +129,26 @@ done
129
129
  - `prototype-scan` / `page-codegen` 生成的模板**禁止**包含 `C_Splitter`
130
130
  - TPL-TREE-LIST、TPL-DETAIL-TABS 等模板必须使用 `jh-drag-col` / `jh-drag-row`
131
131
  - `wl-skills validate-page` 扫到 `C_Splitter` 直接 fail
132
+ - `wl-skills validate src/views`:业务页面扫描 `<C_Splitter` / `import C_Splitter` / 过时注释(error / info 三级)
133
+ - `wl-skills doctor-ui`:全仓扫描 `.vue/.ts/.scss/.md/.mdc`,区分**业务代码残留(error)**与**文档/规则残留(warn)**;含 `已废弃|DEPRECATED|严禁|不再需要|已迁移` 关键词的上下文自动豁免;`C_Splitter/` 组件目录自身豁免
134
+
135
+ > 推荐在 CI 非阻断阶段挂 `wl-skills doctor-ui`,残留明细一目了然;提交前 pre-commit 由 `lint-skills` 兜底,禁止任何新增引用流入仓库。
136
+
137
+ ---
138
+
139
+ ## 7. FAQ
140
+
141
+ **Q1:旧页面跑得好好的,为什么也要改?**
142
+ 现状只是"还没踩到 ref 变更的场景"。一旦页面后续接入树节点切换 / 全屏刷新 / 编辑回填,就会出现 ref 改了 UI 不动的灵异 bug,排查成本远大于一次性迁移。
143
+
144
+ **Q2:`jh-drag-col` 没有 `min-left-width` 怎么办?**
145
+ 内部默认 200~600 阈值已可用;如需自定义,传 `:minLeftWidth` / `:maxLeftWidth`(数值,单位 px)。
146
+
147
+ **Q3:嵌套两层分栏会有性能问题吗?**
148
+ 不会。`jh-drag-col` / `jh-drag-row` 都是直接 `<slot />`,没有 vnode 缓存或额外 watcher,嵌套层数与原生 div 等价。
149
+
150
+ **Q4:必须保留 `C_Splitter` 组件文件吗?**
151
+ 保留一段过渡期(带 deprecation warning)即可。等仓库扫描 0 命中后,下一个大版本直接删除 `src/components/global/C_Splitter/`。
132
152
 
133
153
  ---
134
154
 
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@agile-team/wl-skills-kit",
3
- "version": "2.9.1",
4
- "description": "AI Skill 模板包 v2.9.1 — 13 条编码规范 + 10 个 AI Skill + 17 个 MCP Tool,一条命令导入 Vue 3 项目",
3
+ "version": "2.9.2",
4
+ "description": "AI Skill 模板包 v2.9.2 — 13 条编码规范 + 10 个 AI Skill + 17 个 MCP Tool,一条命令导入 Vue 3 项目",
5
5
  "main": "./bin/wl-skills.js",
6
6
  "bin": {
7
7
  "wl-skills": "bin/wl-skills.js"