gsd-opencode 1.3.31
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/bin/install.js +222 -0
- package/command/gsd/add-phase.md +207 -0
- package/command/gsd/complete-milestone.md +105 -0
- package/command/gsd/consider-issues.md +201 -0
- package/command/gsd/create-roadmap.md +115 -0
- package/command/gsd/discuss-milestone.md +47 -0
- package/command/gsd/discuss-phase.md +60 -0
- package/command/gsd/execute-plan.md +128 -0
- package/command/gsd/help.md +315 -0
- package/command/gsd/insert-phase.md +227 -0
- package/command/gsd/list-phase-assumptions.md +50 -0
- package/command/gsd/map-codebase.md +84 -0
- package/command/gsd/new-milestone.md +59 -0
- package/command/gsd/new-project.md +316 -0
- package/command/gsd/pause-work.md +122 -0
- package/command/gsd/plan-fix.md +205 -0
- package/command/gsd/plan-phase.md +67 -0
- package/command/gsd/progress.md +316 -0
- package/command/gsd/remove-phase.md +338 -0
- package/command/gsd/research-phase.md +91 -0
- package/command/gsd/resume-work.md +40 -0
- package/command/gsd/verify-work.md +71 -0
- package/get-shit-done/references/checkpoints.md +287 -0
- package/get-shit-done/references/continuation-format.md +255 -0
- package/get-shit-done/references/git-integration.md +254 -0
- package/get-shit-done/references/plan-format.md +428 -0
- package/get-shit-done/references/principles.md +157 -0
- package/get-shit-done/references/questioning.md +162 -0
- package/get-shit-done/references/research-pitfalls.md +215 -0
- package/get-shit-done/references/scope-estimation.md +172 -0
- package/get-shit-done/references/tdd.md +263 -0
- package/get-shit-done/templates/codebase/architecture.md +255 -0
- package/get-shit-done/templates/codebase/concerns.md +310 -0
- package/get-shit-done/templates/codebase/conventions.md +307 -0
- package/get-shit-done/templates/codebase/integrations.md +280 -0
- package/get-shit-done/templates/codebase/stack.md +186 -0
- package/get-shit-done/templates/codebase/structure.md +285 -0
- package/get-shit-done/templates/codebase/testing.md +480 -0
- package/get-shit-done/templates/config.json +18 -0
- package/get-shit-done/templates/context.md +161 -0
- package/get-shit-done/templates/continue-here.md +78 -0
- package/get-shit-done/templates/discovery.md +146 -0
- package/get-shit-done/templates/issues.md +32 -0
- package/get-shit-done/templates/milestone-archive.md +123 -0
- package/get-shit-done/templates/milestone-context.md +93 -0
- package/get-shit-done/templates/milestone.md +115 -0
- package/get-shit-done/templates/phase-prompt.md +303 -0
- package/get-shit-done/templates/project.md +184 -0
- package/get-shit-done/templates/research.md +529 -0
- package/get-shit-done/templates/roadmap.md +196 -0
- package/get-shit-done/templates/state.md +210 -0
- package/get-shit-done/templates/summary.md +273 -0
- package/get-shit-done/templates/uat-issues.md +143 -0
- package/get-shit-done/workflows/complete-milestone.md +643 -0
- package/get-shit-done/workflows/create-milestone.md +416 -0
- package/get-shit-done/workflows/create-roadmap.md +481 -0
- package/get-shit-done/workflows/discovery-phase.md +293 -0
- package/get-shit-done/workflows/discuss-milestone.md +236 -0
- package/get-shit-done/workflows/discuss-phase.md +247 -0
- package/get-shit-done/workflows/execute-phase.md +1625 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/get-shit-done/workflows/map-codebase.md +434 -0
- package/get-shit-done/workflows/plan-phase.md +488 -0
- package/get-shit-done/workflows/research-phase.md +436 -0
- package/get-shit-done/workflows/resume-project.md +287 -0
- package/get-shit-done/workflows/transition.md +580 -0
- package/get-shit-done/workflows/verify-work.md +202 -0
- package/package.json +38 -0
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:new-milestone
|
|
3
|
+
description: Create a new milestone with phases for an existing project
|
|
4
|
+
argument-hint: "[milestone name, e.g., 'v2.0 Features']"
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<objective>
|
|
8
|
+
Create a new milestone for an existing project with defined phases.
|
|
9
|
+
|
|
10
|
+
Purpose: After completing a milestone (or when ready to define next chunk of work), creates the milestone structure in ROADMAP.md with phases, updates STATE.md, and creates phase directories.
|
|
11
|
+
Output: New milestone in ROADMAP.md, updated STATE.md, phase directories created
|
|
12
|
+
</objective>
|
|
13
|
+
|
|
14
|
+
<execution_context>
|
|
15
|
+
@~/.config/opencode/get-shit-done/workflows/create-milestone.md
|
|
16
|
+
@~/.config/opencode/get-shit-done/templates/roadmap.md
|
|
17
|
+
</execution_context>
|
|
18
|
+
|
|
19
|
+
<context>
|
|
20
|
+
Milestone name: $ARGUMENTS (optional - will prompt if not provided)
|
|
21
|
+
|
|
22
|
+
**Load project state first:**
|
|
23
|
+
@.planning/STATE.md
|
|
24
|
+
|
|
25
|
+
**Load roadmap:**
|
|
26
|
+
@.planning/ROADMAP.md
|
|
27
|
+
|
|
28
|
+
**Load milestones (if exists):**
|
|
29
|
+
@.planning/MILESTONES.md
|
|
30
|
+
</context>
|
|
31
|
+
|
|
32
|
+
<process>
|
|
33
|
+
1. Load project context (STATE.md, ROADMAP.md, MILESTONES.md)
|
|
34
|
+
2. Calculate next milestone version and starting phase number
|
|
35
|
+
3. If milestone name provided in arguments, use it; otherwise prompt
|
|
36
|
+
4. Gather phases (per depth setting: quick 3-5, standard 5-8, comprehensive 8-12):
|
|
37
|
+
- If called from /gsd:discuss-milestone, use provided context
|
|
38
|
+
- Otherwise, prompt for phase breakdown
|
|
39
|
+
5. Detect research needs for each phase
|
|
40
|
+
6. Confirm phases (respect config.json gate settings)
|
|
41
|
+
7. Follow create-milestone.md workflow:
|
|
42
|
+
- Update ROADMAP.md with new milestone section
|
|
43
|
+
- Create phase directories
|
|
44
|
+
- Update STATE.md for new milestone
|
|
45
|
+
- Git commit milestone creation
|
|
46
|
+
8. Offer next steps (discuss first phase, plan first phase, review)
|
|
47
|
+
</process>
|
|
48
|
+
|
|
49
|
+
<success_criteria>
|
|
50
|
+
|
|
51
|
+
- Next phase number calculated correctly (continues from previous milestone)
|
|
52
|
+
- Phases defined per depth setting (quick: 3-5, standard: 5-8, comprehensive: 8-12)
|
|
53
|
+
- Research flags assigned for each phase
|
|
54
|
+
- ROADMAP.md updated with new milestone section
|
|
55
|
+
- Phase directories created
|
|
56
|
+
- STATE.md reset for new milestone
|
|
57
|
+
- Git commit made
|
|
58
|
+
- User knows next steps
|
|
59
|
+
</success_criteria>
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:new-project
|
|
3
|
+
description: Initialize a new project with deep context gathering and PROJECT.md
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- question
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
|
|
13
|
+
Initialize a new project through comprehensive context gathering.
|
|
14
|
+
|
|
15
|
+
This is the most leveraged moment in any project. Deep questioning here means better plans, better execution, better outcomes.
|
|
16
|
+
|
|
17
|
+
Creates `.planning/` with PROJECT.md and config.json.
|
|
18
|
+
|
|
19
|
+
</objective>
|
|
20
|
+
|
|
21
|
+
<execution_context>
|
|
22
|
+
|
|
23
|
+
@~/.config/opencode/get-shit-done/references/principles.md
|
|
24
|
+
@~/.config/opencode/get-shit-done/references/questioning.md
|
|
25
|
+
@~/.config/opencode/get-shit-done/templates/project.md
|
|
26
|
+
@~/.config/opencode/get-shit-done/templates/config.json
|
|
27
|
+
|
|
28
|
+
</execution_context>
|
|
29
|
+
|
|
30
|
+
<process>
|
|
31
|
+
|
|
32
|
+
<step name="setup">
|
|
33
|
+
|
|
34
|
+
**MANDATORY FIRST STEP — Execute these checks before ANY user interaction:**
|
|
35
|
+
|
|
36
|
+
1. **Abort if project exists:**
|
|
37
|
+
```bash
|
|
38
|
+
[ -f .planning/PROJECT.md ] && echo "ERROR: Project already initialized. Use /gsd:progress" && exit 1
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
2. **Initialize git repo in THIS directory** (required even if inside a parent repo):
|
|
42
|
+
```bash
|
|
43
|
+
# Check if THIS directory is already a git repo root (handles .git file for worktrees too)
|
|
44
|
+
if [ -d .git ] || [ -f .git ]; then
|
|
45
|
+
echo "Git repo exists in current directory"
|
|
46
|
+
else
|
|
47
|
+
git init
|
|
48
|
+
echo "Initialized new git repo"
|
|
49
|
+
fi
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
3. **Detect existing code (brownfield detection):**
|
|
53
|
+
```bash
|
|
54
|
+
# Check for existing code files
|
|
55
|
+
CODE_FILES=$(find . -name "*.ts" -o -name "*.js" -o -name "*.py" -o -name "*.go" -o -name "*.rs" -o -name "*.swift" -o -name "*.java" 2>/dev/null | grep -v node_modules | grep -v .git | head -20)
|
|
56
|
+
HAS_PACKAGE=$([ -f package.json ] || [ -f requirements.txt ] || [ -f Cargo.toml ] || [ -f go.mod ] || [ -f Package.swift ] && echo "yes")
|
|
57
|
+
HAS_CODEBASE_MAP=$([ -d .planning/codebase ] && echo "yes")
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
**You MUST run all bash commands above using the Bash tool before proceeding.**
|
|
61
|
+
|
|
62
|
+
</step>
|
|
63
|
+
|
|
64
|
+
<step name="brownfield_offer">
|
|
65
|
+
|
|
66
|
+
**If existing code detected and .planning/codebase/ doesn't exist:**
|
|
67
|
+
|
|
68
|
+
Check the results from setup step:
|
|
69
|
+
- If `CODE_FILES` is non-empty OR `HAS_PACKAGE` is "yes"
|
|
70
|
+
- AND `HAS_CODEBASE_MAP` is NOT "yes"
|
|
71
|
+
|
|
72
|
+
Use question:
|
|
73
|
+
- header: "Existing Code"
|
|
74
|
+
- question: "I detected existing code in this directory. Would you like to map the codebase first?"
|
|
75
|
+
- options:
|
|
76
|
+
- "Map codebase first" — Run /gsd:map-codebase to understand existing architecture (Recommended)
|
|
77
|
+
- "Skip mapping" — Proceed with project initialization
|
|
78
|
+
|
|
79
|
+
**If "Map codebase first":**
|
|
80
|
+
```
|
|
81
|
+
Run `/gsd:map-codebase` first, then return to `/gsd:new-project`
|
|
82
|
+
```
|
|
83
|
+
Exit command.
|
|
84
|
+
|
|
85
|
+
**If "Skip mapping":** Continue to question step.
|
|
86
|
+
|
|
87
|
+
**If no existing code detected OR codebase already mapped:** Continue to question step.
|
|
88
|
+
|
|
89
|
+
</step>
|
|
90
|
+
|
|
91
|
+
<step name="question">
|
|
92
|
+
|
|
93
|
+
**1. Open (FREEFORM — do NOT use question):**
|
|
94
|
+
|
|
95
|
+
Ask inline: "What do you want to build?"
|
|
96
|
+
|
|
97
|
+
Wait for their freeform response. This gives you the context needed to ask intelligent follow-up questions.
|
|
98
|
+
|
|
99
|
+
**2. Follow the thread (NOW use question):**
|
|
100
|
+
|
|
101
|
+
Based on their response, use question with options that probe what they mentioned:
|
|
102
|
+
- header: "[Topic they mentioned]"
|
|
103
|
+
- question: "You mentioned [X] — what would that look like?"
|
|
104
|
+
- options: 2-3 interpretations + "Something else"
|
|
105
|
+
|
|
106
|
+
**3. Sharpen the core:**
|
|
107
|
+
|
|
108
|
+
Use question:
|
|
109
|
+
- header: "Core"
|
|
110
|
+
- question: "If you could only nail one thing, what would it be?"
|
|
111
|
+
- options: Key aspects they've mentioned + "All equally important" + "Something else"
|
|
112
|
+
|
|
113
|
+
**4. Find boundaries:**
|
|
114
|
+
|
|
115
|
+
Use question:
|
|
116
|
+
- header: "Scope"
|
|
117
|
+
- question: "What's explicitly NOT in v1?"
|
|
118
|
+
- options: Things that might be tempting + "Nothing specific" + "Let me list them"
|
|
119
|
+
|
|
120
|
+
**5. Ground in reality:**
|
|
121
|
+
|
|
122
|
+
Use question:
|
|
123
|
+
- header: "Constraints"
|
|
124
|
+
- question: "Any hard constraints?"
|
|
125
|
+
- options: Relevant constraint types + "None" + "Yes, let me explain"
|
|
126
|
+
|
|
127
|
+
**6. Decision gate:**
|
|
128
|
+
|
|
129
|
+
Use question:
|
|
130
|
+
- header: "Ready?"
|
|
131
|
+
- question: "Ready to create PROJECT.md, or explore more?"
|
|
132
|
+
- options (ALL THREE REQUIRED):
|
|
133
|
+
- "Create PROJECT.md" — Finalize and continue
|
|
134
|
+
- "Ask more questions" — I'll dig deeper
|
|
135
|
+
- "Let me add context" — You have more to share
|
|
136
|
+
|
|
137
|
+
If "Ask more questions" → check coverage gaps from `questioning.md` → return to step 2.
|
|
138
|
+
If "Let me add context" → receive input via their response → return to step 2.
|
|
139
|
+
Loop until "Create PROJECT.md" selected.
|
|
140
|
+
|
|
141
|
+
</step>
|
|
142
|
+
|
|
143
|
+
<step name="project">
|
|
144
|
+
|
|
145
|
+
Synthesize all context into `.planning/PROJECT.md` using the template from `templates/project.md`.
|
|
146
|
+
|
|
147
|
+
**For greenfield projects:**
|
|
148
|
+
|
|
149
|
+
Initialize requirements as hypotheses:
|
|
150
|
+
|
|
151
|
+
```markdown
|
|
152
|
+
## Requirements
|
|
153
|
+
|
|
154
|
+
### Validated
|
|
155
|
+
|
|
156
|
+
(None yet — ship to validate)
|
|
157
|
+
|
|
158
|
+
### Active
|
|
159
|
+
|
|
160
|
+
- [ ] [Requirement 1]
|
|
161
|
+
- [ ] [Requirement 2]
|
|
162
|
+
- [ ] [Requirement 3]
|
|
163
|
+
|
|
164
|
+
### Out of Scope
|
|
165
|
+
|
|
166
|
+
- [Exclusion 1] — [why]
|
|
167
|
+
- [Exclusion 2] — [why]
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
All Active requirements are hypotheses until shipped and validated.
|
|
171
|
+
|
|
172
|
+
**For brownfield projects (codebase map exists):**
|
|
173
|
+
|
|
174
|
+
Infer Validated requirements from existing code:
|
|
175
|
+
|
|
176
|
+
1. Read `.planning/codebase/ARCHITECTURE.md` and `STACK.md`
|
|
177
|
+
2. Identify what the codebase already does
|
|
178
|
+
3. These become the initial Validated set
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
## Requirements
|
|
182
|
+
|
|
183
|
+
### Validated
|
|
184
|
+
|
|
185
|
+
- ✓ [Existing capability 1] — existing
|
|
186
|
+
- ✓ [Existing capability 2] — existing
|
|
187
|
+
- ✓ [Existing capability 3] — existing
|
|
188
|
+
|
|
189
|
+
### Active
|
|
190
|
+
|
|
191
|
+
- [ ] [New requirement 1]
|
|
192
|
+
- [ ] [New requirement 2]
|
|
193
|
+
|
|
194
|
+
### Out of Scope
|
|
195
|
+
|
|
196
|
+
- [Exclusion 1] — [why]
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
**Key Decisions:**
|
|
200
|
+
|
|
201
|
+
Initialize with any decisions made during questioning:
|
|
202
|
+
|
|
203
|
+
```markdown
|
|
204
|
+
## Key Decisions
|
|
205
|
+
|
|
206
|
+
| Decision | Rationale | Outcome |
|
|
207
|
+
|----------|-----------|---------|
|
|
208
|
+
| [Choice from questioning] | [Why] | — Pending |
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
**Last updated footer:**
|
|
212
|
+
|
|
213
|
+
```markdown
|
|
214
|
+
---
|
|
215
|
+
*Last updated: [date] after initialization*
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Do not compress. Capture everything gathered.
|
|
219
|
+
|
|
220
|
+
</step>
|
|
221
|
+
|
|
222
|
+
<step name="mode">
|
|
223
|
+
|
|
224
|
+
Ask workflow mode preference:
|
|
225
|
+
|
|
226
|
+
Use question:
|
|
227
|
+
|
|
228
|
+
- header: "Mode"
|
|
229
|
+
- question: "How do you want to work?"
|
|
230
|
+
- options:
|
|
231
|
+
- "Interactive" — Confirm at each step
|
|
232
|
+
- "YOLO" — Auto-approve, just execute
|
|
233
|
+
|
|
234
|
+
</step>
|
|
235
|
+
|
|
236
|
+
<step name="depth">
|
|
237
|
+
|
|
238
|
+
Ask planning depth preference:
|
|
239
|
+
|
|
240
|
+
Use question:
|
|
241
|
+
|
|
242
|
+
- header: "Depth"
|
|
243
|
+
- question: "How thorough should planning be?"
|
|
244
|
+
- options:
|
|
245
|
+
- "Quick" — Ship fast, minimal phases/plans (3-5 phases, 1-3 plans each)
|
|
246
|
+
- "Standard" — Balanced scope and speed (5-8 phases, 3-5 plans each)
|
|
247
|
+
- "Comprehensive" — Thorough coverage, more phases/plans (8-12 phases, 5-10 plans each)
|
|
248
|
+
|
|
249
|
+
**Depth controls compression tolerance, not artificial inflation.** All depths use 2-3 tasks per plan. Comprehensive means "don't compress complex work"—it doesn't mean "pad simple work to hit a number."
|
|
250
|
+
|
|
251
|
+
Create `.planning/config.json` with chosen mode and depth using `templates/config.json` structure.
|
|
252
|
+
|
|
253
|
+
</step>
|
|
254
|
+
|
|
255
|
+
<step name="commit">
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
git add .planning/PROJECT.md .planning/config.json
|
|
259
|
+
git commit -m "$(cat <<'EOF'
|
|
260
|
+
docs: initialize [project-name]
|
|
261
|
+
|
|
262
|
+
[One-liner from PROJECT.md]
|
|
263
|
+
|
|
264
|
+
Creates PROJECT.md with requirements and constraints.
|
|
265
|
+
EOF
|
|
266
|
+
)"
|
|
267
|
+
```
|
|
268
|
+
|
|
269
|
+
</step>
|
|
270
|
+
|
|
271
|
+
<step name="done">
|
|
272
|
+
|
|
273
|
+
Present completion with next steps (see ~/.config/opencode/get-shit-done/references/continuation-format.md):
|
|
274
|
+
|
|
275
|
+
```
|
|
276
|
+
Project initialized:
|
|
277
|
+
|
|
278
|
+
- Project: .planning/PROJECT.md
|
|
279
|
+
- Config: .planning/config.json (mode: [chosen mode])
|
|
280
|
+
[If .planning/codebase/ exists:] - Codebase: .planning/codebase/ (7 documents)
|
|
281
|
+
|
|
282
|
+
---
|
|
283
|
+
|
|
284
|
+
## ▶ Next Up
|
|
285
|
+
|
|
286
|
+
**[Project Name]** — create roadmap
|
|
287
|
+
|
|
288
|
+
`/gsd:create-roadmap`
|
|
289
|
+
|
|
290
|
+
*`/clear` first → fresh context window*
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
</step>
|
|
297
|
+
|
|
298
|
+
</process>
|
|
299
|
+
|
|
300
|
+
<output>
|
|
301
|
+
|
|
302
|
+
- `.planning/PROJECT.md`
|
|
303
|
+
- `.planning/config.json`
|
|
304
|
+
|
|
305
|
+
</output>
|
|
306
|
+
|
|
307
|
+
<success_criteria>
|
|
308
|
+
|
|
309
|
+
- [ ] Deep questioning completed (not rushed)
|
|
310
|
+
- [ ] PROJECT.md captures full context with evolutionary structure
|
|
311
|
+
- [ ] Requirements initialized as hypotheses (greenfield) or with inferred Validated (brownfield)
|
|
312
|
+
- [ ] Key Decisions table initialized
|
|
313
|
+
- [ ] config.json has workflow mode
|
|
314
|
+
- [ ] All committed to git
|
|
315
|
+
|
|
316
|
+
</success_criteria>
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:pause-work
|
|
3
|
+
description: Create context handoff when pausing work mid-phase
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Bash
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
<objective>
|
|
11
|
+
Create `.continue-here.md` handoff file to preserve complete work state across sessions.
|
|
12
|
+
|
|
13
|
+
Enables seamless resumption in fresh session with full context restoration.
|
|
14
|
+
</objective>
|
|
15
|
+
|
|
16
|
+
<context>
|
|
17
|
+
@.planning/STATE.md
|
|
18
|
+
</context>
|
|
19
|
+
|
|
20
|
+
<process>
|
|
21
|
+
|
|
22
|
+
<step name="detect">
|
|
23
|
+
Find current phase directory from most recently modified files.
|
|
24
|
+
</step>
|
|
25
|
+
|
|
26
|
+
<step name="gather">
|
|
27
|
+
**Collect complete state for handoff:**
|
|
28
|
+
|
|
29
|
+
1. **Current position**: Which phase, which plan, which task
|
|
30
|
+
2. **Work completed**: What got done this session
|
|
31
|
+
3. **Work remaining**: What's left in current plan/phase
|
|
32
|
+
4. **Decisions made**: Key decisions and rationale
|
|
33
|
+
5. **Blockers/issues**: Anything stuck
|
|
34
|
+
6. **Mental context**: The approach, next steps, "vibe"
|
|
35
|
+
7. **Files modified**: What's changed but not committed
|
|
36
|
+
|
|
37
|
+
Ask user for clarifications if needed.
|
|
38
|
+
</step>
|
|
39
|
+
|
|
40
|
+
<step name="write">
|
|
41
|
+
**Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
|
|
42
|
+
|
|
43
|
+
```markdown
|
|
44
|
+
---
|
|
45
|
+
phase: XX-name
|
|
46
|
+
task: 3
|
|
47
|
+
total_tasks: 7
|
|
48
|
+
status: in_progress
|
|
49
|
+
last_updated: [timestamp]
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
<current_state>
|
|
53
|
+
[Where exactly are we? Immediate context]
|
|
54
|
+
</current_state>
|
|
55
|
+
|
|
56
|
+
<completed_work>
|
|
57
|
+
|
|
58
|
+
- Task 1: [name] - Done
|
|
59
|
+
- Task 2: [name] - Done
|
|
60
|
+
- Task 3: [name] - In progress, [what's done]
|
|
61
|
+
</completed_work>
|
|
62
|
+
|
|
63
|
+
<remaining_work>
|
|
64
|
+
|
|
65
|
+
- Task 3: [what's left]
|
|
66
|
+
- Task 4: Not started
|
|
67
|
+
- Task 5: Not started
|
|
68
|
+
</remaining_work>
|
|
69
|
+
|
|
70
|
+
<decisions_made>
|
|
71
|
+
|
|
72
|
+
- Decided to use [X] because [reason]
|
|
73
|
+
- Chose [approach] over [alternative] because [reason]
|
|
74
|
+
</decisions_made>
|
|
75
|
+
|
|
76
|
+
<blockers>
|
|
77
|
+
- [Blocker 1]: [status/workaround]
|
|
78
|
+
</blockers>
|
|
79
|
+
|
|
80
|
+
<context>
|
|
81
|
+
[Mental state, what were you thinking, the plan]
|
|
82
|
+
</context>
|
|
83
|
+
|
|
84
|
+
<next_action>
|
|
85
|
+
Start with: [specific first action when resuming]
|
|
86
|
+
</next_action>
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Be specific enough for a fresh Claude to understand immediately.
|
|
90
|
+
</step>
|
|
91
|
+
|
|
92
|
+
<step name="commit">
|
|
93
|
+
```bash
|
|
94
|
+
git add .planning/phases/*/.continue-here.md
|
|
95
|
+
git commit -m "wip: [phase-name] paused at task [X]/[Y]"
|
|
96
|
+
```
|
|
97
|
+
</step>
|
|
98
|
+
|
|
99
|
+
<step name="confirm">
|
|
100
|
+
```
|
|
101
|
+
✓ Handoff created: .planning/phases/[XX-name]/.continue-here.md
|
|
102
|
+
|
|
103
|
+
Current state:
|
|
104
|
+
|
|
105
|
+
- Phase: [XX-name]
|
|
106
|
+
- Task: [X] of [Y]
|
|
107
|
+
- Status: [in_progress/blocked]
|
|
108
|
+
- Committed as WIP
|
|
109
|
+
|
|
110
|
+
To resume: /gsd:resume-work
|
|
111
|
+
|
|
112
|
+
```
|
|
113
|
+
</step>
|
|
114
|
+
|
|
115
|
+
</process>
|
|
116
|
+
|
|
117
|
+
<success_criteria>
|
|
118
|
+
- [ ] .continue-here.md created in correct phase directory
|
|
119
|
+
- [ ] All sections filled with specific content
|
|
120
|
+
- [ ] Committed as WIP
|
|
121
|
+
- [ ] User knows location and how to resume
|
|
122
|
+
</success_criteria>
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:plan-fix
|
|
3
|
+
description: Plan fixes for UAT issues from verify-work
|
|
4
|
+
argument-hint: "[plan, e.g., '04-02']"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Write
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- question
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<objective>
|
|
15
|
+
Create FIX.md plan from UAT issues found during verify-work.
|
|
16
|
+
|
|
17
|
+
Purpose: Plan fixes for issues logged in phase-scoped ISSUES.md files.
|
|
18
|
+
Output: {plan}-FIX.md in the phase directory, ready for execution.
|
|
19
|
+
</objective>
|
|
20
|
+
|
|
21
|
+
<execution_context>
|
|
22
|
+
@~/.config/opencode/get-shit-done/references/plan-format.md
|
|
23
|
+
@~/.config/opencode/get-shit-done/references/checkpoints.md
|
|
24
|
+
</execution_context>
|
|
25
|
+
|
|
26
|
+
<context>
|
|
27
|
+
Plan number: $ARGUMENTS (required - e.g., "04-02" or "09-01")
|
|
28
|
+
|
|
29
|
+
**Load project state:**
|
|
30
|
+
@.planning/STATE.md
|
|
31
|
+
@.planning/ROADMAP.md
|
|
32
|
+
</context>
|
|
33
|
+
|
|
34
|
+
<process>
|
|
35
|
+
|
|
36
|
+
<step name="parse">
|
|
37
|
+
**Parse plan argument:**
|
|
38
|
+
|
|
39
|
+
$ARGUMENTS should be a plan number like "04-02" or "09-01".
|
|
40
|
+
Extract phase number (XX) and plan number (NN).
|
|
41
|
+
|
|
42
|
+
If no argument provided:
|
|
43
|
+
```
|
|
44
|
+
Error: Plan number required.
|
|
45
|
+
|
|
46
|
+
Usage: /gsd:plan-fix 04-02
|
|
47
|
+
|
|
48
|
+
This creates a fix plan from .planning/phases/XX-name/04-02-ISSUES.md
|
|
49
|
+
```
|
|
50
|
+
Exit.
|
|
51
|
+
</step>
|
|
52
|
+
|
|
53
|
+
<step name="find">
|
|
54
|
+
**Find ISSUES.md file:**
|
|
55
|
+
|
|
56
|
+
Search for matching ISSUES.md:
|
|
57
|
+
```bash
|
|
58
|
+
ls .planning/phases/*/{plan}-ISSUES.md 2>/dev/null
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
If not found:
|
|
62
|
+
```
|
|
63
|
+
No ISSUES.md found for plan {plan}.
|
|
64
|
+
|
|
65
|
+
ISSUES.md files are created by /gsd:verify-work when UAT finds issues.
|
|
66
|
+
If no issues were found during testing, no fix plan is needed.
|
|
67
|
+
```
|
|
68
|
+
Exit.
|
|
69
|
+
</step>
|
|
70
|
+
|
|
71
|
+
<step name="read">
|
|
72
|
+
**Read issues:**
|
|
73
|
+
|
|
74
|
+
Read the ISSUES.md file.
|
|
75
|
+
Parse each issue:
|
|
76
|
+
- ID (UAT-XXX)
|
|
77
|
+
- Title
|
|
78
|
+
- Severity (critical/major/minor)
|
|
79
|
+
- Description/steps to reproduce
|
|
80
|
+
- Acceptance criteria
|
|
81
|
+
|
|
82
|
+
Count total issues by severity.
|
|
83
|
+
</step>
|
|
84
|
+
|
|
85
|
+
<step name="plan">
|
|
86
|
+
**Create fix tasks:**
|
|
87
|
+
|
|
88
|
+
For each issue (or logical group):
|
|
89
|
+
- Create one task per issue OR
|
|
90
|
+
- Group related minor issues into single task
|
|
91
|
+
|
|
92
|
+
Task structure:
|
|
93
|
+
```xml
|
|
94
|
+
<task type="auto">
|
|
95
|
+
<name>Fix UAT-001: [issue title]</name>
|
|
96
|
+
<files>[affected files from issue]</files>
|
|
97
|
+
<action>
|
|
98
|
+
[What to fix based on issue description]
|
|
99
|
+
[Reference original acceptance criteria]
|
|
100
|
+
</action>
|
|
101
|
+
<verify>[Test that issue is resolved]</verify>
|
|
102
|
+
<done>[Issue acceptance criteria met]</done>
|
|
103
|
+
</task>
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Prioritize: critical → major → minor
|
|
107
|
+
</step>
|
|
108
|
+
|
|
109
|
+
<step name="write">
|
|
110
|
+
**Write FIX.md:**
|
|
111
|
+
|
|
112
|
+
Create `.planning/phases/XX-name/{plan}-FIX.md`:
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
---
|
|
116
|
+
phase: XX-name
|
|
117
|
+
plan: {plan}-FIX
|
|
118
|
+
type: fix
|
|
119
|
+
---
|
|
120
|
+
|
|
121
|
+
<objective>
|
|
122
|
+
Fix {N} UAT issues from plan {plan}.
|
|
123
|
+
|
|
124
|
+
Source: {plan}-ISSUES.md
|
|
125
|
+
Priority: {critical count} critical, {major count} major, {minor count} minor
|
|
126
|
+
</objective>
|
|
127
|
+
|
|
128
|
+
<execution_context>
|
|
129
|
+
@~/.config/opencode/get-shit-done/workflows/execute-phase.md
|
|
130
|
+
@~/.config/opencode/get-shit-done/templates/summary.md
|
|
131
|
+
</execution_context>
|
|
132
|
+
|
|
133
|
+
<context>
|
|
134
|
+
@.planning/STATE.md
|
|
135
|
+
@.planning/ROADMAP.md
|
|
136
|
+
|
|
137
|
+
**Issues being fixed:**
|
|
138
|
+
@.planning/phases/XX-name/{plan}-ISSUES.md
|
|
139
|
+
|
|
140
|
+
**Original plan for reference:**
|
|
141
|
+
@.planning/phases/XX-name/{plan}-PLAN.md
|
|
142
|
+
</context>
|
|
143
|
+
|
|
144
|
+
<tasks>
|
|
145
|
+
[Generated fix tasks]
|
|
146
|
+
</tasks>
|
|
147
|
+
|
|
148
|
+
<verification>
|
|
149
|
+
Before declaring plan complete:
|
|
150
|
+
- [ ] All critical issues fixed
|
|
151
|
+
- [ ] All major issues fixed
|
|
152
|
+
- [ ] Minor issues fixed or documented as deferred
|
|
153
|
+
- [ ] Original acceptance criteria from issues met
|
|
154
|
+
</verification>
|
|
155
|
+
|
|
156
|
+
<success_criteria>
|
|
157
|
+
- All UAT issues from {plan}-ISSUES.md addressed
|
|
158
|
+
- Tests pass
|
|
159
|
+
- Ready for re-verification
|
|
160
|
+
</success_criteria>
|
|
161
|
+
|
|
162
|
+
<output>
|
|
163
|
+
After completion, create `.planning/phases/XX-name/{plan}-FIX-SUMMARY.md`
|
|
164
|
+
</output>
|
|
165
|
+
```
|
|
166
|
+
</step>
|
|
167
|
+
|
|
168
|
+
<step name="offer">
|
|
169
|
+
**Offer execution:**
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
## ✓ Fix Plan Created
|
|
175
|
+
|
|
176
|
+
**{plan}-FIX.md** — {N} issues to fix
|
|
177
|
+
|
|
178
|
+
| Severity | Count |
|
|
179
|
+
|----------|-------|
|
|
180
|
+
| Critical | {n} |
|
|
181
|
+
| Major | {n} |
|
|
182
|
+
| Minor | {n} |
|
|
183
|
+
|
|
184
|
+
---
|
|
185
|
+
|
|
186
|
+
Would you like to:
|
|
187
|
+
1. Execute the fix plan now
|
|
188
|
+
2. Review the plan first
|
|
189
|
+
3. Modify the plan before executing
|
|
190
|
+
|
|
191
|
+
---
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
Use question to get response.
|
|
195
|
+
If execute: `/gsd:execute-plan .planning/phases/XX-name/{plan}-FIX.md`
|
|
196
|
+
</step>
|
|
197
|
+
|
|
198
|
+
</process>
|
|
199
|
+
|
|
200
|
+
<success_criteria>
|
|
201
|
+
- [ ] ISSUES.md found and parsed
|
|
202
|
+
- [ ] Fix tasks created for each issue
|
|
203
|
+
- [ ] FIX.md written with proper structure
|
|
204
|
+
- [ ] User offered to execute or review
|
|
205
|
+
</success_criteria>
|