specops 0.2.4 → 0.3.0
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/specops-codebase-mapper.md +764 -0
- package/.opencode/agent/specops-debugger.md +1246 -0
- package/.opencode/agent/specops-executor.md +469 -0
- package/.opencode/agent/specops-integration-checker.md +443 -0
- package/.opencode/agent/specops-phase-researcher.md +547 -0
- package/.opencode/agent/specops-plan-checker.md +690 -0
- package/.opencode/agent/specops-planner.md +575 -0
- package/.opencode/agent/specops-project-researcher.md +354 -0
- package/.opencode/agent/specops-research-synthesizer.md +239 -0
- package/.opencode/agent/specops-roadmapper.md +642 -0
- package/.opencode/agent/specops-work-verifier.md +573 -0
- package/.opencode/references/checkpoints.md +776 -0
- package/.opencode/references/continuation-format.md +249 -0
- package/.opencode/references/decimal-phase-calculation.md +65 -0
- package/.opencode/references/git-integration.md +248 -0
- package/.opencode/references/git-planning-commit.md +38 -0
- package/.opencode/references/model-profile-resolution.md +34 -0
- package/.opencode/references/model-profiles.md +92 -0
- package/.opencode/references/phase-argument-parsing.md +61 -0
- package/.opencode/references/planning-config.md +196 -0
- package/.opencode/references/questioning.md +145 -0
- package/.opencode/references/tdd.md +263 -0
- package/.opencode/references/ui-brand.md +160 -0
- package/.opencode/references/verification-patterns.md +612 -0
- package/.opencode/skills/demand-analysis/SKILL.md +142 -10
- package/.opencode/templates/DEBUG.md +164 -0
- package/.opencode/templates/UAT.md +180 -0
- package/.opencode/templates/VALIDATION.md +76 -0
- package/.opencode/templates/codebase/architecture.md +255 -0
- package/.opencode/templates/codebase/concerns.md +310 -0
- package/.opencode/templates/codebase/conventions.md +307 -0
- package/.opencode/templates/codebase/integrations.md +280 -0
- package/.opencode/templates/codebase/stack.md +186 -0
- package/.opencode/templates/codebase/structure.md +285 -0
- package/.opencode/templates/codebase/testing.md +480 -0
- package/.opencode/templates/context.md +221 -0
- package/.opencode/templates/continue-here.md +78 -0
- package/.opencode/templates/debug-subagent-prompt.md +91 -0
- package/.opencode/templates/discovery.md +147 -0
- package/.opencode/templates/milestone-archive.md +123 -0
- package/.opencode/templates/milestone.md +115 -0
- package/.opencode/templates/phase-prompt.md +333 -0
- package/.opencode/templates/planner-subagent-prompt.md +117 -0
- package/.opencode/templates/project.md +184 -0
- package/.opencode/templates/requirements.md +130 -0
- package/.opencode/templates/research-project/ARCHITECTURE.md +204 -0
- package/.opencode/templates/research-project/FEATURES.md +147 -0
- package/.opencode/templates/research-project/PITFALLS.md +200 -0
- package/.opencode/templates/research-project/STACK.md +120 -0
- package/.opencode/templates/research-project/SUMMARY.md +170 -0
- package/.opencode/templates/research.md +278 -0
- package/.opencode/templates/retrospective.md +54 -0
- package/.opencode/templates/roadmap.md +202 -0
- package/.opencode/templates/state.md +176 -0
- package/.opencode/templates/summary-complex.md +59 -0
- package/.opencode/templates/summary-minimal.md +41 -0
- package/.opencode/templates/summary-standard.md +48 -0
- package/.opencode/templates/summary.md +248 -0
- package/.opencode/templates/user-setup.md +311 -0
- package/.opencode/templates/verification-report.md +322 -0
- package/.opencode/workflows/add-phase.md +111 -0
- package/.opencode/workflows/add-tests.md +350 -0
- package/.opencode/workflows/add-todo.md +157 -0
- package/.opencode/workflows/audit-milestone.md +297 -0
- package/.opencode/workflows/check-todos.md +176 -0
- package/.opencode/workflows/cleanup.md +152 -0
- package/.opencode/workflows/complete-milestone.md +763 -0
- package/.opencode/workflows/diagnose-issues.md +219 -0
- package/.opencode/workflows/discovery-phase.md +288 -0
- package/.opencode/workflows/discuss-phase.md +542 -0
- package/.opencode/workflows/execute-phase.md +449 -0
- package/.opencode/workflows/execute-plan.md +447 -0
- package/.opencode/workflows/health.md +156 -0
- package/.opencode/workflows/help.md +489 -0
- package/.opencode/workflows/insert-phase.md +129 -0
- package/.opencode/workflows/list-phase-assumptions.md +178 -0
- package/.opencode/workflows/map-codebase.md +315 -0
- package/.opencode/workflows/new-milestone.md +382 -0
- package/.opencode/workflows/new-project.md +1116 -0
- package/.opencode/workflows/pause-work.md +122 -0
- package/.opencode/workflows/plan-milestone-gaps.md +274 -0
- package/.opencode/workflows/plan-phase.md +569 -0
- package/.opencode/workflows/progress.md +381 -0
- package/.opencode/workflows/quick.md +453 -0
- package/.opencode/workflows/remove-phase.md +154 -0
- package/.opencode/workflows/research-phase.md +73 -0
- package/.opencode/workflows/resume-project.md +304 -0
- package/.opencode/workflows/set-profile.md +80 -0
- package/.opencode/workflows/settings.md +213 -0
- package/.opencode/workflows/transition.md +544 -0
- package/.opencode/workflows/update.md +219 -0
- package/.opencode/workflows/verify-phase.md +242 -0
- package/.opencode/workflows/verify-work.md +569 -0
- package/commands/specops/add-phase.md +43 -0
- package/commands/specops/add-tests.md +41 -0
- package/commands/specops/add-todo.md +47 -0
- package/commands/specops/audit-milestone.md +36 -0
- package/commands/specops/check-todos.md +45 -0
- package/commands/specops/cleanup.md +18 -0
- package/commands/specops/complete-milestone.md +136 -0
- package/commands/specops/debug.md +167 -0
- package/commands/specops/discuss-phase.md +83 -0
- package/commands/specops/execute-phase.md +41 -0
- package/commands/specops/health.md +22 -0
- package/commands/specops/help.md +22 -0
- package/commands/specops/insert-phase.md +32 -0
- package/commands/specops/join-discord.md +18 -0
- package/commands/specops/list-phase-assumptions.md +46 -0
- package/commands/specops/map-codebase.md +71 -0
- package/commands/specops/new-milestone.md +44 -0
- package/commands/specops/new-project.md +42 -0
- package/commands/specops/pause-work.md +38 -0
- package/commands/specops/plan-milestone-gaps.md +34 -0
- package/commands/specops/plan-phase.md +45 -0
- package/commands/specops/progress.md +24 -0
- package/commands/specops/quick.md +41 -0
- package/commands/specops/reapply-patches.md +111 -0
- package/commands/specops/remove-phase.md +31 -0
- package/commands/specops/research-phase.md +189 -0
- package/commands/specops/resume-work.md +40 -0
- package/commands/specops/set-profile.md +34 -0
- package/commands/specops/settings.md +36 -0
- package/commands/specops/update.md +37 -0
- package/commands/specops/verify-work.md +38 -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.d.ts +4 -3
- 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 +2 -1
|
@@ -0,0 +1,544 @@
|
|
|
1
|
+
<required_reading>
|
|
2
|
+
|
|
3
|
+
**立即阅读以下文件:**
|
|
4
|
+
|
|
5
|
+
1. `.planning/STATE.md`
|
|
6
|
+
2. `.planning/PROJECT.md`
|
|
7
|
+
3. `.planning/ROADMAP.md`
|
|
8
|
+
4. 当前阶段的计划文件(`*-PLAN.md`)
|
|
9
|
+
5. 当前阶段的摘要文件(`*-SUMMARY.md`)
|
|
10
|
+
|
|
11
|
+
</required_reading>
|
|
12
|
+
|
|
13
|
+
<purpose>
|
|
14
|
+
|
|
15
|
+
标记当前阶段完成并推进到下一阶段。这是进度跟踪和 PROJECT.md 演进自然发生的节点。
|
|
16
|
+
|
|
17
|
+
"规划下一阶段" = "当前阶段已完成"
|
|
18
|
+
|
|
19
|
+
</purpose>
|
|
20
|
+
|
|
21
|
+
<process>
|
|
22
|
+
|
|
23
|
+
<step name="load_project_state" priority="first">
|
|
24
|
+
|
|
25
|
+
在过渡之前,读取项目状态:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
cat .planning/STATE.md 2>/dev/null
|
|
29
|
+
cat .planning/PROJECT.md 2>/dev/null
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
解析当前位置以验证我们正在过渡正确的阶段。
|
|
33
|
+
记录过渡后可能需要更新的累积上下文。
|
|
34
|
+
|
|
35
|
+
</step>
|
|
36
|
+
|
|
37
|
+
<step name="verify_completion">
|
|
38
|
+
|
|
39
|
+
检查当前阶段是否所有计划摘要都已完成:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
ls .planning/phases/XX-current/*-PLAN.md 2>/dev/null | sort
|
|
43
|
+
ls .planning/phases/XX-current/*-SUMMARY.md 2>/dev/null | sort
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
**验证逻辑:**
|
|
47
|
+
|
|
48
|
+
- 统计 PLAN 文件数量
|
|
49
|
+
- 统计 SUMMARY 文件数量
|
|
50
|
+
- 如果数量匹配:所有计划已完成
|
|
51
|
+
- 如果数量不匹配:未完成
|
|
52
|
+
|
|
53
|
+
<config-check>
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
cat .planning/config.json 2>/dev/null
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
</config-check>
|
|
60
|
+
|
|
61
|
+
**如果所有计划已完成:**
|
|
62
|
+
|
|
63
|
+
<if mode="yolo">
|
|
64
|
+
|
|
65
|
+
```
|
|
66
|
+
⚡ 自动批准:过渡 Phase [X] → Phase [X+1]
|
|
67
|
+
Phase [X] 完成——所有 [Y] 个计划已完成。
|
|
68
|
+
|
|
69
|
+
正在标记完成并推进...
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
直接进入 cleanup_handoff 步骤。
|
|
73
|
+
|
|
74
|
+
</if>
|
|
75
|
+
|
|
76
|
+
<if mode="interactive" OR="custom with gates.confirm_transition true">
|
|
77
|
+
|
|
78
|
+
询问:"Phase [X] 完成——所有 [Y] 个计划已完成。准备好标记完成并转到 Phase [X+1] 了吗?"
|
|
79
|
+
|
|
80
|
+
等待确认后再继续。
|
|
81
|
+
|
|
82
|
+
</if>
|
|
83
|
+
|
|
84
|
+
**如果计划未完成:**
|
|
85
|
+
|
|
86
|
+
**安全护栏:always_confirm_destructive 在此适用。**
|
|
87
|
+
跳过未完成的计划是破坏性操作——无论模式如何都必须提示。
|
|
88
|
+
|
|
89
|
+
展示:
|
|
90
|
+
|
|
91
|
+
```
|
|
92
|
+
Phase [X] 有未完成的计划:
|
|
93
|
+
- {phase}-01-SUMMARY.md ✓ 已完成
|
|
94
|
+
- {phase}-02-SUMMARY.md ✗ 缺失
|
|
95
|
+
- {phase}-03-SUMMARY.md ✗ 缺失
|
|
96
|
+
|
|
97
|
+
⚠️ 安全护栏:跳过计划需要确认(破坏性操作)
|
|
98
|
+
|
|
99
|
+
选项:
|
|
100
|
+
1. 继续当前阶段(执行剩余计划)
|
|
101
|
+
2. 仍然标记完成(跳过剩余计划)
|
|
102
|
+
3. 查看剩余内容
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
等待用户决定。
|
|
106
|
+
|
|
107
|
+
</step>
|
|
108
|
+
|
|
109
|
+
<step name="cleanup_handoff">
|
|
110
|
+
|
|
111
|
+
检查残留的交接文件:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
ls .planning/phases/XX-current/.continue-here*.md 2>/dev/null
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
如果找到,删除它们——阶段已完成,交接文件已过时。
|
|
118
|
+
|
|
119
|
+
</step>
|
|
120
|
+
|
|
121
|
+
<step name="update_roadmap_and_state">
|
|
122
|
+
|
|
123
|
+
**将 ROADMAP.md 和 STATE.md 更新委托给 specops-tools:**
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
TRANSITION=$(node .opencode/bin/specops-tools.cjs phase complete "${current_phase}")
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
CLI 处理:
|
|
130
|
+
- 将阶段复选框标记为 `[x]` 完成并附上今天的日期
|
|
131
|
+
- 将计划数量更新为最终值(例如"3/3 plans complete")
|
|
132
|
+
- 更新进度表(Status → Complete,添加日期)
|
|
133
|
+
- 将 STATE.md 推进到下一阶段(Current Phase、Status → Ready to plan、Current Plan → Not started)
|
|
134
|
+
- 检测这是否是里程碑中的最后一个阶段
|
|
135
|
+
|
|
136
|
+
从结果中提取:`completed_phase`、`plans_executed`、`next_phase`、`next_phase_name`、`is_last_phase`。
|
|
137
|
+
|
|
138
|
+
</step>
|
|
139
|
+
|
|
140
|
+
<step name="archive_prompts">
|
|
141
|
+
|
|
142
|
+
如果为该阶段生成了提示,它们保留在原位。
|
|
143
|
+
`completed/` 子文件夹模式由 create-meta-prompts 处理归档。
|
|
144
|
+
|
|
145
|
+
</step>
|
|
146
|
+
|
|
147
|
+
<step name="evolve_project">
|
|
148
|
+
|
|
149
|
+
演进 PROJECT.md 以反映已完成阶段的经验教训。
|
|
150
|
+
|
|
151
|
+
**阅读阶段摘要:**
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
cat .planning/phases/XX-current/*-SUMMARY.md
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**评估需求变更:**
|
|
158
|
+
|
|
159
|
+
1. **需求已验证?**
|
|
160
|
+
- 此阶段是否交付了任何 Active 需求?
|
|
161
|
+
- 移至 Validated 并附上阶段引用:`- ✓ [需求] — Phase X`
|
|
162
|
+
|
|
163
|
+
2. **需求已失效?**
|
|
164
|
+
- 是否发现任何 Active 需求不必要或错误?
|
|
165
|
+
- 移至 Out of Scope 并附上原因:`- [需求] — [失效原因]`
|
|
166
|
+
|
|
167
|
+
3. **新需求出现?**
|
|
168
|
+
- 构建过程中是否发现了新需求?
|
|
169
|
+
- 添加到 Active:`- [ ] [新需求]`
|
|
170
|
+
|
|
171
|
+
4. **需要记录的决策?**
|
|
172
|
+
- 从 SUMMARY.md 文件中提取决策
|
|
173
|
+
- 添加到 Key Decisions 表格,如已知则附上结果
|
|
174
|
+
|
|
175
|
+
5. **"这是什么"仍然准确?**
|
|
176
|
+
- 如果产品发生了有意义的变化,更新描述
|
|
177
|
+
- 保持当前和准确
|
|
178
|
+
|
|
179
|
+
**更新 PROJECT.md:**
|
|
180
|
+
|
|
181
|
+
直接内联编辑。更新"Last updated"页脚:
|
|
182
|
+
|
|
183
|
+
```markdown
|
|
184
|
+
---
|
|
185
|
+
*Last updated: [date] after Phase [X]*
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
**演进示例:**
|
|
189
|
+
|
|
190
|
+
之前:
|
|
191
|
+
|
|
192
|
+
```markdown
|
|
193
|
+
### Active
|
|
194
|
+
|
|
195
|
+
- [ ] JWT authentication
|
|
196
|
+
- [ ] Real-time sync < 500ms
|
|
197
|
+
- [ ] Offline mode
|
|
198
|
+
|
|
199
|
+
### Out of Scope
|
|
200
|
+
|
|
201
|
+
- OAuth2 — complexity not needed for v1
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
之后(Phase 2 交付了 JWT auth,发现需要速率限制):
|
|
205
|
+
|
|
206
|
+
```markdown
|
|
207
|
+
### Validated
|
|
208
|
+
|
|
209
|
+
- ✓ JWT authentication — Phase 2
|
|
210
|
+
|
|
211
|
+
### Active
|
|
212
|
+
|
|
213
|
+
- [ ] Real-time sync < 500ms
|
|
214
|
+
- [ ] Offline mode
|
|
215
|
+
- [ ] Rate limiting on sync endpoint
|
|
216
|
+
|
|
217
|
+
### Out of Scope
|
|
218
|
+
|
|
219
|
+
- OAuth2 — complexity not needed for v1
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
**步骤完成条件:**
|
|
223
|
+
|
|
224
|
+
- [ ] 已审查阶段摘要获取经验教训
|
|
225
|
+
- [ ] 已验证的需求从 Active 移出
|
|
226
|
+
- [ ] 已失效的需求移至 Out of Scope 并附原因
|
|
227
|
+
- [ ] 新出现的需求添加到 Active
|
|
228
|
+
- [ ] 新决策已记录并附理由
|
|
229
|
+
- [ ] 如产品发生变化则更新"这是什么"
|
|
230
|
+
- [ ] "Last updated"页脚反映此次过渡
|
|
231
|
+
|
|
232
|
+
</step>
|
|
233
|
+
|
|
234
|
+
<step name="update_current_position_after_transition">
|
|
235
|
+
|
|
236
|
+
**注意:** 基本位置更新(Current Phase、Status、Current Plan、Last Activity)已在 update_roadmap_and_state 步骤中由 `specops-tools phase complete` 处理。
|
|
237
|
+
|
|
238
|
+
通过读取 STATE.md 验证更新是否正确。如果进度条需要更新,使用:
|
|
239
|
+
|
|
240
|
+
```bash
|
|
241
|
+
PROGRESS=$(node .opencode/bin/specops-tools.cjs progress bar --raw)
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
用结果更新 STATE.md 中的进度条行。
|
|
245
|
+
|
|
246
|
+
**步骤完成条件:**
|
|
247
|
+
|
|
248
|
+
- [ ] 阶段编号已递增到下一阶段(由 phase complete 完成)
|
|
249
|
+
- [ ] 计划状态重置为"Not started"(由 phase complete 完成)
|
|
250
|
+
- [ ] 状态显示"Ready to plan"(由 phase complete 完成)
|
|
251
|
+
- [ ] 进度条反映已完成计划总数
|
|
252
|
+
|
|
253
|
+
</step>
|
|
254
|
+
|
|
255
|
+
<step name="update_project_reference">
|
|
256
|
+
|
|
257
|
+
更新 STATE.md 中的 Project Reference 部分。
|
|
258
|
+
|
|
259
|
+
```markdown
|
|
260
|
+
## Project Reference
|
|
261
|
+
|
|
262
|
+
See: .planning/PROJECT.md (updated [today])
|
|
263
|
+
|
|
264
|
+
**Core value:** [PROJECT.md 中的当前核心价值]
|
|
265
|
+
**Current focus:** [下一阶段名称]
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
更新日期和当前焦点以反映过渡。
|
|
269
|
+
|
|
270
|
+
</step>
|
|
271
|
+
|
|
272
|
+
<step name="review_accumulated_context">
|
|
273
|
+
|
|
274
|
+
审查并更新 STATE.md 中的 Accumulated Context 部分。
|
|
275
|
+
|
|
276
|
+
**决策:**
|
|
277
|
+
|
|
278
|
+
- 记录此阶段的近期决策(最多 3-5 个)
|
|
279
|
+
- 完整日志在 PROJECT.md 的 Key Decisions 表格中
|
|
280
|
+
|
|
281
|
+
**阻塞/关注点:**
|
|
282
|
+
|
|
283
|
+
- 审查已完成阶段的阻塞项
|
|
284
|
+
- 如果在此阶段已解决:从列表中移除
|
|
285
|
+
- 如果对未来仍相关:保留并加上"Phase X"前缀
|
|
286
|
+
- 添加已完成阶段摘要中的任何新关注点
|
|
287
|
+
|
|
288
|
+
**示例:**
|
|
289
|
+
|
|
290
|
+
之前:
|
|
291
|
+
|
|
292
|
+
```markdown
|
|
293
|
+
### Blockers/Concerns
|
|
294
|
+
|
|
295
|
+
- ⚠️ [Phase 1] Database schema not indexed for common queries
|
|
296
|
+
- ⚠️ [Phase 2] WebSocket reconnection behavior on flaky networks unknown
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
之后(如果数据库索引在 Phase 2 中已解决):
|
|
300
|
+
|
|
301
|
+
```markdown
|
|
302
|
+
### Blockers/Concerns
|
|
303
|
+
|
|
304
|
+
- ⚠️ [Phase 2] WebSocket reconnection behavior on flaky networks unknown
|
|
305
|
+
```
|
|
306
|
+
|
|
307
|
+
**步骤完成条件:**
|
|
308
|
+
|
|
309
|
+
- [ ] 近期决策已记录(完整日志在 PROJECT.md 中)
|
|
310
|
+
- [ ] 已解决的阻塞项从列表中移除
|
|
311
|
+
- [ ] 未解决的阻塞项保留并附阶段前缀
|
|
312
|
+
- [ ] 已完成阶段的新关注点已添加
|
|
313
|
+
|
|
314
|
+
</step>
|
|
315
|
+
|
|
316
|
+
<step name="update_session_continuity_after_transition">
|
|
317
|
+
|
|
318
|
+
更新 STATE.md 中的 Session Continuity 部分以反映过渡完成。
|
|
319
|
+
|
|
320
|
+
**格式:**
|
|
321
|
+
|
|
322
|
+
```markdown
|
|
323
|
+
Last session: [today]
|
|
324
|
+
Stopped at: Phase [X] complete, ready to plan Phase [X+1]
|
|
325
|
+
Resume file: None
|
|
326
|
+
```
|
|
327
|
+
|
|
328
|
+
**步骤完成条件:**
|
|
329
|
+
|
|
330
|
+
- [ ] 最后会话时间戳已更新为当前日期和时间
|
|
331
|
+
- [ ] Stopped at 描述了阶段完成和下一阶段
|
|
332
|
+
- [ ] Resume file 确认为 None(过渡不使用恢复文件)
|
|
333
|
+
|
|
334
|
+
</step>
|
|
335
|
+
|
|
336
|
+
<step name="offer_next_phase">
|
|
337
|
+
|
|
338
|
+
**必须:在展示后续步骤之前验证里程碑状态。**
|
|
339
|
+
|
|
340
|
+
**使用 `specops-tools phase complete` 的过渡结果:**
|
|
341
|
+
|
|
342
|
+
`is_last_phase` 字段直接告诉你:
|
|
343
|
+
- `is_last_phase: false` → 还有更多阶段 → 转到**路线 A**
|
|
344
|
+
- `is_last_phase: true` → 里程碑完成 → 转到**路线 B**
|
|
345
|
+
|
|
346
|
+
`next_phase` 和 `next_phase_name` 字段提供下一阶段的详情。
|
|
347
|
+
|
|
348
|
+
如果需要额外上下文,使用:
|
|
349
|
+
```bash
|
|
350
|
+
ROADMAP=$(node .opencode/bin/specops-tools.cjs roadmap analyze)
|
|
351
|
+
```
|
|
352
|
+
|
|
353
|
+
返回所有阶段及其目标、磁盘状态和完成信息。
|
|
354
|
+
|
|
355
|
+
---
|
|
356
|
+
|
|
357
|
+
**路线 A:里程碑中还有更多阶段**
|
|
358
|
+
|
|
359
|
+
读取 ROADMAP.md 获取下一阶段的名称和目标。
|
|
360
|
+
|
|
361
|
+
**检查下一阶段是否有 CONTEXT.md:**
|
|
362
|
+
|
|
363
|
+
```bash
|
|
364
|
+
ls .planning/phases/*[X+1]*/*-CONTEXT.md 2>/dev/null
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
**如果下一阶段存在:**
|
|
368
|
+
|
|
369
|
+
<if mode="yolo">
|
|
370
|
+
|
|
371
|
+
**如果 CONTEXT.md 存在:**
|
|
372
|
+
|
|
373
|
+
```
|
|
374
|
+
Phase [X] 已标记完成。
|
|
375
|
+
|
|
376
|
+
下一步:Phase [X+1] — [名称]
|
|
377
|
+
|
|
378
|
+
⚡ 自动继续:详细规划 Phase [X+1]
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
退出 skill 并调用 SlashCommand("/specops:plan-phase [X+1] --auto")
|
|
382
|
+
|
|
383
|
+
**如果 CONTEXT.md 不存在:**
|
|
384
|
+
|
|
385
|
+
```
|
|
386
|
+
Phase [X] 已标记完成。
|
|
387
|
+
|
|
388
|
+
下一步:Phase [X+1] — [名称]
|
|
389
|
+
|
|
390
|
+
⚡ 自动继续:先讨论 Phase [X+1]
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
退出 skill 并调用 SlashCommand("/specops:discuss-phase [X+1] --auto")
|
|
394
|
+
|
|
395
|
+
</if>
|
|
396
|
+
|
|
397
|
+
<if mode="interactive" OR="custom with gates.confirm_transition true">
|
|
398
|
+
|
|
399
|
+
**如果 CONTEXT.md 不存在:**
|
|
400
|
+
|
|
401
|
+
```
|
|
402
|
+
## ✓ Phase [X] 完成
|
|
403
|
+
|
|
404
|
+
---
|
|
405
|
+
|
|
406
|
+
## ▶ 下一步
|
|
407
|
+
|
|
408
|
+
**Phase [X+1]: [名称]** — [ROADMAP.md 中的目标]
|
|
409
|
+
|
|
410
|
+
`/specops:discuss-phase [X+1]` — 收集上下文并澄清方案
|
|
411
|
+
|
|
412
|
+
<sub>`/clear` 先清理 → 全新上下文窗口</sub>
|
|
413
|
+
|
|
414
|
+
---
|
|
415
|
+
|
|
416
|
+
**其他可用操作:**
|
|
417
|
+
- `/specops:plan-phase [X+1]` — 跳过讨论,直接规划
|
|
418
|
+
- `/specops:research-phase [X+1]` — 调查未知领域
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
**如果 CONTEXT.md 存在:**
|
|
424
|
+
|
|
425
|
+
```
|
|
426
|
+
## ✓ Phase [X] 完成
|
|
427
|
+
|
|
428
|
+
---
|
|
429
|
+
|
|
430
|
+
## ▶ 下一步
|
|
431
|
+
|
|
432
|
+
**Phase [X+1]: [名称]** — [ROADMAP.md 中的目标]
|
|
433
|
+
<sub>✓ 上下文已收集,准备规划</sub>
|
|
434
|
+
|
|
435
|
+
`/specops:plan-phase [X+1]`
|
|
436
|
+
|
|
437
|
+
<sub>`/clear` 先清理 → 全新上下文窗口</sub>
|
|
438
|
+
|
|
439
|
+
---
|
|
440
|
+
|
|
441
|
+
**其他可用操作:**
|
|
442
|
+
- `/specops:discuss-phase [X+1]` — 重新审视上下文
|
|
443
|
+
- `/specops:research-phase [X+1]` — 调查未知领域
|
|
444
|
+
|
|
445
|
+
---
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
</if>
|
|
449
|
+
|
|
450
|
+
---
|
|
451
|
+
|
|
452
|
+
**路线 B:里程碑完成(所有阶段已完成)**
|
|
453
|
+
|
|
454
|
+
**清除自动推进** — 里程碑边界是自然停止点:
|
|
455
|
+
```bash
|
|
456
|
+
node .opencode/bin/specops-tools.cjs config-set workflow.auto_advance false
|
|
457
|
+
```
|
|
458
|
+
|
|
459
|
+
<if mode="yolo">
|
|
460
|
+
|
|
461
|
+
```
|
|
462
|
+
Phase {X} 已标记完成。
|
|
463
|
+
|
|
464
|
+
🎉 里程碑 {version} 100% 完成——所有 {N} 个阶段已完成!
|
|
465
|
+
|
|
466
|
+
⚡ 自动继续:完成里程碑并归档
|
|
467
|
+
```
|
|
468
|
+
|
|
469
|
+
退出 skill 并调用 SlashCommand("/specops:complete-milestone {version}")
|
|
470
|
+
|
|
471
|
+
</if>
|
|
472
|
+
|
|
473
|
+
<if mode="interactive" OR="custom with gates.confirm_transition true">
|
|
474
|
+
|
|
475
|
+
```
|
|
476
|
+
## ✓ Phase {X}: {阶段名称} 完成
|
|
477
|
+
|
|
478
|
+
🎉 里程碑 {version} 100% 完成——所有 {N} 个阶段已完成!
|
|
479
|
+
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
## ▶ 下一步
|
|
483
|
+
|
|
484
|
+
**完成里程碑 {version}** — 归档并准备下一个
|
|
485
|
+
|
|
486
|
+
`/specops:complete-milestone {version}`
|
|
487
|
+
|
|
488
|
+
<sub>`/clear` 先清理 → 全新上下文窗口</sub>
|
|
489
|
+
|
|
490
|
+
---
|
|
491
|
+
|
|
492
|
+
**其他可用操作:**
|
|
493
|
+
- 在归档前审查成果
|
|
494
|
+
|
|
495
|
+
---
|
|
496
|
+
```
|
|
497
|
+
|
|
498
|
+
</if>
|
|
499
|
+
|
|
500
|
+
</step>
|
|
501
|
+
|
|
502
|
+
</process>
|
|
503
|
+
|
|
504
|
+
<implicit_tracking>
|
|
505
|
+
进度跟踪是隐式的:规划阶段 N 意味着阶段 1-(N-1) 已完成。不需要单独的进度步骤——向前推进就是进度。
|
|
506
|
+
</implicit_tracking>
|
|
507
|
+
|
|
508
|
+
<partial_completion>
|
|
509
|
+
|
|
510
|
+
如果用户想继续但阶段未完全完成:
|
|
511
|
+
|
|
512
|
+
```
|
|
513
|
+
Phase [X] 有未完成的计划:
|
|
514
|
+
- {phase}-02-PLAN.md(未执行)
|
|
515
|
+
- {phase}-03-PLAN.md(未执行)
|
|
516
|
+
|
|
517
|
+
选项:
|
|
518
|
+
1. 仍然标记完成(计划不需要了)
|
|
519
|
+
2. 将工作推迟到后续阶段
|
|
520
|
+
3. 留下来完成当前阶段
|
|
521
|
+
```
|
|
522
|
+
|
|
523
|
+
尊重用户判断——他们知道工作是否重要。
|
|
524
|
+
|
|
525
|
+
**如果标记完成但有未完成的计划:**
|
|
526
|
+
|
|
527
|
+
- 更新 ROADMAP:"2/3 plans complete"(不是"3/3")
|
|
528
|
+
- 在过渡消息中注明哪些计划被跳过
|
|
529
|
+
|
|
530
|
+
</partial_completion>
|
|
531
|
+
|
|
532
|
+
<success_criteria>
|
|
533
|
+
|
|
534
|
+
过渡完成条件:
|
|
535
|
+
|
|
536
|
+
- [ ] 当前阶段计划摘要已验证(全部存在或用户选择跳过)
|
|
537
|
+
- [ ] 所有过时的交接文件已删除
|
|
538
|
+
- [ ] ROADMAP.md 已更新完成状态和计划数量
|
|
539
|
+
- [ ] PROJECT.md 已演进(需求、决策、描述如需要)
|
|
540
|
+
- [ ] STATE.md 已更新(位置、项目引用、上下文、会话)
|
|
541
|
+
- [ ] 进度表已更新
|
|
542
|
+
- [ ] 用户知道后续步骤
|
|
543
|
+
|
|
544
|
+
</success_criteria>
|