get-shit-done-cc 1.3.25 → 1.3.27
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/README.md +90 -20
- package/commands/gsd/add-phase.md +1 -0
- package/commands/gsd/complete-milestone.md +1 -0
- package/commands/gsd/consider-issues.md +1 -0
- package/commands/gsd/create-roadmap.md +1 -0
- package/commands/gsd/discuss-milestone.md +1 -0
- package/commands/gsd/discuss-phase.md +1 -0
- package/commands/gsd/execute-plan.md +1 -0
- package/commands/gsd/help.md +1 -0
- package/commands/gsd/insert-phase.md +1 -0
- package/commands/gsd/list-phase-assumptions.md +1 -0
- package/commands/gsd/map-codebase.md +1 -0
- package/commands/gsd/new-milestone.md +1 -0
- package/commands/gsd/new-project.md +1 -0
- package/commands/gsd/pause-work.md +1 -0
- package/commands/gsd/plan-phase.md +1 -0
- package/commands/gsd/progress.md +129 -48
- package/commands/gsd/research-phase.md +1 -0
- package/commands/gsd/resume-work.md +1 -0
- package/get-shit-done/workflows/discuss-phase.md +20 -0
- package/get-shit-done/workflows/execute-phase.md +84 -59
- package/get-shit-done/workflows/plan-phase.md +25 -0
- package/get-shit-done/workflows/research-phase.md +20 -0
- package/get-shit-done/workflows/transition.md +36 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -14,38 +14,42 @@
|
|
|
14
14
|
*"By far the most powerful addition to my Claude Code. Nothing over-engineered. Literally just gets shit done."*
|
|
15
15
|
|
|
16
16
|
<br>
|
|
17
|
+
|
|
18
|
+
**Trusted by engineers at Amazon, Google, Shopify, and Webflow.**
|
|
19
|
+
|
|
17
20
|
</div>
|
|
18
21
|
|
|
19
22
|
---
|
|
20
23
|
|
|
21
24
|
Vibecoding has a bad reputation. You describe what you want, AI generates code, and you get inconsistent garbage that falls apart at scale.
|
|
22
25
|
|
|
23
|
-
GSD fixes that. It's the context engineering layer that makes Claude Code reliable. Describe your idea, let the system extract everything it needs to know, and
|
|
26
|
+
GSD fixes that. It's the context engineering layer that makes Claude Code reliable. Describe your idea, let the system extract everything it needs to know, and let Claude Code get to work.
|
|
24
27
|
|
|
25
|
-
|
|
28
|
+
---
|
|
26
29
|
|
|
27
|
-
|
|
30
|
+
## Who This Is For
|
|
28
31
|
|
|
29
|
-
|
|
32
|
+
People who want to describe what they want and have it built correctly — without pretending they're running a 50-person engineering org.
|
|
30
33
|
|
|
31
|
-
|
|
34
|
+
### Marketplace Installation
|
|
35
|
+
|
|
36
|
+
Install from the Claude Code marketplace:
|
|
32
37
|
|
|
33
38
|
```bash
|
|
34
|
-
|
|
39
|
+
/plugin marketplace add glittercowboy/get-shit-done
|
|
40
|
+
/plugin install get-shit-done@get-shit-done
|
|
35
41
|
```
|
|
36
42
|
|
|
37
|
-
|
|
43
|
+
### Manual Installation
|
|
38
44
|
|
|
39
|
-
|
|
45
|
+
Clone the repository and tell Claude Code where to find it:
|
|
40
46
|
|
|
41
47
|
```bash
|
|
42
|
-
|
|
43
|
-
|
|
48
|
+
git clone https://github.com/glittercowboy/get-shit-done.git
|
|
49
|
+
claude --plugin-dir ./get-shit-done
|
|
44
50
|
```
|
|
45
51
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
Verify: `/gsd:help`
|
|
52
|
+
Useful for development or testing modifications.
|
|
49
53
|
|
|
50
54
|
---
|
|
51
55
|
|
|
@@ -57,7 +61,7 @@ Other spec-driven development tools exist; BMAD, Speckit... But they all seem to
|
|
|
57
61
|
|
|
58
62
|
So I built GSD. The complexity is in the system, not in your workflow. Behind the scenes: context engineering, XML prompt formatting, subagent orchestration, state management. What you see: a few commands that just work.
|
|
59
63
|
|
|
60
|
-
|
|
64
|
+
The system gives Claude everything it needs to do the work _and_ verify it. I trust the workflow. It just does a good job.
|
|
61
65
|
|
|
62
66
|
That's what this is. No enterprise roleplay bullshit. Just an incredibly effective system for building cool stuff consistently using Claude Code.
|
|
63
67
|
|
|
@@ -65,6 +69,70 @@ That's what this is. No enterprise roleplay bullshit. Just an incredibly effecti
|
|
|
65
69
|
|
|
66
70
|
---
|
|
67
71
|
|
|
72
|
+
## Installation
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
npx get-shit-done-cc
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
That's it. Works on Mac, Windows, and Linux.
|
|
79
|
+
|
|
80
|
+
### Non-interactive Install (Docker, CI, Scripts)
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
npx get-shit-done-cc --global # Install to ~/.claude/
|
|
84
|
+
npx get-shit-done-cc --local # Install to ./.claude/
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Use `--global` (`-g`) or `--local` (`-l`) to skip the interactive prompt.
|
|
88
|
+
|
|
89
|
+
Verify: `/gsd:help`
|
|
90
|
+
|
|
91
|
+
### Recommended: Skip Permissions Mode
|
|
92
|
+
|
|
93
|
+
GSD is designed for frictionless automation. Run Claude Code with:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
claude --dangerously-skip-permissions
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
This is how GSD is intended to be used — stopping to approve `date` and `git commit` 50 times defeats the purpose.
|
|
100
|
+
|
|
101
|
+
If you prefer not to use that flag, add this to your project's `.claude/settings.json` to auto-approve GSD's commands:
|
|
102
|
+
|
|
103
|
+
<details>
|
|
104
|
+
<summary>Show settings.json permissions</summary>
|
|
105
|
+
|
|
106
|
+
```json
|
|
107
|
+
{
|
|
108
|
+
"permissions": {
|
|
109
|
+
"allow": [
|
|
110
|
+
"Bash(date:*)",
|
|
111
|
+
"Bash(echo:*)",
|
|
112
|
+
"Bash(cat:*)",
|
|
113
|
+
"Bash(ls:*)",
|
|
114
|
+
"Bash(mkdir:*)",
|
|
115
|
+
"Bash(wc:*)",
|
|
116
|
+
"Bash(head:*)",
|
|
117
|
+
"Bash(tail:*)",
|
|
118
|
+
"Bash(sort:*)",
|
|
119
|
+
"Bash(grep:*)",
|
|
120
|
+
"Bash(tr:*)",
|
|
121
|
+
"Bash(git add:*)",
|
|
122
|
+
"Bash(git commit:*)",
|
|
123
|
+
"Bash(git status:*)",
|
|
124
|
+
"Bash(git log:*)",
|
|
125
|
+
"Bash(git diff:*)",
|
|
126
|
+
"Bash(git tag:*)"
|
|
127
|
+
]
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
</details>
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
68
136
|
## How It Works
|
|
69
137
|
|
|
70
138
|
### 1. Start with an idea
|
|
@@ -249,13 +317,15 @@ You're never locked in. The system adapts.
|
|
|
249
317
|
|
|
250
318
|
---
|
|
251
319
|
|
|
252
|
-
##
|
|
253
|
-
|
|
254
|
-
People who want to vibecode and have it actually work.
|
|
320
|
+
## Troubleshooting
|
|
255
321
|
|
|
256
|
-
|
|
322
|
+
**Plugin not found after install?**
|
|
323
|
+
- Restart Claude Code to reload plugins
|
|
324
|
+
- Check `/plugins` to see installed plugins
|
|
257
325
|
|
|
258
|
-
|
|
326
|
+
**Commands showing as unavailable?**
|
|
327
|
+
- Verify plugin directory structure: should have `.claude-plugin/plugin.json`
|
|
328
|
+
- Try `/gsd:help` - if it works, plugin is loaded correctly
|
|
259
329
|
|
|
260
330
|
---
|
|
261
331
|
|
|
@@ -265,4 +335,4 @@ MIT License. See [LICENSE](LICENSE) for details.
|
|
|
265
335
|
|
|
266
336
|
---
|
|
267
337
|
|
|
268
|
-
**Claude Code is powerful. GSD
|
|
338
|
+
**Claude Code is powerful. GSD makes it reliable.**
|
package/commands/gsd/help.md
CHANGED
package/commands/gsd/progress.md
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: gsd:progress
|
|
2
3
|
description: Check project progress, show context, and route to next action (execute or plan)
|
|
3
4
|
allowed-tools:
|
|
4
5
|
- Read
|
|
@@ -89,84 +90,164 @@ CONTEXT: [✓ if CONTEXT.md exists | - if not]
|
|
|
89
90
|
</step>
|
|
90
91
|
|
|
91
92
|
<step name="route">
|
|
92
|
-
**Determine next action
|
|
93
|
+
**Determine next action based on verified counts.**
|
|
93
94
|
|
|
94
|
-
|
|
95
|
-
Check if `{phase}-{plan}-PLAN.md` exists for that number.
|
|
95
|
+
**Step 1: Count plans and summaries in current phase**
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
List files in the current phase directory:
|
|
98
98
|
|
|
99
|
-
|
|
100
|
-
-
|
|
101
|
-
-
|
|
102
|
-
|
|
103
|
-
|
|
99
|
+
```bash
|
|
100
|
+
ls -1 .planning/phases/[current-phase-dir]/*-PLAN.md 2>/dev/null | wc -l
|
|
101
|
+
ls -1 .planning/phases/[current-phase-dir]/*-SUMMARY.md 2>/dev/null | wc -l
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
State: "This phase has {X} plans and {Y} summaries."
|
|
104
105
|
|
|
105
|
-
|
|
106
|
+
**Step 2: Route based on counts**
|
|
106
107
|
|
|
107
|
-
|
|
108
|
+
| Condition | Meaning | Action |
|
|
109
|
+
|-----------|---------|--------|
|
|
110
|
+
| summaries < plans | Unexecuted plans exist | Go to **Route A** |
|
|
111
|
+
| summaries = plans AND plans > 0 | Phase complete | Go to Step 3 |
|
|
112
|
+
| plans = 0 | Phase not yet planned | Go to **Route B** |
|
|
108
113
|
|
|
109
|
-
|
|
114
|
+
---
|
|
110
115
|
|
|
111
|
-
|
|
116
|
+
**Route A: Unexecuted plan exists**
|
|
112
117
|
|
|
113
|
-
|
|
114
|
-
|
|
118
|
+
Find the first PLAN.md without matching SUMMARY.md.
|
|
119
|
+
Read its `<objective>` section.
|
|
115
120
|
|
|
116
|
-
|
|
121
|
+
```
|
|
122
|
+
---
|
|
117
123
|
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
-
|
|
124
|
+
## ▶ Next Up
|
|
125
|
+
|
|
126
|
+
**{phase}-{plan}: [Plan Name]** — [objective summary from PLAN.md]
|
|
127
|
+
|
|
128
|
+
`/gsd:execute-plan [full-path-to-PLAN.md]`
|
|
129
|
+
|
|
130
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
**Route B: Phase needs planning**
|
|
138
|
+
|
|
139
|
+
Check if `{phase}-CONTEXT.md` exists in phase directory.
|
|
121
140
|
|
|
122
141
|
**If CONTEXT.md exists:**
|
|
123
142
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
```
|
|
127
|
-
---
|
|
143
|
+
```
|
|
144
|
+
---
|
|
128
145
|
|
|
129
|
-
|
|
146
|
+
## ▶ Next Up
|
|
130
147
|
|
|
131
|
-
|
|
148
|
+
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
|
|
149
|
+
<sub>✓ Context gathered, ready to plan</sub>
|
|
132
150
|
|
|
133
|
-
|
|
151
|
+
`/gsd:plan-phase {phase-number}`
|
|
134
152
|
|
|
135
|
-
|
|
153
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
136
154
|
|
|
137
|
-
|
|
138
|
-
|
|
155
|
+
---
|
|
156
|
+
```
|
|
139
157
|
|
|
140
158
|
**If CONTEXT.md does NOT exist:**
|
|
141
159
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
160
|
+
```
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
## ▶ Next Up
|
|
164
|
+
|
|
165
|
+
**Phase {N}: {Name}** — {Goal from ROADMAP.md}
|
|
166
|
+
|
|
167
|
+
`/gsd:plan-phase {phase}`
|
|
168
|
+
|
|
169
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
145
170
|
|
|
146
|
-
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
**Also available:**
|
|
174
|
+
- `/gsd:discuss-phase {phase}` — gather context first
|
|
175
|
+
- `/gsd:research-phase {phase}` — investigate unknowns
|
|
176
|
+
- `/gsd:list-phase-assumptions {phase}` — see Claude's assumptions
|
|
177
|
+
|
|
178
|
+
---
|
|
179
|
+
```
|
|
147
180
|
|
|
148
|
-
|
|
181
|
+
---
|
|
149
182
|
|
|
150
|
-
|
|
183
|
+
**Step 3: Check milestone status (only when phase complete)**
|
|
151
184
|
|
|
152
|
-
|
|
185
|
+
Read ROADMAP.md and identify:
|
|
186
|
+
1. Current phase number
|
|
187
|
+
2. All phase numbers in the current milestone section
|
|
153
188
|
|
|
154
|
-
|
|
189
|
+
Count total phases and identify the highest phase number.
|
|
155
190
|
|
|
156
|
-
|
|
157
|
-
- `/gsd:discuss-phase [phase]` — gather context first
|
|
158
|
-
- `/gsd:research-phase [phase]` — investigate unknowns
|
|
159
|
-
- `/gsd:list-phase-assumptions [phase]` — see Claude's assumptions
|
|
191
|
+
State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
|
|
160
192
|
|
|
161
|
-
|
|
162
|
-
```
|
|
193
|
+
**Route based on milestone status:**
|
|
163
194
|
|
|
164
|
-
|
|
195
|
+
| Condition | Meaning | Action |
|
|
196
|
+
|-----------|---------|--------|
|
|
197
|
+
| current phase < highest phase | More phases remain | Go to **Route C** |
|
|
198
|
+
| current phase = highest phase | Milestone complete | Go to **Route D** |
|
|
165
199
|
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
**Route C: Phase complete, more phases remain**
|
|
203
|
+
|
|
204
|
+
Read ROADMAP.md to get the next phase's name and goal.
|
|
205
|
+
|
|
206
|
+
```
|
|
207
|
+
---
|
|
208
|
+
|
|
209
|
+
## ✓ Phase {Z} Complete
|
|
210
|
+
|
|
211
|
+
## ▶ Next Up
|
|
212
|
+
|
|
213
|
+
**Phase {Z+1}: {Name}** — {Goal from ROADMAP.md}
|
|
214
|
+
|
|
215
|
+
`/gsd:plan-phase {Z+1}`
|
|
216
|
+
|
|
217
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
**Also available:**
|
|
222
|
+
- `/gsd:discuss-phase {Z+1}` — gather context first
|
|
223
|
+
- `/gsd:research-phase {Z+1}` — investigate unknowns
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
---
|
|
229
|
+
|
|
230
|
+
**Route D: Milestone complete**
|
|
231
|
+
|
|
232
|
+
```
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## 🎉 Milestone Complete
|
|
236
|
+
|
|
237
|
+
All {N} phases finished!
|
|
238
|
+
|
|
239
|
+
## ▶ Next Up
|
|
240
|
+
|
|
241
|
+
**Complete Milestone** — archive and prepare for next
|
|
242
|
+
|
|
243
|
+
`/gsd:complete-milestone`
|
|
244
|
+
|
|
245
|
+
<sub>`/clear` first → fresh context window</sub>
|
|
246
|
+
|
|
247
|
+
---
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
</step>
|
|
170
251
|
|
|
171
252
|
<step name="edge_cases">
|
|
172
253
|
**Handle edge cases:**
|
|
@@ -215,6 +215,25 @@ Created: .planning/phases/${PHASE}-${SLUG}/${PHASE}-CONTEXT.md
|
|
|
215
215
|
|
|
216
216
|
</step>
|
|
217
217
|
|
|
218
|
+
<step name="git_commit">
|
|
219
|
+
Commit phase context:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
git add .planning/phases/${PHASE}-${SLUG}/${PHASE}-CONTEXT.md
|
|
223
|
+
git commit -m "$(cat <<'EOF'
|
|
224
|
+
docs(${PHASE}): capture phase context
|
|
225
|
+
|
|
226
|
+
Phase ${PHASE}: ${PHASE_NAME}
|
|
227
|
+
- Vision and goals documented
|
|
228
|
+
- Essential requirements identified
|
|
229
|
+
- Scope boundaries defined
|
|
230
|
+
EOF
|
|
231
|
+
)"
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
Confirm: "Committed: docs(${PHASE}): capture phase context"
|
|
235
|
+
</step>
|
|
236
|
+
|
|
218
237
|
</process>
|
|
219
238
|
|
|
220
239
|
<success_criteria>
|
|
@@ -223,5 +242,6 @@ Created: .planning/phases/${PHASE}-${SLUG}/${PHASE}-CONTEXT.md
|
|
|
223
242
|
- Vision gathered through collaborative thinking (not interrogation)
|
|
224
243
|
- User's imagination captured: how it works, what's essential, what's out of scope
|
|
225
244
|
- CONTEXT.md created in phase directory
|
|
245
|
+
- CONTEXT.md committed to git
|
|
226
246
|
- User knows next steps (typically: research or plan the phase)
|
|
227
247
|
</success_criteria>
|
|
@@ -1285,15 +1285,14 @@ ROADMAP_FILE=".planning/ROADMAP.md"
|
|
|
1285
1285
|
</step>
|
|
1286
1286
|
|
|
1287
1287
|
<step name="git_commit_metadata">
|
|
1288
|
-
Commit
|
|
1288
|
+
Commit execution metadata (SUMMARY + STATE + ROADMAP):
|
|
1289
1289
|
|
|
1290
1290
|
**Note:** All task code has already been committed during execution (one commit per task).
|
|
1291
|
-
This final commit captures
|
|
1291
|
+
PLAN.md was already committed during plan-phase. This final commit captures execution results only.
|
|
1292
1292
|
|
|
1293
|
-
**1. Stage
|
|
1293
|
+
**1. Stage execution artifacts:**
|
|
1294
1294
|
|
|
1295
1295
|
```bash
|
|
1296
|
-
git add .planning/phases/XX-name/{phase}-{plan}-PLAN.md
|
|
1297
1296
|
git add .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
|
|
1298
1297
|
git add .planning/STATE.md
|
|
1299
1298
|
```
|
|
@@ -1308,7 +1307,7 @@ git add .planning/ROADMAP.md
|
|
|
1308
1307
|
|
|
1309
1308
|
```bash
|
|
1310
1309
|
git status
|
|
1311
|
-
# Should show only
|
|
1310
|
+
# Should show only execution artifacts (SUMMARY, STATE, ROADMAP), no code files
|
|
1312
1311
|
```
|
|
1313
1312
|
|
|
1314
1313
|
**4. Commit metadata:**
|
|
@@ -1438,33 +1437,44 @@ Use AskUserQuestion:
|
|
|
1438
1437
|
</step>
|
|
1439
1438
|
|
|
1440
1439
|
<step name="offer_next">
|
|
1441
|
-
**
|
|
1440
|
+
**MANDATORY: Verify remaining work before presenting next steps.**
|
|
1442
1441
|
|
|
1443
|
-
|
|
1444
|
-
# Get current phase directory from the plan we just executed
|
|
1445
|
-
PHASE_DIR=$(dirname "$PLAN_PATH")
|
|
1442
|
+
Do NOT skip this verification. Do NOT assume phase or milestone completion without checking.
|
|
1446
1443
|
|
|
1447
|
-
|
|
1448
|
-
PLAN_COUNT=$(ls "$PHASE_DIR"/*-PLAN.md 2>/dev/null | wc -l | tr -d ' ')
|
|
1449
|
-
SUMMARY_COUNT=$(ls "$PHASE_DIR"/*-SUMMARY.md 2>/dev/null | wc -l | tr -d ' ')
|
|
1444
|
+
**Step 1: Count plans and summaries in current phase**
|
|
1450
1445
|
|
|
1451
|
-
|
|
1446
|
+
List files in the phase directory:
|
|
1452
1447
|
|
|
1453
|
-
|
|
1454
|
-
|
|
1455
|
-
|
|
1456
|
-
echo "PHASE_COMPLETE"
|
|
1457
|
-
fi
|
|
1448
|
+
```bash
|
|
1449
|
+
ls -1 .planning/phases/[current-phase-dir]/*-PLAN.md 2>/dev/null | wc -l
|
|
1450
|
+
ls -1 .planning/phases/[current-phase-dir]/*-SUMMARY.md 2>/dev/null | wc -l
|
|
1458
1451
|
```
|
|
1459
1452
|
|
|
1460
|
-
|
|
1453
|
+
State the counts: "This phase has [X] plans and [Y] summaries."
|
|
1454
|
+
|
|
1455
|
+
**Step 2: Route based on plan completion**
|
|
1456
|
+
|
|
1457
|
+
Compare the counts from Step 1:
|
|
1458
|
+
|
|
1459
|
+
| Condition | Meaning | Action |
|
|
1460
|
+
|-----------|---------|--------|
|
|
1461
|
+
| summaries < plans | More plans remain | Go to **Route A** |
|
|
1462
|
+
| summaries = plans | Phase complete | Go to Step 3 |
|
|
1463
|
+
|
|
1464
|
+
---
|
|
1465
|
+
|
|
1466
|
+
**Route A: More plans remain in this phase**
|
|
1467
|
+
|
|
1468
|
+
Identify the next unexecuted plan:
|
|
1469
|
+
- Find the first PLAN.md file that has no matching SUMMARY.md
|
|
1470
|
+
- Read its `<objective>` section
|
|
1461
1471
|
|
|
1462
1472
|
<if mode="yolo">
|
|
1463
1473
|
```
|
|
1464
1474
|
Plan {phase}-{plan} complete.
|
|
1465
|
-
Summary: .planning/phases/
|
|
1475
|
+
Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
|
|
1466
1476
|
|
|
1467
|
-
|
|
1477
|
+
{Y} of {X} plans complete for Phase {Z}.
|
|
1468
1478
|
|
|
1469
1479
|
⚡ Auto-continuing: Execute next plan ({phase}-{next-plan})
|
|
1470
1480
|
```
|
|
@@ -1475,9 +1485,9 @@ Loop back to identify_plan step automatically.
|
|
|
1475
1485
|
<if mode="interactive" OR="custom with gates.execute_next_plan true">
|
|
1476
1486
|
```
|
|
1477
1487
|
Plan {phase}-{plan} complete.
|
|
1478
|
-
Summary: .planning/phases/
|
|
1488
|
+
Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
|
|
1479
1489
|
|
|
1480
|
-
|
|
1490
|
+
{Y} of {X} plans complete for Phase {Z}.
|
|
1481
1491
|
|
|
1482
1492
|
---
|
|
1483
1493
|
|
|
@@ -1485,7 +1495,7 @@ Summary: .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
|
|
|
1485
1495
|
|
|
1486
1496
|
**{phase}-{next-plan}: [Plan Name]** — [objective from next PLAN.md]
|
|
1487
1497
|
|
|
1488
|
-
`/gsd:execute-plan .planning/phases/
|
|
1498
|
+
`/gsd:execute-plan .planning/phases/{phase-dir}/{phase}-{next-plan}-PLAN.md`
|
|
1489
1499
|
|
|
1490
1500
|
<sub>`/clear` first → fresh context window</sub>
|
|
1491
1501
|
|
|
@@ -1500,84 +1510,99 @@ Summary: .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
|
|
|
1500
1510
|
Wait for user to clear and run next command.
|
|
1501
1511
|
</if>
|
|
1502
1512
|
|
|
1503
|
-
**
|
|
1513
|
+
**STOP here if Route A applies. Do not continue to Step 3.**
|
|
1504
1514
|
|
|
1505
|
-
|
|
1515
|
+
---
|
|
1506
1516
|
|
|
1507
|
-
|
|
1508
|
-
# Count total phases in ROADMAP.md
|
|
1509
|
-
TOTAL_PHASES=$(grep -c "^### Phase [0-9]" .planning/ROADMAP.md)
|
|
1517
|
+
**Step 3: Check milestone status (only when all plans in phase are complete)**
|
|
1510
1518
|
|
|
1511
|
-
|
|
1512
|
-
|
|
1519
|
+
Read ROADMAP.md and extract:
|
|
1520
|
+
1. Current phase number (from the plan just completed)
|
|
1521
|
+
2. All phase numbers listed in the current milestone section
|
|
1513
1522
|
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
MILESTONE_COMPLETE=true
|
|
1518
|
-
fi
|
|
1519
|
-
```
|
|
1523
|
+
To find phases in the current milestone, look for:
|
|
1524
|
+
- Phase headers: lines starting with `### Phase` or `#### Phase`
|
|
1525
|
+
- Phase list items: lines like `- [ ] **Phase X:` or `- [x] **Phase X:`
|
|
1520
1526
|
|
|
1521
|
-
|
|
1527
|
+
Count total phases in the current milestone and identify the highest phase number.
|
|
1522
1528
|
|
|
1523
|
-
|
|
1524
|
-
|
|
1529
|
+
State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
|
|
1530
|
+
|
|
1531
|
+
**Step 4: Route based on milestone status**
|
|
1532
|
+
|
|
1533
|
+
| Condition | Meaning | Action |
|
|
1534
|
+
|-----------|---------|--------|
|
|
1535
|
+
| current phase < highest phase | More phases remain | Go to **Route B** |
|
|
1536
|
+
| current phase = highest phase | Milestone complete | Go to **Route C** |
|
|
1537
|
+
|
|
1538
|
+
---
|
|
1525
1539
|
|
|
1540
|
+
**Route B: Phase complete, more phases remain in milestone**
|
|
1541
|
+
|
|
1542
|
+
Read ROADMAP.md to get the next phase's name and goal.
|
|
1543
|
+
|
|
1544
|
+
```
|
|
1526
1545
|
Plan {phase}-{plan} complete.
|
|
1527
|
-
Summary: .planning/phases/
|
|
1546
|
+
Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
|
|
1528
1547
|
|
|
1529
|
-
Phase
|
|
1548
|
+
## ✓ Phase {Z}: {Phase Name} Complete
|
|
1530
1549
|
|
|
1531
|
-
|
|
1532
|
-
All [N] phases complete!
|
|
1533
|
-
This milestone is 100% done.
|
|
1534
|
-
════════════════════════════════════════
|
|
1550
|
+
All {Y} plans finished.
|
|
1535
1551
|
|
|
1536
1552
|
---
|
|
1537
1553
|
|
|
1538
1554
|
## ▶ Next Up
|
|
1539
1555
|
|
|
1540
|
-
**
|
|
1556
|
+
**Phase {Z+1}: {Next Phase Name}** — {Goal from ROADMAP.md}
|
|
1541
1557
|
|
|
1542
|
-
`/gsd:
|
|
1558
|
+
`/gsd:plan-phase {Z+1}`
|
|
1543
1559
|
|
|
1544
1560
|
<sub>`/clear` first → fresh context window</sub>
|
|
1545
1561
|
|
|
1546
1562
|
---
|
|
1547
1563
|
|
|
1548
1564
|
**Also available:**
|
|
1549
|
-
- `/gsd:
|
|
1550
|
-
-
|
|
1565
|
+
- `/gsd:discuss-phase {Z+1}` — gather context first
|
|
1566
|
+
- `/gsd:research-phase {Z+1}` — investigate unknowns
|
|
1567
|
+
- Review phase accomplishments before continuing
|
|
1551
1568
|
|
|
1552
1569
|
---
|
|
1553
1570
|
```
|
|
1554
1571
|
|
|
1555
|
-
|
|
1572
|
+
---
|
|
1573
|
+
|
|
1574
|
+
**Route C: Milestone complete (all phases done)**
|
|
1556
1575
|
|
|
1557
1576
|
```
|
|
1577
|
+
🎉 MILESTONE COMPLETE!
|
|
1578
|
+
|
|
1558
1579
|
Plan {phase}-{plan} complete.
|
|
1559
|
-
Summary: .planning/phases/
|
|
1580
|
+
Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
|
|
1560
1581
|
|
|
1561
|
-
## ✓ Phase
|
|
1582
|
+
## ✓ Phase {Z}: {Phase Name} Complete
|
|
1562
1583
|
|
|
1563
|
-
All
|
|
1584
|
+
All {Y} plans finished.
|
|
1585
|
+
|
|
1586
|
+
════════════════════════════════════════
|
|
1587
|
+
All {N} phases complete!
|
|
1588
|
+
Milestone is 100% done.
|
|
1589
|
+
════════════════════════════════════════
|
|
1564
1590
|
|
|
1565
1591
|
---
|
|
1566
1592
|
|
|
1567
1593
|
## ▶ Next Up
|
|
1568
1594
|
|
|
1569
|
-
**
|
|
1595
|
+
**Complete Milestone** — archive and prepare for next
|
|
1570
1596
|
|
|
1571
|
-
`/gsd:
|
|
1597
|
+
`/gsd:complete-milestone`
|
|
1572
1598
|
|
|
1573
1599
|
<sub>`/clear` first → fresh context window</sub>
|
|
1574
1600
|
|
|
1575
1601
|
---
|
|
1576
1602
|
|
|
1577
1603
|
**Also available:**
|
|
1578
|
-
- `/gsd:
|
|
1579
|
-
-
|
|
1580
|
-
- Review phase accomplishments before continuing
|
|
1604
|
+
- `/gsd:add-phase <description>` — add another phase before completing
|
|
1605
|
+
- Review accomplishments before archiving
|
|
1581
1606
|
|
|
1582
1607
|
---
|
|
1583
1608
|
```
|
|
@@ -391,6 +391,30 @@ This ensures every PLAN.md gets optimal context automatically assembled via depe
|
|
|
391
391
|
For multi-plan phases: each plan has focused scope, references previous plan summaries (via frontmatter selection), last plan's success criteria includes "Phase X complete".
|
|
392
392
|
</step>
|
|
393
393
|
|
|
394
|
+
<step name="git_commit">
|
|
395
|
+
Commit phase plan(s):
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
# Stage all PLAN.md files for this phase
|
|
399
|
+
git add .planning/phases/${PHASE}-*/${PHASE}-*-PLAN.md
|
|
400
|
+
|
|
401
|
+
# Also stage DISCOVERY.md if it was created during mandatory_discovery
|
|
402
|
+
git add .planning/phases/${PHASE}-*/DISCOVERY.md 2>/dev/null
|
|
403
|
+
|
|
404
|
+
git commit -m "$(cat <<'EOF'
|
|
405
|
+
docs(${PHASE}): create phase plan
|
|
406
|
+
|
|
407
|
+
Phase ${PHASE}: ${PHASE_NAME}
|
|
408
|
+
- [N] plan(s) created
|
|
409
|
+
- [X] total tasks defined
|
|
410
|
+
- Ready for execution
|
|
411
|
+
EOF
|
|
412
|
+
)"
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
Confirm: "Committed: docs(${PHASE}): create phase plan"
|
|
416
|
+
</step>
|
|
417
|
+
|
|
394
418
|
<step name="offer_next">
|
|
395
419
|
```
|
|
396
420
|
Phase plan created: .planning/phases/XX-name/{phase}-01-PLAN.md
|
|
@@ -451,5 +475,6 @@ Phase planning complete when:
|
|
|
451
475
|
- [ ] Each task: Type, Files (if auto), Action, Verify, Done
|
|
452
476
|
- [ ] Checkpoints properly structured
|
|
453
477
|
- [ ] If RESEARCH.md exists: "don't hand-roll" items NOT being custom-built
|
|
478
|
+
- [ ] PLAN file(s) committed to git
|
|
454
479
|
- [ ] User knows next steps
|
|
455
480
|
</success_criteria>
|
|
@@ -378,6 +378,25 @@ What's next?
|
|
|
378
378
|
```
|
|
379
379
|
</step>
|
|
380
380
|
|
|
381
|
+
<step name="git_commit">
|
|
382
|
+
Commit phase research:
|
|
383
|
+
|
|
384
|
+
```bash
|
|
385
|
+
git add .planning/phases/${PHASE}-${SLUG}/${PHASE}-RESEARCH.md
|
|
386
|
+
git commit -m "$(cat <<'EOF'
|
|
387
|
+
docs(${PHASE}): complete phase research
|
|
388
|
+
|
|
389
|
+
Phase ${PHASE}: ${PHASE_NAME}
|
|
390
|
+
- Standard stack identified
|
|
391
|
+
- Architecture patterns documented
|
|
392
|
+
- Common pitfalls catalogued
|
|
393
|
+
EOF
|
|
394
|
+
)"
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
Confirm: "Committed: docs(${PHASE}): complete phase research"
|
|
398
|
+
</step>
|
|
399
|
+
|
|
381
400
|
</process>
|
|
382
401
|
|
|
383
402
|
<success_criteria>
|
|
@@ -394,6 +413,7 @@ What's next?
|
|
|
394
413
|
- [ ] "Don't hand-roll" list is clear and actionable
|
|
395
414
|
- [ ] Common pitfalls catalogued
|
|
396
415
|
- [ ] Confidence levels assigned honestly
|
|
416
|
+
- [ ] RESEARCH.md committed to git
|
|
397
417
|
- [ ] User knows next steps (plan phase)
|
|
398
418
|
</success_criteria>
|
|
399
419
|
|
|
@@ -408,14 +408,34 @@ Resume file: None
|
|
|
408
408
|
|
|
409
409
|
<step name="offer_next_phase">
|
|
410
410
|
|
|
411
|
-
**
|
|
411
|
+
**MANDATORY: Verify milestone status before presenting next steps.**
|
|
412
412
|
|
|
413
|
-
|
|
413
|
+
**Step 1: Read ROADMAP.md and identify phases in current milestone**
|
|
414
414
|
|
|
415
|
-
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
415
|
+
Read the ROADMAP.md file and extract:
|
|
416
|
+
1. Current phase number (the phase just transitioned from)
|
|
417
|
+
2. All phase numbers in the current milestone section
|
|
418
|
+
|
|
419
|
+
To find phases, look for:
|
|
420
|
+
- Phase headers: lines starting with `### Phase` or `#### Phase`
|
|
421
|
+
- Phase list items: lines like `- [ ] **Phase X:` or `- [x] **Phase X:`
|
|
422
|
+
|
|
423
|
+
Count total phases and identify the highest phase number in the milestone.
|
|
424
|
+
|
|
425
|
+
State: "Current phase is {X}. Milestone has {N} phases (highest: {Y})."
|
|
426
|
+
|
|
427
|
+
**Step 2: Route based on milestone status**
|
|
428
|
+
|
|
429
|
+
| Condition | Meaning | Action |
|
|
430
|
+
|-----------|---------|--------|
|
|
431
|
+
| current phase < highest phase | More phases remain | Go to **Route A** |
|
|
432
|
+
| current phase = highest phase | Milestone complete | Go to **Route B** |
|
|
433
|
+
|
|
434
|
+
---
|
|
435
|
+
|
|
436
|
+
**Route A: More phases remain in milestone**
|
|
437
|
+
|
|
438
|
+
Read ROADMAP.md to get the next phase's name and goal.
|
|
419
439
|
|
|
420
440
|
**If next phase exists:**
|
|
421
441
|
|
|
@@ -460,36 +480,38 @@ Exit skill and invoke SlashCommand("/gsd:plan-phase [X+1]")
|
|
|
460
480
|
|
|
461
481
|
</if>
|
|
462
482
|
|
|
463
|
-
|
|
483
|
+
---
|
|
484
|
+
|
|
485
|
+
**Route B: Milestone complete (all phases done)**
|
|
464
486
|
|
|
465
487
|
<if mode="yolo">
|
|
466
488
|
|
|
467
489
|
```
|
|
468
|
-
Phase
|
|
490
|
+
Phase {X} marked complete.
|
|
469
491
|
|
|
470
|
-
🎉 Milestone
|
|
492
|
+
🎉 Milestone {version} is 100% complete — all {N} phases finished!
|
|
471
493
|
|
|
472
494
|
⚡ Auto-continuing: Complete milestone and archive
|
|
473
495
|
```
|
|
474
496
|
|
|
475
|
-
Exit skill and invoke SlashCommand("/gsd:complete-milestone
|
|
497
|
+
Exit skill and invoke SlashCommand("/gsd:complete-milestone {version}")
|
|
476
498
|
|
|
477
499
|
</if>
|
|
478
500
|
|
|
479
501
|
<if mode="interactive" OR="custom with gates.confirm_transition true">
|
|
480
502
|
|
|
481
503
|
```
|
|
482
|
-
## ✓ Phase
|
|
504
|
+
## ✓ Phase {X}: {Phase Name} Complete
|
|
483
505
|
|
|
484
|
-
🎉 Milestone
|
|
506
|
+
🎉 Milestone {version} is 100% complete — all {N} phases finished!
|
|
485
507
|
|
|
486
508
|
---
|
|
487
509
|
|
|
488
510
|
## ▶ Next Up
|
|
489
511
|
|
|
490
|
-
**Complete Milestone
|
|
512
|
+
**Complete Milestone {version}** — archive and prepare for next
|
|
491
513
|
|
|
492
|
-
`/gsd:complete-milestone
|
|
514
|
+
`/gsd:complete-milestone {version}`
|
|
493
515
|
|
|
494
516
|
<sub>`/clear` first → fresh context window</sub>
|
|
495
517
|
|
package/package.json
CHANGED