@qilitt-mickey/vue3-temp-skill 1.1.76 → 1.2.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.
Files changed (86) hide show
  1. package/README.md +99 -82
  2. package/SKILL.md +65 -28
  3. package/bin/cli.js +5 -6
  4. package/mapping/admin.json +60 -0
  5. package/package.json +5 -13
  6. package/references/adapters/_new-adapter.md +88 -0
  7. package/references/adapters/vue-antdv.md +110 -0
  8. package/references/adapters/vue-element-plus.md +132 -0
  9. package/references/design-apply.md +259 -122
  10. package/scripts/check-landing.mjs +419 -0
  11. package/scripts/modules.json +2 -2
  12. package/dist/mapping-type.d.ts +0 -33
  13. package/dist/theme-vars.js +0 -62
  14. package/dist/theme-vars.ts +0 -113
  15. package/dist/theme.css +0 -73
  16. package/mapping/basic/color.json +0 -35
  17. package/mapping/basic/radius.json +0 -17
  18. package/mapping/basic/semantic-values.json +0 -72
  19. package/mapping/basic/spacing.json +0 -21
  20. package/mapping/basic/typography.json +0 -21
  21. package/mapping/component/button.json +0 -90
  22. package/mapping/component/card.json +0 -31
  23. package/mapping/component/input.json +0 -42
  24. package/mapping/component/overlay.json +0 -79
  25. package/mapping/component/pagination.json +0 -34
  26. package/mapping/component/table.json +0 -42
  27. package/mapping/component/tag.json +0 -48
  28. package/mapping/layout/breakpoint.json +0 -20
  29. package/mapping/layout/shell-geometry.json +0 -26
  30. package/mapping/scenes/admin/content.json +0 -497
  31. package/mapping/scenes/admin/layout.json +0 -577
  32. package/parser/fixtures/changeset-fullpage-restore.json +0 -259
  33. package/parser/fixtures/changeset-gap-block.json +0 -24
  34. package/parser/fixtures/changeset-legacy.json +0 -11
  35. package/parser/fixtures/changeset-neg1.json +0 -8
  36. package/parser/fixtures/changeset-neg2.json +0 -10
  37. package/parser/fixtures/changeset-neg3.json +0 -22
  38. package/parser/fixtures/changeset-neg4-g8.json +0 -15
  39. package/parser/fixtures/changeset-neg5-g8-stub.json +0 -26
  40. package/parser/fixtures/changeset-neg6-g9-identity.json +0 -39
  41. package/parser/fixtures/changeset-neg7-g10-dims.json +0 -57
  42. package/parser/fixtures/changeset-neg8-g11-oracle.json +0 -57
  43. package/parser/fixtures/changeset-neg9-g6-token-chain.json +0 -34
  44. package/parser/fixtures/changeset-pos-g6-token-chain.json +0 -35
  45. package/parser/fixtures/changeset-pos-theme-neutral.json +0 -264
  46. package/parser/fixtures/changeset-pos-theme-nometa.json +0 -260
  47. package/parser/fixtures/changeset-pos.json +0 -50
  48. package/parser/fixtures/changeset-registry-gap.json +0 -29
  49. package/parser/fixtures/changeset-v32-fields.json +0 -71
  50. package/parser/fixtures/fake-project/src/styles/app.scss +0 -5
  51. package/parser/fixtures/fake-project/src/views/list.vue +0 -13
  52. package/parser/fixtures/registry-bad.json +0 -11
  53. package/parser/fixtures/registry-g6-token-chain.json +0 -10
  54. package/parser/fixtures/registry-sample.json +0 -15
  55. package/parser/fixtures/verify/actual-clean.json +0 -35
  56. package/parser/fixtures/verify/actual.json +0 -33
  57. package/parser/fixtures/verify/mockup-baseline-admin-list.html +0 -27
  58. package/parser/fixtures/verify/mockup-g6-content.html +0 -12
  59. package/parser/fixtures/verify/mockup-neutral.html +0 -26
  60. package/parser/fixtures/verify/mockup-nometa.html +0 -26
  61. package/parser/fixtures/verify/oracle.json +0 -37
  62. package/parser/fixtures/verify/snapshot-latest.json +0 -103
  63. package/parser/generator.js +0 -178
  64. package/parser/index.js +0 -2706
  65. package/parser/loader.js +0 -66
  66. package/parser/override.js +0 -119
  67. package/parser/regression.js +0 -301
  68. package/parser/validator.js +0 -206
  69. package/parser/watch.js +0 -103
  70. package/references/steps/maintenance.md +0 -31
  71. package/references/steps/regression.md +0 -49
  72. package/references/steps/step0-preflight.md +0 -58
  73. package/references/steps/step1-match.md +0 -67
  74. package/references/steps/step1b-audit.md +0 -23
  75. package/references/steps/step1c-registry.md +0 -29
  76. package/references/steps/step2-structure.md +0 -73
  77. package/references/steps/step3-style.md +0 -38
  78. package/references/steps/step3b-shell.md +0 -63
  79. package/references/steps/step3c-priority.md +0 -26
  80. package/references/steps/step4-l3.md +0 -14
  81. package/references/steps/step5-gates.md +0 -65
  82. package/references/steps/step6-verify.md +0 -77
  83. package/scripts/apply-final-gate.mjs +0 -170
  84. package/scripts/check.mjs +0 -207
  85. package/scripts/design-audit.mjs +0 -1707
  86. package/scripts/validate.mjs +0 -106
package/scripts/check.mjs DELETED
@@ -1,207 +0,0 @@
1
- #!/usr/bin/env node
2
-
3
- /**
4
- * 发布前全量检查 — 任何一项失败即中断(exit 1)
5
- *
6
- * 用法:
7
- * node scripts/check.mjs # 全量检查
8
- * npm run check # 同上
9
- * npm run prepack # npm pack/publish 前自动触发
10
- */
11
-
12
- import { execFileSync } from "child_process";
13
- import fs from "fs";
14
- import path from "path";
15
- import { fileURLToPath } from "url";
16
-
17
- const __dirname = path.dirname(fileURLToPath(import.meta.url));
18
- const ROOT = path.resolve(__dirname, "..");
19
- const NODE = process.execPath;
20
- const PYTHON = process.env.VUE3_SKILL_PYTHON || (process.platform === "win32" ? "py" : "python3");
21
- const PYTHON_ARGS = process.platform === "win32" && !process.env.VUE3_SKILL_PYTHON ? ["-3"] : [];
22
-
23
- /** 设计层闭环审计的目标项目:默认当前目录,可用 VUE3_AUDIT_PROJECT 指向落地项目 */
24
- function resolveAuditProject() {
25
- const dir = process.env.VUE3_AUDIT_PROJECT || process.cwd();
26
- for (const d of [".design", "design", ".changeset"]) {
27
- const designDir = path.join(dir, d);
28
- if (!fs.existsSync(designDir)) continue;
29
- const has = fs.readdirSync(designDir).some((f) => /^changeset.*\.json$/i.test(f));
30
- if (has) return dir;
31
- }
32
- return null;
33
- }
34
-
35
- const checks = [
36
- {
37
- name: "结构校验",
38
- desc: "frontmatter、路由引用、交叉引用",
39
- cmd: () => run(NODE, "scripts/validate.mjs"),
40
- },
41
- {
42
- name: "匹配器回归",
43
- desc: "高频 Demo 场景能力组命中验证",
44
- cmd: () => run("python", "scripts/match.py", ["--batch"]),
45
- },
46
- {
47
- name: "设计层闭环审计",
48
- desc: "变量悬空/层错位/层叠胜负/锚点挂空/列宽预算/收口断言(无落地项目则跳过)",
49
- cmd: () => {
50
- const project = resolveAuditProject();
51
- if (!project) return "SKIPPED 未发现落地项目(.design/changeset*.json,亦兼容 design/ 与 .changeset/);用 VUE3_AUDIT_PROJECT=<落地项目> 指定后复跑";
52
- const args = ["--project", project];
53
- if (process.env.VUE3_AUDIT_CONTAINER_WIDTH) {
54
- args.push("--container-width", process.env.VUE3_AUDIT_CONTAINER_WIDTH);
55
- }
56
- return run(NODE, "scripts/design-audit.mjs", args);
57
- },
58
- },
59
- {
60
- name: "审计闸 G3 回归",
61
- desc: "结构声明兑现闸:悬空 form / 未收口通道的假项目必须被 design-audit 拒绝,带 @sid/@closed 标记的正例必须通过",
62
- cmd: () => {
63
- const neg = path.join(ROOT, "tests/fixtures/audit-g3-negative");
64
- const pos = path.join(ROOT, "tests/fixtures/audit-g3-positive");
65
- const lines = [];
66
- if (fs.existsSync(neg)) {
67
- let rejected = false;
68
- let out = "";
69
- try {
70
- out = run(NODE, "scripts/design-audit.mjs", ["--project", neg, "--no-ledger"]);
71
- } catch (e) {
72
- rejected = true;
73
- out = `${e.stdout || ""}${e.stderr || ""}`;
74
- }
75
- if (!rejected) {
76
- throw Object.assign(new Error("审计负例未被拒绝"), {
77
- stdout: " ✗ audit-g3-negative 竟然通过 —— E15 结构声明兑现闸判据被削弱,必须修复\n",
78
- });
79
- }
80
- if (!/\[E15\]/.test(out)) {
81
- throw Object.assign(new Error("审计负例未命中 E15"), {
82
- stdout: ` ✗ audit-g3-negative 被拒绝,但未命中 [E15] —— 断言已失效\n${out.slice(-800)}\n`,
83
- });
84
- }
85
- lines.push("negative 被拒绝并命中 [E15]");
86
- }
87
- if (fs.existsSync(pos)) {
88
- let out = "";
89
- try {
90
- out = run(NODE, "scripts/design-audit.mjs", ["--project", pos, "--no-ledger"]);
91
- } catch (e) {
92
- throw Object.assign(new Error("审计正例被拒绝"), {
93
- stdout: ` ✗ audit-g3-positive 被拒绝(E15 存在误报,必须修复):\n${(e.stdout || "") + (e.stderr || "")}\n`,
94
- });
95
- }
96
- lines.push("positive 通过");
97
- }
98
- if (!lines.length) return "SKIPPED 未发现审计夹具(仅源码检出时可用)";
99
- return ` ${lines.join(";")}`;
100
- },
101
- },
102
- {
103
- name: "模式闸唯一值回归",
104
- desc: "mode 唯一合法值 restore:显式 design 的变更集必须被 parser match 拒绝",
105
- cmd: () => {
106
- const cs = path.join(
107
- ROOT,
108
- "tests/fixtures/pattern-g15-negative/.design/changeset-g15-negative.json",
109
- );
110
- if (!fs.existsSync(cs)) return "SKIPPED 未发现模式闸夹具(仅源码检出时可用)";
111
- let rejected = false;
112
- let out = "";
113
- try {
114
- out = run(NODE, "parser/index.js", ["match", cs]);
115
- } catch (e) {
116
- rejected = true;
117
- out = `${e.stdout || ""}${e.stderr || ""}`;
118
- }
119
- if (!rejected) {
120
- throw Object.assign(new Error("模式闸负例未被拒绝"), {
121
- stdout: " ✗ pattern-g15-negative 竟然通过 —— mode 唯一合法值 restore 的判据被削弱,必须修复\n",
122
- });
123
- }
124
- if (!/基线三件套/.test(out)) {
125
- throw Object.assign(new Error("模式闸负例未命中预期判据"), {
126
- stdout: ` ✗ pattern-g15-negative 被拒绝,但未命中「基线三件套」判据 —— 断言已失效\n${out.slice(-800)}\n`,
127
- });
128
- }
129
- return " negative 被拒绝并命中「基线三件套」判据(mode 唯一合法值 restore)";
130
- },
131
- },
132
- {
133
- name: "层间令牌链闸回归",
134
- desc: "G6 层间令牌链对账:共享同链间距令牌的条目声明几何字段却缺 suppress_inner 必须被 parser match 拒绝",
135
- cmd: () => {
136
- const cs = path.join(ROOT, "parser/fixtures/changeset-neg9-g6-token-chain.json");
137
- if (!fs.existsSync(cs)) return "SKIPPED 未发现 G6 夹具";
138
- let out = "";
139
- try {
140
- out = run(NODE, "parser/index.js", ["match", cs]);
141
- throw Object.assign(new Error("G6 负例未被拒绝"), {
142
- stdout: ` ✗ neg9-g6-token-chain 竟然通过 —— 同链令牌双层叠加未拦截,必须修复\n`,
143
- });
144
- } catch (e) {
145
- if (e.message === "G6 负例未被拒绝") throw e;
146
- out = (e.stdout || "") + (e.stderr || "");
147
- }
148
- if (!/层间令牌链对账/.test(out)) {
149
- throw Object.assign(new Error("G6 负例未命中预期判据"), {
150
- stdout: ` ✗ neg9-g6-token-chain 被拒绝,但未命中「层间令牌链对账」判据 —— 断言已失效\n${out.slice(-800)}\n`,
151
- });
152
- }
153
- return " negative 被拒绝并命中「层间令牌链对账」判据(G6)";
154
- },
155
- },
156
- ];
157
-
158
- function run(runner, script, args = []) {
159
- const scriptPath = path.join(ROOT, script);
160
- if (runner === "python") {
161
- return execFileSync(PYTHON, [...PYTHON_ARGS, scriptPath, ...args], {
162
- cwd: ROOT,
163
- encoding: "utf-8",
164
- stdio: "pipe",
165
- });
166
- }
167
- return execFileSync(runner, [scriptPath, ...args], {
168
- cwd: ROOT,
169
- encoding: "utf-8",
170
- stdio: "pipe",
171
- });
172
- }
173
-
174
- const failures = [];
175
- let passed = 0;
176
-
177
- for (const check of checks) {
178
- process.stdout.write(` ${check.name} — ${check.desc} ... `);
179
- try {
180
- const output = check.cmd();
181
- // 只在有输出时打印(避免刷屏)
182
- const lines = output.trim().split("\n");
183
- const summary =
184
- lines.find((l) => /^OK \d+\/\d+ scenarios/.test(l.trim())) ||
185
- lines.find((l) => l.includes("校验通过")) ||
186
- lines[lines.length - 1];
187
- console.log(`\u2713 ${summary?.trim() || "OK"}`);
188
- passed++;
189
- } catch (e) {
190
- console.log(`\u2717 失败`);
191
- if (e.stdout) console.log(e.stdout.slice(-500));
192
- if (e.stderr) console.log(e.stderr.slice(-500));
193
- failures.push(check.name);
194
- }
195
- }
196
-
197
- console.log(`\n${"=".repeat(50)}`);
198
- console.log(`通过 ${passed}/${checks.length}`);
199
-
200
- if (failures.length > 0) {
201
- console.log(`\n\u2717 失败项: ${failures.join(", ")}`);
202
- console.log("发布已中断,请修复上述问题后重试。\n");
203
- process.exit(1);
204
- } else {
205
- console.log("\n\u2713 全部检查通过,可以发布。\n");
206
- process.exit(0);
207
- }