mcp-probe-kit 3.2.0 → 3.3.0

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 (104) hide show
  1. package/README.md +10 -0
  2. package/build/lib/__tests__/memory-orchestration.unit.test.js +88 -0
  3. package/build/lib/__tests__/memory-payload.unit.test.js +35 -0
  4. package/build/lib/__tests__/quality-constraints.unit.test.d.ts +1 -0
  5. package/build/lib/__tests__/quality-constraints.unit.test.js +54 -0
  6. package/build/lib/__tests__/spec-validator.unit.test.js +106 -74
  7. package/build/lib/agents-md-template.js +32 -32
  8. package/build/lib/cursor-history-client.d.ts +54 -0
  9. package/build/lib/cursor-history-client.js +240 -0
  10. package/build/lib/quality-constraints.d.ts +54 -0
  11. package/build/lib/quality-constraints.js +155 -0
  12. package/build/lib/skill-bridge.js +12 -12
  13. package/build/lib/spec-validator.js +16 -3
  14. package/build/lib/template-loader.js +83 -23
  15. package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
  16. package/build/resources/ui-ux-data/metadata.json +30 -30
  17. package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
  18. package/build/resources/ui-ux-data/shadcn/components.json +997 -997
  19. package/build/resources/ui-ux-data/themes/presets.json +483 -483
  20. package/build/tools/__tests__/cursor-history.unit.test.d.ts +1 -0
  21. package/build/tools/__tests__/cursor-history.unit.test.js +38 -0
  22. package/build/tools/check_spec.js +16 -16
  23. package/build/tools/code_insight.js +41 -41
  24. package/build/tools/code_review.js +11 -4
  25. package/build/tools/cursor_read_conversation.d.ts +7 -0
  26. package/build/tools/cursor_read_conversation.js +36 -0
  27. package/build/tools/fix_bug.js +161 -161
  28. package/build/tools/gencommit.js +60 -60
  29. package/build/tools/init_project_context.js +432 -432
  30. package/build/tools/start_product.js +1 -1
  31. package/build/tools/start_ui.js +17 -0
  32. package/build/tools/ui-ux-tools.d.ts +3 -0
  33. package/build/tools/ui-ux-tools.js +302 -290
  34. package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
  35. package/build/utils/design-reasoning-engine.d.ts +2 -0
  36. package/build/utils/design-reasoning-engine.js +3 -0
  37. package/build/utils/themes-sync.js +8 -8
  38. package/package.json +3 -2
  39. package/build/resources/index.d.ts +0 -4
  40. package/build/resources/index.js +0 -4
  41. package/build/resources/tool-params-guide.d.ts +0 -571
  42. package/build/resources/tool-params-guide.js +0 -488
  43. package/build/tools/analyze_project.d.ts +0 -1
  44. package/build/tools/analyze_project.js +0 -527
  45. package/build/tools/check_deps.d.ts +0 -13
  46. package/build/tools/check_deps.js +0 -204
  47. package/build/tools/convert.d.ts +0 -13
  48. package/build/tools/convert.js +0 -599
  49. package/build/tools/css_order.d.ts +0 -13
  50. package/build/tools/css_order.js +0 -81
  51. package/build/tools/debug.d.ts +0 -13
  52. package/build/tools/debug.js +0 -131
  53. package/build/tools/design2code.d.ts +0 -20
  54. package/build/tools/design2code.js +0 -426
  55. package/build/tools/detect_shell.d.ts +0 -6
  56. package/build/tools/detect_shell.js +0 -151
  57. package/build/tools/explain.d.ts +0 -13
  58. package/build/tools/explain.js +0 -390
  59. package/build/tools/fix.d.ts +0 -13
  60. package/build/tools/fix.js +0 -303
  61. package/build/tools/gen_mock.d.ts +0 -22
  62. package/build/tools/gen_mock.js +0 -269
  63. package/build/tools/gen_skill.d.ts +0 -13
  64. package/build/tools/gen_skill.js +0 -560
  65. package/build/tools/genapi.d.ts +0 -13
  66. package/build/tools/genapi.js +0 -174
  67. package/build/tools/genchangelog.d.ts +0 -13
  68. package/build/tools/genchangelog.js +0 -250
  69. package/build/tools/gendoc.d.ts +0 -13
  70. package/build/tools/gendoc.js +0 -232
  71. package/build/tools/genpr.d.ts +0 -13
  72. package/build/tools/genpr.js +0 -194
  73. package/build/tools/genreadme.d.ts +0 -13
  74. package/build/tools/genreadme.js +0 -626
  75. package/build/tools/gensql.d.ts +0 -13
  76. package/build/tools/gensql.js +0 -320
  77. package/build/tools/genui.d.ts +0 -13
  78. package/build/tools/genui.js +0 -803
  79. package/build/tools/init_component_catalog.d.ts +0 -22
  80. package/build/tools/init_component_catalog.js +0 -809
  81. package/build/tools/init_setting.d.ts +0 -13
  82. package/build/tools/init_setting.js +0 -47
  83. package/build/tools/perf.d.ts +0 -13
  84. package/build/tools/perf.js +0 -409
  85. package/build/tools/render_ui.d.ts +0 -22
  86. package/build/tools/render_ui.js +0 -384
  87. package/build/tools/resolve_conflict.d.ts +0 -13
  88. package/build/tools/resolve_conflict.js +0 -349
  89. package/build/tools/security_scan.d.ts +0 -22
  90. package/build/tools/security_scan.js +0 -323
  91. package/build/tools/split.d.ts +0 -13
  92. package/build/tools/split.js +0 -599
  93. package/build/tools/start_api.d.ts +0 -13
  94. package/build/tools/start_api.js +0 -193
  95. package/build/tools/start_doc.d.ts +0 -13
  96. package/build/tools/start_doc.js +0 -207
  97. package/build/tools/start_refactor.d.ts +0 -13
  98. package/build/tools/start_refactor.js +0 -188
  99. package/build/tools/start_release.d.ts +0 -13
  100. package/build/tools/start_release.js +0 -167
  101. package/build/tools/start_review.d.ts +0 -13
  102. package/build/tools/start_review.js +0 -175
  103. /package/build/{utils/design-docs-generator.d.ts → lib/__tests__/memory-orchestration.unit.test.d.ts} +0 -0
  104. /package/build/{utils/design-docs-generator.js → lib/__tests__/memory-payload.unit.test.d.ts} +0 -0
@@ -4,18 +4,18 @@ import * as fs from 'fs';
4
4
  import * as path from 'path';
5
5
  describe('vercel-guidelines-sync', () => {
6
6
  it('parses MUST/SHOULD/NEVER rules from markdown', () => {
7
- const sample = `# Title
8
-
9
- ## Interactions
10
-
11
- ### Keyboard
12
-
13
- - MUST: Visible focus rings
14
- - NEVER: outline: none without replacement
15
-
16
- ## Animation
17
-
18
- - SHOULD: Prefer CSS animations
7
+ const sample = `# Title
8
+
9
+ ## Interactions
10
+
11
+ ### Keyboard
12
+
13
+ - MUST: Visible focus rings
14
+ - NEVER: outline: none without replacement
15
+
16
+ ## Animation
17
+
18
+ - SHOULD: Prefer CSS animations
19
19
  `;
20
20
  const records = parseVercelGuidelinesMarkdown(sample);
21
21
  expect(records).toHaveLength(3);
@@ -34,6 +34,8 @@ export interface DesignSystemRecommendation {
34
34
  typography: TypographyPairing;
35
35
  effects: EffectsRecommendation;
36
36
  antiPatterns: string[];
37
+ hardConstraints: string[];
38
+ bannedList: string[];
37
39
  checklist: string[];
38
40
  reasoning: string;
39
41
  }
@@ -7,6 +7,7 @@
7
7
  * 完全匹配原版 Python 实现:
8
8
  * https://github.com/nextlevelbuilder/ui-ux-pro-max-skill
9
9
  */
10
+ import { UI_HARD_RULES, UI_BANNED_LIST } from '../lib/quality-constraints.js';
10
11
  /**
11
12
  * 设计推理引擎(完全匹配 Python 版本)
12
13
  */
@@ -98,6 +99,8 @@ export class DesignReasoningEngine {
98
99
  animations: combinedEffects,
99
100
  },
100
101
  antiPatterns: (reasoning.antiPatterns || '').split('+').map((p) => p.trim()).filter(Boolean),
102
+ hardConstraints: [...UI_HARD_RULES],
103
+ bannedList: [...UI_BANNED_LIST],
101
104
  checklist: this.generateChecklist(bestStyle, request),
102
105
  reasoning: this.generateReasoningText(productRule, bestStyle, bestColor, bestTypography, reasoning),
103
106
  };
@@ -66,14 +66,14 @@ function renderGlobalsCss(name, light, dark) {
66
66
  const toBlock = (vars) => Object.entries(vars)
67
67
  .map(([key, value]) => ` --${key}: ${value};`)
68
68
  .join('\n');
69
- return `@layer base {
70
- /* Theme: ${name} — paste into globals.css */
71
- :root {
72
- ${toBlock(light)}
73
- }
74
- .dark {
75
- ${toBlock(dark)}
76
- }
69
+ return `@layer base {
70
+ /* Theme: ${name} — paste into globals.css */
71
+ :root {
72
+ ${toBlock(light)}
73
+ }
74
+ .dark {
75
+ ${toBlock(dark)}
76
+ }
77
77
  }`;
78
78
  }
79
79
  function buildTheme(input) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "mcp-probe-kit",
3
- "version": "3.2.0",
3
+ "version": "3.3.0",
4
4
  "description": "AI-Powered Development Toolkit - MCP Server with 27 tools covering code quality, development efficiency, project management, and UI/UX design. Features: Structured Output, Workflow Orchestration, UI/UX Pro Max, and Requirements Interview.",
5
5
  "mcpName": "io.github.mybolide/mcp-probe-kit",
6
6
  "type": "module",
@@ -20,7 +20,8 @@
20
20
  "prepare": "npm run build",
21
21
  "prepublishOnly": "npm run build",
22
22
  "sync-ui-data": "tsx scripts/sync-ui-data.ts",
23
- "prebuild": "npm run sync-ui-data",
23
+ "sync-version": "node scripts/sync-version.mjs",
24
+ "prebuild": "npm run sync-version && npm run sync-ui-data",
24
25
  "docs:serve": "npx http-server docs -p 8080 -o"
25
26
  },
26
27
  "keywords": [
@@ -1,4 +0,0 @@
1
- /**
2
- * MCP Resources 统一导出
3
- */
4
- export { getToolParamsGuide } from "./tool-params-guide.js";
@@ -1,4 +0,0 @@
1
- /**
2
- * MCP Resources 统一导出
3
- */
4
- export { getToolParamsGuide } from "./tool-params-guide.js";
@@ -1,571 +0,0 @@
1
- /**
2
- * 工具参数指南 Resource
3
- * 为 AI 提供详细的参数说明和使用示例
4
- */
5
- export declare function getToolParamsGuide(version: string): {
6
- guide: string;
7
- version: string;
8
- important_notes: string[];
9
- best_practices: {
10
- "1. \u76F4\u63A5\u4F20\u53C2": string;
11
- "2. \u81EA\u7136\u8BED\u8A00": string;
12
- "3. \u6700\u5C0F\u5316": string;
13
- "4. \u63CF\u8FF0\u4F18\u5148": string;
14
- };
15
- tools: {
16
- detect_shell: {
17
- description: string;
18
- params: {
19
- input: string;
20
- };
21
- examples: {
22
- input: string;
23
- }[];
24
- };
25
- init_setting: {
26
- description: string;
27
- params: {
28
- input: string;
29
- };
30
- examples: {
31
- input: string;
32
- }[];
33
- };
34
- init_project: {
35
- description: string;
36
- params: {
37
- input: string;
38
- };
39
- examples: {
40
- input: string;
41
- }[];
42
- };
43
- gencommit: {
44
- description: string;
45
- params: {
46
- changes: string;
47
- type: string;
48
- };
49
- examples: ({
50
- changes: string;
51
- type?: undefined;
52
- } | {
53
- changes: string;
54
- type: string;
55
- })[];
56
- };
57
- genchangelog: {
58
- description: string;
59
- params: {
60
- version: string;
61
- from: string;
62
- to: string;
63
- };
64
- examples: ({
65
- version: string;
66
- from?: undefined;
67
- input?: undefined;
68
- } | {
69
- version: string;
70
- from: string;
71
- input?: undefined;
72
- } | {
73
- input: string;
74
- version?: undefined;
75
- from?: undefined;
76
- })[];
77
- };
78
- genpr: {
79
- description: string;
80
- params: {
81
- input: string;
82
- };
83
- examples: {
84
- input: string;
85
- }[];
86
- };
87
- resolve_conflict: {
88
- description: string;
89
- params: {
90
- input: string;
91
- };
92
- examples: {
93
- input: string;
94
- }[];
95
- };
96
- debug: {
97
- description: string;
98
- params: {
99
- error: string;
100
- context: string;
101
- };
102
- examples: ({
103
- error: string;
104
- input?: undefined;
105
- context?: undefined;
106
- } | {
107
- input: string;
108
- error?: undefined;
109
- context?: undefined;
110
- } | {
111
- error: string;
112
- context: string;
113
- input?: undefined;
114
- })[];
115
- };
116
- code_review: {
117
- description: string;
118
- params: {
119
- code: string;
120
- focus: string;
121
- };
122
- examples: ({
123
- code: string;
124
- input?: undefined;
125
- focus?: undefined;
126
- } | {
127
- input: string;
128
- code?: undefined;
129
- focus?: undefined;
130
- } | {
131
- code: string;
132
- focus: string;
133
- input?: undefined;
134
- })[];
135
- };
136
- explain: {
137
- description: string;
138
- params: {
139
- code: string;
140
- context: string;
141
- };
142
- examples: ({
143
- code: string;
144
- input?: undefined;
145
- } | {
146
- input: string;
147
- code?: undefined;
148
- })[];
149
- };
150
- perf: {
151
- description: string;
152
- params: {
153
- code: string;
154
- type: string;
155
- };
156
- examples: ({
157
- code: string;
158
- input?: undefined;
159
- } | {
160
- input: string;
161
- code?: undefined;
162
- })[];
163
- };
164
- security_scan: {
165
- description: string;
166
- params: {
167
- code: string;
168
- scan_type: string;
169
- };
170
- examples: ({
171
- code: string;
172
- input?: undefined;
173
- } | {
174
- input: string;
175
- code?: undefined;
176
- })[];
177
- };
178
- refactor: {
179
- description: string;
180
- params: {
181
- code: string;
182
- goal: string;
183
- };
184
- examples: ({
185
- code: string;
186
- input?: undefined;
187
- } | {
188
- input: string;
189
- code?: undefined;
190
- })[];
191
- };
192
- fix: {
193
- description: string;
194
- params: {
195
- code: string;
196
- type: string;
197
- };
198
- examples: ({
199
- code: string;
200
- input?: undefined;
201
- } | {
202
- input: string;
203
- code?: undefined;
204
- })[];
205
- };
206
- fix_bug: {
207
- description: string;
208
- params: {
209
- error_message: string;
210
- stack_trace: string;
211
- };
212
- examples: ({
213
- error_message: string;
214
- input?: undefined;
215
- } | {
216
- input: string;
217
- error_message?: undefined;
218
- })[];
219
- };
220
- gentest: {
221
- description: string;
222
- params: {
223
- code: string;
224
- framework: string;
225
- };
226
- examples: ({
227
- code: string;
228
- input?: undefined;
229
- framework?: undefined;
230
- } | {
231
- input: string;
232
- code?: undefined;
233
- framework?: undefined;
234
- } | {
235
- code: string;
236
- framework: string;
237
- input?: undefined;
238
- })[];
239
- };
240
- gendoc: {
241
- description: string;
242
- params: {
243
- code: string;
244
- style: string;
245
- lang: string;
246
- };
247
- examples: ({
248
- code: string;
249
- input?: undefined;
250
- } | {
251
- input: string;
252
- code?: undefined;
253
- })[];
254
- };
255
- genapi: {
256
- description: string;
257
- params: {
258
- code: string;
259
- format: string;
260
- };
261
- examples: ({
262
- code: string;
263
- input?: undefined;
264
- } | {
265
- input: string;
266
- code?: undefined;
267
- })[];
268
- };
269
- genui: {
270
- description: string;
271
- params: {
272
- description: string;
273
- framework: string;
274
- };
275
- examples: ({
276
- description: string;
277
- framework?: undefined;
278
- } | {
279
- description: string;
280
- framework: string;
281
- })[];
282
- };
283
- gensql: {
284
- description: string;
285
- params: {
286
- description: string;
287
- dialect: string;
288
- };
289
- examples: {
290
- description: string;
291
- }[];
292
- };
293
- gen_mock: {
294
- description: string;
295
- params: {
296
- schema: string;
297
- count: string;
298
- format: string;
299
- locale: string;
300
- };
301
- examples: ({
302
- schema: string;
303
- input?: undefined;
304
- count?: undefined;
305
- } | {
306
- input: string;
307
- count: number;
308
- schema?: undefined;
309
- })[];
310
- };
311
- design2code: {
312
- description: string;
313
- params: {
314
- input: string;
315
- framework: string;
316
- style_solution: string;
317
- component_type: string;
318
- };
319
- examples: {
320
- input: string;
321
- }[];
322
- };
323
- genreadme: {
324
- description: string;
325
- params: {
326
- project_info: string;
327
- style: string;
328
- };
329
- examples: ({
330
- input: string;
331
- project_info?: undefined;
332
- } | {
333
- project_info: string;
334
- input?: undefined;
335
- })[];
336
- };
337
- check_deps: {
338
- description: string;
339
- params: {
340
- input: string;
341
- };
342
- examples: {
343
- input: string;
344
- }[];
345
- };
346
- convert: {
347
- description: string;
348
- params: {
349
- code: string;
350
- from: string;
351
- to: string;
352
- };
353
- examples: ({
354
- code: string;
355
- to: string;
356
- input?: undefined;
357
- } | {
358
- input: string;
359
- code?: undefined;
360
- to?: undefined;
361
- })[];
362
- };
363
- css_order: {
364
- description: string;
365
- params: {
366
- input: string;
367
- };
368
- examples: {
369
- input: string;
370
- }[];
371
- };
372
- split: {
373
- description: string;
374
- params: {
375
- file: string;
376
- strategy: string;
377
- };
378
- examples: ({
379
- file: string;
380
- input?: undefined;
381
- } | {
382
- input: string;
383
- file?: undefined;
384
- })[];
385
- };
386
- analyze_project: {
387
- description: string;
388
- params: {
389
- project_path: string;
390
- max_depth: string;
391
- };
392
- examples: ({
393
- input: string;
394
- project_path?: undefined;
395
- } | {
396
- project_path: string;
397
- input?: undefined;
398
- })[];
399
- };
400
- init_project_context: {
401
- description: string;
402
- params: {
403
- docs_dir: string;
404
- };
405
- examples: ({
406
- input: string;
407
- docs_dir?: undefined;
408
- } | {
409
- docs_dir: string;
410
- input?: undefined;
411
- })[];
412
- };
413
- add_feature: {
414
- description: string;
415
- params: {
416
- description: string;
417
- feature_name: string;
418
- docs_dir: string;
419
- };
420
- examples: ({
421
- description: string;
422
- feature_name?: undefined;
423
- } | {
424
- feature_name: string;
425
- description: string;
426
- })[];
427
- important: string;
428
- };
429
- estimate: {
430
- description: string;
431
- params: {
432
- task_description: string;
433
- code_context: string;
434
- team_size: string;
435
- experience_level: string;
436
- };
437
- examples: ({
438
- task_description: string;
439
- input?: undefined;
440
- } | {
441
- input: string;
442
- task_description?: undefined;
443
- })[];
444
- };
445
- start_feature: {
446
- description: string;
447
- params: {
448
- description: string;
449
- feature_name: string;
450
- docs_dir: string;
451
- };
452
- examples: {
453
- description: string;
454
- }[];
455
- };
456
- start_bugfix: {
457
- description: string;
458
- params: {
459
- error_message: string;
460
- stack_trace: string;
461
- };
462
- examples: ({
463
- error_message: string;
464
- input?: undefined;
465
- } | {
466
- input: string;
467
- error_message?: undefined;
468
- })[];
469
- };
470
- start_review: {
471
- description: string;
472
- params: {
473
- code: string;
474
- language: string;
475
- };
476
- examples: ({
477
- code: string;
478
- input?: undefined;
479
- } | {
480
- input: string;
481
- code?: undefined;
482
- })[];
483
- };
484
- start_release: {
485
- description: string;
486
- params: {
487
- version: string;
488
- from_tag: string;
489
- };
490
- examples: ({
491
- version: string;
492
- input?: undefined;
493
- } | {
494
- input: string;
495
- version?: undefined;
496
- })[];
497
- };
498
- start_refactor: {
499
- description: string;
500
- params: {
501
- code: string;
502
- goal: string;
503
- };
504
- examples: ({
505
- code: string;
506
- input?: undefined;
507
- } | {
508
- input: string;
509
- code?: undefined;
510
- })[];
511
- };
512
- start_onboard: {
513
- description: string;
514
- params: {
515
- project_path: string;
516
- docs_dir: string;
517
- };
518
- examples: ({
519
- input: string;
520
- project_path?: undefined;
521
- } | {
522
- project_path: string;
523
- input?: undefined;
524
- })[];
525
- };
526
- start_api: {
527
- description: string;
528
- params: {
529
- code: string;
530
- format: string;
531
- };
532
- examples: ({
533
- code: string;
534
- input?: undefined;
535
- } | {
536
- input: string;
537
- code?: undefined;
538
- })[];
539
- };
540
- start_doc: {
541
- description: string;
542
- params: {
543
- code: string;
544
- style: string;
545
- };
546
- examples: ({
547
- input: string;
548
- code?: undefined;
549
- } | {
550
- code: string;
551
- input?: undefined;
552
- })[];
553
- };
554
- gen_skill: {
555
- description: string;
556
- params: {
557
- scope: string;
558
- lang: string;
559
- };
560
- examples: ({
561
- input: string;
562
- scope?: undefined;
563
- lang?: undefined;
564
- } | {
565
- scope: string;
566
- lang: string;
567
- input?: undefined;
568
- })[];
569
- };
570
- };
571
- };