mcp-probe-kit 3.0.24 → 3.1.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 (130) hide show
  1. package/README.md +755 -779
  2. package/build/index.js +38 -40
  3. package/build/lib/agents-md-template.js +32 -32
  4. package/build/lib/skill-bridge.js +12 -12
  5. package/build/resources/index.d.ts +4 -0
  6. package/build/resources/index.js +4 -0
  7. package/build/resources/tool-params-guide.d.ts +571 -0
  8. package/build/resources/tool-params-guide.js +488 -0
  9. package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
  10. package/build/resources/ui-ux-data/metadata.json +30 -30
  11. package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
  12. package/build/resources/ui-ux-data/shadcn/components.json +997 -997
  13. package/build/resources/ui-ux-data/themes/presets.json +483 -483
  14. package/build/schemas/index.d.ts +0 -22
  15. package/build/schemas/memory-tools.d.ts +0 -22
  16. package/build/schemas/memory-tools.js +0 -14
  17. package/build/tools/analyze_project.d.ts +1 -0
  18. package/build/tools/analyze_project.js +527 -0
  19. package/build/tools/check_deps.d.ts +13 -0
  20. package/build/tools/check_deps.js +204 -0
  21. package/build/tools/code_insight.js +41 -41
  22. package/build/tools/convert.d.ts +13 -0
  23. package/build/tools/convert.js +599 -0
  24. package/build/tools/css_order.d.ts +13 -0
  25. package/build/tools/css_order.js +81 -0
  26. package/build/tools/debug.d.ts +13 -0
  27. package/build/tools/debug.js +131 -0
  28. package/build/tools/design2code.d.ts +20 -0
  29. package/build/tools/design2code.js +426 -0
  30. package/build/tools/detect_shell.d.ts +6 -0
  31. package/build/tools/detect_shell.js +151 -0
  32. package/build/tools/explain.d.ts +13 -0
  33. package/build/tools/explain.js +390 -0
  34. package/build/tools/fix.d.ts +13 -0
  35. package/build/tools/fix.js +303 -0
  36. package/build/tools/fix_bug.js +161 -161
  37. package/build/tools/gen_mock.d.ts +22 -0
  38. package/build/tools/gen_mock.js +269 -0
  39. package/build/tools/gen_skill.d.ts +13 -0
  40. package/build/tools/gen_skill.js +560 -0
  41. package/build/tools/genapi.d.ts +13 -0
  42. package/build/tools/genapi.js +174 -0
  43. package/build/tools/genchangelog.d.ts +13 -0
  44. package/build/tools/genchangelog.js +250 -0
  45. package/build/tools/gencommit.js +60 -60
  46. package/build/tools/gendoc.d.ts +13 -0
  47. package/build/tools/gendoc.js +232 -0
  48. package/build/tools/genpr.d.ts +13 -0
  49. package/build/tools/genpr.js +194 -0
  50. package/build/tools/genreadme.d.ts +13 -0
  51. package/build/tools/genreadme.js +626 -0
  52. package/build/tools/gensql.d.ts +13 -0
  53. package/build/tools/gensql.js +320 -0
  54. package/build/tools/genui.d.ts +13 -0
  55. package/build/tools/genui.js +803 -0
  56. package/build/tools/index.d.ts +0 -1
  57. package/build/tools/index.js +0 -1
  58. package/build/tools/init_component_catalog.d.ts +22 -0
  59. package/build/tools/init_component_catalog.js +809 -0
  60. package/build/tools/init_project_context.js +432 -432
  61. package/build/tools/init_setting.d.ts +13 -0
  62. package/build/tools/init_setting.js +47 -0
  63. package/build/tools/perf.d.ts +13 -0
  64. package/build/tools/perf.js +409 -0
  65. package/build/tools/render_ui.d.ts +22 -0
  66. package/build/tools/render_ui.js +384 -0
  67. package/build/tools/resolve_conflict.d.ts +13 -0
  68. package/build/tools/resolve_conflict.js +349 -0
  69. package/build/tools/security_scan.d.ts +22 -0
  70. package/build/tools/security_scan.js +323 -0
  71. package/build/tools/split.d.ts +13 -0
  72. package/build/tools/split.js +599 -0
  73. package/build/tools/start_api.d.ts +13 -0
  74. package/build/tools/start_api.js +193 -0
  75. package/build/tools/start_bugfix.js +233 -233
  76. package/build/tools/start_doc.d.ts +13 -0
  77. package/build/tools/start_doc.js +207 -0
  78. package/build/tools/start_feature.js +117 -117
  79. package/build/tools/start_product.js +1 -1
  80. package/build/tools/start_refactor.d.ts +13 -0
  81. package/build/tools/start_refactor.js +188 -0
  82. package/build/tools/start_release.d.ts +13 -0
  83. package/build/tools/start_release.js +167 -0
  84. package/build/tools/start_review.d.ts +13 -0
  85. package/build/tools/start_review.js +175 -0
  86. package/build/tools/start_ui.js +399 -399
  87. package/build/tools/ui-ux-tools.js +290 -290
  88. package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
  89. package/build/utils/themes-sync.js +8 -8
  90. package/package.json +81 -83
  91. package/build/lib/__tests__/memory-orchestration.unit.test.js +0 -88
  92. package/build/lib/__tests__/memory-payload.unit.test.js +0 -35
  93. package/build/lib/cursor-history-client.d.ts +0 -54
  94. package/build/lib/cursor-history-client.js +0 -240
  95. package/build/tools/__tests__/cursor-history.unit.test.d.ts +0 -1
  96. package/build/tools/__tests__/cursor-history.unit.test.js +0 -38
  97. package/build/tools/cursor_read_conversation.d.ts +0 -7
  98. package/build/tools/cursor_read_conversation.js +0 -36
  99. package/docs/.mcp-probe/layout.json +0 -11
  100. package/docs/CNAME +0 -1
  101. package/docs/assets/font/MaterialSymbolsOutlined.codepoints +0 -4102
  102. package/docs/assets/font/MaterialSymbolsOutlined.ttf +0 -0
  103. package/docs/assets/font/noto-sans-sc-400.ttf +0 -0
  104. package/docs/assets/font/noto-sans-sc-700.ttf +0 -0
  105. package/docs/assets/font/noto-sans-sc-900.ttf +0 -0
  106. package/docs/assets/js/i18n.js +0 -375
  107. package/docs/assets/js/tailwind.js +0 -83
  108. package/docs/assets/logo-zh.png +0 -0
  109. package/docs/assets/logo.png +0 -0
  110. package/docs/data/tools.js +0 -523
  111. package/docs/i18n/all-tools/en.json +0 -190
  112. package/docs/i18n/all-tools/ja.json +0 -171
  113. package/docs/i18n/all-tools/ko.json +0 -171
  114. package/docs/i18n/all-tools/zh-CN.json +0 -190
  115. package/docs/i18n/en.json +0 -626
  116. package/docs/i18n/ja.json +0 -602
  117. package/docs/i18n/ko.json +0 -602
  118. package/docs/i18n/zh-CN.json +0 -626
  119. package/docs/index.html +0 -327
  120. package/docs/memory-local-setup.md +0 -315
  121. package/docs/memory-local-setup.zh-CN.md +0 -283
  122. package/docs/pages/all-tools.html +0 -515
  123. package/docs/pages/examples.html +0 -717
  124. package/docs/pages/getting-started.html +0 -964
  125. package/docs/pages/migration.html +0 -308
  126. package/docs/specs/user-auth/design.md +0 -82
  127. package/docs/specs/user-auth/requirements.md +0 -52
  128. package/docs/specs/user-auth/tasks.md +0 -55
  129. /package/build/{lib/__tests__/memory-orchestration.unit.test.d.ts → utils/design-docs-generator.d.ts} +0 -0
  130. /package/build/{lib/__tests__/memory-payload.unit.test.d.ts → utils/design-docs-generator.js} +0 -0
@@ -0,0 +1,207 @@
1
+ import { parseArgs, getString } from "../utils/parseArgs.js";
2
+ /**
3
+ * start_doc 智能编排工具
4
+ *
5
+ * 场景:文档生成
6
+ * 编排:[检查上下文] → gendoc → genreadme → genapi
7
+ */
8
+ const PROMPT_TEMPLATE = `# 📖 文档生成编排指南
9
+
10
+ ## 🎯 目标
11
+
12
+ 为项目/代码生成完整的文档
13
+
14
+ **输入内容**:
15
+ \`\`\`
16
+ {code}
17
+ \`\`\`
18
+
19
+ ---
20
+
21
+ ## 📋 步骤 0: 项目上下文(自动处理)
22
+
23
+ **操作**:
24
+ 1. 检查 \`docs/project-context.md\` 是否存在
25
+ 2. **如果不存在**:
26
+ - 调用 \`init_project_context\` 工具
27
+ - 等待生成完成
28
+ 3. **读取** \`docs/project-context.md\` 内容
29
+ 4. 了解项目的文档风格、技术栈
30
+
31
+ ---
32
+
33
+ ## 📝 步骤 1: 生成代码注释
34
+
35
+ **调用工具**: \`gendoc\`
36
+
37
+ **参数**:
38
+ \`\`\`json
39
+ {
40
+ "code": "[代码内容]",
41
+ "style": "{style}",
42
+ "lang": "{lang}"
43
+ }
44
+ \`\`\`
45
+
46
+ **生成内容**:
47
+ - 函数/方法注释
48
+ - 参数说明
49
+ - 返回值说明
50
+ - 使用示例
51
+
52
+ **产出**: 带注释的代码
53
+
54
+ ---
55
+
56
+ ## 📄 步骤 2: 生成 README
57
+
58
+ **调用工具**: \`genreadme\`
59
+
60
+ **参数**:
61
+ \`\`\`json
62
+ {
63
+ "project_info": "[项目信息或代码]",
64
+ "style": "standard"
65
+ }
66
+ \`\`\`
67
+
68
+ **生成内容**:
69
+ - 项目简介
70
+ - 功能特性
71
+ - 安装使用
72
+ - API 说明
73
+ - 贡献指南
74
+
75
+ **产出**: README.md
76
+
77
+ ---
78
+
79
+ ## 🔌 步骤 3: 生成 API 文档(如适用)
80
+
81
+ **调用工具**: \`genapi\`
82
+
83
+ **参数**:
84
+ \`\`\`json
85
+ {
86
+ "code": "[API 相关代码]",
87
+ "format": "markdown"
88
+ }
89
+ \`\`\`
90
+
91
+ **生成内容**:
92
+ - API 端点列表
93
+ - 请求/响应格式
94
+ - 参数说明
95
+
96
+ **产出**: API 文档
97
+
98
+ ---
99
+
100
+ ## ✅ 完成检查
101
+
102
+ - [ ] 项目上下文已读取
103
+ - [ ] 代码注释已生成
104
+ - [ ] README 已生成
105
+ - [ ] API 文档已生成(如适用)
106
+
107
+ ---
108
+
109
+ ## 📊 输出汇总
110
+
111
+ 完成后,向用户提供:
112
+
113
+ ### 1. 代码注释
114
+
115
+ \`\`\`typescript
116
+ /**
117
+ * [函数描述]
118
+ * @param {Type} param - [参数说明]
119
+ * @returns {Type} [返回值说明]
120
+ * @example
121
+ * [使用示例]
122
+ */
123
+ \`\`\`
124
+
125
+ ### 2. README.md
126
+
127
+ \`\`\`markdown
128
+ # 项目名称
129
+
130
+ ## 简介
131
+ ...
132
+
133
+ ## 功能特性
134
+ ...
135
+
136
+ ## 快速开始
137
+ ...
138
+
139
+ ## API 文档
140
+ ...
141
+
142
+ ## 贡献指南
143
+ ...
144
+
145
+ ## 许可证
146
+ ...
147
+ \`\`\`
148
+
149
+ ### 3. API 文档(如适用)
150
+
151
+ \`\`\`markdown
152
+ ## API 参考
153
+ ...
154
+ \`\`\`
155
+
156
+ ### 4. 文档清单
157
+
158
+ | 文档 | 状态 | 位置 |
159
+ |------|------|------|
160
+ | 代码注释 | ✅ | 源代码中 |
161
+ | README | ✅ | README.md |
162
+ | API 文档 | ✅/- | docs/api.md |
163
+
164
+ ---
165
+
166
+ *编排工具: MCP Probe Kit - start_doc*
167
+ `;
168
+ export async function startDoc(args) {
169
+ try {
170
+ // 智能参数解析,支持自然语言输入
171
+ const parsedArgs = parseArgs(args, {
172
+ defaultValues: {
173
+ code: "",
174
+ project_info: "",
175
+ style: "jsdoc",
176
+ lang: "zh",
177
+ },
178
+ primaryField: "code", // 纯文本输入默认映射到 code 字段
179
+ fieldAliases: {
180
+ code: ["source", "src", "代码", "content"],
181
+ project_info: ["info", "project", "项目信息"],
182
+ style: ["format", "type", "风格", "注释风格"],
183
+ lang: ["language", "语言"],
184
+ },
185
+ });
186
+ const code = getString(parsedArgs.code) || getString(parsedArgs.project_info);
187
+ const style = getString(parsedArgs.style) || "jsdoc";
188
+ const lang = getString(parsedArgs.lang) || "zh";
189
+ if (!code) {
190
+ throw new Error("缺少必填参数: code 或 project_info");
191
+ }
192
+ const guide = PROMPT_TEMPLATE
193
+ .replace(/{code}/g, code)
194
+ .replace(/{style}/g, style)
195
+ .replace(/{lang}/g, lang);
196
+ return {
197
+ content: [{ type: "text", text: guide }],
198
+ };
199
+ }
200
+ catch (error) {
201
+ const errorMsg = error instanceof Error ? error.message : String(error);
202
+ return {
203
+ content: [{ type: "text", text: `❌ 编排执行失败: ${errorMsg}` }],
204
+ isError: true,
205
+ };
206
+ }
207
+ }
@@ -54,114 +54,114 @@ function extractFeatureInfo(input) {
54
54
  description: input,
55
55
  };
56
56
  }
57
- const PROMPT_TEMPLATE = `# 🚀 新功能开发编排(委托式)
58
-
59
- 本工具仅生成 **执行计划(steps)**。AI 需要按顺序调用对应工具并落盘文档。
60
-
61
- ## 🎯 目标
62
- 开发新功能:**{feature_name}**
63
- 功能描述:{description}
64
-
65
- ---
66
-
67
- ## ✅ 执行计划(按顺序)
68
-
69
- ### 0) 项目上下文(如缺失)
70
- **检查**:
71
- - \`{docs_dir}/project-context.md\`
72
- - \`{docs_dir}/graph-insights/latest.md\`
73
- - \`{docs_dir}/graph-insights/latest.json\`
74
- **缺失则调用**: \`init_project_context\`
75
- \`\`\`json
76
- { "docs_dir": "{docs_dir}", "project_root": "{project_root}" }
77
- \`\`\`
78
-
79
- ### 1) 生成功能规格
80
- **调用**: \`add_feature\`
81
- \`\`\`json
82
- {
83
- "feature_name": "{feature_name}",
84
- "description": "{description}",
85
- "docs_dir": "{docs_dir}",
86
- "template_profile": "{template_profile}"
87
- }
88
- \`\`\`
89
- **预期输出**:
90
- - \`{docs_dir}/specs/{feature_name}/requirements.md\`
91
- - \`{docs_dir}/specs/{feature_name}/design.md\`
92
- - \`{docs_dir}/specs/{feature_name}/tasks.md\`
93
-
94
- ### 2) 工作量估算
95
- **调用**: \`estimate\`
96
- \`\`\`json
97
- {
98
- "task_description": "实现 {feature_name} 功能:{description}",
99
- "code_context": "参考生成的 tasks.md 中的任务列表"
100
- }
101
- \`\`\`
102
-
103
- ---
104
-
105
- ## ✅ 输出汇总(执行完成后)
106
- 1. 规格文档位置: \`{docs_dir}/specs/{feature_name}/\`
107
- 2. 图谱入口: \`{docs_dir}/graph-insights/latest.md\`
108
- 3. 估算结果: 故事点 + 时间区间
109
- 4. 主要风险(如有)
110
- 5. 下一步: 按 tasks.md 开始开发
111
-
112
- ---
113
-
57
+ const PROMPT_TEMPLATE = `# 🚀 新功能开发编排(委托式)
58
+
59
+ 本工具仅生成 **执行计划(steps)**。AI 需要按顺序调用对应工具并落盘文档。
60
+
61
+ ## 🎯 目标
62
+ 开发新功能:**{feature_name}**
63
+ 功能描述:{description}
64
+
65
+ ---
66
+
67
+ ## ✅ 执行计划(按顺序)
68
+
69
+ ### 0) 项目上下文(如缺失)
70
+ **检查**:
71
+ - \`{docs_dir}/project-context.md\`
72
+ - \`{docs_dir}/graph-insights/latest.md\`
73
+ - \`{docs_dir}/graph-insights/latest.json\`
74
+ **缺失则调用**: \`init_project_context\`
75
+ \`\`\`json
76
+ { "docs_dir": "{docs_dir}", "project_root": "{project_root}" }
77
+ \`\`\`
78
+
79
+ ### 1) 生成功能规格
80
+ **调用**: \`add_feature\`
81
+ \`\`\`json
82
+ {
83
+ "feature_name": "{feature_name}",
84
+ "description": "{description}",
85
+ "docs_dir": "{docs_dir}",
86
+ "template_profile": "{template_profile}"
87
+ }
88
+ \`\`\`
89
+ **预期输出**:
90
+ - \`{docs_dir}/specs/{feature_name}/requirements.md\`
91
+ - \`{docs_dir}/specs/{feature_name}/design.md\`
92
+ - \`{docs_dir}/specs/{feature_name}/tasks.md\`
93
+
94
+ ### 2) 工作量估算
95
+ **调用**: \`estimate\`
96
+ \`\`\`json
97
+ {
98
+ "task_description": "实现 {feature_name} 功能:{description}",
99
+ "code_context": "参考生成的 tasks.md 中的任务列表"
100
+ }
101
+ \`\`\`
102
+
103
+ ---
104
+
105
+ ## ✅ 输出汇总(执行完成后)
106
+ 1. 规格文档位置: \`{docs_dir}/specs/{feature_name}/\`
107
+ 2. 图谱入口: \`{docs_dir}/graph-insights/latest.md\`
108
+ 3. 估算结果: 故事点 + 时间区间
109
+ 4. 主要风险(如有)
110
+ 5. 下一步: 按 tasks.md 开始开发
111
+
112
+ ---
113
+
114
114
  *编排工具: MCP Probe Kit - start_feature*`;
115
- const LOOP_PROMPT_TEMPLATE = `# 🧭 需求澄清与补全(Requirements Loop)
116
-
117
- 本模式用于**生产级稳健补全**:在不改变用户意图的前提下补齐关键要素,并输出可审计的结构化结果。
118
-
119
- ## 🎯 目标
120
- 开发新功能:**{feature_name}**
121
- 功能描述:{description}
122
-
123
- ## ✅ 规则
124
- 1. **不覆盖用户原始需求**
125
- 2. **补全内容必须标注来源**(User / Derived / Assumption)
126
- 3. **假设必须进入待确认列表**
127
- 4. **每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}**
128
-
129
- ---
130
-
131
- ## 🔁 执行步骤(每轮)
132
-
133
- ### 1) 生成待确认问题
134
- 使用 \`ask_user\` 提问,问题来源于“功能需求补全清单”(角色/触发/约束/异常/依赖等)。
135
-
136
- **调用示例**:
137
- \`\`\`json
138
- {
139
- "questions": [
140
- { "question": "目标用户或角色是谁?", "context": "角色定义", "required": true },
141
- { "question": "触发场景是什么?", "context": "业务场景", "required": true }
142
- ]
143
- }
144
- \`\`\`
145
-
146
- ### 2) 更新结构化输出
147
- 将回答补入 \`requirements\`,并标注来源:
148
- - User:用户明确回答
149
- - Derived:合理推导
150
- - Assumption:无法确认但补全(需确认)
151
-
152
- ### 3) 自检与结束
153
- 若 \`openQuestions\` 为空且无高风险假设,则结束 loop,进入规格生成与估算。
154
-
155
- ---
156
-
157
- ## ✅ 结束后继续
158
- 当满足结束条件时,执行:
159
- 1. 调用 \`add_feature\` 生成规格文档
160
- 2. 调用 \`estimate\` 进行工作量估算
161
-
162
- ---
163
-
164
- *编排工具: MCP Probe Kit - start_feature (requirements loop)*
115
+ const LOOP_PROMPT_TEMPLATE = `# 🧭 需求澄清与补全(Requirements Loop)
116
+
117
+ 本模式用于**生产级稳健补全**:在不改变用户意图的前提下补齐关键要素,并输出可审计的结构化结果。
118
+
119
+ ## 🎯 目标
120
+ 开发新功能:**{feature_name}**
121
+ 功能描述:{description}
122
+
123
+ ## ✅ 规则
124
+ 1. **不覆盖用户原始需求**
125
+ 2. **补全内容必须标注来源**(User / Derived / Assumption)
126
+ 3. **假设必须进入待确认列表**
127
+ 4. **每轮问题 ≤ {question_budget},假设 ≤ {assumption_cap}**
128
+
129
+ ---
130
+
131
+ ## 🔁 执行步骤(每轮)
132
+
133
+ ### 1) 生成待确认问题
134
+ 使用 \`ask_user\` 提问,问题来源于“功能需求补全清单”(角色/触发/约束/异常/依赖等)。
135
+
136
+ **调用示例**:
137
+ \`\`\`json
138
+ {
139
+ "questions": [
140
+ { "question": "目标用户或角色是谁?", "context": "角色定义", "required": true },
141
+ { "question": "触发场景是什么?", "context": "业务场景", "required": true }
142
+ ]
143
+ }
144
+ \`\`\`
145
+
146
+ ### 2) 更新结构化输出
147
+ 将回答补入 \`requirements\`,并标注来源:
148
+ - User:用户明确回答
149
+ - Derived:合理推导
150
+ - Assumption:无法确认但补全(需确认)
151
+
152
+ ### 3) 自检与结束
153
+ 若 \`openQuestions\` 为空且无高风险假设,则结束 loop,进入规格生成与估算。
154
+
155
+ ---
156
+
157
+ ## ✅ 结束后继续
158
+ 当满足结束条件时,执行:
159
+ 1. 调用 \`add_feature\` 生成规格文档
160
+ 2. 调用 \`estimate\` 进行工作量估算
161
+
162
+ ---
163
+
164
+ *编排工具: MCP Probe Kit - start_feature (requirements loop)*
165
165
  `;
166
166
  function buildOpenQuestions(questionBudget) {
167
167
  const base = [
@@ -278,18 +278,18 @@ export async function startFeature(args, context) {
278
278
  const graphStatusNote = graphContext.available
279
279
  ? `任务图谱收敛: 可用(${graphContext.mode})`
280
280
  : "任务图谱收敛: 已降级(自动回退)";
281
- const graphGuideSection = `
282
-
283
- ## 🧠 代码图谱上下文
284
- - 基线入口: ${graphDocs.latestMarkdownPath}
285
- - 基线结构化副本: ${graphDocs.latestJsonPath}
286
- - 基线状态: ${graphDocsMissing ? "缺失(需要补初始化)" : "可用"}
287
- - 任务级收敛: ${graphContext.available ? "可用" : "降级"}
288
- - 任务级摘要: ${graphContext.summary}
281
+ const graphGuideSection = `
282
+
283
+ ## 🧠 代码图谱上下文
284
+ - 基线入口: ${graphDocs.latestMarkdownPath}
285
+ - 基线结构化副本: ${graphDocs.latestJsonPath}
286
+ - 基线状态: ${graphDocsMissing ? "缺失(需要补初始化)" : "可用"}
287
+ - 任务级收敛: ${graphContext.available ? "可用" : "降级"}
288
+ - 任务级摘要: ${graphContext.summary}
289
289
  ${graphContext.highlights.length > 0
290
290
  ? `- 任务级线索:\n${graphContext.highlights.slice(0, 3).map((item) => ` - ${item}`).join("\n")}`
291
- : "- 任务级线索: 无"}
292
- - 使用方式: 先参考基线图谱,再使用本次任务图谱线索约束模块边界和改动范围
291
+ : "- 任务级线索: 无"}
292
+ - 使用方式: 先参考基线图谱,再使用本次任务图谱线索约束模块边界和改动范围
293
293
  `;
294
294
  const estimateCodeContext = [
295
295
  `参考生成的 ${docsDir}/specs/${featureName}/tasks.md`,
@@ -89,7 +89,7 @@ export async function startProduct(args, context) {
89
89
  ],
90
90
  notes: [buildSkillHeaderNote(skillBridge)],
91
91
  });
92
- const guidanceText = header + skillBridgeSection + `# 🚀 产品设计工作流执行指导
92
+ const guidanceText = header + skillBridgeSection + `# 🚀 产品设计工作流执行指导
93
93
 
94
94
  基于${requirementsSource},请按照以下步骤完成从需求到 HTML 原型的完整产品设计流程。
95
95
 
@@ -0,0 +1,13 @@
1
+ export declare function startRefactor(args: any): Promise<{
2
+ content: {
3
+ type: string;
4
+ text: string;
5
+ }[];
6
+ isError?: undefined;
7
+ } | {
8
+ content: {
9
+ type: string;
10
+ text: string;
11
+ }[];
12
+ isError: boolean;
13
+ }>;
@@ -0,0 +1,188 @@
1
+ import { parseArgs, getString } from "../utils/parseArgs.js";
2
+ /**
3
+ * start_refactor 智能编排工具
4
+ *
5
+ * 场景:代码重构
6
+ * 编排:[检查上下文] → code_review → refactor → gentest
7
+ */
8
+ const PROMPT_TEMPLATE = `# ♻️ 代码重构编排指南
9
+
10
+ ## 🎯 目标
11
+
12
+ 重构以下代码:
13
+
14
+ \`\`\`
15
+ {code}
16
+ \`\`\`
17
+
18
+ **重构目标**: {goal}
19
+
20
+ ---
21
+
22
+ ## 📋 步骤 0: 项目上下文(自动处理)
23
+
24
+ **操作**:
25
+ 1. 检查 \`docs/project-context.md\` 是否存在
26
+ 2. **如果不存在**:
27
+ - 调用 \`init_project_context\` 工具
28
+ - 等待生成完成
29
+ 3. **读取** \`docs/project-context.md\` 内容
30
+ 4. 了解项目的架构模式、编码规范
31
+ 5. 重构要符合项目规范
32
+
33
+ ---
34
+
35
+ ## 🔍 步骤 1: 代码审查(发现问题)
36
+
37
+ **调用工具**: \`code_review\`
38
+
39
+ **参数**:
40
+ \`\`\`json
41
+ {
42
+ "code": "[待重构代码]",
43
+ "focus": "quality"
44
+ }
45
+ \`\`\`
46
+
47
+ **目的**:
48
+ - 识别代码坏味道
49
+ - 发现可改进点
50
+ - 评估当前代码质量
51
+
52
+ **产出**: 问题清单
53
+
54
+ ---
55
+
56
+ ## ♻️ 步骤 2: 生成重构方案
57
+
58
+ **调用工具**: \`refactor\`
59
+
60
+ **参数**:
61
+ \`\`\`json
62
+ {
63
+ "code": "[待重构代码]",
64
+ "goal": "{goal}"
65
+ }
66
+ \`\`\`
67
+
68
+ **重构方向**:
69
+ - improve_readability: 提高可读性
70
+ - reduce_complexity: 降低复杂度
71
+ - extract_function: 提取函数
72
+ - remove_duplication: 消除重复
73
+ - improve_naming: 改进命名
74
+
75
+ **产出**: 重构后的代码 + 重构说明
76
+
77
+ ---
78
+
79
+ ## 🧪 步骤 3: 生成保护测试
80
+
81
+ **调用工具**: \`gentest\`
82
+
83
+ **参数**:
84
+ \`\`\`json
85
+ {
86
+ "code": "[重构后的代码]",
87
+ "framework": "[根据项目上下文选择]"
88
+ }
89
+ \`\`\`
90
+
91
+ **目的**:
92
+ - 确保重构不改变行为
93
+ - 为重构后的代码提供测试保护
94
+ - 覆盖主要功能和边界情况
95
+
96
+ **产出**: 测试代码
97
+
98
+ ---
99
+
100
+ ## ✅ 完成检查
101
+
102
+ - [ ] 项目上下文已读取
103
+ - [ ] 代码问题已识别
104
+ - [ ] 重构方案已生成
105
+ - [ ] 代码已重构
106
+ - [ ] 测试已添加
107
+ - [ ] 测试已通过
108
+
109
+ ---
110
+
111
+ ## 📝 输出汇总
112
+
113
+ 完成后,向用户提供:
114
+
115
+ ### 1. 重构前后对比
116
+
117
+ **重构前**:
118
+ \`\`\`
119
+ [原代码]
120
+ \`\`\`
121
+
122
+ **重构后**:
123
+ \`\`\`
124
+ [新代码]
125
+ \`\`\`
126
+
127
+ ### 2. 改进说明
128
+
129
+ | 改进项 | 说明 |
130
+ |--------|------|
131
+ | [改进1] | [说明] |
132
+ | [改进2] | [说明] |
133
+
134
+ ### 3. 测试覆盖
135
+
136
+ - 测试用例数: X
137
+ - 覆盖场景: [列出]
138
+
139
+ ### 4. 注意事项
140
+
141
+ - [重构可能影响的地方]
142
+ - [需要同步修改的地方]
143
+
144
+ ---
145
+
146
+ *编排工具: MCP Probe Kit - start_refactor*
147
+ `;
148
+ export async function startRefactor(args) {
149
+ try {
150
+ // 智能参数解析,支持自然语言输入
151
+ const parsedArgs = parseArgs(args, {
152
+ defaultValues: {
153
+ code: "",
154
+ goal: "improve_readability",
155
+ },
156
+ primaryField: "code", // 纯文本输入默认映射到 code 字段
157
+ fieldAliases: {
158
+ code: ["source", "src", "代码", "content"],
159
+ goal: ["target", "objective", "目标", "重构目标"],
160
+ },
161
+ });
162
+ const code = getString(parsedArgs.code);
163
+ const goal = getString(parsedArgs.goal) || "improve_readability";
164
+ if (!code) {
165
+ throw new Error("缺少必填参数: code(需要重构的代码)");
166
+ }
167
+ const goalDesc = {
168
+ improve_readability: "提高可读性",
169
+ reduce_complexity: "降低复杂度",
170
+ extract_function: "提取函数",
171
+ remove_duplication: "消除重复",
172
+ improve_naming: "改进命名",
173
+ };
174
+ const guide = PROMPT_TEMPLATE
175
+ .replace(/{code}/g, code)
176
+ .replace(/{goal}/g, goalDesc[goal] || goal);
177
+ return {
178
+ content: [{ type: "text", text: guide }],
179
+ };
180
+ }
181
+ catch (error) {
182
+ const errorMsg = error instanceof Error ? error.message : String(error);
183
+ return {
184
+ content: [{ type: "text", text: `❌ 编排执行失败: ${errorMsg}` }],
185
+ isError: true,
186
+ };
187
+ }
188
+ }
@@ -0,0 +1,13 @@
1
+ export declare function startRelease(args: any): Promise<{
2
+ content: {
3
+ type: string;
4
+ text: string;
5
+ }[];
6
+ isError?: undefined;
7
+ } | {
8
+ content: {
9
+ type: string;
10
+ text: string;
11
+ }[];
12
+ isError: boolean;
13
+ }>;