openmatrix 0.2.14 → 0.2.16

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.
@@ -0,0 +1,227 @@
1
+ ---
2
+ name: om:resume-feature
3
+ description: "恢复中断的 /om:feature 流程。读取 .openmatrix/feature-session.json 状态文件,继续执行剩余任务。"
4
+ priority: high
5
+ ---
6
+
7
+ <NO-OTHER-SKILLS>
8
+ **绝对禁止**调用以下技能:
9
+ - ❌ superpowers:brainstorming → 用 /om:brainstorm 代替
10
+ - ❌ superpowers:* → 全部被 OpenMatrix 替代
11
+ - ❌ gsd:* → 全部被 OpenMatrix 替代
12
+ - ❌ /om:start / /om:auto → 本 skill 是轻量恢复,不调用完整流程
13
+ </NO-OTHER-SKILLS>
14
+
15
+ <objective>
16
+ 恢复中断的轻量级小需求开发流程:读取持久化状态,继续执行剩余任务块。
17
+ </objective>
18
+
19
+ <process>
20
+
21
+ ## Step 1: 检查持久化文件是否存在
22
+
23
+ ```bash
24
+ ls -la .openmatrix/feature-session.json 2>/dev/null || echo "NOT_FOUND"
25
+ ```
26
+
27
+ | 检查结果 | 处理 |
28
+ |---------|------|
29
+ | `NOT_FOUND` | 提示"未找到持久化文件,请使用 /om:feature 重新开始"并退出 |
30
+ | 存在 | 继续执行 |
31
+
32
+ ## Step 2: 读取会话状态
33
+
34
+ ```bash
35
+ cat .openmatrix/feature-session.json
36
+ ```
37
+
38
+ 读取并解析以下信息:
39
+ - `sessionId` - 会话 ID
40
+ - `status` - 当前状态(running/paused/failed)
41
+ - `tasks` - 任务列表
42
+ - `currentTaskIndex` - 当前任务索引
43
+ - `quality` - 质量等级
44
+ - `failureCount` - 各任务失败次数统计
45
+
46
+ 同时读取:
47
+ - `.openmatrix/feature-context.md` - 项目上下文
48
+ - `.openmatrix/feature-progress.md` - Agent 执行进度
49
+
50
+ ## Step 3: 恢复 TodoWrite 状态
51
+
52
+ 根据读取的任务列表,恢复 TodoWrite 状态:
53
+
54
+ ```typescript
55
+ TodoWrite({
56
+ todos: tasks.map((task, index) => ({
57
+ activeForm: `正在执行 ${task.content}`,
58
+ content: task.content,
59
+ status: index < currentTaskIndex ? "completed" :
60
+ index === currentTaskIndex ? "in_progress" : "pending"
61
+ }))
62
+ })
63
+ ```
64
+
65
+ ## Step 4: 展示恢复状态
66
+
67
+ ```
68
+ 🔄 恢复会话:${sessionId}
69
+
70
+ 📊 当前状态:
71
+ - 质量等级:${quality}
72
+ - 已完成任务:${completedCount}/${totalCount}
73
+ - 当前任务:${currentTask.content}
74
+ - 失败次数:${failureCount[currentTaskIndex] || 0}
75
+
76
+ 📝 已完成的决策(来自 feature-progress.md):
77
+ ${显示前序任务的关键决策}
78
+ ```
79
+
80
+ ## Step 5: 继续执行当前任务
81
+
82
+ 从 `currentTaskIndex` 位置继续执行:
83
+
84
+ **5.1 如果当前任务是 in_progress 状态(之前失败):**
85
+
86
+ 询问用户:
87
+ AskUserQuestion: `header: "继续方式"`, `multiSelect: false`
88
+ **question:** 当前任务之前验证失败,如何继续?
89
+
90
+ | label | description |
91
+ |-------|-------------|
92
+ | `重试当前任务` | 重新执行当前任务块 |
93
+ | `跳过当前任务` | 标记为完成,继续下一任务(风险较高) |
94
+ | `重新拆分` | 返回 /om:feature 重新规划 |
95
+
96
+ **5.2 如果当前任务是 pending 状态(正常恢复):**
97
+
98
+ 直接调用 Agent 执行:
99
+
100
+ ```typescript
101
+ Agent({
102
+ subagent_type: "general-purpose",
103
+ description: currentTask.content,
104
+ prompt: `你是实现专家。执行以下任务块。
105
+
106
+ ## 项目上下文(请读取文件)
107
+ 请先读取 .openmatrix/feature-context.md 了解项目上下文。
108
+
109
+ ## 前序任务结果(请读取文件)
110
+ 请读取 .openmatrix/feature-progress.md 了解前序 Agent 的决策和发现。
111
+
112
+ ## 当前任务
113
+ - 任务名称:${currentTask.content}
114
+ - 预估文件:${currentTask.files}
115
+ - 质量等级:${quality}
116
+
117
+ ## 质量要求
118
+ ${quality === 'strict' ? `
119
+ - 必须使用 TDD:先写测试,再写实现
120
+ - 测试覆盖率要求:>80%
121
+ - 必须通过严格 Lint
122
+ - 必须通过安全扫描
123
+ ` : quality === 'balanced' ? `
124
+ - 测试覆盖率要求:>60%
125
+ - 必须通过 Lint
126
+ - 必须通过安全扫描
127
+ ` : `
128
+ - 无质量门禁要求
129
+ `}
130
+
131
+ ## 实施原则
132
+ 1. 先阅读预估文件中的现有代码,理解上下文后再动手
133
+ 2. 只修改当前任务相关的文件
134
+ 3. 不做"顺便"的重构或优化
135
+
136
+ ## 禁止行为
137
+ ❌ 执行 git commit(由主流程处理)
138
+ ❌ 执行 git checkout/merge/pull/push/rebase/branch
139
+ ❌ 修改与当前任务无关的文件
140
+
141
+ ✅ 允许:git status, git diff, git log`,
142
+ run_in_background: true
143
+ })
144
+ ```
145
+
146
+ ## Step 6: 验证(按质量等级)
147
+
148
+ | 质量等级 | 验证命令 |
149
+ |---------|---------|
150
+ | `strict` | `npm test -- --run && npm run lint && npm run test:coverage && npm audit --audit-level=moderate` |
151
+ | `balanced` | `npm test -- --run && npm run lint && npm audit --audit-level=moderate` |
152
+ | `fast` | 跳过验证 |
153
+
154
+ 验证失败处理:
155
+ - 更新 `.openmatrix/feature-session.json` 的 `failureCount`
156
+ - 如果同一任务失败 3 次,提示用户质疑拆分方案
157
+ - 停止执行,提示再次使用 `/om:resume-feature`
158
+
159
+ ## Step 7: Git 提交
160
+
161
+ 验证通过后:
162
+
163
+ ```bash
164
+ git status --porcelain
165
+ git add ${modifiedFiles}
166
+ git commit -m "feat(feature): ${sessionId} - ${currentTask.content}"
167
+ ```
168
+
169
+ ## Step 8: 更新持久化状态
170
+
171
+ ```bash
172
+ # 更新 currentTaskIndex
173
+ cat > .openmatrix/feature-session.json << EOF
174
+ {
175
+ "sessionId": "${sessionId}",
176
+ "status": "running",
177
+ "tasks": ${tasks},
178
+ "currentTaskIndex": ${currentTaskIndex + 1},
179
+ "quality": "${quality}",
180
+ "failureCount": ${failureCount}
181
+ }
182
+ EOF
183
+
184
+ # 更新进度文件
185
+ echo "## 任务 ${currentTaskIndex}: ${currentTask.content}" >> .openmatrix/feature-progress.md
186
+ echo "${agentOutput}" >> .openmatrix/feature-progress.md
187
+ ```
188
+
189
+ ## Step 9: 继续下一任务或完成
190
+
191
+ - 如果还有 pending 任务:回到 Step 5
192
+ - 如果所有任务完成:执行 Step 10
193
+
194
+ ## Step 10: 全部任务完成
195
+
196
+ ```bash
197
+ # 最终整体验证
198
+ npm test -- --run
199
+
200
+ # 清理持久化文件(可选)
201
+ # 用户可选择保留或删除
202
+ ```
203
+
204
+ 输出执行摘要并更新状态为 `completed`。
205
+
206
+ </process>
207
+
208
+ <notes>
209
+ ## 恢复条件
210
+
211
+ - 必须存在 `.openmatrix/feature-session.json`
212
+ - 必须由 `/om:feature` 启用持久化后产生
213
+
214
+ ## 失败次数限制
215
+
216
+ 同一任务失败 3 次以上:
217
+ - 建议用户质疑拆分方案
218
+ - 提示可能需要切换到 `/om:start`
219
+
220
+ ## 持久化文件说明
221
+
222
+ | 文件 | 内容 |
223
+ |-----|------|
224
+ | `feature-session.json` | 会话状态、任务列表、当前索引、质量等级、失败次数 |
225
+ | `feature-context.md` | 项目上下文(技术栈、目录结构、CLAUDE.md) |
226
+ | `feature-progress.md` | 各 Agent 的执行决策和发现 |
227
+ </notes>
package/skills/start.md CHANGED
@@ -382,14 +382,77 @@ openmatrix complete TASK-XXX --success --summary "决策: xxx; 文件: xxx"
382
382
  # 提交验证(防止 commit 静默失败):
383
383
  git status --porcelain # 检查是否有未提交的文件
384
384
  # 如果有未提交文件 → 必须手动提交:
385
- git add -A && git commit -m "feat(TASK-XXX): 任务标题"
385
+ git add . && git commit -m "feat(TASK-XXX): 任务标题"
386
386
 
387
387
  openmatrix step --json # 获取下一个任务 + 检查是否全部完成
388
388
  ```
389
389
  `openmatrix step` 会从磁盘读取真实状态,不依赖上下文记忆。
390
390
  </LOOP-ENFORCEMENT>
391
391
 
392
- 对每个任务**必须使用 Agent 工具**(禁止用 gsd-executor 或其他技能替代):
392
+ #### 11.1 歧义检测机制
393
+
394
+ **Agent 输出中可能包含歧义报告(JSON 格式):**
395
+
396
+ 当 Agent 输出包含以下标记时,表示检测到歧义:
397
+ ```
398
+ <AMBIGUITY_REPORT>
399
+ {
400
+ "ambiguities": [
401
+ {
402
+ "type": "missing_info" | "conflicting_req" | "unclear_scope" | "tech_choice" | "edge_case",
403
+ "severity": "critical" | "high" | "medium" | "low",
404
+ "description": "歧义描述",
405
+ "suggestions": ["建议1", "建议2"]
406
+ }
407
+ ],
408
+ "overallSeverity": "critical" | "high" | "medium" | "low"
409
+ }
410
+ </AMBIGUITY_REPORT>
411
+ ```
412
+
413
+ **5 种歧义类型说明:**
414
+
415
+ | 类型 | 说明 | 示例 |
416
+ |------|------|------|
417
+ | `missing_info` | 缺失关键信息 | "未指定数据库类型" |
418
+ | `conflicting_req` | 需求冲突 | "既要高性能又要低成本" |
419
+ | `unclear_scope` | 范围不清晰 | "是否包含历史数据处理?" |
420
+ | `tech_choice` | 技术选型歧义 | "用 REST 还是 GraphQL?" |
421
+ | `edge_case` | 边界情况未定义 | "超过限制时如何处理?" |
422
+
423
+ #### 11.2 歧义处理策略
424
+
425
+ 根据 `overallSeverity` 和执行模式选择处理方式:
426
+
427
+ | 执行模式 | Critical/High | Medium/Low |
428
+ |---------|--------------|------------|
429
+ | **全自动执行** | Meeting + 继续执行 | Meeting + 继续执行 |
430
+ | **关键节点确认** | AskUserQuestion | Meeting + 继续执行 |
431
+ | **每阶段确认** | AskUserQuestion | Meeting + 继续执行 |
432
+
433
+ **Meeting 处理(写入阻塞记录):**
434
+ ```bash
435
+ # 将歧义信息写入 Meeting 记录,继续执行其他任务
436
+ openmatrix meeting --create --task TASK-XXX --reason "歧义: ${description}" --severity ${severity}
437
+ ```
438
+
439
+ **AskUserQuestion 处理(交互确认):**
440
+
441
+ AskUserQuestion: `header: "歧义确认"`, `multiSelect: false`
442
+ **question:** 检测到 ${severity} 级歧义:${description}。请确认处理方式
443
+
444
+ | label | description |
445
+ |-------|-------------|
446
+ | 提供信息 | 回答歧义相关问题,继续执行 |
447
+ | 跳过任务 | 标记当前任务为可选,继续执行其他任务 |
448
+ | 修改方案 | 根据歧义调整任务方案后继续 |
449
+
450
+ 用户选择后:
451
+ - **提供信息** → 将用户输入作为上下文注入,继续执行当前任务
452
+ - **跳过任务** → `openmatrix complete TASK-XXX --skip --reason "用户选择跳过"`
453
+ - **修改方案** → 更新任务方案,重新执行当前任务
454
+
455
+ #### 11.3 执行 Agent 任务
393
456
 
394
457
  ```typescript
395
458
  Agent({
@@ -538,7 +601,7 @@ openmatrix meeting --list
538
601
 
539
602
  所有任务完成后,执行最终 Git 提交(**必须使用 HEREDOC 格式**):
540
603
  ```bash
541
- git add -A && git commit -m "$(cat <<'EOF'
604
+ git add . && git commit -m "$(cat <<'EOF'
542
605
  feat: 完成所有任务 - 任务总标题
543
606
 
544
607
  改动点1