gsd-opencode 1.3.33 → 1.4.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/LICENSE +21 -0
- package/command/gsd/add-phase.md +3 -3
- package/command/gsd/add-todo.md +182 -0
- package/command/gsd/check-todos.md +217 -0
- package/command/gsd/complete-milestone.md +4 -3
- package/command/gsd/consider-issues.md +5 -5
- package/command/gsd/create-roadmap.md +4 -4
- package/command/gsd/debug.md +58 -0
- package/command/gsd/discuss-phase.md +3 -4
- package/command/gsd/execute-phase.md +137 -0
- package/command/gsd/execute-plan.md +70 -95
- package/command/gsd/help.md +83 -6
- package/command/gsd/insert-phase.md +16 -16
- package/command/gsd/list-phase-assumptions.md +8 -8
- package/command/gsd/map-codebase.md +11 -11
- package/command/gsd/new-milestone.md +1 -1
- package/command/gsd/new-project.md +26 -7
- package/command/gsd/pause-work.md +4 -3
- package/command/gsd/plan-fix.md +8 -8
- package/command/gsd/plan-phase.md +9 -9
- package/command/gsd/progress.md +20 -11
- package/command/gsd/remove-phase.md +15 -15
- package/command/gsd/research-phase.md +10 -10
- package/command/gsd/resume-work.md +4 -5
- package/command/gsd/status.md +127 -0
- package/command/gsd/verify-work.md +8 -8
- package/get-shit-done/references/continuation-format.md +8 -8
- package/get-shit-done/references/debugging/debugging-mindset.md +253 -0
- package/get-shit-done/references/debugging/hypothesis-testing.md +373 -0
- package/get-shit-done/references/debugging/investigation-techniques.md +337 -0
- package/get-shit-done/references/debugging/verification-patterns.md +425 -0
- package/get-shit-done/references/debugging/when-to-research.md +361 -0
- package/get-shit-done/references/plan-format.md +68 -21
- package/get-shit-done/references/questioning.md +12 -12
- package/get-shit-done/references/research-pitfalls.md +2 -2
- package/get-shit-done/references/scope-estimation.md +95 -11
- package/get-shit-done/templates/DEBUG.md +159 -0
- package/get-shit-done/templates/agent-history.md +263 -0
- package/get-shit-done/templates/checkpoint-return.md +204 -0
- package/get-shit-done/templates/codebase/architecture.md +4 -4
- package/get-shit-done/templates/codebase/concerns.md +1 -1
- package/get-shit-done/templates/codebase/structure.md +11 -11
- package/get-shit-done/templates/config.json +8 -0
- package/get-shit-done/templates/context.md +0 -21
- package/get-shit-done/templates/continuation-prompt.md +235 -0
- package/get-shit-done/templates/milestone-archive.md +1 -1
- package/get-shit-done/templates/phase-prompt.md +289 -129
- package/get-shit-done/templates/roadmap.md +1 -1
- package/get-shit-done/templates/state.md +11 -0
- package/get-shit-done/templates/subagent-task-prompt.md +95 -0
- package/get-shit-done/templates/summary.md +2 -2
- package/get-shit-done/workflows/_archive/execute-phase.md +899 -0
- package/get-shit-done/workflows/complete-milestone.md +1 -1
- package/get-shit-done/workflows/create-milestone.md +1 -1
- package/get-shit-done/workflows/create-roadmap.md +2 -2
- package/get-shit-done/workflows/debug.md +426 -0
- package/get-shit-done/workflows/discovery-phase.md +1 -1
- package/get-shit-done/workflows/discuss-milestone.md +6 -6
- package/get-shit-done/workflows/discuss-phase.md +12 -22
- package/get-shit-done/workflows/execute-phase.md +272 -1504
- package/get-shit-done/workflows/execute-plan.md +1813 -0
- package/get-shit-done/workflows/map-codebase.md +9 -9
- package/get-shit-done/workflows/plan-phase.md +262 -49
- package/get-shit-done/workflows/resume-project.md +28 -2
- package/get-shit-done/workflows/transition.md +4 -4
- package/get-shit-done/workflows/verify-work.md +4 -4
- package/package.json +1 -1
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
|
|
2
|
+
<overview>
|
|
3
|
+
Debugging requires both reasoning about code and researching external knowledge. The skill is knowing when to use each. This guide helps you recognize signals that indicate you need external knowledge vs when you can reason through the problem with the code in front of you.
|
|
4
|
+
</overview>
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
<research_signals>
|
|
8
|
+
|
|
9
|
+
**1. Error messages you don't recognize**
|
|
10
|
+
- Stack traces from libraries you haven't used
|
|
11
|
+
- Cryptic system errors
|
|
12
|
+
- Framework-specific error codes
|
|
13
|
+
|
|
14
|
+
**Action**: Web search the exact error message in quotes
|
|
15
|
+
- Often leads to GitHub issues, Stack Overflow, or official docs
|
|
16
|
+
- Others have likely encountered this
|
|
17
|
+
|
|
18
|
+
<example>
|
|
19
|
+
Error: `EADDRINUSE: address already in use :::3000`
|
|
20
|
+
|
|
21
|
+
This is a system-level error. Research it:
|
|
22
|
+
- Web search: "EADDRINUSE address already in use"
|
|
23
|
+
- Learn: Port is already occupied by another process
|
|
24
|
+
- Solution: Find and kill the process, or use different port
|
|
25
|
+
</example>
|
|
26
|
+
|
|
27
|
+
**2. Library/framework behavior doesn't match expectations**
|
|
28
|
+
- You're using a library correctly (you think) but it's not working
|
|
29
|
+
- Documentation seems to contradict behavior
|
|
30
|
+
- Version-specific quirks
|
|
31
|
+
|
|
32
|
+
**Action**: Check official documentation and recent issues
|
|
33
|
+
- Use Context7 MCP for library docs
|
|
34
|
+
- Search GitHub issues for the library
|
|
35
|
+
- Check if there are breaking changes in recent versions
|
|
36
|
+
|
|
37
|
+
<example>
|
|
38
|
+
You're using `useEffect` in React but it's running on every render despite empty dependency array.
|
|
39
|
+
|
|
40
|
+
Research needed:
|
|
41
|
+
- Check React docs for useEffect rules
|
|
42
|
+
- Search: "useEffect running on every render"
|
|
43
|
+
- Discover: React 18 StrictMode runs effects twice in dev mode
|
|
44
|
+
</example>
|
|
45
|
+
|
|
46
|
+
**3. Domain knowledge gaps**
|
|
47
|
+
- Debugging authentication: need to understand OAuth flow
|
|
48
|
+
- Debugging database: need to understand indexes, query optimization
|
|
49
|
+
- Debugging networking: need to understand HTTP caching, CORS
|
|
50
|
+
|
|
51
|
+
**Action**: Research the domain concept, not just the specific bug
|
|
52
|
+
- Use MCP servers for domain knowledge
|
|
53
|
+
- Read official specifications
|
|
54
|
+
- Find authoritative guides
|
|
55
|
+
|
|
56
|
+
**4. Platform-specific behavior**
|
|
57
|
+
- "Works in Chrome but not Safari"
|
|
58
|
+
- "Works on Mac but not Windows"
|
|
59
|
+
- "Works in Node 16 but not Node 18"
|
|
60
|
+
|
|
61
|
+
**Action**: Research platform differences
|
|
62
|
+
- Browser compatibility tables
|
|
63
|
+
- Platform-specific documentation
|
|
64
|
+
- Known platform bugs
|
|
65
|
+
|
|
66
|
+
**5. Recent changes in ecosystem**
|
|
67
|
+
- Package update broke something
|
|
68
|
+
- New framework version behaves differently
|
|
69
|
+
- Deprecated API
|
|
70
|
+
|
|
71
|
+
**Action**: Check changelogs and migration guides
|
|
72
|
+
- Library CHANGELOG.md
|
|
73
|
+
- Migration guides
|
|
74
|
+
- "Breaking changes" documentation
|
|
75
|
+
|
|
76
|
+
</research_signals>
|
|
77
|
+
|
|
78
|
+
|
|
79
|
+
<reasoning_signals>
|
|
80
|
+
|
|
81
|
+
**1. The bug is in YOUR code**
|
|
82
|
+
- Not library behavior, not system issues
|
|
83
|
+
- Your business logic, your data structures
|
|
84
|
+
- Code you or your team wrote
|
|
85
|
+
|
|
86
|
+
**Approach**: Read the code, trace execution, add logging
|
|
87
|
+
- You have full access to the code
|
|
88
|
+
- You can modify it to add observability
|
|
89
|
+
- No external documentation will help
|
|
90
|
+
|
|
91
|
+
<example>
|
|
92
|
+
Bug: Shopping cart total calculates incorrectly
|
|
93
|
+
|
|
94
|
+
This is your logic:
|
|
95
|
+
```javascript
|
|
96
|
+
function calculateTotal(items) {
|
|
97
|
+
return items.reduce((sum, item) => sum + item.price * item.quantity, 0);
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Don't research "shopping cart calculation bugs"
|
|
102
|
+
DO reason through it:
|
|
103
|
+
- Log each item's price and quantity
|
|
104
|
+
- Log the running sum
|
|
105
|
+
- Trace the logic step by step
|
|
106
|
+
</example>
|
|
107
|
+
|
|
108
|
+
**2. You have all the information needed**
|
|
109
|
+
- The bug is reproducible
|
|
110
|
+
- You can read all relevant code
|
|
111
|
+
- No external dependencies involved
|
|
112
|
+
|
|
113
|
+
**Approach**: Use investigation techniques
|
|
114
|
+
- Binary search to narrow down
|
|
115
|
+
- Minimal reproduction
|
|
116
|
+
- Working backwards
|
|
117
|
+
- Add observability
|
|
118
|
+
|
|
119
|
+
**3. It's a logic error, not a knowledge gap**
|
|
120
|
+
- Off-by-one errors
|
|
121
|
+
- Wrong conditional
|
|
122
|
+
- State management issue
|
|
123
|
+
- Data transformation bug
|
|
124
|
+
|
|
125
|
+
**Approach**: Trace the logic carefully
|
|
126
|
+
- Print intermediate values
|
|
127
|
+
- Check assumptions
|
|
128
|
+
- Verify each step
|
|
129
|
+
|
|
130
|
+
**4. The answer is in the behavior, not the documentation**
|
|
131
|
+
- "What is this function actually doing?"
|
|
132
|
+
- "Why is this value null?"
|
|
133
|
+
- "When does this code execute?"
|
|
134
|
+
|
|
135
|
+
**Approach**: Observe the actual behavior
|
|
136
|
+
- Add logging
|
|
137
|
+
- Use a debugger
|
|
138
|
+
- Test with different inputs
|
|
139
|
+
|
|
140
|
+
</reasoning_signals>
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
<research_how>
|
|
144
|
+
|
|
145
|
+
**Web Search - When and How**
|
|
146
|
+
|
|
147
|
+
**When**:
|
|
148
|
+
- Error messages
|
|
149
|
+
- Library-specific questions
|
|
150
|
+
- "How to X in framework Y"
|
|
151
|
+
- Troubleshooting platform issues
|
|
152
|
+
|
|
153
|
+
**How**:
|
|
154
|
+
- Use exact error messages in quotes: `"Cannot read property 'map' of undefined"`
|
|
155
|
+
- Include framework/library version: `"react 18 useEffect behavior"`
|
|
156
|
+
- Add "github issue" for known bugs: `"prisma connection pool github issue"`
|
|
157
|
+
- Add year for recent changes: `"nextjs 14 middleware 2024"`
|
|
158
|
+
|
|
159
|
+
**Good search queries**:
|
|
160
|
+
- `"ECONNREFUSED" node.js postgres`
|
|
161
|
+
- `"Maximum update depth exceeded" react hooks`
|
|
162
|
+
- `typescript generic constraints examples`
|
|
163
|
+
|
|
164
|
+
**Bad search queries**:
|
|
165
|
+
- `my code doesn't work` (too vague)
|
|
166
|
+
- `bug in react` (too broad)
|
|
167
|
+
- `help` (useless)
|
|
168
|
+
|
|
169
|
+
**Context7 MCP - When and How**
|
|
170
|
+
|
|
171
|
+
**When**:
|
|
172
|
+
- Need API reference
|
|
173
|
+
- Understanding library concepts
|
|
174
|
+
- Finding specific function signatures
|
|
175
|
+
- Learning correct usage patterns
|
|
176
|
+
|
|
177
|
+
**How**:
|
|
178
|
+
```
|
|
179
|
+
Use mcp__context7__resolve-library-id with library name
|
|
180
|
+
Then mcp__context7__get-library-docs with library ID
|
|
181
|
+
Ask specific questions about the library
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
**Good uses**:
|
|
185
|
+
- "How do I use Prisma transactions?"
|
|
186
|
+
- "What are the parameters for stripe.customers.create?"
|
|
187
|
+
- "How does Express middleware error handling work?"
|
|
188
|
+
|
|
189
|
+
**Bad uses**:
|
|
190
|
+
- "Fix my bug" (too vague, Context7 provides docs not debugging)
|
|
191
|
+
- "Why isn't my code working?" (need to research specific concepts, not general debugging)
|
|
192
|
+
|
|
193
|
+
**GitHub Issues Search**
|
|
194
|
+
|
|
195
|
+
**When**:
|
|
196
|
+
- Experiencing behavior that seems like a bug
|
|
197
|
+
- Library not working as documented
|
|
198
|
+
- Looking for workarounds
|
|
199
|
+
|
|
200
|
+
**How**:
|
|
201
|
+
- Search in the library's GitHub repo
|
|
202
|
+
- Include relevant keywords
|
|
203
|
+
- Check both open and closed issues
|
|
204
|
+
- Look for issues with "bug" or "regression" labels
|
|
205
|
+
|
|
206
|
+
**Official Documentation**
|
|
207
|
+
|
|
208
|
+
**When**:
|
|
209
|
+
- Learning how something should work
|
|
210
|
+
- Checking if you're using API correctly
|
|
211
|
+
- Understanding configuration options
|
|
212
|
+
- Finding migration guides
|
|
213
|
+
|
|
214
|
+
**How**:
|
|
215
|
+
- Start with official docs, not blog posts
|
|
216
|
+
- Check version-specific docs
|
|
217
|
+
- Read examples and guides, not just API reference
|
|
218
|
+
- Look for "Common Pitfalls" or "Troubleshooting" sections
|
|
219
|
+
|
|
220
|
+
</research_how>
|
|
221
|
+
|
|
222
|
+
|
|
223
|
+
<balance>
|
|
224
|
+
|
|
225
|
+
**The research trap**: Spending hours reading docs about topics tangential to your bug
|
|
226
|
+
- You think it's a caching issue, so you read all about cache invalidation
|
|
227
|
+
- But the actual bug is a typo in a variable name
|
|
228
|
+
|
|
229
|
+
**The reasoning trap**: Spending hours reading code when the answer is well-documented
|
|
230
|
+
- You're debugging why auth doesn't work
|
|
231
|
+
- The docs clearly explain the setup you missed
|
|
232
|
+
- You could have found it in 5 minutes of reading
|
|
233
|
+
|
|
234
|
+
**The balance**:
|
|
235
|
+
|
|
236
|
+
1. **Start with quick research** (5-10 minutes)
|
|
237
|
+
- Search the error message
|
|
238
|
+
- Check official docs for the feature you're using
|
|
239
|
+
- Skim recent issues
|
|
240
|
+
|
|
241
|
+
2. **If research doesn't yield answers, switch to reasoning**
|
|
242
|
+
- Add logging
|
|
243
|
+
- Trace execution
|
|
244
|
+
- Form hypotheses
|
|
245
|
+
|
|
246
|
+
3. **If reasoning reveals knowledge gaps, research those specific gaps**
|
|
247
|
+
- "I need to understand how WebSocket reconnection works"
|
|
248
|
+
- "I need to know if this library supports transactions"
|
|
249
|
+
|
|
250
|
+
4. **Alternate as needed**
|
|
251
|
+
- Research → reveals what to investigate
|
|
252
|
+
- Reasoning → reveals what to research
|
|
253
|
+
- Keep switching based on what you learn
|
|
254
|
+
|
|
255
|
+
<example>
|
|
256
|
+
**Bug**: Real-time updates stop working after 1 hour
|
|
257
|
+
|
|
258
|
+
**Start with research** (5 min):
|
|
259
|
+
- Search: "websocket connection drops after 1 hour"
|
|
260
|
+
- Find: Common issue with load balancers having connection timeouts
|
|
261
|
+
|
|
262
|
+
**Switch to reasoning**:
|
|
263
|
+
- Check if you're using a load balancer: YES
|
|
264
|
+
- Check load balancer timeout setting: 3600 seconds (1 hour)
|
|
265
|
+
- Hypothesis: Load balancer is killing the connection
|
|
266
|
+
|
|
267
|
+
**Quick research**:
|
|
268
|
+
- Search: "websocket load balancer timeout fix"
|
|
269
|
+
- Find: Implement heartbeat/ping to keep connection alive
|
|
270
|
+
|
|
271
|
+
**Reasoning**:
|
|
272
|
+
- Check if library supports heartbeat: YES
|
|
273
|
+
- Implement ping every 30 seconds
|
|
274
|
+
- Test: Connection stays alive for 3+ hours
|
|
275
|
+
|
|
276
|
+
**Total time**: 20 minutes (research: 10 min, reasoning: 10 min)
|
|
277
|
+
**Success**: Found and fixed the issue
|
|
278
|
+
|
|
279
|
+
vs
|
|
280
|
+
|
|
281
|
+
**Wrong approach**: Spend 2 hours reading WebSocket spec
|
|
282
|
+
- Learned a lot about WebSocket protocol
|
|
283
|
+
- Didn't solve the problem (it was a config issue)
|
|
284
|
+
</example>
|
|
285
|
+
|
|
286
|
+
</balance>
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
<decision_tree>
|
|
290
|
+
```
|
|
291
|
+
Is this a error message I don't recognize?
|
|
292
|
+
├─ YES → Web search the error message
|
|
293
|
+
└─ NO ↓
|
|
294
|
+
|
|
295
|
+
Is this library/framework behavior I don't understand?
|
|
296
|
+
├─ YES → Check docs (Context7 or official docs)
|
|
297
|
+
└─ NO ↓
|
|
298
|
+
|
|
299
|
+
Is this code I/my team wrote?
|
|
300
|
+
├─ YES → Reason through it (logging, tracing, hypothesis testing)
|
|
301
|
+
└─ NO ↓
|
|
302
|
+
|
|
303
|
+
Is this a platform/environment difference?
|
|
304
|
+
├─ YES → Research platform-specific behavior
|
|
305
|
+
└─ NO ↓
|
|
306
|
+
|
|
307
|
+
Can I observe the behavior directly?
|
|
308
|
+
├─ YES → Add observability and reason through it
|
|
309
|
+
└─ NO → Research the domain/concept first, then reason
|
|
310
|
+
```
|
|
311
|
+
</decision_tree>
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
<red_flags>
|
|
315
|
+
|
|
316
|
+
**You're researching too much if**:
|
|
317
|
+
- You've read 20 blog posts but haven't looked at your code
|
|
318
|
+
- You understand the theory but haven't traced your actual execution
|
|
319
|
+
- You're learning about edge cases that don't apply to your situation
|
|
320
|
+
- You've been reading for 30+ minutes without testing anything
|
|
321
|
+
|
|
322
|
+
**You're reasoning too much if**:
|
|
323
|
+
- You've been staring at code for an hour without progress
|
|
324
|
+
- You keep finding things you don't understand and guessing
|
|
325
|
+
- You're debugging library internals (that's research territory)
|
|
326
|
+
- The error message is clearly from a library you don't know
|
|
327
|
+
|
|
328
|
+
**You're doing it right if**:
|
|
329
|
+
- You alternate between research and reasoning
|
|
330
|
+
- Each research session answers a specific question
|
|
331
|
+
- Each reasoning session tests a specific hypothesis
|
|
332
|
+
- You're making steady progress toward understanding
|
|
333
|
+
|
|
334
|
+
</red_flags>
|
|
335
|
+
|
|
336
|
+
|
|
337
|
+
<mindset>
|
|
338
|
+
|
|
339
|
+
**Good researchers ask**:
|
|
340
|
+
- "What specific question do I need answered?"
|
|
341
|
+
- "Where is the authoritative source for this?"
|
|
342
|
+
- "Is this a known issue or unique to my code?"
|
|
343
|
+
- "What version-specific information do I need?"
|
|
344
|
+
|
|
345
|
+
**Good reasoners ask**:
|
|
346
|
+
- "What is actually happening in my code?"
|
|
347
|
+
- "What am I assuming that might be wrong?"
|
|
348
|
+
- "How can I observe this behavior directly?"
|
|
349
|
+
- "What experiment would test my hypothesis?"
|
|
350
|
+
|
|
351
|
+
**Great debuggers do both**:
|
|
352
|
+
- Research to fill knowledge gaps
|
|
353
|
+
- Reason to understand actual behavior
|
|
354
|
+
- Switch fluidly based on what they learn
|
|
355
|
+
- Never stuck in one mode
|
|
356
|
+
|
|
357
|
+
**The goal**: Minimum time to maximum understanding.
|
|
358
|
+
- Research what you don't know
|
|
359
|
+
- Reason through what you can observe
|
|
360
|
+
- Fix what you understand
|
|
361
|
+
</mindset>
|
|
@@ -10,14 +10,50 @@ A plan is Claude-executable when Claude can read the PLAN.md and immediately sta
|
|
|
10
10
|
If Claude has to guess, interpret, or make assumptions - the task is too vague.
|
|
11
11
|
</core_principle>
|
|
12
12
|
|
|
13
|
+
<frontmatter>
|
|
14
|
+
Every PLAN.md starts with YAML frontmatter:
|
|
15
|
+
|
|
16
|
+
```yaml
|
|
17
|
+
---
|
|
18
|
+
phase: XX-name
|
|
19
|
+
plan: NN
|
|
20
|
+
type: execute
|
|
21
|
+
wave: N # Execution wave (1, 2, 3...). Pre-computed at plan time.
|
|
22
|
+
depends_on: [] # Plan IDs this plan requires (e.g., ["01-01"])
|
|
23
|
+
files_modified: [] # Files this plan modifies
|
|
24
|
+
autonomous: true # false if plan has checkpoints
|
|
25
|
+
domain: [optional] # Domain skill if loaded
|
|
26
|
+
---
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
| Field | Required | Purpose |
|
|
30
|
+
|-------|----------|---------|
|
|
31
|
+
| `phase` | Yes | Phase identifier (e.g., `01-foundation`) |
|
|
32
|
+
| `plan` | Yes | Plan number within phase (e.g., `01`, `02`) |
|
|
33
|
+
| `type` | Yes | `execute` for standard plans, `tdd` for TDD plans |
|
|
34
|
+
| `wave` | Yes | Execution wave number (1, 2, 3...). Pre-computed during planning. |
|
|
35
|
+
| `depends_on` | Yes | Array of plan IDs this plan requires. |
|
|
36
|
+
| `files_modified` | Yes | Files this plan touches. |
|
|
37
|
+
| `autonomous` | Yes | `true` if no checkpoints, `false` if has checkpoints |
|
|
38
|
+
| `domain` | No | Domain skill if loaded (e.g., `next-js`) |
|
|
39
|
+
|
|
40
|
+
**Wave is pre-computed:** `/gsd:plan-phase` assigns wave numbers based on `depends_on`. `/gsd:execute-phase` reads `wave` directly from frontmatter and groups plans by wave number. No runtime dependency analysis needed.
|
|
41
|
+
|
|
42
|
+
**Checkpoint handling:** Plans with `autonomous: false` require user interaction. They run in their assigned wave but pause at checkpoints.
|
|
43
|
+
</frontmatter>
|
|
44
|
+
|
|
13
45
|
<prompt_structure>
|
|
14
46
|
Every PLAN.md follows this XML structure:
|
|
15
47
|
|
|
16
48
|
```markdown
|
|
17
49
|
---
|
|
18
50
|
phase: XX-name
|
|
51
|
+
plan: NN
|
|
19
52
|
type: execute
|
|
20
|
-
|
|
53
|
+
wave: N
|
|
54
|
+
depends_on: []
|
|
55
|
+
files_modified: [path/to/file.ts]
|
|
56
|
+
autonomous: true
|
|
21
57
|
---
|
|
22
58
|
|
|
23
59
|
<objective>
|
|
@@ -26,9 +62,19 @@ Purpose: [...]
|
|
|
26
62
|
Output: [...]
|
|
27
63
|
</objective>
|
|
28
64
|
|
|
65
|
+
<execution_context>
|
|
66
|
+
@~/.config/opencode/get-shit-done/workflows/execute-plan.md
|
|
67
|
+
@~/.config/opencode/get-shit-done/templates/summary.md
|
|
68
|
+
[If checkpoints exist:]
|
|
69
|
+
@~/.config/opencode/get-shit-done/references/checkpoints.md
|
|
70
|
+
</execution_context>
|
|
71
|
+
|
|
29
72
|
<context>
|
|
30
73
|
@.planning/PROJECT.md
|
|
31
74
|
@.planning/ROADMAP.md
|
|
75
|
+
@.planning/STATE.md
|
|
76
|
+
[Only if genuinely needed:]
|
|
77
|
+
@.planning/phases/XX-name/XX-YY-SUMMARY.md
|
|
32
78
|
@relevant/source/files.ts
|
|
33
79
|
</context>
|
|
34
80
|
|
|
@@ -240,6 +286,14 @@ Use for: Technology selection, architecture decisions, design choices, feature p
|
|
|
240
286
|
|
|
241
287
|
**Golden rule:** If Claude CAN automate it, Claude MUST automate it.
|
|
242
288
|
|
|
289
|
+
**Checkpoint impact on parallelization:**
|
|
290
|
+
- Plans with checkpoints set `autonomous: false` in frontmatter
|
|
291
|
+
- Non-autonomous plans execute after parallel wave or in main context
|
|
292
|
+
- Subagent pauses at checkpoint, returns to orchestrator
|
|
293
|
+
- Orchestrator presents checkpoint to user
|
|
294
|
+
- User responds
|
|
295
|
+
- Orchestrator resumes agent with `resume: agent_id`
|
|
296
|
+
|
|
243
297
|
See `./checkpoints.md` for comprehensive checkpoint guidance.
|
|
244
298
|
</task_types>
|
|
245
299
|
|
|
@@ -274,14 +328,22 @@ Use @file references to load context for the prompt:
|
|
|
274
328
|
```markdown
|
|
275
329
|
<context>
|
|
276
330
|
@.planning/PROJECT.md # Project vision
|
|
277
|
-
@.planning/ROADMAP.md
|
|
278
|
-
@.planning/
|
|
279
|
-
|
|
280
|
-
|
|
331
|
+
@.planning/ROADMAP.md # Phase structure
|
|
332
|
+
@.planning/STATE.md # Current position
|
|
333
|
+
|
|
334
|
+
# Only include prior SUMMARY if genuinely needed:
|
|
335
|
+
# - This plan imports types from prior plan
|
|
336
|
+
# - Prior plan made decision affecting this plan
|
|
337
|
+
# Independent plans need NO prior SUMMARY references.
|
|
338
|
+
|
|
339
|
+
@src/lib/db.ts # Existing database setup
|
|
340
|
+
@src/types/user.ts # Existing type definitions
|
|
281
341
|
</context>
|
|
282
342
|
```
|
|
283
343
|
|
|
284
344
|
Reference files that Claude needs to understand before implementing.
|
|
345
|
+
|
|
346
|
+
**Anti-pattern:** Reflexive chaining (02 refs 01, 03 refs 02). Only reference what you actually need.
|
|
285
347
|
</context_references>
|
|
286
348
|
|
|
287
349
|
<verification_section>
|
|
@@ -320,22 +382,7 @@ Specify the SUMMARY.md structure:
|
|
|
320
382
|
|
|
321
383
|
```markdown
|
|
322
384
|
<output>
|
|
323
|
-
After completion, create `.planning/phases/XX-name/SUMMARY.md
|
|
324
|
-
|
|
325
|
-
# Phase X: Name Summary
|
|
326
|
-
|
|
327
|
-
**[Substantive one-liner]**
|
|
328
|
-
|
|
329
|
-
## Accomplishments
|
|
330
|
-
|
|
331
|
-
## Files Created/Modified
|
|
332
|
-
|
|
333
|
-
## Decisions Made
|
|
334
|
-
|
|
335
|
-
## Issues Encountered
|
|
336
|
-
|
|
337
|
-
## Next Phase Readiness
|
|
338
|
-
|
|
385
|
+
After completion, create `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
|
|
339
386
|
</output>
|
|
340
387
|
```
|
|
341
388
|
|
|
@@ -10,9 +10,9 @@ Don't interrogate. Collaborate.
|
|
|
10
10
|
</philosophy>
|
|
11
11
|
|
|
12
12
|
<critical_rule>
|
|
13
|
-
**ALL questions MUST use
|
|
13
|
+
**ALL questions MUST use question.**
|
|
14
14
|
|
|
15
|
-
Never ask questions inline as plain text. Every exploration question uses the
|
|
15
|
+
Never ask questions inline as plain text. Every exploration question uses the question tool with thoughtful options that help the user articulate their vision.
|
|
16
16
|
|
|
17
17
|
This applies to:
|
|
18
18
|
- Opening questions ("What do you want to build?")
|
|
@@ -21,13 +21,13 @@ This applies to:
|
|
|
21
21
|
- Boundary questions ("What's out of scope?")
|
|
22
22
|
- Decision gates ("Ready to proceed?")
|
|
23
23
|
|
|
24
|
-
The
|
|
24
|
+
The question format helps users think by presenting concrete options to react to, rather than facing a blank text field.
|
|
25
25
|
</critical_rule>
|
|
26
26
|
|
|
27
27
|
<conversation_arc>
|
|
28
28
|
**1. Open**
|
|
29
29
|
|
|
30
|
-
Use
|
|
30
|
+
Use question:
|
|
31
31
|
- header: "Vision"
|
|
32
32
|
- question: "What do you want to build?"
|
|
33
33
|
- options: Contextual starting points if available, otherwise broad categories + "Let me describe it"
|
|
@@ -38,7 +38,7 @@ Let them respond. Then follow up based on what they said.
|
|
|
38
38
|
|
|
39
39
|
Whatever they said — dig into it. What excited them? What problem sparked this?
|
|
40
40
|
|
|
41
|
-
Use
|
|
41
|
+
Use question with options that probe what they mentioned:
|
|
42
42
|
- header: "[Topic they mentioned]"
|
|
43
43
|
- question: "You mentioned [X] — what would that actually look like?"
|
|
44
44
|
- options: 2-3 interpretations of what they might mean + "Something else"
|
|
@@ -47,7 +47,7 @@ Use AskUserQuestion with options that probe what they mentioned:
|
|
|
47
47
|
|
|
48
48
|
Help them distinguish the essential from the nice-to-have.
|
|
49
49
|
|
|
50
|
-
Use
|
|
50
|
+
Use question:
|
|
51
51
|
- header: "Core"
|
|
52
52
|
- question: "If you could only nail one thing, what would it be?"
|
|
53
53
|
- options: Key features/aspects they've mentioned + "All equally important" + "Something else"
|
|
@@ -56,7 +56,7 @@ Use AskUserQuestion:
|
|
|
56
56
|
|
|
57
57
|
What is this NOT? Explicit exclusions prevent scope creep later.
|
|
58
58
|
|
|
59
|
-
Use
|
|
59
|
+
Use question:
|
|
60
60
|
- header: "Scope"
|
|
61
61
|
- question: "What's explicitly NOT in v1?"
|
|
62
62
|
- options: Things that might be tempting to include + "Nothing specific" + "Let me list them"
|
|
@@ -65,7 +65,7 @@ Use AskUserQuestion:
|
|
|
65
65
|
|
|
66
66
|
Only ask about constraints that actually exist. Don't invent concerns.
|
|
67
67
|
|
|
68
|
-
Use
|
|
68
|
+
Use question:
|
|
69
69
|
- header: "Constraints"
|
|
70
70
|
- question: "Any hard constraints?"
|
|
71
71
|
- options: Common constraint types relevant to context + "None" + "Yes, let me explain"
|
|
@@ -77,7 +77,7 @@ Use AskUserQuestion:
|
|
|
77
77
|
- Free-form "Tell me more about X" without options
|
|
78
78
|
- Any question that leaves the user staring at a blank input
|
|
79
79
|
|
|
80
|
-
**GOOD —
|
|
80
|
+
**GOOD — question with options:**
|
|
81
81
|
- header: "Audience"
|
|
82
82
|
- question: "Who is this for?"
|
|
83
83
|
- options: ["Just me", "My team", "Public users", "Let me describe"]
|
|
@@ -96,11 +96,11 @@ Use AskUserQuestion:
|
|
|
96
96
|
- Ask about audience → ask about constraints → ask about tech stack (regardless of what user said)
|
|
97
97
|
|
|
98
98
|
**GOOD — Following threads with targeted options:**
|
|
99
|
-
- User mentions frustration →
|
|
99
|
+
- User mentions frustration → question with specific frustration interpretations as options → their selection reveals the core value prop
|
|
100
100
|
</good_vs_bad>
|
|
101
101
|
|
|
102
102
|
<probing_techniques>
|
|
103
|
-
When answers are vague, don't accept them. Probe with
|
|
103
|
+
When answers are vague, don't accept them. Probe with question:
|
|
104
104
|
|
|
105
105
|
**"Make it good"** →
|
|
106
106
|
- header: "Good"
|
|
@@ -135,7 +135,7 @@ If gaps remain, weave questions naturally into the conversation. Don't suddenly
|
|
|
135
135
|
</coverage_check>
|
|
136
136
|
|
|
137
137
|
<decision_gate>
|
|
138
|
-
When you feel you understand the vision, use
|
|
138
|
+
When you feel you understand the vision, use question:
|
|
139
139
|
|
|
140
140
|
- header: "Ready?"
|
|
141
141
|
- question: "Ready to create PROJECT.md, or explore more?"
|
|
@@ -58,13 +58,13 @@ Search queries (use WebSearch):
|
|
|
58
58
|
|
|
59
59
|
<pitfall_tool_variations>
|
|
60
60
|
**What**: Conflating capabilities across different tools/environments
|
|
61
|
-
**Example**: "Claude Desktop supports X" ≠ "
|
|
61
|
+
**Example**: "Claude Desktop supports X" ≠ "OpenCode supports X"
|
|
62
62
|
**Why it happens**: Not explicitly checking each environment separately
|
|
63
63
|
**Prevention**:
|
|
64
64
|
```xml
|
|
65
65
|
<verification_checklist>
|
|
66
66
|
□ Claude Desktop capabilities
|
|
67
|
-
□
|
|
67
|
+
□ OpenCode capabilities
|
|
68
68
|
□ VS Code extension capabilities
|
|
69
69
|
□ API/SDK capabilities
|
|
70
70
|
Document which environment supports which features
|