openmatrix 0.1.80 → 0.1.82
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/package.json +1 -1
- package/skills/brainstorm.md +495 -355
package/package.json
CHANGED
package/skills/brainstorm.md
CHANGED
|
@@ -1,355 +1,495 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: om:brainstorm
|
|
3
|
-
description: 头脑风暴 -
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<NO-OTHER-SKILLS>
|
|
7
|
-
|
|
8
|
-
- ❌
|
|
9
|
-
- ❌
|
|
10
|
-
- ❌
|
|
11
|
-
- ❌
|
|
12
|
-
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
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
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
{
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
1
|
+
---
|
|
2
|
+
name: om:brainstorm
|
|
3
|
+
description: 头脑风暴 - 深入探索需求和设计,提出多种方案,确认后再执行任务
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<NO-OTHER-SKILLS>
|
|
7
|
+
**绝对禁止**调用以下技能(OpenMatrix 完全替代它们):
|
|
8
|
+
- ❌ superpowers:brainstorming → 你已经在 om:brainstorm 中了
|
|
9
|
+
- ❌ superpowers:* → 全部被 OpenMatrix 替代
|
|
10
|
+
- ❌ gsd:* → 全部被 OpenMatrix 替代
|
|
11
|
+
- ❌ 任何其他任务编排相关的技能
|
|
12
|
+
</NO-OTHER-SKILLS>
|
|
13
|
+
|
|
14
|
+
<HARD-GATE>
|
|
15
|
+
在展示设计方案并获得用户批准之前,**不得**调用任何实现技能、写任何代码、搭建任何项目或采取任何实现行动。
|
|
16
|
+
</HARD-GATE>
|
|
17
|
+
|
|
18
|
+
<objective>
|
|
19
|
+
通过协作对话,将想法转化为完整的设计方案。先理解项目上下文,逐一提问澄清需求,提出 2-3 种方案并给出推荐,展示设计并获得批准后再进入执行。
|
|
20
|
+
</objective>
|
|
21
|
+
|
|
22
|
+
<process>
|
|
23
|
+
|
|
24
|
+
## 步骤 1: 探索项目上下文
|
|
25
|
+
|
|
26
|
+
**在提问之前,先了解当前项目状态:**
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
# 检查项目文件结构
|
|
30
|
+
ls -la
|
|
31
|
+
|
|
32
|
+
# 查看最近提交
|
|
33
|
+
git log --oneline -5 2>/dev/null
|
|
34
|
+
|
|
35
|
+
# 查看关键配置文件
|
|
36
|
+
cat package.json 2>/dev/null || cat Cargo.toml 2>/dev/null || cat go.mod 2>/dev/null
|
|
37
|
+
|
|
38
|
+
# 查看现有文档
|
|
39
|
+
ls docs/ 2>/dev/null
|
|
40
|
+
```
|
|
41
|
+
|
|
42
|
+
- 了解技术栈、项目结构、最近变更
|
|
43
|
+
- 如果用户引用了文件(如 `docs/task.md`),读取该文件
|
|
44
|
+
|
|
45
|
+
## 步骤 2: 评估范围与领域检测
|
|
46
|
+
|
|
47
|
+
**2.1 评估范围**
|
|
48
|
+
|
|
49
|
+
**如果任务涉及多个独立子系统**(如"构建一个包含聊天、文件存储、计费和分析的平台"),立即提出分解:
|
|
50
|
+
|
|
51
|
+
```typescript
|
|
52
|
+
AskUserQuestion({
|
|
53
|
+
questions: [{
|
|
54
|
+
question: "这个任务涉及多个独立子系统,建议分步执行。先做哪个?",
|
|
55
|
+
header: "范围",
|
|
56
|
+
options: [
|
|
57
|
+
{ label: "子系统A", description: "描述..." },
|
|
58
|
+
{ label: "子系统B", description: "描述..." },
|
|
59
|
+
{ label: "全部一起做", description: "不推荐,但可以尝试" }
|
|
60
|
+
],
|
|
61
|
+
multiSelect: false
|
|
62
|
+
}]
|
|
63
|
+
})
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
**2.2 领域检测与 Research 集成**
|
|
67
|
+
|
|
68
|
+
**如果任务涉及不熟悉的垂直领域**(如游戏开发、支付系统、区块链、AI 应用等),主动建议调用研究:
|
|
69
|
+
|
|
70
|
+
```typescript
|
|
71
|
+
AskUserQuestion({
|
|
72
|
+
questions: [{
|
|
73
|
+
question: `这个任务涉及「${domain}」领域,建议先进行领域调研。\n研究可以帮助我们:\n• 了解行业标准和最佳实践\n• 识别关键技术选型\n• 发现常见陷阱和解决方案`,
|
|
74
|
+
header: "领域调研",
|
|
75
|
+
options: [
|
|
76
|
+
{ label: "先调研 (推荐)", description: "调用 /om:research 深入了解领域" },
|
|
77
|
+
{ label: "直接头脑风暴", description: "我对这个领域比较熟悉" }
|
|
78
|
+
],
|
|
79
|
+
multiSelect: false
|
|
80
|
+
}]
|
|
81
|
+
})
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
用户选择「先调研」后:
|
|
85
|
+
```
|
|
86
|
+
Skill 工具: skill = "om:research", args = "任务描述"
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
研究完成后,研究结论会作为头脑风暴的输入上下文,继续后续步骤。
|
|
90
|
+
|
|
91
|
+
## 步骤 3: 逐一澄清需求
|
|
92
|
+
|
|
93
|
+
**核心原则:一次只问一个问题。每条消息只有一个问题。**
|
|
94
|
+
|
|
95
|
+
**问题不是预定义的,而是根据具体任务动态生成。** 先检查项目上下文,再针对性地提问。
|
|
96
|
+
|
|
97
|
+
**问题应聚焦三个方面:**
|
|
98
|
+
|
|
99
|
+
### 3.1 目的(Purpose)— 为什么做这个?
|
|
100
|
+
```typescript
|
|
101
|
+
// 好的问题:深入理解动机
|
|
102
|
+
AskUserQuestion({
|
|
103
|
+
questions: [{
|
|
104
|
+
question: "这个功能解决的核心痛点是什么?",
|
|
105
|
+
header: "目的",
|
|
106
|
+
options: [
|
|
107
|
+
{ label: "提升效率", description: "自动化现有手动流程" },
|
|
108
|
+
{ label: "新增能力", description: "目前完全不具备的功能" },
|
|
109
|
+
{ label: "替代方案", description: "替换现有的第三方服务" }
|
|
110
|
+
],
|
|
111
|
+
multiSelect: false
|
|
112
|
+
}]
|
|
113
|
+
})
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
### 3.2 约束(Constraints)— 有什么限制?
|
|
117
|
+
```typescript
|
|
118
|
+
// 好的问题:理解边界条件
|
|
119
|
+
AskUserQuestion({
|
|
120
|
+
questions: [{
|
|
121
|
+
question: "客户管理的数据需要关联哪些实体?",
|
|
122
|
+
header: "数据模型",
|
|
123
|
+
options: [
|
|
124
|
+
{ label: "仅客户信息", description: "独立的客户 CRUD" },
|
|
125
|
+
{ label: "客户 + 邀请人", description: "需要追踪推荐关系" },
|
|
126
|
+
{ label: "客户 + 合作历史", description: "需要记录历史合作者" }
|
|
127
|
+
],
|
|
128
|
+
multiSelect: true
|
|
129
|
+
}]
|
|
130
|
+
})
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
### 3.3 成功标准(Success Criteria)— 怎样算完成?
|
|
134
|
+
```typescript
|
|
135
|
+
// 好的问题:明确验收条件
|
|
136
|
+
AskUserQuestion({
|
|
137
|
+
questions: [{
|
|
138
|
+
question: "这个功能的 MVP 最小可用版本包含什么?",
|
|
139
|
+
header: "MVP",
|
|
140
|
+
options: [
|
|
141
|
+
{ label: "基础 CRUD", description: "增删改查 + 列表" },
|
|
142
|
+
{ label: "CRUD + 搜索", description: "支持按名称/邮箱搜索" },
|
|
143
|
+
{ label: "完整功能", description: "包含关联、分组、导出等" }
|
|
144
|
+
],
|
|
145
|
+
multiSelect: false
|
|
146
|
+
}]
|
|
147
|
+
})
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**提问策略:**
|
|
151
|
+
- **优先选择题** — 比开放式更容易回答
|
|
152
|
+
- **根据上下文定制** — 不是固定问题列表,而是基于项目状态和任务类型动态调整
|
|
153
|
+
- **每个问题只关注一个方面** — 需要深入就拆成多个问题
|
|
154
|
+
- **YAGNI** — 主动建议去掉不必要的功能
|
|
155
|
+
- **深入追问** — 如果用户选"其他",用开放式问题跟进
|
|
156
|
+
|
|
157
|
+
## 步骤 4: 提出 2-3 种方案
|
|
158
|
+
|
|
159
|
+
理解需求后,提出不同实现方案:
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
AskUserQuestion({
|
|
163
|
+
questions: [{
|
|
164
|
+
question: `基于需求分析,有以下实现方案:
|
|
165
|
+
|
|
166
|
+
**方案 A(推荐): 组件化架构**
|
|
167
|
+
- 每个模块独立,通过接口通信
|
|
168
|
+
- 优点: 可测试性强、易维护
|
|
169
|
+
- 缺点: 初始代码量较多
|
|
170
|
+
|
|
171
|
+
**方案 B: 单体架构**
|
|
172
|
+
- 所有功能在一个模块内
|
|
173
|
+
- 优点: 开发快
|
|
174
|
+
- 缺点: 难以扩展
|
|
175
|
+
|
|
176
|
+
**方案 C: 微服务架构**
|
|
177
|
+
- 每个功能独立服务
|
|
178
|
+
- 优点: 高度解耦
|
|
179
|
+
- 缺点: 复杂度高,当前规模不需要
|
|
180
|
+
|
|
181
|
+
推荐方案 A,因为...`,
|
|
182
|
+
header: "技术方案",
|
|
183
|
+
options: [
|
|
184
|
+
{ label: "方案 A (推荐)", description: "组件化架构" },
|
|
185
|
+
{ label: "方案 B", description: "单体架构" },
|
|
186
|
+
{ label: "方案 C", description: "微服务架构" }
|
|
187
|
+
],
|
|
188
|
+
multiSelect: false
|
|
189
|
+
}]
|
|
190
|
+
})
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
## 步骤 5: 分步展示设计
|
|
194
|
+
|
|
195
|
+
**逐节展示设计方案,每节确认一次:**
|
|
196
|
+
|
|
197
|
+
每次展示一个设计方面:
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
📐 设计方案 - 第 1 部分: 架构
|
|
201
|
+
|
|
202
|
+
┌─────────┐ ┌─────────┐ ┌─────────┐
|
|
203
|
+
│ 输入层 │ ──→ │ 业务层 │ ──→ │ 数据层 │
|
|
204
|
+
└─────────┘ └─────────┘ └─────────┘
|
|
205
|
+
|
|
206
|
+
- 输入层: REST API + WebSocket
|
|
207
|
+
- 业务层: 核心逻辑处理
|
|
208
|
+
- 数据层: PostgreSQL + Redis 缓存
|
|
209
|
+
|
|
210
|
+
这部分设计是否合理?
|
|
211
|
+
```
|
|
212
|
+
|
|
213
|
+
**设计覆盖:**
|
|
214
|
+
1. 架构设计
|
|
215
|
+
2. 数据模型 / 核心实体
|
|
216
|
+
3. 关键接口 / API
|
|
217
|
+
4. 错误处理策略
|
|
218
|
+
5. 测试策略
|
|
219
|
+
|
|
220
|
+
**每个部分都使用 AskUserQuestion 确认:**
|
|
221
|
+
```typescript
|
|
222
|
+
AskUserQuestion({
|
|
223
|
+
questions: [{
|
|
224
|
+
question: "架构设计是否合理?",
|
|
225
|
+
header: "确认",
|
|
226
|
+
options: [
|
|
227
|
+
{ label: "继续", description: "设计合理,继续下一部分" },
|
|
228
|
+
{ label: "修改", description: "我有调整建议" }
|
|
229
|
+
],
|
|
230
|
+
multiSelect: false
|
|
231
|
+
}]
|
|
232
|
+
})
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## 步骤 6: 总结确认
|
|
236
|
+
|
|
237
|
+
所有设计部分确认后,展示完整总结:
|
|
238
|
+
|
|
239
|
+
```
|
|
240
|
+
🧠 头脑风暴总结
|
|
241
|
+
|
|
242
|
+
📋 任务: 实现客户管理系统
|
|
243
|
+
|
|
244
|
+
🎯 核心目标
|
|
245
|
+
- 客户信息管理(姓名、邮箱、邀请人)
|
|
246
|
+
- 历史合作记录追踪
|
|
247
|
+
|
|
248
|
+
📐 架构
|
|
249
|
+
- 组件化设计,每个模块独立可测
|
|
250
|
+
|
|
251
|
+
🔧 技术方案
|
|
252
|
+
- 数据库: PostgreSQL
|
|
253
|
+
- 缓存: Redis
|
|
254
|
+
- API: RESTful
|
|
255
|
+
|
|
256
|
+
⚠️ 风险
|
|
257
|
+
- 数据迁移: 需要兼容旧格式
|
|
258
|
+
|
|
259
|
+
✅ 验收标准
|
|
260
|
+
- CRUD 接口完整
|
|
261
|
+
- 测试覆盖率 > 80%
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
```typescript
|
|
265
|
+
AskUserQuestion({
|
|
266
|
+
questions: [{
|
|
267
|
+
question: "头脑风暴完成,是否开始执行任务?",
|
|
268
|
+
header: "下一步",
|
|
269
|
+
options: [
|
|
270
|
+
{ label: "开始执行 (推荐)", description: "写入 tasks-input.json 并调用 /om:start" },
|
|
271
|
+
{ label: "继续探索", description: "还有问题需要进一步讨论" },
|
|
272
|
+
{ label: "仅生成计划", description: "生成详细计划但不执行" }
|
|
273
|
+
],
|
|
274
|
+
multiSelect: false
|
|
275
|
+
}]
|
|
276
|
+
})
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
## 步骤 7: 输出设计文档
|
|
280
|
+
|
|
281
|
+
总结确认后,将设计写入文档,便于后续执行时参考:
|
|
282
|
+
|
|
283
|
+
```bash
|
|
284
|
+
# 确保目录存在
|
|
285
|
+
mkdir -p docs/openmatrix
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
**写入设计文档到 `docs/openmatrix/YYYY-MM-DD-<topic>-design.md`:**
|
|
289
|
+
|
|
290
|
+
```markdown
|
|
291
|
+
# 设计方案: 任务标题
|
|
292
|
+
|
|
293
|
+
日期: YYYY-MM-DD
|
|
294
|
+
|
|
295
|
+
## 核心目标
|
|
296
|
+
- 目标 1
|
|
297
|
+
- 目标 2
|
|
298
|
+
|
|
299
|
+
## 架构设计
|
|
300
|
+
(从步骤 5 确认的内容)
|
|
301
|
+
|
|
302
|
+
## 数据模型 / 核心实体
|
|
303
|
+
(从步骤 5 确认的内容)
|
|
304
|
+
|
|
305
|
+
## 关键接口 / API
|
|
306
|
+
(从步骤 5 确认的内容)
|
|
307
|
+
|
|
308
|
+
## 技术方案
|
|
309
|
+
- 方案选择: 方案 X
|
|
310
|
+
- 理由: ...
|
|
311
|
+
|
|
312
|
+
## 错误处理策略
|
|
313
|
+
(从步骤 5 确认的内容)
|
|
314
|
+
|
|
315
|
+
## 测试策略
|
|
316
|
+
(从步骤 5 确认的内容)
|
|
317
|
+
|
|
318
|
+
## 约束与风险
|
|
319
|
+
- 约束 1
|
|
320
|
+
- 风险 1 及应对
|
|
321
|
+
|
|
322
|
+
## 验收标准
|
|
323
|
+
- 标准 1
|
|
324
|
+
- 标准 2
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
```typescript
|
|
328
|
+
AskUserQuestion({
|
|
329
|
+
questions: [{
|
|
330
|
+
question: `设计文档已写入 docs/openmatrix/${filename}\n\n下一步?`,
|
|
331
|
+
header: "下一步",
|
|
332
|
+
options: [
|
|
333
|
+
{ label: "开始执行 (推荐)", description: "写入 tasks-input.json 并调用 /om:start" },
|
|
334
|
+
{ label: "修改设计", description: "需要调整设计方案" }
|
|
335
|
+
],
|
|
336
|
+
multiSelect: false
|
|
337
|
+
}]
|
|
338
|
+
})
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
## 步骤 8: 写入 tasks-input.json 并调用 /om:start
|
|
342
|
+
|
|
343
|
+
用户选择"开始执行"后:
|
|
344
|
+
|
|
345
|
+
1. **检测状态:**
|
|
346
|
+
```bash
|
|
347
|
+
ls .openmatrix/state.json 2>/dev/null
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
2. **初始化(如需要):**
|
|
351
|
+
```bash
|
|
352
|
+
openmatrix start --init-only
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
3. **写入 `.openmatrix/tasks-input.json`:**
|
|
356
|
+
```json
|
|
357
|
+
{
|
|
358
|
+
"title": "任务标题",
|
|
359
|
+
"description": "基于头脑风暴的整体描述",
|
|
360
|
+
"goals": ["目标1: 独立功能模块", "目标2: 独立功能模块"],
|
|
361
|
+
"constraints": ["约束"],
|
|
362
|
+
"deliverables": ["交付物"],
|
|
363
|
+
"plan": "## 技术方案\n..."
|
|
364
|
+
}
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
> **注意**: `quality`、`mode`、`e2eTests` 不在此写入,由 `/om:start` 的必选问题决定。
|
|
368
|
+
|
|
369
|
+
4. **⚠️ 必须执行(不可跳过):使用 Skill 工具调用 `/om:start`**
|
|
370
|
+
|
|
371
|
+
```
|
|
372
|
+
Skill 工具: skill = "om:start"
|
|
373
|
+
```
|
|
374
|
+
|
|
375
|
+
这不是可选的 — 如果不调用 `/om:start`,任务不会开始执行。
|
|
376
|
+
`/om:start` 会检测到已存在的 `tasks-input.json`,然后询问必选问题(质量等级、E2E、执行模式)。
|
|
377
|
+
|
|
378
|
+
</process>
|
|
379
|
+
|
|
380
|
+
<arguments>
|
|
381
|
+
$ARGUMENTS
|
|
382
|
+
</arguments>
|
|
383
|
+
|
|
384
|
+
<examples>
|
|
385
|
+
/om:brainstorm # 交互式头脑风暴
|
|
386
|
+
/om:brainstorm docs/task.md # 基于任务文件头脑风暴
|
|
387
|
+
/om:brainstorm "实现用户登录功能" # 基于描述头脑风暴
|
|
388
|
+
</examples>
|
|
389
|
+
|
|
390
|
+
<notes>
|
|
391
|
+
## 关键原则
|
|
392
|
+
|
|
393
|
+
- **一次只问一个问题** — 不要一次问多个
|
|
394
|
+
- **优先选择题** — 比开放式更容易回答
|
|
395
|
+
- **YAGNI** — 主动建议去掉不必要的设计
|
|
396
|
+
- **提出 2-3 种方案** — 带权衡和推荐
|
|
397
|
+
- **分步确认** — 每部分设计确认后再继续
|
|
398
|
+
- **为隔离而设计** — 每个模块应有清晰的边界和接口
|
|
399
|
+
- **问题要贴合任务** — 不问泛泛的问题,而是针对具体任务深入
|
|
400
|
+
- **理解目的 > 理解实现** — 先搞清楚为什么做,再讨论怎么做
|
|
401
|
+
|
|
402
|
+
## 领域调研集成
|
|
403
|
+
|
|
404
|
+
- 检测到垂直领域(游戏、支付、区块链等)时,主动建议 `/om:research`
|
|
405
|
+
- 研究完成后,研究结论作为后续提问和设计的输入上下文
|
|
406
|
+
- 如果用户对领域熟悉,可以跳过研究直接进入头脑风暴
|
|
407
|
+
- 研究产出的文档可引用在设计文档中
|
|
408
|
+
|
|
409
|
+
## 设计文档
|
|
410
|
+
|
|
411
|
+
- 每次头脑风暴都会输出设计文档到 `docs/openmatrix/YYYY-MM-DD-<topic>-design.md`
|
|
412
|
+
- 文档包含:核心目标、架构、数据模型、接口、技术方案、错误处理、测试策略、风险、验收标准
|
|
413
|
+
- 设计文档是 `/om:start` 执行时的重要参考
|
|
414
|
+
- 文档内容来自步骤 5 逐节确认的设计
|
|
415
|
+
|
|
416
|
+
## 在已有代码库中工作
|
|
417
|
+
|
|
418
|
+
- 提出变更前,先探索现有结构,遵循现有模式
|
|
419
|
+
- 如果现有代码有问题(文件太大、边界不清、职责混乱),在设计中有针对性地改进
|
|
420
|
+
- 不要提出无关的重构建议,聚焦当前目标
|
|
421
|
+
|
|
422
|
+
## 问题深度示例
|
|
423
|
+
|
|
424
|
+
**不好的问题(太泛):**
|
|
425
|
+
- "你的技术栈是什么?"
|
|
426
|
+
- "你需要测试吗?"
|
|
427
|
+
|
|
428
|
+
**好的问题(贴合具体任务):**
|
|
429
|
+
- "客户管理的邀请人字段,是只记录最近一个邀请人,还是需要完整的邀请链?"
|
|
430
|
+
- "站内信需要支持已读/未读状态吗?还是只需要通知推送?"
|
|
431
|
+
- "物流追踪是实时推送还是定时轮询?这影响 API 设计。"
|
|
432
|
+
|
|
433
|
+
## 流程图
|
|
434
|
+
|
|
435
|
+
```
|
|
436
|
+
┌─────────────────┐
|
|
437
|
+
│ 探索项目上下文 │
|
|
438
|
+
└────────┬────────┘
|
|
439
|
+
│
|
|
440
|
+
▼
|
|
441
|
+
┌─────────────────┐
|
|
442
|
+
│ 评估范围 │
|
|
443
|
+
│ (是否需要分解) │
|
|
444
|
+
└────────┬────────┘
|
|
445
|
+
│
|
|
446
|
+
▼
|
|
447
|
+
┌─────────────────┐
|
|
448
|
+
│ 领域检测 │ YES → /om:research → 研究结论作为上下文
|
|
449
|
+
│ (是否需要调研) │──────────────────────────────────────────────┐
|
|
450
|
+
└────────┬────────┘ │
|
|
451
|
+
│ NO / 研究完成 │
|
|
452
|
+
▼ ◀────────────────────────────────────────────────────┘
|
|
453
|
+
┌─────────────────┐
|
|
454
|
+
│ 逐一澄清需求 │◀─────┐
|
|
455
|
+
│ (一次一个问题) │ │
|
|
456
|
+
│ 深入理解目的/ │ │
|
|
457
|
+
│ 约束/成功标准 │ │
|
|
458
|
+
└────────┬────────┘ │
|
|
459
|
+
│ │
|
|
460
|
+
还有问题? ───── YES ─┘
|
|
461
|
+
│ NO
|
|
462
|
+
▼
|
|
463
|
+
┌─────────────────┐
|
|
464
|
+
│ 提出 2-3 种方案 │
|
|
465
|
+
│ (附权衡和推荐) │
|
|
466
|
+
└────────┬────────┘
|
|
467
|
+
│
|
|
468
|
+
▼
|
|
469
|
+
┌─────────────────┐
|
|
470
|
+
│ 分步展示设计 │◀─────┐
|
|
471
|
+
│ (每步确认) │ │
|
|
472
|
+
└────────┬────────┘ │
|
|
473
|
+
│ │
|
|
474
|
+
需要修改? ───── YES ─┘
|
|
475
|
+
│ NO
|
|
476
|
+
▼
|
|
477
|
+
┌─────────────────┐
|
|
478
|
+
│ 总结 + 确认 │
|
|
479
|
+
└────────┬────────┘
|
|
480
|
+
│
|
|
481
|
+
▼
|
|
482
|
+
┌─────────────────┐
|
|
483
|
+
│ 写入设计文档 │
|
|
484
|
+
│ (docs/openmatrix/) │
|
|
485
|
+
└────────┬────────┘
|
|
486
|
+
│
|
|
487
|
+
开始执行
|
|
488
|
+
│
|
|
489
|
+
▼
|
|
490
|
+
┌─────────────────┐
|
|
491
|
+
│ 写入 JSON │
|
|
492
|
+
│ 调用 /om:start │
|
|
493
|
+
└─────────────────┘
|
|
494
|
+
```
|
|
495
|
+
</notes>
|