specops 0.2.2 → 0.2.4

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.
Files changed (62) hide show
  1. package/.opencode/agent/demand-analyst.md +69 -18
  2. package/.opencode/agent/verifier.md +231 -0
  3. package/.opencode/skills/brainstorming/SKILL.md +105 -0
  4. package/.opencode/skills/demand-analysis/SKILL.md +261 -47
  5. package/.opencode/skills/dispatching-parallel-agents/SKILL.md +180 -0
  6. package/.opencode/skills/executing-plans/SKILL.md +90 -0
  7. package/.opencode/skills/finishing-a-development-branch/SKILL.md +222 -0
  8. package/.opencode/skills/receiving-code-review/SKILL.md +213 -0
  9. package/.opencode/skills/repo-clone-analyze/SKILL.md +371 -0
  10. package/.opencode/skills/requesting-code-review/SKILL.md +105 -0
  11. package/.opencode/skills/requesting-code-review/code-reviewer.md +146 -0
  12. package/.opencode/skills/subagent-driven-development/SKILL.md +242 -0
  13. package/.opencode/skills/subagent-driven-development/code-quality-reviewer-prompt.md +20 -0
  14. package/.opencode/skills/subagent-driven-development/implementer-prompt.md +78 -0
  15. package/.opencode/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  16. package/.opencode/skills/systematic-debugging/SKILL.md +296 -0
  17. package/.opencode/skills/systematic-debugging/condition-based-waiting.md +115 -0
  18. package/.opencode/skills/systematic-debugging/defense-in-depth.md +122 -0
  19. package/.opencode/skills/systematic-debugging/root-cause-tracing.md +169 -0
  20. package/.opencode/skills/test-driven-development/SKILL.md +399 -0
  21. package/.opencode/skills/test-driven-development/testing-anti-patterns.md +299 -0
  22. package/.opencode/skills/using-git-worktrees/SKILL.md +218 -0
  23. package/.opencode/skills/using-superpowers/SKILL.md +99 -0
  24. package/.opencode/skills/verification-before-completion/SKILL.md +150 -0
  25. package/.opencode/skills/writing-plans/SKILL.md +123 -0
  26. package/.opencode/skills/writing-skills/SKILL.md +654 -0
  27. package/dist/__e2e__/01-state-engine.e2e.test.js +1 -1
  28. package/dist/acceptance/lazyDetector.js +1 -1
  29. package/dist/acceptance/lazyDetector.test.js +1 -1
  30. package/dist/acceptance/reporter.js +1 -1
  31. package/dist/acceptance/reporter.test.js +1 -1
  32. package/dist/acceptance/runner.js +1 -1
  33. package/dist/acceptance/runner.test.js +1 -1
  34. package/dist/cli.js +1 -1
  35. package/dist/context/index.js +1 -1
  36. package/dist/context/promptTemplate.js +1 -1
  37. package/dist/context/promptTemplate.test.js +1 -1
  38. package/dist/context/techContextLoader.js +1 -1
  39. package/dist/context/techContextLoader.test.js +1 -1
  40. package/dist/engine.js +1 -1
  41. package/dist/evolution/distiller.js +1 -1
  42. package/dist/evolution/index.js +1 -1
  43. package/dist/evolution/memoryGraph.js +1 -1
  44. package/dist/evolution/selector.js +1 -1
  45. package/dist/evolution/signals.js +1 -1
  46. package/dist/evolution/solidify.js +1 -1
  47. package/dist/evolution/store.js +1 -1
  48. package/dist/evolution/types.js +1 -1
  49. package/dist/init.js +1 -1
  50. package/dist/machines/agentMachine.js +1 -1
  51. package/dist/machines/agentMachine.test.js +1 -1
  52. package/dist/machines/supervisorMachine.js +1 -1
  53. package/dist/machines/supervisorMachine.test.js +1 -1
  54. package/dist/persistence/schema.js +1 -1
  55. package/dist/persistence/stateFile.js +1 -1
  56. package/dist/persistence/stateFile.test.js +1 -1
  57. package/dist/plugin-engine.js +1 -1
  58. package/dist/plugin.js +1 -1
  59. package/dist/types/index.js +1 -1
  60. package/dist/utils/id.js +1 -1
  61. package/package.json +8 -2
  62. package/scripts/postinstall.mjs +37 -7
@@ -0,0 +1,222 @@
1
+ ---
2
+ name: finishing-a-development-branch
3
+ description: 实现完成、所有测试通过后使用,指导如何集成工作,提供合并、PR 或清理的结构化选项
4
+ ---
5
+
6
+ # 完成开发分支
7
+
8
+ ## 概述
9
+
10
+ 指导开发工作的收尾,提供清晰的选项并处理所选的工作流。
11
+
12
+ **核心原则:** 验证测试 → 运行验收 → 展示选项 → 执行选择 → 清理。
13
+
14
+ **开始时宣布:** "我正在使用 finishing-a-development-branch skill 来完成这项工作。"
15
+
16
+ ## 流程
17
+
18
+ ### 步骤 1:验证测试
19
+
20
+ **展示选项之前,先验证测试通过:**
21
+
22
+ ```bash
23
+ # 运行项目的测试套件
24
+ npm test / cargo test / pytest / go test ./...
25
+ ```
26
+
27
+ **如果测试失败:**
28
+ ```
29
+ 测试失败(<N> 个失败)。完成前必须修复:
30
+
31
+ [展示失败信息]
32
+
33
+ 测试通过前无法进行合并/PR。
34
+ ```
35
+
36
+ 停下。不要进入步骤 2。
37
+
38
+ **如果测试通过:** 继续步骤 2。
39
+
40
+ ### 步骤 1.5:运行 specops 验收
41
+
42
+ **测试通过后,运行 specops 验收运行器确认全部通过:**
43
+
44
+ ```bash
45
+ # 运行 specops 验收检查
46
+ specops verify
47
+ ```
48
+
49
+ **如果验收失败:**
50
+ ```
51
+ 验收检查未通过(<N> 项失败)。完成前必须修复:
52
+
53
+ [展示失败项]
54
+
55
+ 验收全部通过前无法进行合并/PR。
56
+ ```
57
+
58
+ 停下。不要进入步骤 2。
59
+
60
+ **如果验收通过:** 继续步骤 2。
61
+
62
+ ### 步骤 2:确定基准分支
63
+
64
+ ```bash
65
+ # 尝试常见的基准分支
66
+ git merge-base HEAD main 2>/dev/null || git merge-base HEAD master 2>/dev/null
67
+ ```
68
+
69
+ 或者询问:"这个分支是从 main 分出来的,对吗?"
70
+
71
+ ### 步骤 3:展示选项
72
+
73
+ 展示恰好这 4 个选项:
74
+
75
+ ```
76
+ 实现完成。你想怎么做?
77
+
78
+ 1. 本地合并回 <基准分支>
79
+ 2. 推送并创建 Pull Request
80
+ 3. 保持分支现状(我稍后处理)
81
+ 4. 丢弃这项工作
82
+
83
+ 选哪个?
84
+ ```
85
+
86
+ **不要添加解释** - 保持选项简洁。
87
+
88
+ ### 步骤 4:执行选择
89
+
90
+ #### 选项 1:本地合并
91
+
92
+ ```bash
93
+ # 切换到基准分支
94
+ git checkout <基准分支>
95
+
96
+ # 拉取最新
97
+ git pull
98
+
99
+ # 合并功能分支
100
+ git merge <功能分支>
101
+
102
+ # 在合并结果上验证测试
103
+ <测试命令>
104
+
105
+ # 如果测试通过
106
+ git branch -d <功能分支>
107
+ ```
108
+
109
+ 然后:清理工作树(步骤 5)
110
+
111
+ #### 选项 2:推送并创建 PR
112
+
113
+ ```bash
114
+ # 推送分支
115
+ git push -u origin <功能分支>
116
+
117
+ # 创建 PR
118
+ gh pr create --title "<标题>" --body "$(cat <<'EOF'
119
+ ## 摘要
120
+ <2-3 条变更要点>
121
+
122
+ ## 测试计划
123
+ - [ ] <验证步骤>
124
+ EOF
125
+ )"
126
+ ```
127
+
128
+ 然后:清理工作树(步骤 5)
129
+
130
+ #### 选项 3:保持现状
131
+
132
+ 报告:"保持分支 <名称>。工作树保留在 <路径>。"
133
+
134
+ **不要清理工作树。**
135
+
136
+ #### 选项 4:丢弃
137
+
138
+ **先确认:**
139
+ ```
140
+ 这将永久删除:
141
+ - 分支 <名称>
142
+ - 所有提交:<提交列表>
143
+ - 工作树 <路径>
144
+
145
+ 输入 'discard' 确认。
146
+ ```
147
+
148
+ 等待精确确认。
149
+
150
+ 确认后:
151
+ ```bash
152
+ git checkout <基准分支>
153
+ git branch -D <功能分支>
154
+ ```
155
+
156
+ 然后:清理工作树(步骤 5)
157
+
158
+ ### 步骤 5:清理工作树
159
+
160
+ **选项 1、2、4:**
161
+
162
+ 检查是否在工作树中:
163
+ ```bash
164
+ git worktree list | grep $(git branch --show-current)
165
+ ```
166
+
167
+ 如果是:
168
+ ```bash
169
+ git worktree remove <工作树路径>
170
+ ```
171
+
172
+ **选项 3:** 保留工作树。
173
+
174
+ ## 快速参考
175
+
176
+ | 选项 | 合并 | 推送 | 保留工作树 | 清理分支 |
177
+ |------|------|------|------------|----------|
178
+ | 1. 本地合并 | ✓ | - | - | ✓ |
179
+ | 2. 创建 PR | - | ✓ | ✓ | - |
180
+ | 3. 保持现状 | - | - | ✓ | - |
181
+ | 4. 丢弃 | - | - | - | ✓(强制) |
182
+
183
+ ## 常见错误
184
+
185
+ **跳过测试验证**
186
+ - **问题:** 合并了坏代码,创建了失败的 PR
187
+ - **修正:** 展示选项前始终验证测试
188
+
189
+ **开放式提问**
190
+ - **问题:** "接下来该做什么?" → 模糊
191
+ - **修正:** 展示恰好 4 个结构化选项
192
+
193
+ **自动清理工作树**
194
+ - **问题:** 可能还需要时移除了工作树(选项 2、3)
195
+ - **修正:** 只在选项 1 和 4 时清理
196
+
197
+ **丢弃不确认**
198
+ - **问题:** 意外删除工作
199
+ - **修正:** 要求输入 "discard" 确认
200
+
201
+ ## 红线
202
+
203
+ **绝对不要:**
204
+ - 测试失败时继续
205
+ - 不验证合并结果的测试就合并
206
+ - 不确认就删除工作
207
+ - 未经明确要求就 force-push
208
+
209
+ **始终:**
210
+ - 展示选项前验证测试
211
+ - 展示恰好 4 个选项
212
+ - 选项 4 要求输入确认
213
+ - 只在选项 1 和 4 时清理工作树
214
+
215
+ ## 集成
216
+
217
+ **被调用方:**
218
+ - **specops:subagent-driven-development**(步骤 7)- 所有任务完成后
219
+ - **specops:executing-plans**(步骤 5)- 所有批次完成后
220
+
221
+ **配合使用:**
222
+ - **specops:using-git-worktrees** - 清理该 skill 创建的工作树
@@ -0,0 +1,213 @@
1
+ ---
2
+ name: receiving-code-review
3
+ description: 收到代码审查反馈后、实现建议前使用,尤其当反馈不清楚或技术上有疑问时,需要技术严谨性和验证,而非表演性认同或盲目实现
4
+ ---
5
+
6
+ # 接收代码审查
7
+
8
+ ## 概述
9
+
10
+ 代码审查需要技术评估,不是情绪表演。
11
+
12
+ **核心原则:** 先验证再实现。先提问再假设。技术正确性优先于社交舒适。
13
+
14
+ ## 回应模式
15
+
16
+ ```
17
+ 收到代码审查反馈时:
18
+
19
+ 1. 阅读:完整阅读反馈,不要急于反应
20
+ 2. 理解:用自己的话复述需求(或提问)
21
+ 3. 验证:对照代码库实际情况检查
22
+ 4. 评估:对这个代码库来说技术上合理吗?
23
+ 5. 回应:技术性确认或有理有据的反驳
24
+ 6. 实现:一次一项,每项都测试
25
+ ```
26
+
27
+ ## 禁止的回应
28
+
29
+ **绝对不要:**
30
+ - "你说得太对了!"(明确违反 CLAUDE.md)
31
+ - "好观点!" / "很好的反馈!"(表演性的)
32
+ - "让我现在就实现"(验证之前)
33
+
34
+ **应该:**
35
+ - 复述技术需求
36
+ - 提出澄清问题
37
+ - 如果有误,用技术理由反驳
38
+ - 直接开始做(行动 > 言语)
39
+
40
+ ## 处理不清楚的反馈
41
+
42
+ ```
43
+ 如果任何一项不清楚:
44
+ 停下 - 先不要实现任何东西
45
+ 对不清楚的项目提问
46
+
47
+ 为什么:各项可能相关。部分理解 = 错误实现。
48
+ ```
49
+
50
+ **示例:**
51
+ ```
52
+ 你的人类搭档:"修复 1-6"
53
+ 你理解 1,2,3,6。4,5 不清楚。
54
+
55
+ ❌ 错误:先实现 1,2,3,6,之后再问 4,5
56
+ ✅ 正确:"我理解第 1,2,3,6 项。第 4 和第 5 项需要澄清后再继续。"
57
+ ```
58
+
59
+ ## 按来源处理
60
+
61
+ ### 来自你的人类搭档
62
+ - **可信** - 理解后实现
63
+ - **仍然要问** 如果范围不清楚
64
+ - **不要表演性认同**
65
+ - **直接行动** 或技术性确认
66
+
67
+ ### 来自外部审查者
68
+ ```
69
+ 实现之前:
70
+ 1. 检查:对这个代码库来说技术上正确吗?
71
+ 2. 检查:会破坏现有功能吗?
72
+ 3. 检查:当前实现的原因是什么?
73
+ 4. 检查:在所有平台/版本上都可用吗?
74
+ 5. 检查:审查者是否理解完整上下文?
75
+
76
+ 如果建议似乎有误:
77
+ 用技术理由反驳
78
+
79
+ 如果无法轻易验证:
80
+ 说明:"我无法在没有 [X] 的情况下验证这一点。我应该 [调查/询问/继续]?"
81
+
82
+ 如果与你的人类搭档之前的决策冲突:
83
+ 先停下来和你的人类搭档讨论
84
+ ```
85
+
86
+ **你的人类搭档的规则:** "外部反馈 - 保持怀疑,但仔细检查"
87
+
88
+ ## 对"专业"功能的 YAGNI 检查
89
+
90
+ ```
91
+ 如果审查者建议"正确实现":
92
+ 在代码库中搜索实际使用情况
93
+
94
+ 如果未使用:"这个端点没有被调用。移除它(YAGNI)?"
95
+ 如果在用:那就正确实现
96
+ ```
97
+
98
+ **你的人类搭档的规则:** "你和审查者都向我汇报。如果我们不需要这个功能,就不要加。"
99
+
100
+ ## 实现顺序
101
+
102
+ ```
103
+ 对于多项反馈:
104
+ 1. 先澄清所有不清楚的项目
105
+ 2. 然后按此顺序实现:
106
+ - 阻塞性问题(崩溃、安全)
107
+ - 简单修复(拼写、导入)
108
+ - 复杂修复(重构、逻辑)
109
+ 3. 每个修复单独测试
110
+ 4. 验证没有回归
111
+ ```
112
+
113
+ ## 何时反驳
114
+
115
+ 在以下情况反驳:
116
+ - 建议会破坏现有功能
117
+ - 审查者缺乏完整上下文
118
+ - 违反 YAGNI(未使用的功能)
119
+ - 对这个技术栈来说技术上不正确
120
+ - 存在遗留/兼容性原因
121
+ - 与你的人类搭档的架构决策冲突
122
+
123
+ **如何反驳:**
124
+ - 用技术理由,不要防御性
125
+ - 提出具体问题
126
+ - 引用可用的测试/代码
127
+ - 如果涉及架构,让你的人类搭档参与
128
+
129
+ **如果不方便大声反驳的信号:** "Strange things are afoot at the Circle K"
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
+ ✅ "你是对的 - 我检查了 [X],它确实 [Y]。现在实现。"
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
+ ✅ "检查中... 构建目标是 10.15+,这个 API 需要 13+。需要遗留代码来向后兼容。当前实现的 bundle ID 有误 - 修复它还是放弃 pre-13 支持?"
188
+ ```
189
+
190
+ **YAGNI(正确):**
191
+ ```
192
+ 审查者:"实现完整的指标追踪,包括数据库、日期过滤、CSV 导出"
193
+ ✅ "搜索了代码库 - 没有任何地方调用这个端点。移除它(YAGNI)?还是有我遗漏的使用场景?"
194
+ ```
195
+
196
+ **不清楚的项目(正确):**
197
+ ```
198
+ 你的人类搭档:"修复第 1-6 项"
199
+ 你理解 1,2,3,6。4,5 不清楚。
200
+ ✅ "理解 1,2,3,6。第 4 和第 5 项需要澄清后再实现。"
201
+ ```
202
+
203
+ ## GitHub 评论回复
204
+
205
+ 在 GitHub 上回复行内审查评论时,在评论线程中回复(`gh api repos/{owner}/{repo}/pulls/{pr}/comments/{id}/replies`),不要作为顶层 PR 评论。
206
+
207
+ ## 底线
208
+
209
+ **外部反馈 = 需要评估的建议,不是必须执行的命令。**
210
+
211
+ 验证。质疑。然后实现。
212
+
213
+ 不要表演性认同。始终保持技术严谨。