specops 0.2.3 → 0.2.5
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/.opencode/agent/demand-analyst.md +69 -18
- package/.opencode/agent/verifier.md +231 -0
- package/.opencode/skills/brainstorming/SKILL.md +105 -0
- package/.opencode/skills/demand-analysis/SKILL.md +393 -47
- package/.opencode/skills/dispatching-parallel-agents/SKILL.md +180 -0
- package/.opencode/skills/executing-plans/SKILL.md +90 -0
- package/.opencode/skills/finishing-a-development-branch/SKILL.md +222 -0
- package/.opencode/skills/receiving-code-review/SKILL.md +213 -0
- package/.opencode/skills/repo-clone-analyze/SKILL.md +371 -0
- package/.opencode/skills/requesting-code-review/SKILL.md +105 -0
- package/.opencode/skills/requesting-code-review/code-reviewer.md +146 -0
- package/.opencode/skills/subagent-driven-development/SKILL.md +242 -0
- package/.opencode/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
- package/.opencode/skills/subagent-driven-development/implementer-prompt.md +78 -0
- package/.opencode/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
- package/.opencode/skills/systematic-debugging/SKILL.md +296 -0
- package/.opencode/skills/systematic-debugging/condition-based-waiting.md +115 -0
- package/.opencode/skills/systematic-debugging/defense-in-depth.md +122 -0
- package/.opencode/skills/systematic-debugging/root-cause-tracing.md +169 -0
- package/.opencode/skills/test-driven-development/SKILL.md +399 -0
- package/.opencode/skills/test-driven-development/testing-anti-patterns.md +299 -0
- package/.opencode/skills/using-git-worktrees/SKILL.md +218 -0
- package/.opencode/skills/using-superpowers/SKILL.md +99 -0
- package/.opencode/skills/verification-before-completion/SKILL.md +150 -0
- package/.opencode/skills/writing-plans/SKILL.md +123 -0
- package/.opencode/skills/writing-skills/SKILL.md +654 -0
- package/dist/__e2e__/01-state-engine.e2e.test.js +1 -1
- package/dist/acceptance/lazyDetector.js +1 -1
- package/dist/acceptance/lazyDetector.test.js +1 -1
- package/dist/acceptance/reporter.js +1 -1
- package/dist/acceptance/reporter.test.js +1 -1
- package/dist/acceptance/runner.js +1 -1
- package/dist/acceptance/runner.test.js +1 -1
- package/dist/cli.js +1 -1
- package/dist/context/index.js +1 -1
- package/dist/context/promptTemplate.js +1 -1
- package/dist/context/promptTemplate.test.js +1 -1
- package/dist/context/techContextLoader.js +1 -1
- package/dist/context/techContextLoader.test.js +1 -1
- package/dist/engine.js +1 -1
- package/dist/evolution/distiller.js +1 -1
- package/dist/evolution/index.js +1 -1
- package/dist/evolution/memoryGraph.js +1 -1
- package/dist/evolution/selector.js +1 -1
- package/dist/evolution/signals.js +1 -1
- package/dist/evolution/solidify.js +1 -1
- package/dist/evolution/store.js +1 -1
- package/dist/evolution/types.js +1 -1
- package/dist/init.js +1 -1
- package/dist/machines/agentMachine.js +1 -1
- package/dist/machines/agentMachine.test.js +1 -1
- package/dist/machines/supervisorMachine.js +1 -1
- package/dist/machines/supervisorMachine.test.js +1 -1
- package/dist/persistence/schema.js +1 -1
- package/dist/persistence/stateFile.js +1 -1
- package/dist/persistence/stateFile.test.js +1 -1
- package/dist/plugin-engine.js +1 -1
- package/dist/plugin.js +1 -1
- package/dist/types/index.js +1 -1
- package/dist/utils/id.js +1 -1
- package/package.json +1 -1
|
@@ -1,25 +1,75 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: demand-analysis
|
|
3
|
-
description: "需求分析编排 Skill —
|
|
3
|
+
description: "需求分析编排 Skill — 完整的 Phase 0 流程:Brainstorm → 输入识别 → 功能拆分 → 竞品搜索 → 功能搜索 → Clone 分析 → 技术选型 → 难点分析 → PRD 合成。编排 brainstorming、competitor-search、feature-search、repo-clone-analyze、tech-selection 五个子 skill,生成 REQUIREMENTS.md + TECH-CONTEXT.md,对接 GSD new-project。触发词:'需求分析'、'分析需求'、'analyze demand'、'拆分功能'、'难点分析'。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 需求分析 Skill(编排层)
|
|
7
7
|
|
|
8
8
|
<role>
|
|
9
|
-
|
|
9
|
+
你是需求分析编排专家。你接收用户输入,按 9 个 PHASE 顺序执行完整分析链路:
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
**你不亲自执行搜索、分析和选型 — 你调用专门的子 skill 来完成。**
|
|
12
12
|
|
|
13
13
|
你的职责是:
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
0. 调用 `brainstorming` skill 澄清需求、呈现设计、获得批准
|
|
15
|
+
1. 识别输入类型 → 产品定位
|
|
16
|
+
2. 功能拆分(三级:MVP / 增强 / 可选)
|
|
17
|
+
3. 调用 `competitor-search` skill 搜索竞品
|
|
18
|
+
4. 调用 `feature-search` skill 搜索开源实现
|
|
19
|
+
5. 调用 `repo-clone-analyze` skill Clone 并分析参考项目
|
|
20
|
+
6. 调用 `tech-selection` skill 进行技术选型
|
|
21
|
+
7. 难点分析:验证和发现项目技术/功能/集成难点
|
|
22
|
+
8. 合成所有产出,生成 REQUIREMENTS.md + TECH-CONTEXT.md
|
|
19
23
|
</role>
|
|
20
24
|
|
|
21
25
|
---
|
|
22
26
|
|
|
27
|
+
## 硬约束
|
|
28
|
+
|
|
29
|
+
| 约束 | 说明 |
|
|
30
|
+
|------|------|
|
|
31
|
+
| **Brainstorm 门禁** | PHASE 0 设计批准前,**禁止**进入任何后续 PHASE |
|
|
32
|
+
| **子 skill 调用** | 搜索/分析/选型必须通过 `skill()` 调用,不得自行执行 |
|
|
33
|
+
| **顺序执行** | PHASE 必须按 0→1→2→3→4→5→6→7→8 顺序执行,不得跳过 |
|
|
34
|
+
| **状态更新** | 每个 PHASE 转换时必须调用 specops CLI 更新状态 |
|
|
35
|
+
| **全中文输出** | 所有文档、报告、状态描述均使用中文 |
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## PHASE 0: Brainstorm(需求澄清与设计批准)
|
|
40
|
+
|
|
41
|
+
<brainstorm>
|
|
42
|
+
|
|
43
|
+
**调用子 skill:**
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
skill(name="brainstorming")
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
按照 brainstorming skill 的指令执行:
|
|
50
|
+
- **一次一问**:每轮只问一个澄清问题,等用户回答后再问下一个
|
|
51
|
+
- 探索用户意图、需求边界、目标用户、核心场景
|
|
52
|
+
- 逐步收敛,形成设计方案
|
|
53
|
+
- 呈现设计方案给用户审阅
|
|
54
|
+
|
|
55
|
+
**输出:**
|
|
56
|
+
- 设计文档:`docs/plans/YYYY-MM-DD-<主题>-design.md`
|
|
57
|
+
- 用户明确批准("可以"、"通过"、"approved" 等肯定回复)
|
|
58
|
+
|
|
59
|
+
**门禁条件:**
|
|
60
|
+
- ✅ 设计文档已生成
|
|
61
|
+
- ✅ 用户已明确批准设计
|
|
62
|
+
- ❌ 未批准 → 继续迭代设计,不得进入 PHASE 1
|
|
63
|
+
|
|
64
|
+
**状态更新:**
|
|
65
|
+
```bash
|
|
66
|
+
npx specops update-operation --agent-id <id> --operation "正在 Brainstorm 澄清需求..." --skill "brainstorming"
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
</brainstorm>
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
23
73
|
## PHASE 1: 输入识别与产品定位
|
|
24
74
|
|
|
25
75
|
<input_detection>
|
|
@@ -73,9 +123,15 @@ description: "需求分析编排 Skill — 识别输入类型(需求/仓库/
|
|
|
73
123
|
5. 核心关键词:提炼 3-5 个搜索关键词(中英文各一组)
|
|
74
124
|
```
|
|
75
125
|
|
|
126
|
+
**状态更新:**
|
|
127
|
+
```bash
|
|
128
|
+
npx specops advance --agent-id <id>
|
|
129
|
+
npx specops update-operation --agent-id <id> --operation "正在识别输入类型和产品定位..." --skill "demand-analysis"
|
|
130
|
+
```
|
|
131
|
+
|
|
76
132
|
---
|
|
77
133
|
|
|
78
|
-
## PHASE 2:
|
|
134
|
+
## PHASE 2: 功能拆分
|
|
79
135
|
|
|
80
136
|
对产品的每个功能模块进行三级拆分:
|
|
81
137
|
|
|
@@ -98,6 +154,12 @@ description: "需求分析编排 Skill — 识别输入类型(需求/仓库/
|
|
|
98
154
|
|
|
99
155
|
完成功能拆分后,你手上有:**产品定位 + 关键词 + SC 列表**。
|
|
100
156
|
|
|
157
|
+
**状态更新:**
|
|
158
|
+
```bash
|
|
159
|
+
npx specops advance --agent-id <id>
|
|
160
|
+
npx specops update-operation --agent-id <id> --operation "正在拆分功能模块..." --skill "demand-analysis"
|
|
161
|
+
```
|
|
162
|
+
|
|
101
163
|
---
|
|
102
164
|
|
|
103
165
|
## PHASE 3: 调用竞品搜索 Skill
|
|
@@ -116,6 +178,12 @@ skill(name="competitor-search")
|
|
|
116
178
|
|
|
117
179
|
**等待竞品搜索完成,获得竞品搜索报告后再进入下一步。**
|
|
118
180
|
|
|
181
|
+
**状态更新:**
|
|
182
|
+
```bash
|
|
183
|
+
npx specops advance --agent-id <id>
|
|
184
|
+
npx specops update-operation --agent-id <id> --operation "正在搜索竞品..." --skill "competitor-search"
|
|
185
|
+
```
|
|
186
|
+
|
|
119
187
|
</skill_invocation>
|
|
120
188
|
|
|
121
189
|
---
|
|
@@ -143,11 +211,50 @@ skill(name="feature-search")
|
|
|
143
211
|
|
|
144
212
|
**等待所有功能搜索完成,获得功能搜索报告后再进入下一步。**
|
|
145
213
|
|
|
214
|
+
**状态更新:**
|
|
215
|
+
```bash
|
|
216
|
+
npx specops advance --agent-id <id>
|
|
217
|
+
npx specops update-operation --agent-id <id> --operation "正在搜索开源实现..." --skill "feature-search"
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
</skill_invocation>
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## PHASE 5: 调用 Clone + 分析 Skill
|
|
225
|
+
|
|
226
|
+
<skill_invocation>
|
|
227
|
+
|
|
228
|
+
**现在调用仓库 Clone 分析 skill:**
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
skill(name="repo-clone-analyze")
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
调用后,按照 repo-clone-analyze skill 的指令执行:
|
|
235
|
+
- 从 PHASE 3(竞品搜索)和 PHASE 4(功能搜索)的结果中筛选需要 clone 的项目
|
|
236
|
+
- 排除基础框架和通用库(react、express、yargs、commander、zod 等)
|
|
237
|
+
- Clone 功能参考项目(竞品、开源实现),深度分析源码
|
|
238
|
+
- 生成 overview.md + index.json + ref.json
|
|
239
|
+
|
|
240
|
+
**传入参数:**
|
|
241
|
+
- PHASE 3 的竞品搜索报告(竞品列表 + GitHub URL)
|
|
242
|
+
- PHASE 4 的功能搜索报告(开源项目列表 + GitHub URL)
|
|
243
|
+
- 项目根目录路径(用于确定 `.specops/ref/` 输出目录)
|
|
244
|
+
|
|
245
|
+
**等待 Clone 分析完成,获得 ref.json 后再进入下一步。**
|
|
246
|
+
|
|
247
|
+
**状态更新:**
|
|
248
|
+
```bash
|
|
249
|
+
npx specops advance --agent-id <id>
|
|
250
|
+
npx specops update-operation --agent-id <id> --operation "正在 Clone 并分析参考项目..." --skill "repo-clone-analyze"
|
|
251
|
+
```
|
|
252
|
+
|
|
146
253
|
</skill_invocation>
|
|
147
254
|
|
|
148
255
|
---
|
|
149
256
|
|
|
150
|
-
## PHASE
|
|
257
|
+
## PHASE 6: 调用技术选型 Skill
|
|
151
258
|
|
|
152
259
|
<skill_invocation>
|
|
153
260
|
|
|
@@ -157,20 +264,144 @@ skill(name="feature-search")
|
|
|
157
264
|
skill(name="tech-selection")
|
|
158
265
|
```
|
|
159
266
|
|
|
160
|
-
调用后,按照 tech-selection skill
|
|
267
|
+
调用后,按照 tech-selection skill 的指令,基于前面所有阶段的产出进行技术选型:
|
|
161
268
|
- 输入 1: PHASE 1 的产品定位
|
|
162
269
|
- 输入 2: PHASE 3 的竞品搜索报告(竞品技术栈数据)
|
|
163
270
|
- 输入 3: PHASE 4 的功能搜索报告(推荐的开源库/框架)
|
|
271
|
+
- 输入 4: PHASE 5 的 ref.json(参考项目的功能-代码索引,技术栈详情)
|
|
272
|
+
|
|
273
|
+
**ref.json 为技术选型提供的额外信息:**
|
|
274
|
+
- 参考项目实际使用的技术栈和依赖
|
|
275
|
+
- 各功能模块的实现方式和架构模式
|
|
276
|
+
- 可直接借鉴的代码路径和关键文件
|
|
164
277
|
|
|
165
278
|
**等待技术选型完成,获得技术选型文档后进入合成阶段。**
|
|
166
279
|
|
|
280
|
+
**状态更新:**
|
|
281
|
+
```bash
|
|
282
|
+
npx specops advance --agent-id <id>
|
|
283
|
+
npx specops update-operation --agent-id <id> --operation "正在进行技术选型..." --skill "tech-selection"
|
|
284
|
+
```
|
|
285
|
+
|
|
167
286
|
</skill_invocation>
|
|
168
287
|
|
|
169
288
|
---
|
|
170
289
|
|
|
171
|
-
## PHASE
|
|
290
|
+
## PHASE 7: 难点分析
|
|
291
|
+
|
|
292
|
+
<difficulty_analysis>
|
|
293
|
+
|
|
294
|
+
### 难点来源
|
|
295
|
+
|
|
296
|
+
难点有两个来源,都要覆盖:
|
|
297
|
+
|
|
298
|
+
**来源 1: 用户主动提出的难点**
|
|
299
|
+
|
|
300
|
+
在 PHASE 0 Brainstorm 或任何交互中,用户可能提到「这个项目的难点是...」「我担心...会很难」。记录下来,在此阶段统一处理。
|
|
301
|
+
|
|
302
|
+
**来源 2: 主动分析潜在难点**
|
|
303
|
+
|
|
304
|
+
从前面所有 PHASE 的产出中提取潜在难点:
|
|
305
|
+
|
|
306
|
+
| 分析维度 | 数据来源 | 难点信号 |
|
|
307
|
+
|---------|---------|---------|
|
|
308
|
+
| **技术难点** | PHASE 6 技术选型 | 选型中标注的风险项、技术兼容性问题、性能瓶颈 |
|
|
309
|
+
| **功能难点** | PHASE 4 功能搜索 | 「未找到开源实现」的 SC 功能点 — 需完全自研 |
|
|
310
|
+
| **集成难点** | PHASE 5 Clone 分析 | 参考项目间架构模式冲突、数据格式不兼容 |
|
|
311
|
+
| **规模难点** | PHASE 2 功能拆分 | 复杂度标注为「高」的 SC 功能点 |
|
|
312
|
+
| **未知难点** | PHASE 3 竞品分析 | 竞品普遍未解决的功能缺口(说明行业级难题) |
|
|
313
|
+
|
|
314
|
+
### 每个难点的处理链
|
|
315
|
+
|
|
316
|
+
对每个识别出的难点,按以下流程处理:
|
|
317
|
+
|
|
318
|
+
```
|
|
319
|
+
难点描述
|
|
320
|
+
│
|
|
321
|
+
▼
|
|
322
|
+
Step 1: 搜索验证(确认是否真的是难点)
|
|
323
|
+
│ 使用 web search / librarian 搜索:
|
|
324
|
+
│ - "[难点关键词] solution"
|
|
325
|
+
│ - "[难点关键词] best practice"
|
|
326
|
+
│ - "[难点关键词] how to solve"
|
|
327
|
+
│ 判断:这是真实存在的技术难题,还是有成熟解决方案?
|
|
328
|
+
│
|
|
329
|
+
├─ 有成熟解决方案 ──→ Step 2a
|
|
330
|
+
└─ 无成熟解决方案 ──→ Step 2b
|
|
331
|
+
|
|
332
|
+
Step 2a: 记录解决方案
|
|
333
|
+
- 方案名称 + 链接/来源
|
|
334
|
+
- 实现复杂度估算
|
|
335
|
+
- 是否需要额外依赖
|
|
336
|
+
→ 输出到 REQUIREMENTS.md「已解决难点」表
|
|
337
|
+
|
|
338
|
+
Step 2b: 加入项目难点清单
|
|
339
|
+
- 难点描述
|
|
340
|
+
- 风险等级:🔴 高 / 🟡 中 / 🟢 低
|
|
341
|
+
- 影响范围:哪些 SC 功能点受影响
|
|
342
|
+
- 已尝试的搜索关键词(证明确实搜索过)
|
|
343
|
+
- 建议的探索方向(不是解决方案,是可能的研究方向)
|
|
344
|
+
→ 输出到 REQUIREMENTS.md「未解决难点」表
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
### 搜索策略
|
|
348
|
+
|
|
349
|
+
对每个难点,至少执行以下搜索:
|
|
350
|
+
|
|
351
|
+
1. **中文搜索**:`[难点关键词] 解决方案` / `[难点关键词] 最佳实践`
|
|
352
|
+
2. **英文搜索**:`[difficulty keyword] solution` / `[difficulty keyword] best practice`
|
|
353
|
+
3. **GitHub 搜索**:搜索相关 issue 和 discussion,看是否有人遇到并解决了同样问题
|
|
354
|
+
4. **Stack Overflow**:搜索相关问答
|
|
355
|
+
|
|
356
|
+
如果搜索结果模糊或不确定,**向用户确认**:
|
|
357
|
+
```
|
|
358
|
+
我发现 [难点描述] 有以下可能的解决方案:
|
|
359
|
+
1. [方案 A] — [简要描述]
|
|
360
|
+
2. [方案 B] — [简要描述]
|
|
361
|
+
|
|
362
|
+
但这些方案可能不完全适用于我们的场景,因为 [原因]。
|
|
363
|
+
你觉得哪个方向值得深入研究?还是标记为项目难点?
|
|
364
|
+
```
|
|
365
|
+
|
|
366
|
+
### 输出格式
|
|
367
|
+
|
|
368
|
+
#### 已解决难点表
|
|
369
|
+
|
|
370
|
+
| 难点 | 来源 | 解决方案 | 方案来源 | 实现复杂度 | 受影响 SC |
|
|
371
|
+
|------|------|---------|---------|-----------|----------|
|
|
372
|
+
| [描述] | 用户提出 / PHASE X | [方案名] | [链接] | 低/中/高 | SC-001, SC-003 |
|
|
373
|
+
|
|
374
|
+
#### 未解决难点表(项目难点清单)
|
|
375
|
+
|
|
376
|
+
| 难点 | 风险等级 | 来源 | 影响范围 | 搜索记录 | 探索方向 |
|
|
377
|
+
|------|---------|------|---------|---------|---------|
|
|
378
|
+
| [描述] | 🔴 高 | 用户提出 / PHASE X | SC-001, SC-003 | "keyword1 solution"→无结果, "keyword2 best practice"→不适用 | 可能需要 [研究方向] |
|
|
379
|
+
|
|
380
|
+
### 反模式
|
|
381
|
+
|
|
382
|
+
| 违规行为 | 严重性 |
|
|
383
|
+
|---------|--------|
|
|
384
|
+
| 用户提出的难点不搜索直接记录 | **严重** — 必须先搜索验证 |
|
|
385
|
+
| 只搜索一次就下结论 | 高 — 至少中英文各搜一次 |
|
|
386
|
+
| 不标注风险等级 | 中 |
|
|
387
|
+
| 不记录搜索关键词 | 中 — 必须证明已搜索 |
|
|
388
|
+
| 发现解决方案后不评估适用性 | 中 |
|
|
389
|
+
|
|
390
|
+
**状态更新:**
|
|
391
|
+
```bash
|
|
392
|
+
npx specops advance --agent-id <id>
|
|
393
|
+
npx specops update-operation --agent-id <id> --operation "正在分析项目难点..." --skill "demand-analysis"
|
|
394
|
+
```
|
|
395
|
+
|
|
396
|
+
</difficulty_analysis>
|
|
397
|
+
|
|
398
|
+
---
|
|
399
|
+
|
|
400
|
+
## PHASE 8: 合成 PRD
|
|
401
|
+
|
|
402
|
+
将 PHASE 0-7 的所有产出合成为两个文档:
|
|
172
403
|
|
|
173
|
-
|
|
404
|
+
### 输出 1: `.specops/REQUIREMENTS.md`
|
|
174
405
|
|
|
175
406
|
```markdown
|
|
176
407
|
# 需求分析报告
|
|
@@ -179,6 +410,7 @@ skill(name="tech-selection")
|
|
|
179
410
|
- 输入类型: [REQUIREMENT/REPO/REPOS/WEBSITE]
|
|
180
411
|
- 分析时间: [时间戳]
|
|
181
412
|
- 原始输入摘要: [一句话概括用户输入]
|
|
413
|
+
- 设计文档: [docs/plans/YYYY-MM-DD-<主题>-design.md]
|
|
182
414
|
|
|
183
415
|
## 一、产品定位
|
|
184
416
|
- 产品名称: ...
|
|
@@ -221,7 +453,19 @@ skill(name="tech-selection")
|
|
|
221
453
|
### 未找到开源实现的功能点
|
|
222
454
|
- SC-xxx: 建议自行实现,参考[技术方案]
|
|
223
455
|
|
|
224
|
-
##
|
|
456
|
+
## 五、参考项目深度分析
|
|
457
|
+
> 来源: repo-clone-analyze skill
|
|
458
|
+
|
|
459
|
+
### Clone 分析的项目
|
|
460
|
+
| 项目 | 分析原因 | overview | index |
|
|
461
|
+
|------|---------|----------|-------|
|
|
462
|
+
| project-a | 竞品,核心功能参考 | .specops/ref/project-a/overview.md | .specops/ref/project-a/index.json |
|
|
463
|
+
|
|
464
|
+
### 功能级索引
|
|
465
|
+
- ref.json 路径: `.specops/ref/ref.json`
|
|
466
|
+
- 包含功能: [功能名列表]
|
|
467
|
+
|
|
468
|
+
## 六、技术选型
|
|
225
469
|
> 来源: tech-selection skill
|
|
226
470
|
|
|
227
471
|
| 维度 | 选型 | 版本 | 理由 |
|
|
@@ -233,7 +477,24 @@ skill(name="tech-selection")
|
|
|
233
477
|
| 包名 | 版本 | 用途 |
|
|
234
478
|
|------|------|------|
|
|
235
479
|
|
|
236
|
-
##
|
|
480
|
+
## 七、难点分析
|
|
481
|
+
> 来源: PHASE 7 难点分析
|
|
482
|
+
|
|
483
|
+
### 已解决难点
|
|
484
|
+
|
|
485
|
+
| 难点 | 来源 | 解决方案 | 方案来源 | 实现复杂度 | 受影响 SC |
|
|
486
|
+
|------|------|---------|---------|-----------|----------|
|
|
487
|
+
| ... | ... | ... | ... | ... | ... |
|
|
488
|
+
|
|
489
|
+
### 未解决难点(项目难点清单)
|
|
490
|
+
|
|
491
|
+
| 难点 | 风险等级 | 来源 | 影响范围 | 搜索记录 | 探索方向 |
|
|
492
|
+
|------|---------|------|---------|---------|---------|
|
|
493
|
+
| ... | ... | ... | ... | ... | ... |
|
|
494
|
+
|
|
495
|
+
> ⚠️ 未解决难点需要在 GSD discuss-phase 中进一步讨论确定处理策略。
|
|
496
|
+
|
|
497
|
+
## 八、建议实施路线
|
|
237
498
|
### Phase 1: MVP(预计 X 周)
|
|
238
499
|
- 实现 SC-001 ~ SC-xxx
|
|
239
500
|
- 核心技术: [列表]
|
|
@@ -245,25 +506,73 @@ skill(name="tech-selection")
|
|
|
245
506
|
- ...
|
|
246
507
|
```
|
|
247
508
|
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
509
|
+
### 输出 2: `.specops/TECH-CONTEXT.md`
|
|
510
|
+
|
|
511
|
+
从技术选型结果中提取,格式对齐 GSD 的 TECH-CONTEXT 模板:
|
|
512
|
+
|
|
513
|
+
```markdown
|
|
514
|
+
# 技术上下文
|
|
515
|
+
|
|
516
|
+
## 锁定依赖
|
|
517
|
+
| 包名 | 版本 | 用途 |
|
|
518
|
+
|------|------|------|
|
|
519
|
+
|
|
520
|
+
## 禁止模式
|
|
521
|
+
| 模式 | 原因 |
|
|
522
|
+
|------|------|
|
|
523
|
+
|
|
524
|
+
## 编码约定
|
|
525
|
+
- ...
|
|
526
|
+
|
|
527
|
+
## 项目结构
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
### 下一步提示
|
|
531
|
+
|
|
532
|
+
合成完成后,输出提示:
|
|
533
|
+
|
|
534
|
+
```
|
|
535
|
+
✅ 需求分析完成!
|
|
536
|
+
|
|
537
|
+
产出文件:
|
|
538
|
+
- .specops/REQUIREMENTS.md(需求文档)
|
|
539
|
+
- .specops/TECH-CONTEXT.md(技术上下文)
|
|
540
|
+
- .specops/ref/ref.json(参考项目索引)
|
|
541
|
+
- docs/plans/YYYY-MM-DD-<主题>-design.md(设计文档)
|
|
542
|
+
|
|
543
|
+
下一步:
|
|
544
|
+
/gsd-new-project --auto
|
|
545
|
+
(GSD 将读取 REQUIREMENTS.md 自动创建项目)
|
|
546
|
+
```
|
|
547
|
+
|
|
548
|
+
**状态更新:**
|
|
549
|
+
```bash
|
|
550
|
+
npx specops advance --agent-id <id>
|
|
551
|
+
npx specops update-operation --agent-id <id> --operation "正在合成 PRD..." --skill "demand-analysis"
|
|
552
|
+
```
|
|
253
553
|
|
|
254
554
|
---
|
|
255
555
|
|
|
256
|
-
##
|
|
556
|
+
## 状态更新汇总
|
|
257
557
|
|
|
258
|
-
每执行一个 PHASE
|
|
558
|
+
每执行一个 PHASE,调用 specops CLI 更新状态:
|
|
259
559
|
|
|
260
560
|
```
|
|
261
|
-
PHASE
|
|
262
|
-
PHASE
|
|
263
|
-
PHASE
|
|
264
|
-
PHASE
|
|
265
|
-
PHASE
|
|
266
|
-
PHASE
|
|
561
|
+
PHASE 0: operation="正在 Brainstorm 澄清需求..." skill="brainstorming"
|
|
562
|
+
PHASE 1: operation="正在识别输入类型和产品定位..." skill="demand-analysis"
|
|
563
|
+
PHASE 2: operation="正在拆分功能模块..." skill="demand-analysis"
|
|
564
|
+
PHASE 3: operation="正在搜索竞品..." skill="competitor-search"
|
|
565
|
+
PHASE 4: operation="正在搜索开源实现..." skill="feature-search"
|
|
566
|
+
PHASE 5: operation="正在 Clone 并分析参考项目..." skill="repo-clone-analyze"
|
|
567
|
+
PHASE 6: operation="正在进行技术选型..." skill="tech-selection"
|
|
568
|
+
PHASE 7: operation="正在分析项目难点..." skill="demand-analysis"
|
|
569
|
+
PHASE 8: operation="正在合成 PRD..." skill="demand-analysis"
|
|
570
|
+
```
|
|
571
|
+
|
|
572
|
+
每个 PHASE 转换时调用:
|
|
573
|
+
```bash
|
|
574
|
+
npx specops advance --agent-id <id>
|
|
575
|
+
npx specops update-operation --agent-id <id> --operation "当前操作" --skill "当前skill"
|
|
267
576
|
```
|
|
268
577
|
|
|
269
578
|
---
|
|
@@ -273,35 +582,72 @@ PHASE 6: operation="正在合成需求文档..." skill="demand-analys
|
|
|
273
582
|
```
|
|
274
583
|
用户输入
|
|
275
584
|
│
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
585
|
+
▼
|
|
586
|
+
PHASE 0: skill(name="brainstorming")
|
|
587
|
+
│ 一次一问 → 设计文档 → 用户批准
|
|
588
|
+
│ 输出: docs/plans/YYYY-MM-DD-<主题>-design.md
|
|
589
|
+
│
|
|
590
|
+
├─ 未批准 → 继续迭代(不得进入后续 PHASE)
|
|
591
|
+
│
|
|
592
|
+
▼ (批准后)
|
|
593
|
+
PHASE 1: 输入识别 + 产品定位
|
|
594
|
+
│ ├─ REPOS? ──→ 并行分析各仓库 ──┐
|
|
595
|
+
│ ├─ REPO? ──→ 分析单仓库 ──────┤
|
|
596
|
+
│ ├─ WEBSITE? → 抓取网站信息 ────┤
|
|
597
|
+
│ └─ TEXT ─────────────────────────┤
|
|
598
|
+
│ ▼
|
|
599
|
+
│ 产品定位表
|
|
600
|
+
▼
|
|
601
|
+
PHASE 2: 功能拆分(SC 编号 + 复杂度)
|
|
602
|
+
│
|
|
603
|
+
▼
|
|
604
|
+
PHASE 3: skill(name="competitor-search")
|
|
605
|
+
│ 竞品搜索报告
|
|
606
|
+
▼
|
|
607
|
+
PHASE 4: skill(name="feature-search")
|
|
608
|
+
│ 功能搜索报告
|
|
609
|
+
▼
|
|
610
|
+
PHASE 5: skill(name="repo-clone-analyze")
|
|
611
|
+
│ 筛选 → Clone → 分析 → ref.json
|
|
612
|
+
▼
|
|
613
|
+
PHASE 6: skill(name="tech-selection")
|
|
614
|
+
│ 技术选型(含 ref.json 输入)
|
|
615
|
+
▼
|
|
616
|
+
PHASE 7: 难点分析
|
|
617
|
+
│ 用户提出 + 主动发现 → 搜索验证 → 分类输出
|
|
618
|
+
▼
|
|
619
|
+
PHASE 8: 合成 PRD
|
|
620
|
+
│ → .specops/REQUIREMENTS.md
|
|
621
|
+
│ → .specops/TECH-CONTEXT.md
|
|
622
|
+
│ → 提示: /gsd-new-project --auto
|
|
623
|
+
▼
|
|
624
|
+
传递给 GSD
|
|
292
625
|
```
|
|
293
626
|
|
|
294
627
|
---
|
|
295
628
|
|
|
629
|
+
## 合成规则
|
|
630
|
+
|
|
631
|
+
1. 竞品分析和功能搜索的数据**直接引用**子 skill 报告,不要重新编造
|
|
632
|
+
2. 参考项目分析的数据**直接引用** ref.json 和 overview.md,不要重新编造
|
|
633
|
+
3. 实施路线要基于功能复杂度 + 开源可用性排序(有现成开源的优先)
|
|
634
|
+
4. 每个 Phase 估算时间要参考竞品规模和技术复杂度
|
|
635
|
+
5. TECH-CONTEXT.md 的格式必须对齐 GSD 的技术上下文模板
|
|
636
|
+
6. 最终输出文件写入项目的 `.specops/` 目录
|
|
637
|
+
|
|
638
|
+
---
|
|
639
|
+
|
|
296
640
|
## 反模式
|
|
297
641
|
|
|
298
642
|
| 违规行为 | 严重性 |
|
|
299
643
|
|---------|--------|
|
|
300
|
-
|
|
|
301
|
-
|
|
|
644
|
+
| Brainstorm 未批准就进入后续 PHASE | **致命** — 必须获得用户批准 |
|
|
645
|
+
| 不调用子 skill 自己做搜索/选型/分析 | **严重** — 必须通过 skill() 调用 |
|
|
646
|
+
| 跳过 PHASE 0-8 中任何一个 | **严重** |
|
|
302
647
|
| 没有识别输入类型就开始分析 | 高 |
|
|
303
648
|
| 跳过功能拆分直接出文档 | 高 |
|
|
304
649
|
| 子 skill 报告还没返回就开始写合成文档 | 高 — 必须等待子 skill 完成 |
|
|
305
650
|
| 功能描述太笼统没有具体 SC 编号 | 中 |
|
|
306
|
-
|
|
|
651
|
+
| 不调用 specops CLI 更新状态 | 中 |
|
|
652
|
+
| 不生成 TECH-CONTEXT.md | 中 |
|
|
307
653
|
| 输出不是中文 | 中 |
|