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 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 then let Claude Code get to work.
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
- THIS is how you vibecode and actually get shit done.
28
+ ---
26
29
 
27
- _Warning: Not for people who enjoy inconsistent and sloppy results._
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
- ## Installation
34
+ ### Marketplace Installation
35
+
36
+ Install from the Claude Code marketplace:
32
37
 
33
38
  ```bash
34
- npx get-shit-done-cc
39
+ /plugin marketplace add glittercowboy/get-shit-done
40
+ /plugin install get-shit-done@get-shit-done
35
41
  ```
36
42
 
37
- That's it. Works on Mac, Windows, and Linux.
43
+ ### Manual Installation
38
44
 
39
- ### Non-interactive Install (Docker, CI, Scripts)
45
+ Clone the repository and tell Claude Code where to find it:
40
46
 
41
47
  ```bash
42
- npx get-shit-done-cc --global # Install to ~/.claude/
43
- npx get-shit-done-cc --local # Install to ./.claude/
48
+ git clone https://github.com/glittercowboy/get-shit-done.git
49
+ claude --plugin-dir ./get-shit-done
44
50
  ```
45
51
 
46
- Use `--global` (`-g`) or `--local` (`-l`) to skip the interactive prompt.
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
- I wanted to spend my time having ideas and seeing them through to implementation — not babysitting Claude. Now I can say "go," put it in YOLO mode, and go to the beach. The system gives Claude everything it needs to do the work _and_ verify it. I trust the workflow. It just does a good job.
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
- ## Who This Is For
253
-
254
- People who want to vibecode and have it actually work.
320
+ ## Troubleshooting
255
321
 
256
- Anyone who wants to clearly describe what they want, trust the system to build it, and go live their life.
322
+ **Plugin not found after install?**
323
+ - Restart Claude Code to reload plugins
324
+ - Check `/plugins` to see installed plugins
257
325
 
258
- Not for people who enjoy inconsistent and sloppy results.
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 gives it the context and the systematic consistency to prove it.**
338
+ **Claude Code is powerful. GSD makes it reliable.**
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:add-phase
2
3
  description: Add phase to end of current milestone in roadmap
3
4
  argument-hint: <description>
4
5
  allowed-tools:
@@ -1,5 +1,6 @@
1
1
  ---
2
2
  type: prompt
3
+ name: gsd:complete-milestone
3
4
  description: Archive completed milestone and prepare for next version
4
5
  argument-hint: <version>
5
6
  allowed-tools:
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:consider-issues
2
3
  description: Review deferred issues with codebase context, close resolved ones, identify urgent ones
3
4
  allowed-tools:
4
5
  - Read
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:create-roadmap
2
3
  description: Create roadmap with phases for the project
3
4
  allowed-tools:
4
5
  - Read
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:discuss-milestone
2
3
  description: Gather context for next milestone through adaptive questioning
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:discuss-phase
2
3
  description: Gather phase context through adaptive questioning before planning
3
4
  argument-hint: "[phase]"
4
5
  ---
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:execute-plan
2
3
  description: Execute a PLAN.md file
3
4
  argument-hint: "[path-to-PLAN.md]"
4
5
  allowed-tools:
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:help
2
3
  description: Show available GSD commands and usage guide
3
4
  ---
4
5
 
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:insert-phase
2
3
  description: Insert urgent work as decimal phase (e.g., 72.1) between existing phases
3
4
  argument-hint: <after> <description>
4
5
  allowed-tools:
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:list-phase-assumptions
2
3
  description: Surface Claude's assumptions about a phase approach before planning
3
4
  argument-hint: "[phase]"
4
5
  allowed-tools:
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:map-codebase
2
3
  description: Analyze codebase with parallel Explore agents to produce .planning/codebase/ documents
3
4
  argument-hint: "[optional: specific area to map, e.g., 'api' or 'auth']"
4
5
  allowed-tools:
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:new-milestone
2
3
  description: Create a new milestone with phases for an existing project
3
4
  argument-hint: "[milestone name, e.g., 'v2.0 Features']"
4
5
  ---
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:new-project
2
3
  description: Initialize a new project with deep context gathering and PROJECT.md
3
4
  allowed-tools:
4
5
  - Read
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:pause-work
2
3
  description: Create context handoff when pausing work mid-phase
3
4
  allowed-tools:
4
5
  - Read
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:plan-phase
2
3
  description: Create detailed execution plan for a phase (PLAN.md)
3
4
  argument-hint: "[phase]"
4
5
  allowed-tools:
@@ -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
- Find the next plan number that needs work.
95
- Check if `{phase}-{plan}-PLAN.md` exists for that number.
95
+ **Step 1: Count plans and summaries in current phase**
96
96
 
97
- **If PLAN.md exists (unexecuted):**
97
+ List files in the current phase directory:
98
98
 
99
- - Read its `<objective>` section
100
- - Show: "Ready to execute: [path] - [objective summary]"
101
- - Display (see ~/.claude/get-shit-done/references/continuation-format.md):
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
- ## Next Up
106
+ **Step 2: Route based on counts**
106
107
 
107
- **{phase}-{plan}: [Plan Name]** [objective summary from PLAN.md]
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
- `/gsd:execute-plan [full-path-to-PLAN.md]`
114
+ ---
110
115
 
111
- <sub>`/clear` first fresh context window</sub>
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
- **If PLAN.md does NOT exist:**
121
+ ```
122
+ ---
117
123
 
118
- - Check if `{phase}-CONTEXT.md` exists in phase directory
119
- - Show: "Next plan not yet created: [expected path]"
120
- - Show phase objective from ROADMAP
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
- - Display: "✓ Context gathered, ready to plan"
125
- - Display:
126
- ```
127
- ---
143
+ ```
144
+ ---
128
145
 
129
- ## ▶ Next Up
146
+ ## ▶ Next Up
130
147
 
131
- **Phase [N]: [Name]** — [Goal from ROADMAP.md]
148
+ **Phase {N}: {Name}** — {Goal from ROADMAP.md}
149
+ <sub>✓ Context gathered, ready to plan</sub>
132
150
 
133
- `/gsd:plan-phase [phase-number]`
151
+ `/gsd:plan-phase {phase-number}`
134
152
 
135
- <sub>`/clear` first → fresh context window</sub>
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
- - Display:
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
- ## ▶ Next Up
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
- **Phase [N]: [Name]** — [Goal from ROADMAP.md]
181
+ ---
149
182
 
150
- `/gsd:plan-phase [phase]`
183
+ **Step 3: Check milestone status (only when phase complete)**
151
184
 
152
- <sub>`/clear` first fresh context window</sub>
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
- **Also available:**
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
- **If all plans complete for current phase:**
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
- - Check if more phases exist in ROADMAP
167
- - If yes: Show `/gsd:plan-phase [next-phase]` command to paste
168
- - If no (milestone 100% complete): Show `/gsd:complete-milestone` command to paste
169
- </step>
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:**
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:research-phase
2
3
  description: Research how to implement a phase before planning
3
4
  argument-hint: "[phase]"
4
5
  allowed-tools:
@@ -1,4 +1,5 @@
1
1
  ---
2
+ name: gsd:resume-work
2
3
  description: Resume work from previous session with full context restoration
3
4
  allowed-tools:
4
5
  - Read
@@ -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 plan metadata (SUMMARY + STATE + ROADMAP):
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 plan completion metadata only.
1291
+ PLAN.md was already committed during plan-phase. This final commit captures execution results only.
1292
1292
 
1293
- **1. Stage planning artifacts:**
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 planning artifacts, no code files
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
- **First, determine if more plans exist in this phase:**
1440
+ **MANDATORY: Verify remaining work before presenting next steps.**
1442
1441
 
1443
- ```bash
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
- # Count PLAN files vs SUMMARY files
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
- echo "Plans: $PLAN_COUNT, Summaries: $SUMMARY_COUNT"
1446
+ List files in the phase directory:
1452
1447
 
1453
- if [[ $SUMMARY_COUNT -lt $PLAN_COUNT ]]; then
1454
- echo "MORE_PLANS_EXIST"
1455
- else
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
- **If MORE_PLANS_EXIST (more plans in this phase):**
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/XX-name/{phase}-{plan}-SUMMARY.md
1475
+ Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
1466
1476
 
1467
- [X] of [Y] plans complete for Phase Z.
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/XX-name/{phase}-{plan}-SUMMARY.md
1488
+ Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
1479
1489
 
1480
- [X] of [Y] plans complete for Phase Z.
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/XX-name/{phase}-{next-plan}-PLAN.md`
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
- **If phase complete (last plan done):**
1513
+ **STOP here if Route A applies. Do not continue to Step 3.**
1504
1514
 
1505
- First, check if this is also the last phase in the milestone (milestone complete):
1515
+ ---
1506
1516
 
1507
- ```bash
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
- # Get current phase number from the just-completed plan
1512
- CURRENT_PHASE=$(echo "{phase}" | grep -oE '^[0-9]+')
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
- # Check if current phase == total phases
1515
- if [[ "$CURRENT_PHASE" -eq "$TOTAL_PHASES" ]]; then
1516
- # Milestone complete
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
- **If milestone complete (final phase of roadmap done):**
1527
+ Count total phases in the current milestone and identify the highest phase number.
1522
1528
 
1523
- ```
1524
- 🎉 MILESTONE COMPLETE!
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/XX-name/{phase}-{plan}-SUMMARY.md
1546
+ Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
1528
1547
 
1529
- Phase [Z]: [Name] COMPLETE - all [Y] plans finished.
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
- **Complete Milestone** — archive and prepare for next
1556
+ **Phase {Z+1}: {Next Phase Name}** — {Goal from ROADMAP.md}
1541
1557
 
1542
- `/gsd:complete-milestone`
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:add-phase <description>`add another phase
1550
- - Review accomplishments before archiving
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
- **If phase complete but more phases remain:**
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/XX-name/{phase}-{plan}-SUMMARY.md
1580
+ Summary: .planning/phases/{phase-dir}/{phase}-{plan}-SUMMARY.md
1560
1581
 
1561
- ## ✓ Phase [Z] Complete
1582
+ ## ✓ Phase {Z}: {Phase Name} Complete
1562
1583
 
1563
- All [Y] plans finished.
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
- **Phase [X+1]: [Name]** — [Goal from ROADMAP.md]
1595
+ **Complete Milestone** — archive and prepare for next
1570
1596
 
1571
- `/gsd:plan-phase [X+1]`
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:discuss-phase [X+1]`gather context first
1579
- - `/gsd:research-phase [X+1]` investigate unknowns
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
- **Check if there's a next phase in the current milestone:**
411
+ **MANDATORY: Verify milestone status before presenting next steps.**
412
412
 
413
- Re-read the ROADMAP file:
413
+ **Step 1: Read ROADMAP.md and identify phases in current milestone**
414
414
 
415
- - Parse current milestone version (e.g., "v1.0" from "## Current Milestone: v1.0 Foundation")
416
- - Look for phases after the current one in the current milestone section
417
- - If next phase exists: offer to plan it
418
- - If no next phase (milestone 100% complete): offer to complete milestone with parsed version
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
- **If no next phase (milestone 100% complete):**
483
+ ---
484
+
485
+ **Route B: Milestone complete (all phases done)**
464
486
 
465
487
  <if mode="yolo">
466
488
 
467
489
  ```
468
- Phase [X] marked complete.
490
+ Phase {X} marked complete.
469
491
 
470
- 🎉 Milestone [version] is 100% complete — all phases finished!
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 [version]")
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 [X] Complete
504
+ ## ✓ Phase {X}: {Phase Name} Complete
483
505
 
484
- 🎉 Milestone [version] is 100% complete — all phases finished!
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 [version]** — archive and prepare for next
512
+ **Complete Milestone {version}** — archive and prepare for next
491
513
 
492
- `/gsd:complete-milestone [version]`
514
+ `/gsd:complete-milestone {version}`
493
515
 
494
516
  <sub>`/clear` first → fresh context window</sub>
495
517
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "get-shit-done-cc",
3
- "version": "1.3.25",
3
+ "version": "1.3.27",
4
4
  "description": "A meta-prompting, context engineering and spec-driven development system for Claude Code by TÂCHES.",
5
5
  "bin": {
6
6
  "get-shit-done-cc": "bin/install.js"