mcp-probe-kit 1.8.0 → 1.8.1
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/README.md +44 -2
- package/docs/BEST_PRACTICES.md +9 -0
- package/docs/HOW_TO_TRIGGER.html +68 -69
- package/docs/HOW_TO_TRIGGER.md +41 -2
- package/package.json +1 -1
- package/docs/specs/add-feature/design.md +0 -608
- package/docs/specs/add-feature/requirements.md +0 -175
- package/docs/specs/add-feature/tasks.md +0 -111
- package/docs/specs/design2code/README.md +0 -0
- package/docs/specs/design2code/requirements.md +0 -0
- package/docs/specs/estimate/design.md +0 -209
- package/docs/specs/estimate/requirements.md +0 -140
- package/docs/specs/estimate/tasks.md +0 -66
- package/docs/specs/fix-bug/design.md +0 -259
- package/docs/specs/fix-bug/requirements.md +0 -132
- package/docs/specs/fix-bug/tasks.md +0 -66
- package/docs/specs/gen-mock/design.md +0 -241
- package/docs/specs/gen-mock/requirements.md +0 -137
- package/docs/specs/gen-mock/tasks.md +0 -66
- package/docs/specs/init-project-context/design.md +0 -515
- package/docs/specs/init-project-context/requirements.md +0 -144
- package/docs/specs/init-project-context/tasks.md +0 -93
- package/docs/specs/security-scan/design.md +0 -152
- package/docs/specs/security-scan/requirements.md +0 -150
- package/docs/specs/security-scan/tasks.md +0 -67
- package/docs/specs/start-bugfix/design.md +0 -42
- package/docs/specs/start-bugfix/requirements.md +0 -70
- package/docs/specs/start-bugfix/tasks.md +0 -21
- package/docs/specs/start-feature/design.md +0 -41
- package/docs/specs/start-feature/requirements.md +0 -90
- package/docs/specs/start-feature/tasks.md +0 -21
- package/docs/specs/start-review/requirements.md +0 -0
|
@@ -1,608 +0,0 @@
|
|
|
1
|
-
# 设计文档:add_feature
|
|
2
|
-
|
|
3
|
-
## 概述
|
|
4
|
-
|
|
5
|
-
`add_feature` 工具采用"指令生成器"模式,返回详细的功能规格生成指南,由 AI 执行实际的文档生成工作。
|
|
6
|
-
|
|
7
|
-
## 设计原则
|
|
8
|
-
|
|
9
|
-
### 1. 指令生成器模式
|
|
10
|
-
- 工具不直接操作文件系统
|
|
11
|
-
- 返回结构化的指令文本
|
|
12
|
-
- AI 根据指令执行操作
|
|
13
|
-
|
|
14
|
-
### 2. Spec-Driven Development
|
|
15
|
-
- 需求先行(requirements.md)
|
|
16
|
-
- 设计驱动(design.md)
|
|
17
|
-
- 任务分解(tasks.md)
|
|
18
|
-
|
|
19
|
-
### 3. 提示词设计原则
|
|
20
|
-
- **清晰性**: 每个步骤都有明确的目标和操作
|
|
21
|
-
- **结构化**: 使用 Markdown 格式,层级分明
|
|
22
|
-
- **通用性**: 兼容多种 AI 模型
|
|
23
|
-
- **可执行性**: 每个步骤都是可操作的
|
|
24
|
-
|
|
25
|
-
---
|
|
26
|
-
|
|
27
|
-
## 架构设计
|
|
28
|
-
|
|
29
|
-
### 工具结构
|
|
30
|
-
|
|
31
|
-
```
|
|
32
|
-
src/tools/add_feature.ts
|
|
33
|
-
├── addFeature(args) # 主函数
|
|
34
|
-
│ ├── 验证参数
|
|
35
|
-
│ ├── 构建指南文本
|
|
36
|
-
│ └── 返回结果
|
|
37
|
-
└── 常量定义
|
|
38
|
-
├── DEFAULT_DOCS_DIR # 默认文档目录
|
|
39
|
-
└── PROMPT_TEMPLATE # 提示词模板
|
|
40
|
-
```
|
|
41
|
-
|
|
42
|
-
### 数据流
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
用户调用工具
|
|
46
|
-
↓
|
|
47
|
-
验证参数(feature_name, description)
|
|
48
|
-
↓
|
|
49
|
-
构建指南文本(替换占位符)
|
|
50
|
-
↓
|
|
51
|
-
返回 MCP 响应
|
|
52
|
-
↓
|
|
53
|
-
AI 执行指南中的步骤
|
|
54
|
-
↓
|
|
55
|
-
生成 docs/specs/{feature_name}/ 下的三个文件
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## 提示词模板设计
|
|
61
|
-
|
|
62
|
-
### 模板结构
|
|
63
|
-
|
|
64
|
-
```markdown
|
|
65
|
-
# 添加新功能指南
|
|
66
|
-
|
|
67
|
-
## 🎯 任务目标
|
|
68
|
-
[明确说明要完成的任务]
|
|
69
|
-
|
|
70
|
-
## 📋 前置检查
|
|
71
|
-
[检查项目上下文是否存在]
|
|
72
|
-
|
|
73
|
-
## 📝 生成 requirements.md
|
|
74
|
-
[需求文档模板]
|
|
75
|
-
|
|
76
|
-
## 📐 生成 design.md
|
|
77
|
-
[设计文档模板]
|
|
78
|
-
|
|
79
|
-
## 📋 生成 tasks.md
|
|
80
|
-
[任务清单模板]
|
|
81
|
-
|
|
82
|
-
## ✅ 检查清单
|
|
83
|
-
[质量验证清单]
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## 完整提示词模板
|
|
89
|
-
|
|
90
|
-
```typescript
|
|
91
|
-
const PROMPT_TEMPLATE = `
|
|
92
|
-
# 添加新功能指南
|
|
93
|
-
|
|
94
|
-
## 🎯 任务目标
|
|
95
|
-
|
|
96
|
-
为项目添加新功能:**{feature_name}**
|
|
97
|
-
|
|
98
|
-
**功能描述**: {description}
|
|
99
|
-
|
|
100
|
-
**输出文件**:
|
|
101
|
-
- \`{docs_dir}/specs/{feature_name}/requirements.md\` - 需求文档
|
|
102
|
-
- \`{docs_dir}/specs/{feature_name}/design.md\` - 设计文档
|
|
103
|
-
- \`{docs_dir}/specs/{feature_name}/tasks.md\` - 任务清单
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## 📋 前置检查
|
|
108
|
-
|
|
109
|
-
### 步骤 1: 检查项目上下文
|
|
110
|
-
|
|
111
|
-
**操作**:
|
|
112
|
-
1. 检查文件 \`{docs_dir}/project-context.md\` 是否存在
|
|
113
|
-
2. 如果存在:
|
|
114
|
-
- 读取文件内容
|
|
115
|
-
- 提取技术栈、架构模式、编码规范等信息
|
|
116
|
-
- 在后续文档生成中参考这些信息
|
|
117
|
-
3. 如果不存在:
|
|
118
|
-
- 显示提示:"建议先运行 init_project_context 工具生成项目上下文"
|
|
119
|
-
- 可以继续生成文档,但内容会更通用
|
|
120
|
-
|
|
121
|
-
### 步骤 2: 创建目录
|
|
122
|
-
|
|
123
|
-
**操作**:
|
|
124
|
-
1. 创建目录 \`{docs_dir}/specs/{feature_name}/\`
|
|
125
|
-
2. 如果目录已存在,询问用户是否覆盖
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## 📝 生成 requirements.md
|
|
130
|
-
|
|
131
|
-
在 \`{docs_dir}/specs/{feature_name}/requirements.md\` 中生成以下内容:
|
|
132
|
-
|
|
133
|
-
\`\`\`markdown
|
|
134
|
-
# 需求文档:{feature_name}
|
|
135
|
-
|
|
136
|
-
## 功能概述
|
|
137
|
-
|
|
138
|
-
{description}
|
|
139
|
-
|
|
140
|
-
## 术语定义
|
|
141
|
-
|
|
142
|
-
- **[术语1]**: [定义]
|
|
143
|
-
- **[术语2]**: [定义]
|
|
144
|
-
|
|
145
|
-
---
|
|
146
|
-
|
|
147
|
-
## 需求列表
|
|
148
|
-
|
|
149
|
-
### 需求 1: [需求标题]
|
|
150
|
-
|
|
151
|
-
**用户故事:** 作为 [角色],我想要 [功能],以便 [目标]。
|
|
152
|
-
|
|
153
|
-
#### 验收标准
|
|
154
|
-
|
|
155
|
-
1. WHEN [触发条件] THEN 系统 SHALL [响应]
|
|
156
|
-
2. WHILE [状态条件] THE 系统 SHALL [响应]
|
|
157
|
-
3. IF [异常条件] THEN 系统 SHALL [处理方式]
|
|
158
|
-
|
|
159
|
-
---
|
|
160
|
-
|
|
161
|
-
### 需求 2: [需求标题]
|
|
162
|
-
|
|
163
|
-
**用户故事:** 作为 [角色],我想要 [功能],以便 [目标]。
|
|
164
|
-
|
|
165
|
-
#### 验收标准
|
|
166
|
-
|
|
167
|
-
1. THE 系统 SHALL [响应]
|
|
168
|
-
2. WHEN [触发条件] THE 系统 SHALL [响应]
|
|
169
|
-
|
|
170
|
-
---
|
|
171
|
-
|
|
172
|
-
## EARS 格式说明
|
|
173
|
-
|
|
174
|
-
本文档使用 EARS (Easy Approach to Requirements Syntax) 格式编写需求:
|
|
175
|
-
|
|
176
|
-
| 模式 | 格式 | 适用场景 |
|
|
177
|
-
|------|------|----------|
|
|
178
|
-
| Ubiquitous | THE [system] SHALL [response] | 始终适用的需求 |
|
|
179
|
-
| Event-driven | WHEN [trigger], THE [system] SHALL [response] | 事件触发的需求 |
|
|
180
|
-
| State-driven | WHILE [condition], THE [system] SHALL [response] | 状态相关的需求 |
|
|
181
|
-
| Unwanted | IF [condition], THEN THE [system] SHALL [response] | 异常处理需求 |
|
|
182
|
-
| Optional | WHERE [option], THE [system] SHALL [response] | 可选功能需求 |
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
## 非功能需求
|
|
187
|
-
|
|
188
|
-
### 性能要求
|
|
189
|
-
- [性能相关需求]
|
|
190
|
-
|
|
191
|
-
### 安全要求
|
|
192
|
-
- [安全相关需求]
|
|
193
|
-
|
|
194
|
-
### 兼容性要求
|
|
195
|
-
- [兼容性相关需求]
|
|
196
|
-
|
|
197
|
-
---
|
|
198
|
-
|
|
199
|
-
## 依赖关系
|
|
200
|
-
|
|
201
|
-
- [列出与其他功能的依赖]
|
|
202
|
-
|
|
203
|
-
---
|
|
204
|
-
|
|
205
|
-
*文档版本: 1.0.0*
|
|
206
|
-
*创建时间: [当前时间]*
|
|
207
|
-
\`\`\`
|
|
208
|
-
|
|
209
|
-
### requirements.md 编写指南
|
|
210
|
-
|
|
211
|
-
1. **功能概述**: 用 2-3 句话描述功能的目的和价值
|
|
212
|
-
2. **术语定义**: 定义文档中使用的专业术语
|
|
213
|
-
3. **需求列表**:
|
|
214
|
-
- 每个需求有独立的标题
|
|
215
|
-
- 包含用户故事(As a... I want... So that...)
|
|
216
|
-
- 验收标准使用 EARS 格式
|
|
217
|
-
4. **非功能需求**: 性能、安全、兼容性等
|
|
218
|
-
5. **依赖关系**: 与其他功能或模块的依赖
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## 📐 生成 design.md
|
|
223
|
-
|
|
224
|
-
在 \`{docs_dir}/specs/{feature_name}/design.md\` 中生成以下内容:
|
|
225
|
-
|
|
226
|
-
\`\`\`markdown
|
|
227
|
-
# 设计文档:{feature_name}
|
|
228
|
-
|
|
229
|
-
## 概述
|
|
230
|
-
|
|
231
|
-
{description}
|
|
232
|
-
|
|
233
|
-
本设计文档描述 {feature_name} 功能的技术实现方案。
|
|
234
|
-
|
|
235
|
-
---
|
|
236
|
-
|
|
237
|
-
## 技术方案
|
|
238
|
-
|
|
239
|
-
### 技术选型
|
|
240
|
-
|
|
241
|
-
| 类别 | 选择 | 理由 |
|
|
242
|
-
|------|------|------|
|
|
243
|
-
| [类别] | [技术] | [选择理由] |
|
|
244
|
-
|
|
245
|
-
### 架构设计
|
|
246
|
-
|
|
247
|
-
[描述功能的架构设计,参考项目现有架构]
|
|
248
|
-
|
|
249
|
-
\\\`\\\`\\\`
|
|
250
|
-
[架构图或流程图,使用 ASCII 或 Mermaid]
|
|
251
|
-
\\\`\\\`\\\`
|
|
252
|
-
|
|
253
|
-
---
|
|
254
|
-
|
|
255
|
-
## 数据模型
|
|
256
|
-
|
|
257
|
-
[如果功能涉及数据存储,描述数据模型]
|
|
258
|
-
|
|
259
|
-
### 数据结构
|
|
260
|
-
|
|
261
|
-
\\\`\\\`\\\`typescript
|
|
262
|
-
interface [ModelName] {
|
|
263
|
-
[field]: [type];
|
|
264
|
-
}
|
|
265
|
-
\\\`\\\`\\\`
|
|
266
|
-
|
|
267
|
-
---
|
|
268
|
-
|
|
269
|
-
## API 设计
|
|
270
|
-
|
|
271
|
-
[如果功能涉及 API,描述 API 设计]
|
|
272
|
-
|
|
273
|
-
### 接口定义
|
|
274
|
-
|
|
275
|
-
| 方法 | 路径 | 描述 |
|
|
276
|
-
|------|------|------|
|
|
277
|
-
| [GET/POST/...] | [/path] | [描述] |
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## 文件结构
|
|
282
|
-
|
|
283
|
-
[描述功能涉及的文件和目录]
|
|
284
|
-
|
|
285
|
-
\\\`\\\`\\\`
|
|
286
|
-
[项目目录]/
|
|
287
|
-
├── [新增文件1]
|
|
288
|
-
├── [新增文件2]
|
|
289
|
-
└── [修改文件]
|
|
290
|
-
\\\`\\\`\\\`
|
|
291
|
-
|
|
292
|
-
### 文件说明
|
|
293
|
-
|
|
294
|
-
| 文件 | 用途 |
|
|
295
|
-
|------|------|
|
|
296
|
-
| [文件路径] | [用途说明] |
|
|
297
|
-
|
|
298
|
-
---
|
|
299
|
-
|
|
300
|
-
## 依赖关系
|
|
301
|
-
|
|
302
|
-
### 新增依赖
|
|
303
|
-
|
|
304
|
-
| 依赖 | 版本 | 用途 |
|
|
305
|
-
|------|------|------|
|
|
306
|
-
| [依赖名] | [版本] | [用途] |
|
|
307
|
-
|
|
308
|
-
### 内部依赖
|
|
309
|
-
|
|
310
|
-
- [列出依赖的内部模块]
|
|
311
|
-
|
|
312
|
-
---
|
|
313
|
-
|
|
314
|
-
## 设计决策
|
|
315
|
-
|
|
316
|
-
### 决策 1: [决策标题]
|
|
317
|
-
|
|
318
|
-
**问题**: [描述面临的问题]
|
|
319
|
-
|
|
320
|
-
**选项**:
|
|
321
|
-
1. [选项 A]: [描述]
|
|
322
|
-
2. [选项 B]: [描述]
|
|
323
|
-
|
|
324
|
-
**决策**: 选择 [选项]
|
|
325
|
-
|
|
326
|
-
**理由**: [解释选择的理由]
|
|
327
|
-
|
|
328
|
-
---
|
|
329
|
-
|
|
330
|
-
## 风险评估
|
|
331
|
-
|
|
332
|
-
| 风险 | 影响 | 缓解措施 |
|
|
333
|
-
|------|------|----------|
|
|
334
|
-
| [风险描述] | [高/中/低] | [缓解措施] |
|
|
335
|
-
|
|
336
|
-
---
|
|
337
|
-
|
|
338
|
-
*设计版本: 1.0.0*
|
|
339
|
-
*创建时间: [当前时间]*
|
|
340
|
-
\`\`\`
|
|
341
|
-
|
|
342
|
-
### design.md 编写指南
|
|
343
|
-
|
|
344
|
-
1. **技术方案**: 基于项目上下文选择合适的技术
|
|
345
|
-
2. **架构设计**: 遵循项目现有的架构模式
|
|
346
|
-
3. **数据模型**: 如果涉及数据,定义清晰的数据结构
|
|
347
|
-
4. **API 设计**: 如果涉及 API,遵循项目的 API 规范
|
|
348
|
-
5. **文件结构**: 遵循项目的目录组织方式
|
|
349
|
-
6. **设计决策**: 记录重要的技术决策和理由
|
|
350
|
-
|
|
351
|
-
---
|
|
352
|
-
|
|
353
|
-
## 📋 生成 tasks.md
|
|
354
|
-
|
|
355
|
-
在 \`{docs_dir}/specs/{feature_name}/tasks.md\` 中生成以下内容:
|
|
356
|
-
|
|
357
|
-
\`\`\`markdown
|
|
358
|
-
# 任务清单:{feature_name}
|
|
359
|
-
|
|
360
|
-
## 概述
|
|
361
|
-
|
|
362
|
-
实现 {feature_name} 功能的任务分解。
|
|
363
|
-
|
|
364
|
-
---
|
|
365
|
-
|
|
366
|
-
## 任务列表
|
|
367
|
-
|
|
368
|
-
### 阶段 1: 准备工作
|
|
369
|
-
|
|
370
|
-
- [ ] 1.1 [任务标题]
|
|
371
|
-
- [具体操作说明]
|
|
372
|
-
- _需求: [对应的需求编号]_
|
|
373
|
-
|
|
374
|
-
- [ ] 1.2 [任务标题]
|
|
375
|
-
- [具体操作说明]
|
|
376
|
-
- _需求: [对应的需求编号]_
|
|
377
|
-
|
|
378
|
-
---
|
|
379
|
-
|
|
380
|
-
### 阶段 2: 核心实现
|
|
381
|
-
|
|
382
|
-
- [ ] 2.1 [任务标题]
|
|
383
|
-
- [具体操作说明]
|
|
384
|
-
- _需求: [对应的需求编号]_
|
|
385
|
-
|
|
386
|
-
- [ ] 2.2 [任务标题]
|
|
387
|
-
- [具体操作说明]
|
|
388
|
-
- 依赖: 任务 2.1
|
|
389
|
-
- _需求: [对应的需求编号]_
|
|
390
|
-
|
|
391
|
-
---
|
|
392
|
-
|
|
393
|
-
### 阶段 3: 集成测试
|
|
394
|
-
|
|
395
|
-
- [ ] 3.1 [任务标题]
|
|
396
|
-
- [具体操作说明]
|
|
397
|
-
- _需求: [对应的需求编号]_
|
|
398
|
-
|
|
399
|
-
---
|
|
400
|
-
|
|
401
|
-
## 检查点
|
|
402
|
-
|
|
403
|
-
- [ ] 阶段 1 完成后:[验证内容]
|
|
404
|
-
- [ ] 阶段 2 完成后:[验证内容]
|
|
405
|
-
- [ ] 阶段 3 完成后:[验证内容]
|
|
406
|
-
|
|
407
|
-
---
|
|
408
|
-
|
|
409
|
-
## 文件变更清单
|
|
410
|
-
|
|
411
|
-
| 文件 | 操作 | 说明 |
|
|
412
|
-
|------|------|------|
|
|
413
|
-
| [文件路径] | 新建/修改 | [说明] |
|
|
414
|
-
|
|
415
|
-
---
|
|
416
|
-
|
|
417
|
-
## 依赖任务
|
|
418
|
-
|
|
419
|
-
- [列出依赖的其他任务或功能]
|
|
420
|
-
|
|
421
|
-
---
|
|
422
|
-
|
|
423
|
-
*任务版本: 1.0.0*
|
|
424
|
-
*创建时间: [当前时间]*
|
|
425
|
-
\`\`\`
|
|
426
|
-
|
|
427
|
-
### tasks.md 编写指南
|
|
428
|
-
|
|
429
|
-
1. **任务分阶段**: 按逻辑顺序组织任务
|
|
430
|
-
2. **任务粒度**: 每个任务应在 2-4 小时内完成
|
|
431
|
-
3. **依赖关系**: 明确标注任务之间的依赖
|
|
432
|
-
4. **需求追溯**: 每个任务关联对应的需求
|
|
433
|
-
5. **检查点**: 每个阶段结束后有验证点
|
|
434
|
-
6. **文件清单**: 列出所有涉及的文件变更
|
|
435
|
-
|
|
436
|
-
---
|
|
437
|
-
|
|
438
|
-
## ✅ 检查清单
|
|
439
|
-
|
|
440
|
-
生成所有文档后,请验证以下内容:
|
|
441
|
-
|
|
442
|
-
### requirements.md 检查
|
|
443
|
-
|
|
444
|
-
- [ ] 功能概述清晰描述了功能目的
|
|
445
|
-
- [ ] 术语定义完整
|
|
446
|
-
- [ ] 每个需求都有用户故事
|
|
447
|
-
- [ ] 验收标准使用 EARS 格式
|
|
448
|
-
- [ ] 非功能需求已考虑
|
|
449
|
-
- [ ] 依赖关系已列出
|
|
450
|
-
|
|
451
|
-
### design.md 检查
|
|
452
|
-
|
|
453
|
-
- [ ] 技术选型有明确理由
|
|
454
|
-
- [ ] 架构设计符合项目现有架构
|
|
455
|
-
- [ ] 数据模型定义清晰(如适用)
|
|
456
|
-
- [ ] API 设计完整(如适用)
|
|
457
|
-
- [ ] 文件结构清晰
|
|
458
|
-
- [ ] 设计决策有记录
|
|
459
|
-
|
|
460
|
-
### tasks.md 检查
|
|
461
|
-
|
|
462
|
-
- [ ] 任务分阶段合理
|
|
463
|
-
- [ ] 每个任务有明确目标
|
|
464
|
-
- [ ] 依赖关系正确
|
|
465
|
-
- [ ] 任务关联了需求
|
|
466
|
-
- [ ] 检查点完整
|
|
467
|
-
- [ ] 文件变更清单完整
|
|
468
|
-
|
|
469
|
-
### 通用检查
|
|
470
|
-
|
|
471
|
-
- [ ] 三个文件都已创建
|
|
472
|
-
- [ ] 文件路径正确: \`{docs_dir}/specs/{feature_name}/\`
|
|
473
|
-
- [ ] 所有占位符已替换
|
|
474
|
-
- [ ] Markdown 格式正确
|
|
475
|
-
- [ ] 内容与项目上下文一致(如有)
|
|
476
|
-
|
|
477
|
-
---
|
|
478
|
-
|
|
479
|
-
## 📌 注意事项
|
|
480
|
-
|
|
481
|
-
1. **参考项目上下文**: 如果存在 \`{docs_dir}/project-context.md\`,请参考其中的技术栈和架构信息
|
|
482
|
-
2. **保持一致性**: 文档风格应与项目现有文档保持一致
|
|
483
|
-
3. **需求可测试**: 每个验收标准都应该是可测试的
|
|
484
|
-
4. **任务可执行**: 每个任务都应该是具体可执行的
|
|
485
|
-
5. **时间格式**: 使用 ISO 格式或本地格式均可
|
|
486
|
-
|
|
487
|
-
---
|
|
488
|
-
|
|
489
|
-
*指南版本: 1.0.0*
|
|
490
|
-
`;
|
|
491
|
-
```
|
|
492
|
-
|
|
493
|
-
---
|
|
494
|
-
|
|
495
|
-
## 接口设计
|
|
496
|
-
|
|
497
|
-
### 函数签名
|
|
498
|
-
|
|
499
|
-
```typescript
|
|
500
|
-
interface AddFeatureArgs {
|
|
501
|
-
feature_name: string; // 必填,kebab-case 格式
|
|
502
|
-
description: string; // 必填,功能描述
|
|
503
|
-
docs_dir?: string; // 可选,默认 "docs"
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
interface MCPResponse {
|
|
507
|
-
content: Array<{
|
|
508
|
-
type: "text";
|
|
509
|
-
text: string;
|
|
510
|
-
}>;
|
|
511
|
-
isError?: boolean;
|
|
512
|
-
}
|
|
513
|
-
|
|
514
|
-
async function addFeature(args: AddFeatureArgs): Promise<MCPResponse>
|
|
515
|
-
```
|
|
516
|
-
|
|
517
|
-
### 实现伪代码
|
|
518
|
-
|
|
519
|
-
```typescript
|
|
520
|
-
export async function addFeature(args: any): Promise<MCPResponse> {
|
|
521
|
-
try {
|
|
522
|
-
// 1. 验证必填参数
|
|
523
|
-
const featureName = args?.feature_name;
|
|
524
|
-
const description = args?.description;
|
|
525
|
-
|
|
526
|
-
if (!featureName) {
|
|
527
|
-
throw new Error("缺少必填参数: feature_name");
|
|
528
|
-
}
|
|
529
|
-
if (!description) {
|
|
530
|
-
throw new Error("缺少必填参数: description");
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
// 2. 解析可选参数
|
|
534
|
-
const docsDir = args?.docs_dir || "docs";
|
|
535
|
-
|
|
536
|
-
// 3. 构建指南文本(替换占位符)
|
|
537
|
-
const guide = PROMPT_TEMPLATE
|
|
538
|
-
.replace(/{feature_name}/g, featureName)
|
|
539
|
-
.replace(/{description}/g, description)
|
|
540
|
-
.replace(/{docs_dir}/g, docsDir);
|
|
541
|
-
|
|
542
|
-
// 4. 返回结果
|
|
543
|
-
return {
|
|
544
|
-
content: [{
|
|
545
|
-
type: "text",
|
|
546
|
-
text: guide
|
|
547
|
-
}]
|
|
548
|
-
};
|
|
549
|
-
} catch (error) {
|
|
550
|
-
return {
|
|
551
|
-
content: [{
|
|
552
|
-
type: "text",
|
|
553
|
-
text: `❌ 添加功能失败: ${error}`
|
|
554
|
-
}],
|
|
555
|
-
isError: true
|
|
556
|
-
};
|
|
557
|
-
}
|
|
558
|
-
}
|
|
559
|
-
```
|
|
560
|
-
|
|
561
|
-
---
|
|
562
|
-
|
|
563
|
-
## 测试用例
|
|
564
|
-
|
|
565
|
-
### 测试 1: 正常调用
|
|
566
|
-
|
|
567
|
-
```typescript
|
|
568
|
-
// 输入
|
|
569
|
-
addFeature({
|
|
570
|
-
feature_name: "user-auth",
|
|
571
|
-
description: "用户登录认证功能"
|
|
572
|
-
})
|
|
573
|
-
|
|
574
|
-
// 期望输出
|
|
575
|
-
// - 返回包含 "docs/specs/user-auth/" 的指南
|
|
576
|
-
// - 指南包含三个文档的模板
|
|
577
|
-
// - 指南包含检查清单
|
|
578
|
-
```
|
|
579
|
-
|
|
580
|
-
### 测试 2: 自定义目录
|
|
581
|
-
|
|
582
|
-
```typescript
|
|
583
|
-
// 输入
|
|
584
|
-
addFeature({
|
|
585
|
-
feature_name: "payment",
|
|
586
|
-
description: "支付功能",
|
|
587
|
-
docs_dir: "documentation"
|
|
588
|
-
})
|
|
589
|
-
|
|
590
|
-
// 期望输出
|
|
591
|
-
// - 返回包含 "documentation/specs/payment/" 的指南
|
|
592
|
-
```
|
|
593
|
-
|
|
594
|
-
### 测试 3: 缺少必填参数
|
|
595
|
-
|
|
596
|
-
```typescript
|
|
597
|
-
// 输入
|
|
598
|
-
addFeature({})
|
|
599
|
-
|
|
600
|
-
// 期望输出
|
|
601
|
-
// - 返回错误信息
|
|
602
|
-
// - isError: true
|
|
603
|
-
```
|
|
604
|
-
|
|
605
|
-
---
|
|
606
|
-
|
|
607
|
-
*设计版本: 1.0.0*
|
|
608
|
-
*创建时间: 2025-01-14*
|