@undeemed/get-shit-done-codex 1.6.12 → 1.20.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.
Files changed (104) hide show
  1. package/README.md +22 -3
  2. package/agents/gsd-codebase-mapper.md +761 -0
  3. package/agents/gsd-debugger.md +1198 -0
  4. package/agents/gsd-executor.md +419 -0
  5. package/agents/gsd-integration-checker.md +423 -0
  6. package/agents/gsd-phase-researcher.md +469 -0
  7. package/agents/gsd-plan-checker.md +622 -0
  8. package/agents/gsd-planner.md +1159 -0
  9. package/agents/gsd-project-researcher.md +618 -0
  10. package/agents/gsd-research-synthesizer.md +236 -0
  11. package/agents/gsd-roadmapper.md +639 -0
  12. package/agents/gsd-verifier.md +541 -0
  13. package/bin/install.js +106 -100
  14. package/commands/gsd/add-phase.md +17 -185
  15. package/commands/gsd/add-todo.md +23 -163
  16. package/commands/gsd/audit-milestone.md +3 -219
  17. package/commands/gsd/check-todos.md +20 -196
  18. package/commands/gsd/cleanup.md +18 -0
  19. package/commands/gsd/debug.md +13 -0
  20. package/commands/gsd/discuss-phase.md +10 -3
  21. package/commands/gsd/execute-phase.md +3 -265
  22. package/commands/gsd/health.md +22 -0
  23. package/commands/gsd/help.md +8 -369
  24. package/commands/gsd/insert-phase.md +9 -203
  25. package/commands/gsd/join-discord.md +18 -0
  26. package/commands/gsd/new-milestone.md +12 -678
  27. package/commands/gsd/new-project.md +8 -862
  28. package/commands/gsd/new-project.md.bak +1041 -0
  29. package/commands/gsd/pause-work.md +17 -105
  30. package/commands/gsd/plan-milestone-gaps.md +3 -247
  31. package/commands/gsd/plan-phase.md +13 -444
  32. package/commands/gsd/progress.md +5 -337
  33. package/commands/gsd/quick.md +40 -0
  34. package/commands/gsd/reapply-patches.md +110 -0
  35. package/commands/gsd/remove-phase.md +9 -315
  36. package/commands/gsd/research-phase.md +26 -19
  37. package/commands/gsd/set-profile.md +34 -0
  38. package/commands/gsd/settings.md +36 -0
  39. package/commands/gsd/update.md +25 -160
  40. package/commands/gsd/verify-work.md +3 -183
  41. package/get-shit-done/bin/gsd-tools.cjs +5243 -0
  42. package/get-shit-done/bin/gsd-tools.test.cjs +2273 -0
  43. package/get-shit-done/references/checkpoints.md +254 -267
  44. package/get-shit-done/references/decimal-phase-calculation.md +65 -0
  45. package/get-shit-done/references/git-integration.md +3 -9
  46. package/get-shit-done/references/git-planning-commit.md +38 -0
  47. package/get-shit-done/references/model-profile-resolution.md +34 -0
  48. package/get-shit-done/references/model-profiles.md +92 -0
  49. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  50. package/get-shit-done/references/planning-config.md +196 -0
  51. package/get-shit-done/references/questioning.md +4 -0
  52. package/get-shit-done/references/verification-patterns.md +17 -0
  53. package/get-shit-done/templates/UAT.md +1 -1
  54. package/get-shit-done/templates/codebase/structure.md +3 -3
  55. package/get-shit-done/templates/config.json +10 -0
  56. package/get-shit-done/templates/context.md +2 -10
  57. package/get-shit-done/templates/phase-prompt.md +18 -27
  58. package/get-shit-done/templates/planner-subagent-prompt.md +4 -4
  59. package/get-shit-done/templates/research-project/ARCHITECTURE.md +1 -1
  60. package/get-shit-done/templates/research.md +25 -2
  61. package/get-shit-done/templates/state.md +0 -30
  62. package/get-shit-done/templates/summary-complex.md +59 -0
  63. package/get-shit-done/templates/summary-minimal.md +41 -0
  64. package/get-shit-done/templates/summary-standard.md +48 -0
  65. package/get-shit-done/templates/summary.md +5 -28
  66. package/get-shit-done/templates/user-setup.md +1 -13
  67. package/get-shit-done/templates/verification-report.md +1 -1
  68. package/get-shit-done/workflows/add-phase.md +111 -0
  69. package/get-shit-done/workflows/add-todo.md +157 -0
  70. package/get-shit-done/workflows/audit-milestone.md +242 -0
  71. package/get-shit-done/workflows/check-todos.md +176 -0
  72. package/get-shit-done/workflows/cleanup.md +152 -0
  73. package/get-shit-done/workflows/complete-milestone.md +225 -301
  74. package/get-shit-done/workflows/diagnose-issues.md +3 -17
  75. package/get-shit-done/workflows/discovery-phase.md +6 -10
  76. package/get-shit-done/workflows/discuss-phase.md +99 -36
  77. package/get-shit-done/workflows/execute-phase.md +205 -349
  78. package/get-shit-done/workflows/execute-plan.md +179 -1569
  79. package/get-shit-done/workflows/health.md +156 -0
  80. package/get-shit-done/workflows/help.md +486 -0
  81. package/get-shit-done/workflows/insert-phase.md +129 -0
  82. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  83. package/get-shit-done/workflows/map-codebase.md +55 -17
  84. package/get-shit-done/workflows/new-milestone.md +373 -0
  85. package/get-shit-done/workflows/new-project.md +1113 -0
  86. package/get-shit-done/workflows/pause-work.md +122 -0
  87. package/get-shit-done/workflows/plan-milestone-gaps.md +256 -0
  88. package/get-shit-done/workflows/plan-phase.md +448 -0
  89. package/get-shit-done/workflows/progress.md +393 -0
  90. package/get-shit-done/workflows/quick.md +444 -0
  91. package/get-shit-done/workflows/remove-phase.md +154 -0
  92. package/get-shit-done/workflows/research-phase.md +74 -0
  93. package/get-shit-done/workflows/resume-project.md +18 -23
  94. package/get-shit-done/workflows/set-profile.md +80 -0
  95. package/get-shit-done/workflows/settings.md +200 -0
  96. package/get-shit-done/workflows/transition.md +78 -103
  97. package/get-shit-done/workflows/update.md +214 -0
  98. package/get-shit-done/workflows/verify-phase.md +107 -494
  99. package/get-shit-done/workflows/verify-work.md +18 -11
  100. package/hooks/dist/gsd-check-update.js +66 -0
  101. package/hooks/dist/gsd-statusline.js +91 -0
  102. package/package.json +19 -3
  103. package/scripts/build-hooks.js +42 -0
  104. package/commands/gsd/whats-new.md +0 -124
@@ -8,7 +8,6 @@ allowed-tools:
8
8
  - Bash
9
9
  - Glob
10
10
  ---
11
-
12
11
  <objective>
13
12
  Remove an unstarted future phase from the roadmap and renumber all subsequent phases to maintain a clean, linear sequence.
14
13
 
@@ -17,322 +16,17 @@ Output: Phase deleted, all subsequent phases renumbered, git commit as historica
17
16
  </objective>
18
17
 
19
18
  <execution_context>
20
- @.planning/ROADMAP.md
21
- @.planning/STATE.md
19
+ @~/.claude/get-shit-done/workflows/remove-phase.md
22
20
  </execution_context>
23
21
 
24
- <process>
25
-
26
- <step name="parse_arguments">
27
- Parse the command arguments:
28
- - Argument is the phase number to remove (integer or decimal)
29
- - Example: `/gsd:remove-phase 17` → phase = 17
30
- - Example: `/gsd:remove-phase 16.1` → phase = 16.1
31
-
32
- If no argument provided:
33
-
34
- ```
35
- ERROR: Phase number required
36
- Usage: /gsd:remove-phase <phase-number>
37
- Example: /gsd:remove-phase 17
38
- ```
39
-
40
- Exit.
41
- </step>
42
-
43
- <step name="load_state">
44
- Load project state:
45
-
46
- ```bash
47
- cat .planning/STATE.md 2>/dev/null
48
- cat .planning/ROADMAP.md 2>/dev/null
49
- ```
50
-
51
- Parse current phase number from STATE.md "Current Position" section.
52
- </step>
53
-
54
- <step name="validate_phase_exists">
55
- Verify the target phase exists in ROADMAP.md:
56
-
57
- 1. Search for `### Phase {target}:` heading
58
- 2. If not found:
59
-
60
- ```
61
- ERROR: Phase {target} not found in roadmap
62
- Available phases: [list phase numbers]
63
- ```
64
-
65
- Exit.
66
- </step>
67
-
68
- <step name="validate_future_phase">
69
- Verify the phase is a future phase (not started):
70
-
71
- 1. Compare target phase to current phase from STATE.md
72
- 2. Target must be > current phase number
73
-
74
- If target <= current phase:
75
-
76
- ```
77
- ERROR: Cannot remove Phase {target}
78
-
79
- Only future phases can be removed:
80
- - Current phase: {current}
81
- - Phase {target} is current or completed
82
-
83
- To abandon current work, use /gsd:pause-work instead.
84
- ```
85
-
86
- Exit.
87
-
88
- 3. Check for SUMMARY.md files in phase directory:
89
-
90
- ```bash
91
- ls .planning/phases/{target}-*/*-SUMMARY.md 2>/dev/null
92
- ```
93
-
94
- If any SUMMARY.md files exist:
95
-
96
- ```
97
- ERROR: Phase {target} has completed work
98
-
99
- Found executed plans:
100
- - {list of SUMMARY.md files}
101
-
102
- Cannot remove phases with completed work.
103
- ```
104
-
105
- Exit.
106
- </step>
107
-
108
- <step name="gather_phase_info">
109
- Collect information about the phase being removed:
110
-
111
- 1. Extract phase name from ROADMAP.md heading: `### Phase {target}: {Name}`
112
- 2. Find phase directory: `.planning/phases/{target}-{slug}/`
113
- 3. Find all subsequent phases (integer and decimal) that need renumbering
114
-
115
- **Subsequent phase detection:**
116
-
117
- For integer phase removal (e.g., 17):
118
- - Find all phases > 17 (integers: 18, 19, 20...)
119
- - Find all decimal phases >= 17.0 and < 18.0 (17.1, 17.2...) → these become 16.x
120
- - Find all decimal phases for subsequent integers (18.1, 19.1...) → renumber with their parent
121
-
122
- For decimal phase removal (e.g., 17.1):
123
- - Find all decimal phases > 17.1 and < 18 (17.2, 17.3...) → renumber down
124
- - Integer phases unchanged
125
-
126
- List all phases that will be renumbered.
127
- </step>
128
-
129
- <step name="confirm_removal">
130
- Present removal summary and confirm:
131
-
132
- ```
133
- Removing Phase {target}: {Name}
134
-
135
- This will:
136
- - Delete: .planning/phases/{target}-{slug}/
137
- - Renumber {N} subsequent phases:
138
- - Phase 18 → Phase 17
139
- - Phase 18.1 → Phase 17.1
140
- - Phase 19 → Phase 18
141
- [etc.]
142
-
143
- Proceed? (y/n)
144
- ```
145
-
146
- Wait for confirmation.
147
- </step>
148
-
149
- <step name="delete_phase_directory">
150
- Delete the target phase directory if it exists:
151
-
152
- ```bash
153
- if [ -d ".planning/phases/{target}-{slug}" ]; then
154
- rm -rf ".planning/phases/{target}-{slug}"
155
- echo "Deleted: .planning/phases/{target}-{slug}/"
156
- fi
157
- ```
158
-
159
- If directory doesn't exist, note: "No directory to delete (phase not yet created)"
160
- </step>
161
-
162
- <step name="renumber_directories">
163
- Rename all subsequent phase directories:
164
-
165
- For each phase directory that needs renumbering (in reverse order to avoid conflicts):
166
-
167
- ```bash
168
- # Example: renaming 18-dashboard to 17-dashboard
169
- mv ".planning/phases/18-dashboard" ".planning/phases/17-dashboard"
170
- ```
171
-
172
- Process in descending order (20→19, then 19→18, then 18→17) to avoid overwriting.
22
+ <context>
23
+ Phase: $ARGUMENTS
173
24
 
174
- Also rename decimal phase directories:
175
- - `17.1-fix-bug` → `16.1-fix-bug` (if removing integer 17)
176
- - `17.2-hotfix` → `17.1-hotfix` (if removing decimal 17.1)
177
- </step>
178
-
179
- <step name="rename_files_in_directories">
180
- Rename plan files inside renumbered directories:
181
-
182
- For each renumbered directory, rename files that contain the phase number:
183
-
184
- ```bash
185
- # Inside 17-dashboard (was 18-dashboard):
186
- mv "18-01-PLAN.md" "17-01-PLAN.md"
187
- mv "18-02-PLAN.md" "17-02-PLAN.md"
188
- mv "18-01-SUMMARY.md" "17-01-SUMMARY.md" # if exists
189
- # etc.
190
- ```
191
-
192
- Also handle CONTEXT.md and DISCOVERY.md (these don't have phase prefixes, so no rename needed).
193
- </step>
194
-
195
- <step name="update_roadmap">
196
- Update ROADMAP.md:
197
-
198
- 1. **Remove the phase section entirely:**
199
- - Delete from `### Phase {target}:` to the next phase heading (or section end)
200
-
201
- 2. **Remove from phase list:**
202
- - Delete line `- [ ] **Phase {target}: {Name}**` or similar
203
-
204
- 3. **Remove from Progress table:**
205
- - Delete the row for Phase {target}
206
-
207
- 4. **Renumber all subsequent phases:**
208
- - `### Phase 18:` → `### Phase 17:`
209
- - `- [ ] **Phase 18:` → `- [ ] **Phase 17:`
210
- - Table rows: `| 18. Dashboard |` → `| 17. Dashboard |`
211
- - Plan references: `18-01:` → `17-01:`
212
-
213
- 5. **Update dependency references:**
214
- - `**Depends on:** Phase 18` → `**Depends on:** Phase 17`
215
- - For the phase that depended on the removed phase:
216
- - `**Depends on:** Phase 17` (removed) → `**Depends on:** Phase 16`
217
-
218
- 6. **Renumber decimal phases:**
219
- - `### Phase 17.1:` → `### Phase 16.1:` (if integer 17 removed)
220
- - Update all references consistently
221
-
222
- Write updated ROADMAP.md.
223
- </step>
224
-
225
- <step name="update_state">
226
- Update STATE.md:
227
-
228
- 1. **Update total phase count:**
229
- - `Phase: 16 of 20` → `Phase: 16 of 19`
230
-
231
- 2. **Recalculate progress percentage:**
232
- - New percentage based on completed plans / new total plans
233
-
234
- Do NOT add a "Roadmap Evolution" note - the git commit is the record.
235
-
236
- Write updated STATE.md.
237
- </step>
238
-
239
- <step name="update_file_contents">
240
- Search for and update phase references inside plan files:
241
-
242
- ```bash
243
- # Find files that reference the old phase numbers
244
- grep -r "Phase 18" .planning/phases/17-*/ 2>/dev/null
245
- grep -r "Phase 19" .planning/phases/18-*/ 2>/dev/null
246
- # etc.
247
- ```
248
-
249
- Update any internal references to reflect new numbering.
250
- </step>
251
-
252
- <step name="commit">
253
- Stage and commit the removal:
254
-
255
- ```bash
256
- git add .planning/
257
- git commit -m "chore: remove phase {target} ({original-phase-name})"
258
- ```
259
-
260
- The commit message preserves the historical record of what was removed.
261
- </step>
262
-
263
- <step name="completion">
264
- Present completion summary:
265
-
266
- ```
267
- Phase {target} ({original-name}) removed.
268
-
269
- Changes:
270
- - Deleted: .planning/phases/{target}-{slug}/
271
- - Renumbered: Phases {first-renumbered}-{last-old} → {first-renumbered-1}-{last-new}
272
- - Updated: ROADMAP.md, STATE.md
273
- - Committed: chore: remove phase {target} ({original-name})
274
-
275
- Current roadmap: {total-remaining} phases
276
- Current position: Phase {current} of {new-total}
277
-
278
- ---
279
-
280
- ## What's Next
281
-
282
- Would you like to:
283
- - `/gsd:progress` — see updated roadmap status
284
- - Continue with current phase
285
- - Review roadmap
286
-
287
- ---
288
- ```
289
- </step>
25
+ @.planning/ROADMAP.md
26
+ @.planning/STATE.md
27
+ </context>
290
28
 
29
+ <process>
30
+ Execute the remove-phase workflow from @~/.claude/get-shit-done/workflows/remove-phase.md end-to-end.
31
+ Preserve all validation gates (future phase check, work check), renumbering logic, and commit.
291
32
  </process>
292
-
293
- <anti_patterns>
294
-
295
- - Don't remove completed phases (have SUMMARY.md files)
296
- - Don't remove current or past phases
297
- - Don't leave gaps in numbering - always renumber
298
- - Don't add "removed phase" notes to STATE.md - git commit is the record
299
- - Don't ask about each decimal phase - just renumber them
300
- - Don't modify completed phase directories
301
- </anti_patterns>
302
-
303
- <edge_cases>
304
-
305
- **Removing a decimal phase (e.g., 17.1):**
306
- - Only affects other decimals in same series (17.2 → 17.1, 17.3 → 17.2)
307
- - Integer phases unchanged
308
- - Simpler operation
309
-
310
- **No subsequent phases to renumber:**
311
- - Removing the last phase (e.g., Phase 20 when that's the end)
312
- - Just delete and update ROADMAP.md, no renumbering needed
313
-
314
- **Phase directory doesn't exist:**
315
- - Phase may be in ROADMAP.md but directory not created yet
316
- - Skip directory deletion, proceed with ROADMAP.md updates
317
-
318
- **Decimal phases under removed integer:**
319
- - Removing Phase 17 when 17.1, 17.2 exist
320
- - 17.1 → 16.1, 17.2 → 16.2
321
- - They maintain their position in execution order (after current last integer)
322
-
323
- </edge_cases>
324
-
325
- <success_criteria>
326
- Phase removal is complete when:
327
-
328
- - [ ] Target phase validated as future/unstarted
329
- - [ ] Phase directory deleted (if existed)
330
- - [ ] All subsequent phase directories renumbered
331
- - [ ] Files inside directories renamed ({old}-01-PLAN.md → {new}-01-PLAN.md)
332
- - [ ] ROADMAP.md updated (section removed, all references renumbered)
333
- - [ ] STATE.md updated (phase count, progress percentage)
334
- - [ ] Dependency references updated in subsequent phases
335
- - [ ] Changes committed with descriptive message
336
- - [ ] No gaps in phase numbering
337
- - [ ] User informed of changes
338
- </success_criteria>
@@ -31,22 +31,26 @@ Normalize phase input in step 1 before any directory lookups.
31
31
 
32
32
  <process>
33
33
 
34
- ## 1. Normalize and Validate Phase
34
+ ## 0. Initialize Context
35
35
 
36
36
  ```bash
37
- # Normalize phase number (8 08, but preserve decimals like 2.1 → 02.1)
38
- if [[ "$ARGUMENTS" =~ ^[0-9]+$ ]]; then
39
- PHASE=$(printf "%02d" "$ARGUMENTS")
40
- elif [[ "$ARGUMENTS" =~ ^([0-9]+)\.([0-9]+)$ ]]; then
41
- PHASE=$(printf "%02d.%s" "${BASH_REMATCH[1]}" "${BASH_REMATCH[2]}")
42
- else
43
- PHASE="$ARGUMENTS"
44
- fi
45
-
46
- grep -A5 "Phase ${PHASE}:" .planning/ROADMAP.md 2>/dev/null
37
+ INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init phase-op "$ARGUMENTS")
47
38
  ```
48
39
 
49
- **If not found:** Error and exit. **If found:** Extract phase number, name, description.
40
+ Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `phase_found`, `commit_docs`, `has_research`.
41
+
42
+ Resolve researcher model:
43
+ ```bash
44
+ RESEARCHER_MODEL=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs resolve-model gsd-phase-researcher --raw)
45
+ ```
46
+
47
+ ## 1. Validate Phase
48
+
49
+ ```bash
50
+ PHASE_INFO=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs roadmap get-phase "${phase_number}")
51
+ ```
52
+
53
+ **If `found` is false:** Error and exit. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
50
54
 
51
55
  ## 2. Check Existing Research
52
56
 
@@ -61,15 +65,16 @@ ls .planning/phases/${PHASE}-*/RESEARCH.md 2>/dev/null
61
65
  ## 3. Gather Phase Context
62
66
 
63
67
  ```bash
64
- grep -A20 "Phase ${PHASE}:" .planning/ROADMAP.md
68
+ # Phase section already loaded in PHASE_INFO
69
+ echo "$PHASE_INFO" | jq -r '.section'
65
70
  cat .planning/REQUIREMENTS.md 2>/dev/null
66
- cat .planning/phases/${PHASE}-*/${PHASE}-CONTEXT.md 2>/dev/null
71
+ cat .planning/phases/${PHASE}-*/*-CONTEXT.md 2>/dev/null
67
72
  grep -A30 "### Decisions Made" .planning/STATE.md 2>/dev/null
68
73
  ```
69
74
 
70
75
  Present summary with phase description, requirements, prior decisions.
71
76
 
72
- ## 4. Spawn gsd-researcher Agent
77
+ ## 4. Spawn gsd-phase-researcher Agent
73
78
 
74
79
  Research modes: ecosystem (default), feasibility, implementation, comparison.
75
80
 
@@ -130,8 +135,9 @@ Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
130
135
 
131
136
  ```
132
137
  Task(
133
- prompt=filled_prompt,
134
- subagent_type="gsd-phase-researcher",
138
+ prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + filled_prompt,
139
+ subagent_type="general-purpose",
140
+ model="{researcher_model}",
135
141
  description="Research Phase {phase}"
136
142
  )
137
143
  ```
@@ -163,8 +169,9 @@ Research file: @.planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
163
169
 
164
170
  ```
165
171
  Task(
166
- prompt=continuation_prompt,
167
- subagent_type="gsd-phase-researcher",
172
+ prompt="First, read ~/.claude/agents/gsd-phase-researcher.md for your role and instructions.\n\n" + continuation_prompt,
173
+ subagent_type="general-purpose",
174
+ model="{researcher_model}",
168
175
  description="Continue research Phase {phase}"
169
176
  )
170
177
  ```
@@ -0,0 +1,34 @@
1
+ ---
2
+ name: gsd:set-profile
3
+ description: Switch model profile for GSD agents (quality/balanced/budget)
4
+ argument-hint: <profile>
5
+ allowed-tools:
6
+ - Read
7
+ - Write
8
+ - Bash
9
+ ---
10
+
11
+ <objective>
12
+ Switch the model profile used by GSD agents. Controls which Claude model each agent uses, balancing quality vs token spend.
13
+
14
+ Routes to the set-profile workflow which handles:
15
+ - Argument validation (quality/balanced/budget)
16
+ - Config file creation if missing
17
+ - Profile update in config.json
18
+ - Confirmation with model table display
19
+ </objective>
20
+
21
+ <execution_context>
22
+ @~/.claude/get-shit-done/workflows/set-profile.md
23
+ </execution_context>
24
+
25
+ <process>
26
+ **Follow the set-profile workflow** from `@~/.claude/get-shit-done/workflows/set-profile.md`.
27
+
28
+ The workflow handles all logic including:
29
+ 1. Profile argument validation
30
+ 2. Config file ensuring
31
+ 3. Config reading and updating
32
+ 4. Model table generation from MODEL_PROFILES
33
+ 5. Confirmation display
34
+ </process>
@@ -0,0 +1,36 @@
1
+ ---
2
+ name: gsd:settings
3
+ description: Configure GSD workflow toggles and model profile
4
+ allowed-tools:
5
+ - Read
6
+ - Write
7
+ - Bash
8
+ - AskUserQuestion
9
+ ---
10
+
11
+ <objective>
12
+ Interactive configuration of GSD workflow agents and model profile via multi-question prompt.
13
+
14
+ Routes to the settings workflow which handles:
15
+ - Config existence ensuring
16
+ - Current settings reading and parsing
17
+ - Interactive 5-question prompt (model, research, plan_check, verifier, branching)
18
+ - Config merging and writing
19
+ - Confirmation display with quick command references
20
+ </objective>
21
+
22
+ <execution_context>
23
+ @~/.claude/get-shit-done/workflows/settings.md
24
+ </execution_context>
25
+
26
+ <process>
27
+ **Follow the settings workflow** from `@~/.claude/get-shit-done/workflows/settings.md`.
28
+
29
+ The workflow handles all logic including:
30
+ 1. Config file creation with defaults if missing
31
+ 2. Current config reading
32
+ 3. Interactive settings presentation with pre-selection
33
+ 4. Answer parsing and config merging
34
+ 5. File writing
35
+ 6. Confirmation display
36
+ </process>
@@ -1,172 +1,37 @@
1
1
  ---
2
2
  name: gsd:update
3
3
  description: Update GSD to latest version with changelog display
4
+ allowed-tools:
5
+ - Bash
6
+ - AskUserQuestion
4
7
  ---
5
8
 
6
9
  <objective>
7
10
  Check for GSD updates, install if available, and display what changed.
8
11
 
9
- Provides a better update experience than raw `npx get-shit-done-cc` by showing version diff and changelog entries.
12
+ Routes to the update workflow which handles:
13
+ - Version detection (local vs global installation)
14
+ - npm version checking
15
+ - Changelog fetching and display
16
+ - User confirmation with clean install warning
17
+ - Update execution and cache clearing
18
+ - Restart reminder
10
19
  </objective>
11
20
 
12
- <process>
13
-
14
- <step name="get_installed_version">
15
- Read installed version:
16
-
17
- ```bash
18
- cat ~/.claude/get-shit-done/VERSION 2>/dev/null
19
- ```
20
-
21
- **If VERSION file missing:**
22
- ```
23
- ## GSD Update
24
-
25
- **Installed version:** Unknown
26
-
27
- Your installation doesn't include version tracking.
28
-
29
- Running fresh install...
30
- ```
31
-
32
- Proceed to install step (treat as version 0.0.0 for comparison).
33
- </step>
34
-
35
- <step name="check_latest_version">
36
- Check npm for latest version:
37
-
38
- ```bash
39
- npm view get-shit-done-cc version 2>/dev/null
40
- ```
41
-
42
- **If npm check fails:**
43
- ```
44
- Couldn't check for updates (offline or npm unavailable).
45
-
46
- To update manually: `npx get-shit-done-cc --global`
47
- ```
48
-
49
- STOP here if npm unavailable.
50
- </step>
51
-
52
- <step name="compare_versions">
53
- Compare installed vs latest:
54
-
55
- **If installed == latest:**
56
- ```
57
- ## GSD Update
58
-
59
- **Installed:** X.Y.Z
60
- **Latest:** X.Y.Z
61
-
62
- You're already on the latest version.
63
- ```
64
-
65
- STOP here if already up to date.
66
-
67
- **If installed > latest:**
68
- ```
69
- ## GSD Update
70
-
71
- **Installed:** X.Y.Z
72
- **Latest:** A.B.C
73
-
74
- You're ahead of the latest release (development version?).
75
- ```
76
-
77
- STOP here if ahead.
78
- </step>
79
-
80
- <step name="show_changes_and_confirm">
81
- **If update available**, fetch and show what's new BEFORE updating:
82
-
83
- 1. Fetch changelog (same as fetch_changelog step)
84
- 2. Extract entries between installed and latest versions
85
- 3. Display preview and ask for confirmation:
86
-
87
- ```
88
- ## GSD Update Available
89
-
90
- **Installed:** 1.5.10
91
- **Latest:** 1.5.15
92
-
93
- ### What's New
94
- ────────────────────────────────────────────────────────────
95
-
96
- ## [1.5.15] - 2026-01-20
97
-
98
- ### Added
99
- - Feature X
100
-
101
- ## [1.5.14] - 2026-01-18
102
-
103
- ### Fixed
104
- - Bug fix Y
105
-
106
- ────────────────────────────────────────────────────────────
107
-
108
- ⚠️ **Note:** The installer performs a clean install of GSD folders:
109
- - `~/.claude/commands/gsd/` will be wiped and replaced
110
- - `~/.claude/get-shit-done/` will be wiped and replaced
111
- - `~/.claude/agents/gsd-*` files will be replaced
112
-
113
- Your custom files in other locations are preserved:
114
- - Custom commands in `~/.claude/commands/your-stuff/` ✓
115
- - Custom agents not prefixed with `gsd-` ✓
116
- - Custom hooks ✓
117
- - Your CLAUDE.md files ✓
118
-
119
- If you've modified any GSD files directly, back them up first.
120
- ```
121
-
122
- Use AskUserQuestion:
123
- - Question: "Proceed with update?"
124
- - Options:
125
- - "Yes, update now"
126
- - "No, cancel"
127
-
128
- **If user cancels:** STOP here.
129
- </step>
130
-
131
- <step name="run_update">
132
- Run the update:
133
-
134
- ```bash
135
- npx get-shit-done-cc --global
136
- ```
137
-
138
- Capture output. If install fails, show error and STOP.
139
-
140
- Clear the update cache so statusline indicator disappears:
141
-
142
- ```bash
143
- rm -f ~/.claude/cache/gsd-update-check.json
144
- ```
145
- </step>
146
-
147
- <step name="display_result">
148
- Format completion message (changelog was already shown in confirmation step):
149
-
150
- ```
151
- ╔═══════════════════════════════════════════════════════════╗
152
- ║ GSD Updated: v1.5.10 → v1.5.15 ║
153
- ╚═══════════════════════════════════════════════════════════╝
154
-
155
- ⚠️ Restart Claude Code to pick up the new commands.
156
-
157
- [View full changelog](https://github.com/glittercowboy/get-shit-done/blob/main/CHANGELOG.md)
158
- ```
159
- </step>
21
+ <execution_context>
22
+ @~/.claude/get-shit-done/workflows/update.md
23
+ </execution_context>
160
24
 
25
+ <process>
26
+ **Follow the update workflow** from `@~/.claude/get-shit-done/workflows/update.md`.
27
+
28
+ The workflow handles all logic including:
29
+ 1. Installed version detection (local/global)
30
+ 2. Latest version checking via npm
31
+ 3. Version comparison
32
+ 4. Changelog fetching and extraction
33
+ 5. Clean install warning display
34
+ 6. User confirmation
35
+ 7. Update execution
36
+ 8. Cache clearing
161
37
  </process>
162
-
163
- <success_criteria>
164
- - [ ] Installed version read correctly
165
- - [ ] Latest version checked via npm
166
- - [ ] Update skipped if already current
167
- - [ ] Changelog fetched and displayed BEFORE update
168
- - [ ] Clean install warning shown
169
- - [ ] User confirmation obtained
170
- - [ ] Update executed successfully
171
- - [ ] Restart reminder shown
172
- </success_criteria>