openmatrix 0.1.0 → 0.1.2

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/skills/om.md ADDED
@@ -0,0 +1,124 @@
1
+ ---
2
+ name: om
3
+ description: OpenMatrix 默认入口 - 直接输入任务描述即可启动
4
+ ---
5
+
6
+ <NO-OTHER-SKILLS>
7
+ 执行此技能时,不得调用 superpowers、gsd 或其他任务编排相关的技能。OpenMatrix 独立运行,不依赖外部任务编排系统。
8
+ </NO-OTHER-SKILLS>
9
+
10
+ <objective>
11
+ OpenMatrix 的默认入口。用户可以直接输入任务描述,系统会自动启动 /om:start 执行任务编排。
12
+ </objective>
13
+
14
+ <process>
15
+ 1. **解析用户输入**
16
+
17
+ 用户输入 `$ARGUMENTS` 可能是:
18
+ - 任务描述 (如 "实现用户登录功能")
19
+ - 文件路径 (如 "docs/task.md")
20
+ - 空输入
21
+
22
+ 2. **判断输入类型**
23
+
24
+ **如果是任务描述或文件路径**:
25
+ → 直接调用 `/om:start` 并传递参数
26
+
27
+ **如果是空输入**:
28
+ → 显示帮助信息
29
+
30
+ 3. **自动启动 /om:start**
31
+
32
+ 无论用户输入什么,都自动转换为 `/om:start` 调用:
33
+
34
+ ```
35
+ 用户输入: "实现用户登录"
36
+ 系统执行: /om:start 实现用户登录
37
+
38
+ 用户输入: "docs/task.md"
39
+ 系统执行: /om:start docs/task.md
40
+
41
+ 用户输入: (空)
42
+ 系统显示: 帮助信息
43
+ ```
44
+
45
+ 4. **帮助信息**
46
+
47
+ 如果用户输入为空或输入 `--help`,显示:
48
+
49
+ ```
50
+ 📦 OpenMatrix - AI 任务编排系统
51
+
52
+ 用法:
53
+ /om <任务描述> 直接启动任务
54
+ /om:start <任务> 交互式启动 (可选质量级别)
55
+ /om:auto <任务> 全自动执行
56
+
57
+ 示例:
58
+ /om 实现用户登录功能
59
+ /om 修复登录页面的样式问题
60
+ /om 添加 API 接口
61
+
62
+ 质量级别:
63
+ 🚀 strict - TDD + 80%覆盖率 (生产代码)
64
+ ⚖️ balanced - 60%覆盖率 (日常开发)
65
+ ⚡ fast - 无质量门禁 (快速原型)
66
+
67
+ 其他命令:
68
+ /om:status - 查看状态
69
+ /om:meeting - 处理阻塞
70
+ /om:report - 生成报告
71
+ ```
72
+
73
+ </process>
74
+
75
+ <arguments>
76
+ $ARGUMENTS
77
+ </arguments>
78
+
79
+ <examples>
80
+ /om 实现用户登录功能 # 自动启动任务编排
81
+ /om 修复登录页面的样式问题 # 直接描述任务
82
+ /om docs/task.md # 从文件读取任务
83
+ /om # 显示帮助
84
+ </examples>
85
+
86
+ <notes>
87
+ ## 工作原理
88
+
89
+ ```
90
+ 用户输入: /om 实现登录
91
+
92
+
93
+ ┌─────────────────┐
94
+ │ 检测到任务描述 │
95
+ └────────┬────────┘
96
+
97
+
98
+ ┌─────────────────┐
99
+ │ 自动调用 │
100
+ │ /om:start │
101
+ │ 实现登录 │
102
+ └─────────────────┘
103
+ ```
104
+
105
+ ## 与 /om:start 的关系
106
+
107
+ `/om` 是 `/om:start` 的快捷方式:
108
+ - `/om <任务>` ≡ `/om:start <任务>`
109
+ - 用户体验更简洁
110
+ - 功能完全相同
111
+
112
+ ## 推荐用法
113
+
114
+ ```bash
115
+ # 快速启动 (推荐)
116
+ /om 实现用户登录
117
+
118
+ # 等价于
119
+ /om:start 实现用户登录
120
+
121
+ # 全自动模式
122
+ /om:auto 实现用户登录
123
+ ```
124
+ </notes>
package/skills/start.md CHANGED
@@ -12,11 +12,19 @@ description: 启动新的任务执行周期
12
12
  </objective>
13
13
 
14
14
  <process>
15
- 1. **检查当前状态**
15
+ 1. **检查并初始化 .openmatrix 目录**
16
+ - 检查 `.openmatrix/` 目录是否存在
17
+ - 如果不存在,调用 CLI 初始化:
18
+ ```bash
19
+ openmatrix start --init-only
20
+ ```
21
+ - 这会创建 `.openmatrix/`、`.openmatrix/tasks/`、`.openmatrix/approvals/` 目录
22
+
23
+ 2. **检查当前状态**
16
24
  - 读取 `.openmatrix/state.json`
17
25
  - 如果 `status === 'running'`,提示用户先完成或暂停
18
26
 
19
- 2. **检查 Git 仓库**
27
+ 3. **检查 Git 仓库**
20
28
  - 检查当前目录是否存在 `.git` 文件夹
21
29
  - 如果没有:
22
30
  - 询问用户是否初始化 Git 仓库 (使用 AskUserQuestion)
@@ -25,12 +33,12 @@ description: 启动新的任务执行周期
25
33
  - 检查是否有远程仓库配置:
26
34
  - 如果没有远程仓库,提示用户添加: `git remote add origin <url>`
27
35
 
28
- 3. **解析任务输入**
36
+ 4. **解析任务输入**
29
37
  - 如果 `$ARGUMENTS` 提供文件路径 → 读取文件内容
30
38
  - 如果 `$ARGUMENTS` 是任务描述 → 直接使用
31
39
  - 如果无参数 → **使用 AskUserQuestion 询问用户要执行的任务**
32
40
 
33
- 4. **⚠️ 交互式问答 (必须执行)**
41
+ 5. **⚠️ 交互式问答 (必须执行)**
34
42
 
35
43
  **重要**: 除非用户明确指定 `--skip-questions`,否则必须执行交互式问答。
36
44
 
@@ -156,7 +164,7 @@ description: 启动新的任务执行周期
156
164
  审批点: plan, merge
157
165
  ```
158
166
 
159
- 6. **执行模式确认** (使用 AskUserQuestion)
167
+ 7. **执行模式确认** (使用 AskUserQuestion)
160
168
 
161
169
  ```typescript
162
170
  AskUserQuestion({
@@ -182,7 +190,7 @@ AskUserQuestion({
182
190
  })
183
191
  ```
184
192
 
185
- 7. **开始执行** (⚠️ 严格模式)
193
+ 8. **开始执行** (⚠️ 严格模式)
186
194
 
187
195
  **重要**: 从此步骤开始,除非遇到 meeting 审批或失败,否则**不得暂停询问用户**。
188
196
 
@@ -201,8 +209,21 @@ c) **执行循环** (由 Skill 驱动):
201
209
  while (有待执行任务) {
202
210
  1. 读取状态文件获取 SubagentTask
203
211
  2. 调用 Agent 工具执行 Subagent
204
- 3. Subagent 完成后,更新状态文件
205
- 4. Git 提交 (如果配置了自动提交)
212
+ 3. Subagent 完成后,更新状态文件:
213
+ ```bash
214
+ openmatrix complete <taskId> --success/--failed
215
+ ```
216
+ 4. **Git 自动提交** (每个子任务完成后):
217
+ ```bash
218
+ git add -A
219
+ git commit -m "feat(task-id): 任务标题
220
+
221
+ - 修改内容1
222
+ - 修改内容2
223
+
224
+ 任务ID: TASK-XXX
225
+ RunID: run-XXX"
226
+ ```
206
227
  5. Phase 验收测试 (verify phase)
207
228
  6. **检查是否需要审批**:
208
229
  - 如果配置了 auto 模式 (`approvalPoints` 为空):
@@ -219,15 +240,88 @@ while (有待执行任务) {
219
240
  ├── 任务C 完成 ✓
220
241
  └── 任务D 阻塞 → 创建Meeting → **跳过任务,继续执行** ↷
221
242
 
222
- 执行完成!
223
- 📋 有待处理的 Meeting (2个):
224
- - APPR-001: 数据库连接失败 (TASK-B)
225
- - APPR-002: API设计决策 (TASK-D)
243
+ 所有任务执行完成!
244
+ ```
245
+
246
+ d) **执行完成后自动处理 Meeting**:
247
+
248
+ ```bash
249
+ # 检查是否有 pending 的 Meeting
250
+ openmatrix meeting --list --pending
251
+ ```
252
+
253
+ **如果有 pending 的 Meeting,立即进入交互式处理**:
254
+
255
+ ```
256
+ 📋 检测到待处理的 Meeting (2个)
257
+
258
+ ┌─────────────────────────────────────────┐
259
+ │ [1] 🔴 TASK-001 - 数据库连接失败 │
260
+ │ 阻塞原因: 无法连接到远程数据库 │
261
+ │ │
262
+ │ [2] 🤔 TASK-003 - API设计决策 │
263
+ │ 问题: 选择 REST 还是 GraphQL │
264
+ └─────────────────────────────────────────┘
265
+ ```
266
+
267
+ **使用 AskUserQuestion 逐个处理**:
268
+
269
+ ```typescript
270
+ // 1. 先选择要处理的 Meeting
271
+ AskUserQuestion({
272
+ questions: [{
273
+ question: "请选择要处理的 Meeting:",
274
+ header: "Meeting",
275
+ options: [
276
+ { label: "[1] TASK-001 - 数据库连接失败", description: "阻塞 - 需要信息" },
277
+ { label: "[2] TASK-003 - API设计决策", description: "决策 - 技术选型" },
278
+ { label: "全部跳过", description: "标记所有 Meeting 为跳过" }
279
+ ],
280
+ multiSelect: false
281
+ }]
282
+ })
283
+
284
+ // 2. 根据类型展示处理选项
285
+ // 阻塞型:
286
+ AskUserQuestion({
287
+ questions: [{
288
+ question: "如何处理此阻塞?",
289
+ header: "处理方式",
290
+ options: [
291
+ { label: "💡 提供信息", description: "提供解决问题所需的信息后重试" },
292
+ { label: "⏭️ 跳过任务", description: "标记为可选,继续执行" },
293
+ { label: "🔄 重试", description: "直接重试此任务" }
294
+ ],
295
+ multiSelect: false
296
+ }]
297
+ })
298
+
299
+ // 决策型:
300
+ AskUserQuestion({
301
+ questions: [{
302
+ question: "请做出决策:",
303
+ header: "决策",
304
+ options: [
305
+ { label: "方案 A", description: "方案A描述" },
306
+ { label: "方案 B", description: "方案B描述" }
307
+ ],
308
+ multiSelect: false
309
+ }]
310
+ })
311
+ ```
226
312
 
227
- 请使用 /om:meeting 查看并处理
313
+ **处理完成后,如果用户提供了信息或选择重试,重新执行阻塞任务**:
314
+ ```bash
315
+ openmatrix meeting APPR-001 --action provide-info --info "..."
316
+ # 或
317
+ openmatrix meeting APPR-001 --action retry
318
+
319
+ # 然后重新执行阻塞的任务
320
+ openmatrix resume TASK-001
228
321
  ```
229
322
 
230
- Meeting 保持 `pending` 状态,用户最后使用 `/om:meeting` 以交互式方式处理
323
+ **⚠️ 重要**: Meeting 处理是执行流程的一部分,必须在任务结束前完成。不要让用户手动调用 /om:meeting
324
+
231
325
  7. 继续下一个任务
232
326
  }
233
327
  ```
@@ -263,11 +357,16 @@ Agent({
263
357
  - 只有遇到 **meeting** 类型的审批时才暂停
264
358
  - 其他情况下,让 Agent 完整执行任务并在完成后自动返回结果
265
359
 
266
- 8. **状态更新**
360
+ 9. **执行完成 - 最终 Git 提交**
267
361
 
268
- 每个 Subagent 完成后,更新任务状态:
362
+ 所有任务完成后,执行最终提交:
269
363
  ```bash
270
- openmatrix complete <taskId> --success/--failed
364
+ git add -A
365
+ git commit -m "feat: 完成所有任务
366
+
367
+ RunID: run-XXX
368
+ 任务数: N
369
+ 完成时间: YYYY-MM-DD HH:mm:ss"
271
370
  ```
272
371
 
273
372
  </process>
@@ -287,9 +386,11 @@ $ARGUMENTS
287
386
 
288
387
  | 级别 | TDD | 覆盖率 | Lint | 安全扫描 | AI验收 | 适用场景 |
289
388
  |------|:---:|:------:|:----:|:--------:|:------:|---------|
290
- | **strict** | ✅ | 80% | ✅ 严格 | ✅ | ✅ | 生产代码、核心功能 |
291
- | **balanced** | ❌ | 60% | ✅ | ✅ | ✅ | 日常开发 (默认) |
292
- | **fast** | ❌ | 0% | ❌ | ❌ | ❌ | 快速原型、POC |
389
+ | **strict** | ✅ | >80% | ✅ 严格 | ✅ | ✅ | 生产代码、核心功能 |
390
+ | **balanced** | ❌ | >60% | ✅ | ✅ | ✅ | 日常开发 (默认) |
391
+ | **fast** | ❌ | >20% | ❌ | ❌ | ❌ | 快速原型、POC |
392
+
393
+ > strict 可配置为 100%。80% 覆盖核心业务逻辑,100% 成本高收益低。
293
394
 
294
395
  ### strict 模式 (推荐生产代码)
295
396
  ```
@@ -367,7 +468,38 @@ $ARGUMENTS
367
468
  ┌─────────────────┐
368
469
  │ 开始执行 │
369
470
  │ (应用质量配置) │
370
- └─────────────────┘
471
+ └────────┬────────┘
472
+
473
+
474
+ ┌─────────────────┐
475
+ │ 所有任务完成? │
476
+ └────────┬────────┘
477
+
478
+ ┌────┴────┐
479
+ │ │
480
+ 否 是
481
+ │ │
482
+ ▼ ▼
483
+ ┌───────┐ ┌─────────────────┐
484
+ │继续执行│ │有 pending │
485
+ └───────┘ │Meeting? │
486
+ └────────┬────────┘
487
+
488
+ ┌────┴────┐
489
+ │ │
490
+ 否 是
491
+ │ │
492
+ ▼ ▼
493
+ ┌───────┐ ┌─────────────┐
494
+ │ 完成 │ │ 交互式处理 │
495
+ └───────┘ │ Meeting │
496
+ └──────┬──────┘
497
+
498
+
499
+ ┌─────────────┐
500
+ │ 重新执行 │
501
+ │ 阻塞任务 │
502
+ └─────────────┘
371
503
  ```
372
504
 
373
505
  ## 执行模式对比