mcp-probe-kit 1.4.0 → 1.7.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 (68) hide show
  1. package/README.md +794 -100
  2. package/build/index.js +379 -1
  3. package/build/tools/add_feature.d.ts +33 -0
  4. package/build/tools/add_feature.js +464 -0
  5. package/build/tools/analyze_project.js +58 -58
  6. package/build/tools/css_order.js +55 -55
  7. package/build/tools/design2code.d.ts +29 -0
  8. package/build/tools/design2code.js +400 -0
  9. package/build/tools/estimate.d.ts +22 -0
  10. package/build/tools/estimate.js +225 -0
  11. package/build/tools/fix_bug.d.ts +24 -0
  12. package/build/tools/fix_bug.js +298 -0
  13. package/build/tools/gen_mock.d.ts +22 -0
  14. package/build/tools/gen_mock.js +250 -0
  15. package/build/tools/index.d.ts +15 -0
  16. package/build/tools/index.js +16 -0
  17. package/build/tools/init_project.js +121 -76
  18. package/build/tools/init_project_context.d.ts +26 -0
  19. package/build/tools/init_project_context.js +331 -0
  20. package/build/tools/security_scan.d.ts +22 -0
  21. package/build/tools/security_scan.js +282 -0
  22. package/build/tools/start_api.d.ts +19 -0
  23. package/build/tools/start_api.js +178 -0
  24. package/build/tools/start_bugfix.d.ts +19 -0
  25. package/build/tools/start_bugfix.js +127 -0
  26. package/build/tools/start_doc.d.ts +19 -0
  27. package/build/tools/start_doc.js +190 -0
  28. package/build/tools/start_feature.d.ts +19 -0
  29. package/build/tools/start_feature.js +122 -0
  30. package/build/tools/start_onboard.d.ts +19 -0
  31. package/build/tools/start_onboard.js +146 -0
  32. package/build/tools/start_refactor.d.ts +19 -0
  33. package/build/tools/start_refactor.js +175 -0
  34. package/build/tools/start_release.d.ts +19 -0
  35. package/build/tools/start_release.js +152 -0
  36. package/build/tools/start_review.d.ts +19 -0
  37. package/build/tools/start_review.js +162 -0
  38. package/docs/BEST_PRACTICES.md +726 -0
  39. package/docs/HOW_TO_TRIGGER.html +188 -0
  40. package/docs/HOW_TO_TRIGGER.md +971 -0
  41. package/docs/specs/add-feature/design.md +608 -0
  42. package/docs/specs/add-feature/requirements.md +175 -0
  43. package/docs/specs/add-feature/tasks.md +111 -0
  44. package/docs/specs/design2code/README.md +0 -0
  45. package/docs/specs/design2code/requirements.md +0 -0
  46. package/docs/specs/estimate/design.md +209 -0
  47. package/docs/specs/estimate/requirements.md +140 -0
  48. package/docs/specs/estimate/tasks.md +66 -0
  49. package/docs/specs/fix-bug/design.md +259 -0
  50. package/docs/specs/fix-bug/requirements.md +132 -0
  51. package/docs/specs/fix-bug/tasks.md +66 -0
  52. package/docs/specs/gen-mock/design.md +241 -0
  53. package/docs/specs/gen-mock/requirements.md +137 -0
  54. package/docs/specs/gen-mock/tasks.md +66 -0
  55. package/docs/specs/init-project-context/design.md +515 -0
  56. package/docs/specs/init-project-context/requirements.md +144 -0
  57. package/docs/specs/init-project-context/tasks.md +93 -0
  58. package/docs/specs/security-scan/design.md +152 -0
  59. package/docs/specs/security-scan/requirements.md +150 -0
  60. package/docs/specs/security-scan/tasks.md +67 -0
  61. package/docs/specs/start-bugfix/design.md +42 -0
  62. package/docs/specs/start-bugfix/requirements.md +70 -0
  63. package/docs/specs/start-bugfix/tasks.md +21 -0
  64. package/docs/specs/start-feature/design.md +41 -0
  65. package/docs/specs/start-feature/requirements.md +90 -0
  66. package/docs/specs/start-feature/tasks.md +21 -0
  67. package/docs/specs/start-review/requirements.md +0 -0
  68. package/package.json +3 -2
@@ -0,0 +1,29 @@
1
+ /**
2
+ * design2code - 设计稿转代码工具
3
+ *
4
+ * 功能:
5
+ * 1. 根据设计稿图片生成页面代码(支持图片 URL 或 base64)
6
+ * 2. 根据设计稿描述生成页面代码
7
+ * 3. 将 HTML 转换为 Vue/React 组件
8
+ * 4. 1:1 还原设计稿布局和样式
9
+ */
10
+ export declare function design2code(args: any): Promise<{
11
+ content: ({
12
+ type: string;
13
+ text: string;
14
+ data?: undefined;
15
+ mimeType?: undefined;
16
+ } | {
17
+ type: string;
18
+ data: any;
19
+ mimeType: any;
20
+ text?: undefined;
21
+ })[];
22
+ isError?: undefined;
23
+ } | {
24
+ content: {
25
+ type: string;
26
+ text: string;
27
+ }[];
28
+ isError: boolean;
29
+ }>;
@@ -0,0 +1,400 @@
1
+ /**
2
+ * design2code - 设计稿转代码工具
3
+ *
4
+ * 功能:
5
+ * 1. 根据设计稿图片生成页面代码(支持图片 URL 或 base64)
6
+ * 2. 根据设计稿描述生成页面代码
7
+ * 3. 将 HTML 转换为 Vue/React 组件
8
+ * 4. 1:1 还原设计稿布局和样式
9
+ */
10
+ const PROMPT_TEMPLATE = `# 🎨 设计稿转代码指南
11
+
12
+ ## 📋 任务信息
13
+
14
+ {task_info}
15
+
16
+ ---
17
+
18
+ ## 🎯 转换目标
19
+
20
+ **目标框架**: {framework}
21
+ **样式方案**: {style_solution}
22
+ **组件类型**: {component_type}
23
+
24
+ ---
25
+
26
+ ## 📐 设计还原要求
27
+
28
+ ### 1. 布局还原(Layout)
29
+ - ✅ 使用 Flexbox/Grid 实现响应式布局
30
+ - ✅ 严格按照设计稿的间距、对齐方式
31
+ - ✅ 保持元素的相对位置和层级关系
32
+ - ✅ 考虑不同屏幕尺寸的适配
33
+
34
+ ### 2. 样式还原(Styling)
35
+ - ✅ 精确还原颜色值(使用设计稿中的色值)
36
+ - ✅ 还原字体大小、行高、字重
37
+ - ✅ 还原圆角、阴影、边框等细节
38
+ - ✅ 还原动画和过渡效果
39
+
40
+ ### 3. 交互还原(Interaction)
41
+ - ✅ 实现 hover、active、focus 等状态
42
+ - ✅ 添加点击、滚动等交互效果
43
+ - ✅ 实现表单验证和反馈
44
+ - ✅ 添加加载状态和错误处理
45
+
46
+ ### 4. 响应式设计(Responsive)
47
+ - ✅ 移动端适配(< 768px)
48
+ - ✅ 平板适配(768px - 1024px)
49
+ - ✅ 桌面端适配(> 1024px)
50
+ - ✅ 使用媒体查询或响应式单位
51
+
52
+ ---
53
+
54
+ ## 🛠️ 技术实现
55
+
56
+ ### React 实现要点
57
+ \`\`\`typescript
58
+ // 1. 使用 TypeScript 定义 Props
59
+ interface ComponentProps {
60
+ // 定义属性类型
61
+ }
62
+
63
+ // 2. 使用 Hooks 管理状态
64
+ const [state, setState] = useState()
65
+
66
+ // 3. 使用 CSS Modules 或 Tailwind CSS
67
+ import styles from './Component.module.css'
68
+
69
+ // 4. 组件拆分原则
70
+ // - 单一职责
71
+ // - 可复用性
72
+ // - 性能优化(memo, useMemo, useCallback)
73
+ \`\`\`
74
+
75
+ ### Vue 3 实现要点
76
+ \`\`\`vue
77
+ <script setup lang="ts">
78
+ // 1. 使用 Composition API
79
+ import { ref, computed, onMounted } from 'vue'
80
+
81
+ // 2. 定义 Props 和 Emits
82
+ interface Props {
83
+ // 定义属性类型
84
+ }
85
+ const props = defineProps<Props>()
86
+ const emit = defineEmits<{
87
+ // 定义事件类型
88
+ }>()
89
+
90
+ // 3. 响应式状态管理
91
+ const state = ref()
92
+
93
+ // 4. 生命周期钩子
94
+ onMounted(() => {
95
+ // 初始化逻辑
96
+ })
97
+ </script>
98
+
99
+ <template>
100
+ <!-- 模板内容 -->
101
+ </template>
102
+
103
+ <style scoped>
104
+ /* 样式内容 */
105
+ </style>
106
+ \`\`\`
107
+
108
+ ---
109
+
110
+ ## 🎨 样式方案选择
111
+
112
+ ### Tailwind CSS(推荐)
113
+ \`\`\`jsx
114
+ <div className="flex items-center justify-between p-4 bg-white rounded-lg shadow-md">
115
+ <h2 className="text-xl font-bold text-gray-900">标题</h2>
116
+ <button className="px-4 py-2 bg-blue-500 text-white rounded hover:bg-blue-600">
117
+ 按钮
118
+ </button>
119
+ </div>
120
+ \`\`\`
121
+
122
+ ### CSS Modules
123
+ \`\`\`css
124
+ .container {
125
+ display: flex;
126
+ align-items: center;
127
+ justify-content: space-between;
128
+ padding: 1rem;
129
+ background: white;
130
+ border-radius: 0.5rem;
131
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
132
+ }
133
+ \`\`\`
134
+
135
+ ### Styled Components
136
+ \`\`\`typescript
137
+ const Container = styled.div\`
138
+ display: flex;
139
+ align-items: center;
140
+ justify-content: space-between;
141
+ padding: 1rem;
142
+ background: white;
143
+ border-radius: 0.5rem;
144
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
145
+ \`;
146
+ \`\`\`
147
+
148
+ ---
149
+
150
+ ## 📦 组件结构
151
+
152
+ ### 页面级组件(Page Component)
153
+ \`\`\`
154
+ src/pages/
155
+ ├── HomePage/
156
+ │ ├── index.tsx # 页面主文件
157
+ │ ├── components/ # 页面专用组件
158
+ │ │ ├── Header.tsx
159
+ │ │ ├── Hero.tsx
160
+ │ │ └── Footer.tsx
161
+ │ ├── hooks/ # 页面专用 Hooks
162
+ │ │ └── usePageData.ts
163
+ │ ├── types.ts # 类型定义
164
+ │ └── styles.module.css # 样式文件
165
+ \`\`\`
166
+
167
+ ### 通用组件(Common Component)
168
+ \`\`\`
169
+ src/components/
170
+ ├── Button/
171
+ │ ├── index.tsx
172
+ │ ├── Button.test.tsx
173
+ │ └── styles.module.css
174
+ ├── Input/
175
+ └── Card/
176
+ \`\`\`
177
+
178
+ ---
179
+
180
+ ## ✅ 代码质量要求
181
+
182
+ ### 1. TypeScript 类型安全
183
+ - ✅ 所有 Props 都有类型定义
184
+ - ✅ 事件处理函数有类型注解
185
+ - ✅ API 响应有类型定义
186
+
187
+ ### 2. 可访问性(A11y)
188
+ - ✅ 使用语义化 HTML 标签
189
+ - ✅ 添加 ARIA 属性
190
+ - ✅ 键盘导航支持
191
+ - ✅ 屏幕阅读器友好
192
+
193
+ ### 3. 性能优化
194
+ - ✅ 图片懒加载
195
+ - ✅ 代码分割
196
+ - ✅ 避免不必要的重渲染
197
+ - ✅ 使用虚拟滚动(长列表)
198
+
199
+ ### 4. 代码规范
200
+ - ✅ 遵循 ESLint 规则
201
+ - ✅ 统一的命名规范
202
+ - ✅ 添加必要的注释
203
+ - ✅ 组件拆分合理
204
+
205
+ ---
206
+
207
+ ## 📝 输出内容
208
+
209
+ 请生成以下内容:
210
+
211
+ ### 1. 组件代码
212
+ - 完整的组件实现
213
+ - TypeScript 类型定义
214
+ - 样式文件
215
+
216
+ ### 2. 使用示例
217
+ - 组件的使用方法
218
+ - Props 说明
219
+ - 常见场景示例
220
+
221
+ ### 3. 注意事项
222
+ - 浏览器兼容性
223
+ - 性能优化建议
224
+ - 可能的改进方向
225
+
226
+ ---
227
+
228
+ ## 🎯 开始转换
229
+
230
+ {conversion_guide}
231
+
232
+ ---
233
+
234
+ *工具: MCP Probe Kit - design2code*
235
+ `;
236
+ export async function design2code(args) {
237
+ try {
238
+ const input = args?.input;
239
+ const framework = args?.framework || "vue";
240
+ const styleSolution = args?.style_solution || "tailwind";
241
+ const componentType = args?.component_type || "page";
242
+ if (!input) {
243
+ throw new Error("缺少必填参数: input(设计稿图片 URL/base64、设计稿描述或 HTML 代码)");
244
+ }
245
+ // 判断输入类型
246
+ const isImageUrl = /^https?:\/\/.+\.(jpg|jpeg|png|gif|webp|svg)/i.test(input.trim());
247
+ const isBase64Image = /^data:image\/(png|jpeg|jpg|gif|webp|svg);base64,/.test(input.trim());
248
+ const isHTML = input.trim().startsWith("<");
249
+ let taskInfo = "";
250
+ let conversionGuide = "";
251
+ if (isImageUrl || isBase64Image) {
252
+ // 图片转换模式
253
+ const imageType = isImageUrl ? "图片 URL" : "Base64 图片";
254
+ taskInfo = `**输入类型**: 设计稿图片\n**图片来源**: ${imageType}\n${isImageUrl ? `**图片地址**: ${input}` : "**图片**: [Base64 编码图片]"}`;
255
+ conversionGuide = `### 设计稿图片分析步骤
256
+
257
+ 1. **视觉分析**
258
+ - 仔细观察设计稿的整体布局
259
+ - 识别页面的主要区域(导航栏、内容区、侧边栏、底部等)
260
+ - 分析颜色方案、字体、间距等设计规范
261
+ - 识别重复使用的设计模式和组件
262
+
263
+ 2. **元素识别**
264
+ - 标题、段落、按钮、输入框等基础元素
265
+ - 卡片、列表、表格等容器组件
266
+ - 图标、图片、背景等视觉元素
267
+ - 导航菜单、下拉框、弹窗等交互组件
268
+
269
+ 3. **布局还原**
270
+ - 使用 Flexbox/Grid 实现主体布局
271
+ - 精确测量元素间距和尺寸
272
+ - 实现响应式断点设计
273
+ - 保持视觉层次和对齐关系
274
+
275
+ 4. **样式还原**
276
+ - 提取颜色值(主色、辅助色、文字色、背景色)
277
+ - 还原字体大小、行高、字重
278
+ - 实现圆角、阴影、边框等细节
279
+ - 添加 hover、active 等交互状态
280
+
281
+ 5. **组件化开发**
282
+ - 将设计稿拆分为可复用组件
283
+ - 使用 ${framework === "vue" ? "Vue 3 Composition API" : "React Hooks"}
284
+ - 添加 TypeScript 类型定义
285
+ - 实现组件间的数据传递
286
+
287
+ 6. **交互实现**
288
+ - 添加点击、滚动等事件处理
289
+ - 实现表单验证和提交
290
+ - 添加加载状态和错误处理
291
+ - 实现动画和过渡效果
292
+
293
+ 7. **响应式适配**
294
+ - 移动端布局调整(< 768px)
295
+ - 平板端优化(768px - 1024px)
296
+ - 桌面端完整展示(> 1024px)
297
+ - 使用媒体查询或响应式单位
298
+
299
+ **注意事项**:
300
+ - 如果图片中有文字,请尽量识别并使用真实文本而非图片
301
+ - 图标优先使用 SVG 或图标库(如 Heroicons、Lucide)
302
+ - 图片资源使用占位符,并注明实际使用时需要替换
303
+ - 保持代码的可维护性和可扩展性`;
304
+ }
305
+ else if (isHTML) {
306
+ // HTML 转换模式
307
+ taskInfo = `**输入类型**: HTML 代码转换\n**源代码**:\n\`\`\`html\n${input}\n\`\`\``;
308
+ conversionGuide = `### HTML 转换步骤
309
+
310
+ 1. **分析 HTML 结构**
311
+ - 识别语义化标签
312
+ - 提取 class 和 id
313
+ - 分析嵌套层级
314
+
315
+ 2. **转换为组件**
316
+ - 将 HTML 转换为 ${framework === "vue" ? "Vue 模板" : "JSX"}
317
+ - 提取可复用的子组件
318
+ - 添加 TypeScript 类型
319
+
320
+ 3. **样式迁移**
321
+ - 将内联样式转换为 ${styleSolution}
322
+ - 提取公共样式变量
323
+ - 优化样式结构
324
+
325
+ 4. **添加交互逻辑**
326
+ - 识别需要状态管理的部分
327
+ - 添加事件处理
328
+ - 实现表单验证
329
+
330
+ 5. **优化和完善**
331
+ - 添加响应式设计
332
+ - 优化性能
333
+ - 添加可访问性支持`;
334
+ }
335
+ else {
336
+ // 设计稿描述模式
337
+ taskInfo = `**输入类型**: 设计稿描述\n**设计需求**:\n${input}`;
338
+ conversionGuide = `### 设计稿实现步骤
339
+
340
+ 1. **理解设计需求**
341
+ - 分析页面布局结构
342
+ - 识别设计元素和组件
343
+ - 确定交互流程
344
+
345
+ 2. **规划组件结构**
346
+ - 划分页面区域(Header、Main、Footer)
347
+ - 识别可复用组件
348
+ - 设计组件层级关系
349
+
350
+ 3. **实现布局**
351
+ - 使用 Flexbox/Grid 布局
352
+ - 实现响应式设计
353
+ - 确保跨浏览器兼容
354
+
355
+ 4. **实现样式**
356
+ - 还原设计稿的视觉效果
357
+ - 使用 ${styleSolution} 编写样式
358
+ - 添加动画和过渡效果
359
+
360
+ 5. **实现交互**
361
+ - 添加状态管理
362
+ - 实现用户交互
363
+ - 添加数据获取逻辑
364
+
365
+ 6. **测试和优化**
366
+ - 测试不同屏幕尺寸
367
+ - 优化性能
368
+ - 确保可访问性`;
369
+ }
370
+ const guide = PROMPT_TEMPLATE
371
+ .replace(/{task_info}/g, taskInfo)
372
+ .replace(/{framework}/g, framework === "vue" ? "Vue 3 + TypeScript" : "React + TypeScript")
373
+ .replace(/{style_solution}/g, styleSolution === "tailwind" ? "Tailwind CSS" : styleSolution === "css-modules" ? "CSS Modules" : "Styled Components")
374
+ .replace(/{component_type}/g, componentType === "page" ? "页面组件" : "通用组件")
375
+ .replace(/{conversion_guide}/g, conversionGuide);
376
+ // 如果是图片输入,添加图片内容
377
+ if (isImageUrl || isBase64Image) {
378
+ return {
379
+ content: [
380
+ { type: "text", text: guide },
381
+ {
382
+ type: "image",
383
+ data: isBase64Image ? input.split(',')[1] : input,
384
+ mimeType: isBase64Image ? input.match(/data:image\/([^;]+);/)?.[1] || "png" : "image/png"
385
+ }
386
+ ],
387
+ };
388
+ }
389
+ return {
390
+ content: [{ type: "text", text: guide }],
391
+ };
392
+ }
393
+ catch (error) {
394
+ const errorMsg = error instanceof Error ? error.message : String(error);
395
+ return {
396
+ content: [{ type: "text", text: `❌ 错误: ${errorMsg}` }],
397
+ isError: true,
398
+ };
399
+ }
400
+ }
@@ -0,0 +1,22 @@
1
+ /**
2
+ * estimate 工具
3
+ *
4
+ * 功能:评估开发任务的工作量
5
+ * 模式:指令生成器模式 - 返回估算指南,由 AI 执行实际分析
6
+ */
7
+ /**
8
+ * estimate 工具实现
9
+ */
10
+ export declare function estimate(args: any): Promise<{
11
+ content: {
12
+ type: string;
13
+ text: string;
14
+ }[];
15
+ isError?: undefined;
16
+ } | {
17
+ content: {
18
+ type: string;
19
+ text: string;
20
+ }[];
21
+ isError: boolean;
22
+ }>;
@@ -0,0 +1,225 @@
1
+ /**
2
+ * estimate 工具
3
+ *
4
+ * 功能:评估开发任务的工作量
5
+ * 模式:指令生成器模式 - 返回估算指南,由 AI 执行实际分析
6
+ */
7
+ const PROMPT_TEMPLATE = `# 工作量估算指南
8
+
9
+ ## 🎯 估算目标
10
+
11
+ **任务描述**:
12
+ {task_description}
13
+
14
+ **上下文信息**:
15
+ - 团队规模: {team_size} 人
16
+ - 经验水平: {experience_level}
17
+
18
+ {code_context_section}
19
+
20
+ ---
21
+
22
+ ## 📋 估算步骤
23
+
24
+ ### 步骤 1: 任务分解
25
+
26
+ 将任务分解为以下标准活动:
27
+
28
+ | 活动 | 说明 | 占比参考 |
29
+ |------|------|----------|
30
+ | 需求理解 | 理解需求、澄清疑问 | 5-10% |
31
+ | 设计 | 技术方案设计 | 10-15% |
32
+ | 编码 | 核心代码实现 | 40-50% |
33
+ | 单元测试 | 编写测试用例 | 15-20% |
34
+ | 代码审查 | CR 和修改 | 5-10% |
35
+ | 集成测试 | 联调和修复 | 10-15% |
36
+ | 文档 | 更新文档 | 5% |
37
+
38
+ ### 步骤 2: 复杂度评估
39
+
40
+ 对每个维度打分(1-5):
41
+
42
+ #### 代码量评估
43
+ | 等级 | 行数 | 说明 |
44
+ |------|------|------|
45
+ | 1 | < 50 行 | 微小改动 |
46
+ | 2 | 50-200 行 | 小改动 |
47
+ | 3 | 200-500 行 | 中等改动 |
48
+ | 4 | 500-1000 行 | 较大改动 |
49
+ | 5 | > 1000 行 | 大型改动 |
50
+
51
+ #### 技术难度评估
52
+ | 等级 | 说明 |
53
+ |------|------|
54
+ | 1 | 简单 CRUD、配置修改 |
55
+ | 2 | 常规业务逻辑 |
56
+ | 3 | 复杂算法、第三方集成 |
57
+ | 4 | 新技术栈、架构变更 |
58
+ | 5 | 核心系统重构 |
59
+
60
+ #### 依赖复杂度评估
61
+ | 等级 | 说明 |
62
+ |------|------|
63
+ | 1 | 无外部依赖,独立模块 |
64
+ | 2 | 依赖 1-2 个内部模块 |
65
+ | 3 | 依赖 3-5 个模块 |
66
+ | 4 | 跨团队协作 |
67
+ | 5 | 外部系统集成 |
68
+
69
+ #### 测试复杂度评估
70
+ | 等级 | 说明 |
71
+ |------|------|
72
+ | 1 | 简单单测即可 |
73
+ | 2 | 常规单测 + 少量集成测试 |
74
+ | 3 | 需要 Mock、集成测试 |
75
+ | 4 | 需要 E2E 测试 |
76
+ | 5 | 需要性能/安全测试 |
77
+
78
+ ### 步骤 3: 时间估算
79
+
80
+ 使用三点估算法(PERT):
81
+
82
+ | 场景 | 时间 | 说明 |
83
+ |------|------|------|
84
+ | 乐观 (O) | ?h | 一切顺利,无阻塞 |
85
+ | 正常 (M) | ?h | 预期情况,少量问题 |
86
+ | 悲观 (P) | ?h | 遇到较多问题 |
87
+
88
+ **期望时间** = (O + 4×M + P) ÷ 6 = ?h
89
+
90
+ ### 步骤 4: 故事点映射
91
+
92
+ | 故事点 | 时间范围 | 适用场景 |
93
+ |--------|----------|----------|
94
+ | 1 | 1-2 小时 | 微小改动、配置修改 |
95
+ | 2 | 2-4 小时 | 小功能、Bug 修复 |
96
+ | 3 | 4-8 小时 | 中等功能 |
97
+ | 5 | 1-2 天 | 较大功能 |
98
+ | 8 | 2-3 天 | 大功能 |
99
+ | 13 | 3-5 天 | 需要拆分的大任务 |
100
+
101
+ ### 步骤 5: 风险识别
102
+
103
+ 识别可能影响估算的风险因素:
104
+
105
+ | 风险类型 | 检查项 |
106
+ |----------|--------|
107
+ | 技术风险 | 新技术?复杂算法?不熟悉的领域? |
108
+ | 依赖风险 | 外部依赖?团队协作?接口不稳定? |
109
+ | 需求风险 | 需求明确?可能变更?边界清晰? |
110
+ | 资源风险 | 人员可用?环境就绪? |
111
+
112
+ ---
113
+
114
+ ## 📊 输出模板
115
+
116
+ ### 估算结果
117
+
118
+ | 项目 | 结果 |
119
+ |------|------|
120
+ | **故事点** | X 点 |
121
+ | **预估时间** | X-X 小时/天 |
122
+ | **置信度** | 高 / 中 / 低 |
123
+
124
+ ### 复杂度分析
125
+
126
+ | 维度 | 评分 | 说明 |
127
+ |------|------|------|
128
+ | 代码量 | X/5 | [说明] |
129
+ | 技术难度 | X/5 | [说明] |
130
+ | 依赖复杂度 | X/5 | [说明] |
131
+ | 测试复杂度 | X/5 | [说明] |
132
+ | **综合** | X/5 | |
133
+
134
+ ### 时间分解
135
+
136
+ | 活动 | 时间 | 说明 |
137
+ |------|------|------|
138
+ | 需求理解 | Xh | |
139
+ | 设计 | Xh | |
140
+ | 编码 | Xh | |
141
+ | 单元测试 | Xh | |
142
+ | 代码审查 | Xh | |
143
+ | 集成测试 | Xh | |
144
+ | 文档 | Xh | |
145
+ | **合计** | Xh | |
146
+
147
+ ### 风险因素
148
+
149
+ | 风险 | 影响 | 缓解措施 |
150
+ |------|------|----------|
151
+ | [风险描述] | 高/中/低 | [措施] |
152
+
153
+ ### 任务拆分建议
154
+
155
+ > 如果估算超过 8 小时(5 故事点),建议拆分:
156
+
157
+ | 子任务 | 估算 | 说明 |
158
+ |--------|------|------|
159
+ | [子任务1] | Xh | |
160
+ | [子任务2] | Xh | |
161
+
162
+ ### 置信度说明
163
+
164
+ **置信度**: [高/中/低]
165
+
166
+ **影响因素**:
167
+ - [因素1]
168
+ - [因素2]
169
+
170
+ **建议**: [如果置信度低,建议补充什么信息]
171
+
172
+ ---
173
+
174
+ ## ✅ 估算检查清单
175
+
176
+ - [ ] 任务已分解为标准活动
177
+ - [ ] 复杂度已评估
178
+ - [ ] 三点估算已完成
179
+ - [ ] 故事点已确定
180
+ - [ ] 风险已识别
181
+ - [ ] 置信度已评估
182
+ - [ ] 大任务已建议拆分
183
+
184
+ ---
185
+
186
+ *指南版本: 1.0.0*
187
+ *工具: MCP Probe Kit - estimate*
188
+ `;
189
+ /**
190
+ * estimate 工具实现
191
+ */
192
+ export async function estimate(args) {
193
+ try {
194
+ const taskDescription = args?.task_description;
195
+ if (!taskDescription) {
196
+ throw new Error("缺少必填参数: task_description(任务描述)");
197
+ }
198
+ const codeContext = args?.code_context || "";
199
+ const teamSize = args?.team_size || 1;
200
+ const experienceLevel = args?.experience_level || "mid";
201
+ const expLevelMap = {
202
+ junior: "初级(1-2年经验)",
203
+ mid: "中级(3-5年经验)",
204
+ senior: "高级(5年以上经验)",
205
+ };
206
+ const codeContextSection = codeContext
207
+ ? `**相关代码/文件**:\n\`\`\`\n${codeContext}\n\`\`\``
208
+ : "";
209
+ const guide = PROMPT_TEMPLATE
210
+ .replace(/{task_description}/g, taskDescription)
211
+ .replace(/{team_size}/g, String(teamSize))
212
+ .replace(/{experience_level}/g, expLevelMap[experienceLevel] || experienceLevel)
213
+ .replace(/{code_context_section}/g, codeContextSection);
214
+ return {
215
+ content: [{ type: "text", text: guide }],
216
+ };
217
+ }
218
+ catch (error) {
219
+ const errorMsg = error instanceof Error ? error.message : String(error);
220
+ return {
221
+ content: [{ type: "text", text: `❌ 工作量估算失败: ${errorMsg}` }],
222
+ isError: true,
223
+ };
224
+ }
225
+ }
@@ -0,0 +1,24 @@
1
+ /**
2
+ * fix_bug 工具
3
+ *
4
+ * 功能:指导完整的 Bug 修复流程
5
+ * 模式:指令生成器模式 - 返回详细的修复指南,由 AI 执行实际操作
6
+ *
7
+ * 流程:问题定位 → 原因分析 → 修复方案 → 验证测试
8
+ */
9
+ /**
10
+ * fix_bug 工具实现
11
+ */
12
+ export declare function fixBug(args: any): Promise<{
13
+ content: {
14
+ type: string;
15
+ text: string;
16
+ }[];
17
+ isError?: undefined;
18
+ } | {
19
+ content: {
20
+ type: string;
21
+ text: string;
22
+ }[];
23
+ isError: boolean;
24
+ }>;