gsd-codex-cli 1.20.0

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 (160) hide show
  1. package/.codex/prompts/gsd-add-phase.md +44 -0
  2. package/.codex/prompts/gsd-add-todo.md +43 -0
  3. package/.codex/prompts/gsd-audit-milestone.md +43 -0
  4. package/.codex/prompts/gsd-check-todos.md +43 -0
  5. package/.codex/prompts/gsd-complete-milestone.md +43 -0
  6. package/.codex/prompts/gsd-debug.md +46 -0
  7. package/.codex/prompts/gsd-discuss-phase.md +43 -0
  8. package/.codex/prompts/gsd-execute-phase.md +43 -0
  9. package/.codex/prompts/gsd-help.md +43 -0
  10. package/.codex/prompts/gsd-insert-phase.md +43 -0
  11. package/.codex/prompts/gsd-list-phase-assumptions.md +43 -0
  12. package/.codex/prompts/gsd-map-codebase.md +43 -0
  13. package/.codex/prompts/gsd-new-milestone.md +43 -0
  14. package/.codex/prompts/gsd-new-project.md +43 -0
  15. package/.codex/prompts/gsd-pause-work.md +43 -0
  16. package/.codex/prompts/gsd-plan-milestone-gaps.md +43 -0
  17. package/.codex/prompts/gsd-plan-phase.md +43 -0
  18. package/.codex/prompts/gsd-progress.md +43 -0
  19. package/.codex/prompts/gsd-quick.md +43 -0
  20. package/.codex/prompts/gsd-remove-phase.md +43 -0
  21. package/.codex/prompts/gsd-research-phase.md +43 -0
  22. package/.codex/prompts/gsd-resume-work.md +43 -0
  23. package/.codex/prompts/gsd-set-profile.md +43 -0
  24. package/.codex/prompts/gsd-settings.md +43 -0
  25. package/.codex/prompts/gsd-update.md +43 -0
  26. package/.codex/prompts/gsd-verify-work.md +43 -0
  27. package/.codex/skills/get-shit-done-codex/SKILL.md +65 -0
  28. package/.codex/skills/get-shit-done-codex/references/compat.md +32 -0
  29. package/.codex/skills/get-shit-done-codex/references/windows.md +23 -0
  30. package/CHANGELOG.md +1434 -0
  31. package/LICENSE +21 -0
  32. package/README.md +690 -0
  33. package/agents/gsd-codebase-mapper.md +761 -0
  34. package/agents/gsd-debugger.md +1198 -0
  35. package/agents/gsd-executor.md +419 -0
  36. package/agents/gsd-integration-checker.md +423 -0
  37. package/agents/gsd-phase-researcher.md +469 -0
  38. package/agents/gsd-plan-checker.md +622 -0
  39. package/agents/gsd-planner.md +1159 -0
  40. package/agents/gsd-project-researcher.md +618 -0
  41. package/agents/gsd-research-synthesizer.md +236 -0
  42. package/agents/gsd-roadmapper.md +639 -0
  43. package/agents/gsd-verifier.md +541 -0
  44. package/bin/install-codex.js +100 -0
  45. package/bin/install.js +1806 -0
  46. package/commands/gsd/add-phase.md +39 -0
  47. package/commands/gsd/add-todo.md +42 -0
  48. package/commands/gsd/audit-milestone.md +42 -0
  49. package/commands/gsd/check-todos.md +41 -0
  50. package/commands/gsd/cleanup.md +18 -0
  51. package/commands/gsd/complete-milestone.md +136 -0
  52. package/commands/gsd/debug.md +162 -0
  53. package/commands/gsd/discuss-phase.md +87 -0
  54. package/commands/gsd/execute-phase.md +42 -0
  55. package/commands/gsd/health.md +22 -0
  56. package/commands/gsd/help.md +22 -0
  57. package/commands/gsd/insert-phase.md +33 -0
  58. package/commands/gsd/join-discord.md +18 -0
  59. package/commands/gsd/list-phase-assumptions.md +50 -0
  60. package/commands/gsd/map-codebase.md +71 -0
  61. package/commands/gsd/new-milestone.md +51 -0
  62. package/commands/gsd/new-project.md +42 -0
  63. package/commands/gsd/pause-work.md +35 -0
  64. package/commands/gsd/plan-milestone-gaps.md +40 -0
  65. package/commands/gsd/plan-phase.md +44 -0
  66. package/commands/gsd/progress.md +24 -0
  67. package/commands/gsd/quick.md +40 -0
  68. package/commands/gsd/reapply-patches.md +110 -0
  69. package/commands/gsd/remove-phase.md +32 -0
  70. package/commands/gsd/research-phase.md +187 -0
  71. package/commands/gsd/resume-work.md +40 -0
  72. package/commands/gsd/set-profile.md +34 -0
  73. package/commands/gsd/settings.md +36 -0
  74. package/commands/gsd/update.md +37 -0
  75. package/commands/gsd/verify-work.md +39 -0
  76. package/get-shit-done/bin/gsd-tools.cjs +5243 -0
  77. package/get-shit-done/bin/gsd-tools.test.cjs +2273 -0
  78. package/get-shit-done/references/checkpoints.md +775 -0
  79. package/get-shit-done/references/continuation-format.md +249 -0
  80. package/get-shit-done/references/decimal-phase-calculation.md +65 -0
  81. package/get-shit-done/references/git-integration.md +248 -0
  82. package/get-shit-done/references/git-planning-commit.md +38 -0
  83. package/get-shit-done/references/model-profile-resolution.md +34 -0
  84. package/get-shit-done/references/model-profiles.md +92 -0
  85. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  86. package/get-shit-done/references/planning-config.md +196 -0
  87. package/get-shit-done/references/questioning.md +145 -0
  88. package/get-shit-done/references/tdd.md +263 -0
  89. package/get-shit-done/references/ui-brand.md +160 -0
  90. package/get-shit-done/references/verification-patterns.md +612 -0
  91. package/get-shit-done/templates/DEBUG.md +159 -0
  92. package/get-shit-done/templates/UAT.md +247 -0
  93. package/get-shit-done/templates/codebase/architecture.md +255 -0
  94. package/get-shit-done/templates/codebase/concerns.md +310 -0
  95. package/get-shit-done/templates/codebase/conventions.md +307 -0
  96. package/get-shit-done/templates/codebase/integrations.md +280 -0
  97. package/get-shit-done/templates/codebase/stack.md +186 -0
  98. package/get-shit-done/templates/codebase/structure.md +285 -0
  99. package/get-shit-done/templates/codebase/testing.md +480 -0
  100. package/get-shit-done/templates/config.json +36 -0
  101. package/get-shit-done/templates/context.md +283 -0
  102. package/get-shit-done/templates/continue-here.md +78 -0
  103. package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
  104. package/get-shit-done/templates/discovery.md +146 -0
  105. package/get-shit-done/templates/milestone-archive.md +123 -0
  106. package/get-shit-done/templates/milestone.md +115 -0
  107. package/get-shit-done/templates/phase-prompt.md +567 -0
  108. package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
  109. package/get-shit-done/templates/project.md +184 -0
  110. package/get-shit-done/templates/requirements.md +231 -0
  111. package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
  112. package/get-shit-done/templates/research-project/FEATURES.md +147 -0
  113. package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
  114. package/get-shit-done/templates/research-project/STACK.md +120 -0
  115. package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
  116. package/get-shit-done/templates/research.md +552 -0
  117. package/get-shit-done/templates/roadmap.md +202 -0
  118. package/get-shit-done/templates/state.md +176 -0
  119. package/get-shit-done/templates/summary-complex.md +59 -0
  120. package/get-shit-done/templates/summary-minimal.md +41 -0
  121. package/get-shit-done/templates/summary-standard.md +48 -0
  122. package/get-shit-done/templates/summary.md +246 -0
  123. package/get-shit-done/templates/user-setup.md +311 -0
  124. package/get-shit-done/templates/verification-report.md +322 -0
  125. package/get-shit-done/workflows/add-phase.md +111 -0
  126. package/get-shit-done/workflows/add-todo.md +157 -0
  127. package/get-shit-done/workflows/audit-milestone.md +242 -0
  128. package/get-shit-done/workflows/check-todos.md +176 -0
  129. package/get-shit-done/workflows/cleanup.md +152 -0
  130. package/get-shit-done/workflows/complete-milestone.md +674 -0
  131. package/get-shit-done/workflows/diagnose-issues.md +219 -0
  132. package/get-shit-done/workflows/discovery-phase.md +289 -0
  133. package/get-shit-done/workflows/discuss-phase.md +485 -0
  134. package/get-shit-done/workflows/execute-phase.md +408 -0
  135. package/get-shit-done/workflows/execute-plan.md +441 -0
  136. package/get-shit-done/workflows/health.md +156 -0
  137. package/get-shit-done/workflows/help.md +486 -0
  138. package/get-shit-done/workflows/insert-phase.md +129 -0
  139. package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
  140. package/get-shit-done/workflows/map-codebase.md +327 -0
  141. package/get-shit-done/workflows/new-milestone.md +373 -0
  142. package/get-shit-done/workflows/new-project.md +1113 -0
  143. package/get-shit-done/workflows/pause-work.md +122 -0
  144. package/get-shit-done/workflows/plan-milestone-gaps.md +256 -0
  145. package/get-shit-done/workflows/plan-phase.md +448 -0
  146. package/get-shit-done/workflows/progress.md +393 -0
  147. package/get-shit-done/workflows/quick.md +444 -0
  148. package/get-shit-done/workflows/remove-phase.md +154 -0
  149. package/get-shit-done/workflows/research-phase.md +74 -0
  150. package/get-shit-done/workflows/resume-project.md +306 -0
  151. package/get-shit-done/workflows/set-profile.md +80 -0
  152. package/get-shit-done/workflows/settings.md +200 -0
  153. package/get-shit-done/workflows/transition.md +539 -0
  154. package/get-shit-done/workflows/update.md +214 -0
  155. package/get-shit-done/workflows/verify-phase.md +242 -0
  156. package/get-shit-done/workflows/verify-work.md +570 -0
  157. package/hooks/dist/gsd-check-update.js +62 -0
  158. package/hooks/dist/gsd-statusline.js +91 -0
  159. package/package.json +54 -0
  160. package/scripts/build-hooks.js +42 -0
@@ -0,0 +1,674 @@
1
+ <purpose>
2
+
3
+ Mark a shipped version (v1.0, v1.1, v2.0) as complete. Creates historical record in MILESTONES.md, performs full PROJECT.md evolution review, reorganizes ROADMAP.md with milestone groupings, and tags the release in git.
4
+
5
+ </purpose>
6
+
7
+ <required_reading>
8
+
9
+ 1. templates/milestone.md
10
+ 2. templates/milestone-archive.md
11
+ 3. `.planning/ROADMAP.md`
12
+ 4. `.planning/REQUIREMENTS.md`
13
+ 5. `.planning/PROJECT.md`
14
+
15
+ </required_reading>
16
+
17
+ <archival_behavior>
18
+
19
+ When a milestone completes:
20
+
21
+ 1. Extract full milestone details to `.planning/milestones/v[X.Y]-ROADMAP.md`
22
+ 2. Archive requirements to `.planning/milestones/v[X.Y]-REQUIREMENTS.md`
23
+ 3. Update ROADMAP.md — replace milestone details with one-line summary
24
+ 4. Delete REQUIREMENTS.md (fresh one for next milestone)
25
+ 5. Perform full PROJECT.md evolution review
26
+ 6. Offer to create next milestone inline
27
+
28
+ **Context Efficiency:** Archives keep ROADMAP.md constant-size and REQUIREMENTS.md milestone-scoped.
29
+
30
+ **ROADMAP archive** uses `templates/milestone-archive.md` — includes milestone header (status, phases, date), full phase details, milestone summary (decisions, issues, tech debt).
31
+
32
+ **REQUIREMENTS archive** contains all requirements marked complete with outcomes, traceability table with final status, notes on changed requirements.
33
+
34
+ </archival_behavior>
35
+
36
+ <process>
37
+
38
+ <step name="verify_readiness">
39
+
40
+ **Use `roadmap analyze` for comprehensive readiness check:**
41
+
42
+ ```bash
43
+ ROADMAP=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs roadmap analyze)
44
+ ```
45
+
46
+ This returns all phases with plan/summary counts and disk status. Use this to verify:
47
+ - Which phases belong to this milestone?
48
+ - All phases complete (all plans have summaries)? Check `disk_status === 'complete'` for each.
49
+ - `progress_percent` should be 100%.
50
+
51
+ Present:
52
+
53
+ ```
54
+ Milestone: [Name, e.g., "v1.0 MVP"]
55
+
56
+ Includes:
57
+ - Phase 1: Foundation (2/2 plans complete)
58
+ - Phase 2: Authentication (2/2 plans complete)
59
+ - Phase 3: Core Features (3/3 plans complete)
60
+ - Phase 4: Polish (1/1 plan complete)
61
+
62
+ Total: {phase_count} phases, {total_plans} plans, all complete
63
+ ```
64
+
65
+ <config-check>
66
+
67
+ ```bash
68
+ cat .planning/config.json 2>/dev/null
69
+ ```
70
+
71
+ </config-check>
72
+
73
+ <if mode="yolo">
74
+
75
+ ```
76
+ ⚡ Auto-approved: Milestone scope verification
77
+ [Show breakdown summary without prompting]
78
+ Proceeding to stats gathering...
79
+ ```
80
+
81
+ Proceed to gather_stats.
82
+
83
+ </if>
84
+
85
+ <if mode="interactive" OR="custom with gates.confirm_milestone_scope true">
86
+
87
+ ```
88
+ Ready to mark this milestone as shipped?
89
+ (yes / wait / adjust scope)
90
+ ```
91
+
92
+ Wait for confirmation.
93
+ - "adjust scope": Ask which phases to include.
94
+ - "wait": Stop, user returns when ready.
95
+
96
+ </if>
97
+
98
+ </step>
99
+
100
+ <step name="gather_stats">
101
+
102
+ Calculate milestone statistics:
103
+
104
+ ```bash
105
+ git log --oneline --grep="feat(" | head -20
106
+ git diff --stat FIRST_COMMIT..LAST_COMMIT | tail -1
107
+ find . -name "*.swift" -o -name "*.ts" -o -name "*.py" | xargs wc -l 2>/dev/null
108
+ git log --format="%ai" FIRST_COMMIT | tail -1
109
+ git log --format="%ai" LAST_COMMIT | head -1
110
+ ```
111
+
112
+ Present:
113
+
114
+ ```
115
+ Milestone Stats:
116
+ - Phases: [X-Y]
117
+ - Plans: [Z] total
118
+ - Tasks: [N] total (from phase summaries)
119
+ - Files modified: [M]
120
+ - Lines of code: [LOC] [language]
121
+ - Timeline: [Days] days ([Start] → [End])
122
+ - Git range: feat(XX-XX) → feat(YY-YY)
123
+ ```
124
+
125
+ </step>
126
+
127
+ <step name="extract_accomplishments">
128
+
129
+ Extract one-liners from SUMMARY.md files using summary-extract:
130
+
131
+ ```bash
132
+ # For each phase in milestone, extract one-liner
133
+ for summary in .planning/phases/*-*/*-SUMMARY.md; do
134
+ node ~/.claude/get-shit-done/bin/gsd-tools.cjs summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
135
+ done
136
+ ```
137
+
138
+ Extract 4-6 key accomplishments. Present:
139
+
140
+ ```
141
+ Key accomplishments for this milestone:
142
+ 1. [Achievement from phase 1]
143
+ 2. [Achievement from phase 2]
144
+ 3. [Achievement from phase 3]
145
+ 4. [Achievement from phase 4]
146
+ 5. [Achievement from phase 5]
147
+ ```
148
+
149
+ </step>
150
+
151
+ <step name="create_milestone_entry">
152
+
153
+ **Note:** MILESTONES.md entry is now created automatically by `gsd-tools milestone complete` in the archive_milestone step. The entry includes version, date, phase/plan/task counts, and accomplishments extracted from SUMMARY.md files.
154
+
155
+ If additional details are needed (e.g., user-provided "Delivered" summary, git range, LOC stats), add them manually after the CLI creates the base entry.
156
+
157
+ </step>
158
+
159
+ <step name="evolve_project_full_review">
160
+
161
+ Full PROJECT.md evolution review at milestone completion.
162
+
163
+ Read all phase summaries:
164
+
165
+ ```bash
166
+ cat .planning/phases/*-*/*-SUMMARY.md
167
+ ```
168
+
169
+ **Full review checklist:**
170
+
171
+ 1. **"What This Is" accuracy:**
172
+ - Compare current description to what was built
173
+ - Update if product has meaningfully changed
174
+
175
+ 2. **Core Value check:**
176
+ - Still the right priority? Did shipping reveal a different core value?
177
+ - Update if the ONE thing has shifted
178
+
179
+ 3. **Requirements audit:**
180
+
181
+ **Validated section:**
182
+ - All Active requirements shipped this milestone → Move to Validated
183
+ - Format: `- ✓ [Requirement] — v[X.Y]`
184
+
185
+ **Active section:**
186
+ - Remove requirements moved to Validated
187
+ - Add new requirements for next milestone
188
+ - Keep unaddressed requirements
189
+
190
+ **Out of Scope audit:**
191
+ - Review each item — reasoning still valid?
192
+ - Remove irrelevant items
193
+ - Add requirements invalidated during milestone
194
+
195
+ 4. **Context update:**
196
+ - Current codebase state (LOC, tech stack)
197
+ - User feedback themes (if any)
198
+ - Known issues or technical debt
199
+
200
+ 5. **Key Decisions audit:**
201
+ - Extract all decisions from milestone phase summaries
202
+ - Add to Key Decisions table with outcomes
203
+ - Mark ✓ Good, ⚠️ Revisit, or — Pending
204
+
205
+ 6. **Constraints check:**
206
+ - Any constraints changed during development? Update as needed
207
+
208
+ Update PROJECT.md inline. Update "Last updated" footer:
209
+
210
+ ```markdown
211
+ ---
212
+ *Last updated: [date] after v[X.Y] milestone*
213
+ ```
214
+
215
+ **Example full evolution (v1.0 → v1.1 prep):**
216
+
217
+ Before:
218
+
219
+ ```markdown
220
+ ## What This Is
221
+
222
+ A real-time collaborative whiteboard for remote teams.
223
+
224
+ ## Core Value
225
+
226
+ Real-time sync that feels instant.
227
+
228
+ ## Requirements
229
+
230
+ ### Validated
231
+
232
+ (None yet — ship to validate)
233
+
234
+ ### Active
235
+
236
+ - [ ] Canvas drawing tools
237
+ - [ ] Real-time sync < 500ms
238
+ - [ ] User authentication
239
+ - [ ] Export to PNG
240
+
241
+ ### Out of Scope
242
+
243
+ - Mobile app — web-first approach
244
+ - Video chat — use external tools
245
+ ```
246
+
247
+ After v1.0:
248
+
249
+ ```markdown
250
+ ## What This Is
251
+
252
+ A real-time collaborative whiteboard for remote teams with instant sync and drawing tools.
253
+
254
+ ## Core Value
255
+
256
+ Real-time sync that feels instant.
257
+
258
+ ## Requirements
259
+
260
+ ### Validated
261
+
262
+ - ✓ Canvas drawing tools — v1.0
263
+ - ✓ Real-time sync < 500ms — v1.0 (achieved 200ms avg)
264
+ - ✓ User authentication — v1.0
265
+
266
+ ### Active
267
+
268
+ - [ ] Export to PNG
269
+ - [ ] Undo/redo history
270
+ - [ ] Shape tools (rectangles, circles)
271
+
272
+ ### Out of Scope
273
+
274
+ - Mobile app — web-first approach, PWA works well
275
+ - Video chat — use external tools
276
+ - Offline mode — real-time is core value
277
+
278
+ ## Context
279
+
280
+ Shipped v1.0 with 2,400 LOC TypeScript.
281
+ Tech stack: Next.js, Supabase, Canvas API.
282
+ Initial user testing showed demand for shape tools.
283
+ ```
284
+
285
+ **Step complete when:**
286
+
287
+ - [ ] "What This Is" reviewed and updated if needed
288
+ - [ ] Core Value verified as still correct
289
+ - [ ] All shipped requirements moved to Validated
290
+ - [ ] New requirements added to Active for next milestone
291
+ - [ ] Out of Scope reasoning audited
292
+ - [ ] Context updated with current state
293
+ - [ ] All milestone decisions added to Key Decisions
294
+ - [ ] "Last updated" footer reflects milestone completion
295
+
296
+ </step>
297
+
298
+ <step name="reorganize_roadmap">
299
+
300
+ Update `.planning/ROADMAP.md` — group completed milestone phases:
301
+
302
+ ```markdown
303
+ # Roadmap: [Project Name]
304
+
305
+ ## Milestones
306
+
307
+ - ✅ **v1.0 MVP** — Phases 1-4 (shipped YYYY-MM-DD)
308
+ - 🚧 **v1.1 Security** — Phases 5-6 (in progress)
309
+ - 📋 **v2.0 Redesign** — Phases 7-10 (planned)
310
+
311
+ ## Phases
312
+
313
+ <details>
314
+ <summary>✅ v1.0 MVP (Phases 1-4) — SHIPPED YYYY-MM-DD</summary>
315
+
316
+ - [x] Phase 1: Foundation (2/2 plans) — completed YYYY-MM-DD
317
+ - [x] Phase 2: Authentication (2/2 plans) — completed YYYY-MM-DD
318
+ - [x] Phase 3: Core Features (3/3 plans) — completed YYYY-MM-DD
319
+ - [x] Phase 4: Polish (1/1 plan) — completed YYYY-MM-DD
320
+
321
+ </details>
322
+
323
+ ### 🚧 v[Next] [Name] (In Progress / Planned)
324
+
325
+ - [ ] Phase 5: [Name] ([N] plans)
326
+ - [ ] Phase 6: [Name] ([N] plans)
327
+
328
+ ## Progress
329
+
330
+ | Phase | Milestone | Plans Complete | Status | Completed |
331
+ | ----------------- | --------- | -------------- | ----------- | ---------- |
332
+ | 1. Foundation | v1.0 | 2/2 | Complete | YYYY-MM-DD |
333
+ | 2. Authentication | v1.0 | 2/2 | Complete | YYYY-MM-DD |
334
+ | 3. Core Features | v1.0 | 3/3 | Complete | YYYY-MM-DD |
335
+ | 4. Polish | v1.0 | 1/1 | Complete | YYYY-MM-DD |
336
+ | 5. Security Audit | v1.1 | 0/1 | Not started | - |
337
+ | 6. Hardening | v1.1 | 0/2 | Not started | - |
338
+ ```
339
+
340
+ </step>
341
+
342
+ <step name="archive_milestone">
343
+
344
+ **Delegate archival to gsd-tools:**
345
+
346
+ ```bash
347
+ ARCHIVE=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs milestone complete "v[X.Y]" --name "[Milestone Name]")
348
+ ```
349
+
350
+ The CLI handles:
351
+ - Creating `.planning/milestones/` directory
352
+ - Archiving ROADMAP.md to `milestones/v[X.Y]-ROADMAP.md`
353
+ - Archiving REQUIREMENTS.md to `milestones/v[X.Y]-REQUIREMENTS.md` with archive header
354
+ - Moving audit file to milestones if it exists
355
+ - Creating/appending MILESTONES.md entry with accomplishments from SUMMARY.md files
356
+ - Updating STATE.md (status, last activity)
357
+
358
+ Extract from result: `version`, `date`, `phases`, `plans`, `tasks`, `accomplishments`, `archived`.
359
+
360
+ Verify: `✅ Milestone archived to .planning/milestones/`
361
+
362
+ **Phase archival (optional):** After archival completes, ask the user:
363
+
364
+ AskUserQuestion(header="Archive Phases", question="Archive phase directories to milestones/?", options: "Yes — move to milestones/v[X.Y]-phases/" | "Skip — keep phases in place")
365
+
366
+ If "Yes": move phase directories to the milestone archive:
367
+ ```bash
368
+ mkdir -p .planning/milestones/v[X.Y]-phases
369
+ # For each phase directory in .planning/phases/:
370
+ mv .planning/phases/{phase-dir} .planning/milestones/v[X.Y]-phases/
371
+ ```
372
+ Verify: `✅ Phase directories archived to .planning/milestones/v[X.Y]-phases/`
373
+
374
+ If "Skip": Phase directories remain in `.planning/phases/` as raw execution history. Use `/gsd:cleanup` later to archive retroactively.
375
+
376
+ After archival, the AI still handles:
377
+ - Reorganizing ROADMAP.md with milestone grouping (requires judgment)
378
+ - Full PROJECT.md evolution review (requires understanding)
379
+ - Deleting original ROADMAP.md and REQUIREMENTS.md
380
+ - These are NOT fully delegated because they require AI interpretation of content
381
+
382
+ </step>
383
+
384
+ <step name="reorganize_roadmap_and_delete_originals">
385
+
386
+ After `milestone complete` has archived, reorganize ROADMAP.md with milestone groupings, then delete originals:
387
+
388
+ **Reorganize ROADMAP.md** — group completed milestone phases:
389
+
390
+ ```markdown
391
+ # Roadmap: [Project Name]
392
+
393
+ ## Milestones
394
+
395
+ - ✅ **v1.0 MVP** — Phases 1-4 (shipped YYYY-MM-DD)
396
+ - 🚧 **v1.1 Security** — Phases 5-6 (in progress)
397
+
398
+ ## Phases
399
+
400
+ <details>
401
+ <summary>✅ v1.0 MVP (Phases 1-4) — SHIPPED YYYY-MM-DD</summary>
402
+
403
+ - [x] Phase 1: Foundation (2/2 plans) — completed YYYY-MM-DD
404
+ - [x] Phase 2: Authentication (2/2 plans) — completed YYYY-MM-DD
405
+
406
+ </details>
407
+ ```
408
+
409
+ **Then delete originals:**
410
+
411
+ ```bash
412
+ rm .planning/ROADMAP.md
413
+ rm .planning/REQUIREMENTS.md
414
+ ```
415
+
416
+ </step>
417
+
418
+ <step name="update_state">
419
+
420
+ Most STATE.md updates were handled by `milestone complete`, but verify and update remaining fields:
421
+
422
+ **Project Reference:**
423
+
424
+ ```markdown
425
+ ## Project Reference
426
+
427
+ See: .planning/PROJECT.md (updated [today])
428
+
429
+ **Core value:** [Current core value from PROJECT.md]
430
+ **Current focus:** [Next milestone or "Planning next milestone"]
431
+ ```
432
+
433
+ **Accumulated Context:**
434
+ - Clear decisions summary (full log in PROJECT.md)
435
+ - Clear resolved blockers
436
+ - Keep open blockers for next milestone
437
+
438
+ </step>
439
+
440
+ <step name="handle_branches">
441
+
442
+ Check branching strategy and offer merge options.
443
+
444
+ Use `init milestone-op` for context, or load config directly:
445
+
446
+ ```bash
447
+ INIT=$(node ~/.claude/get-shit-done/bin/gsd-tools.cjs init execute-phase "1")
448
+ ```
449
+
450
+ Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template`, and `commit_docs` from init JSON.
451
+
452
+ **If "none":** Skip to git_tag.
453
+
454
+ **For "phase" strategy:**
455
+
456
+ ```bash
457
+ BRANCH_PREFIX=$(echo "$PHASE_BRANCH_TEMPLATE" | sed 's/{.*//')
458
+ PHASE_BRANCHES=$(git branch --list "${BRANCH_PREFIX}*" 2>/dev/null | sed 's/^\*//' | tr -d ' ')
459
+ ```
460
+
461
+ **For "milestone" strategy:**
462
+
463
+ ```bash
464
+ BRANCH_PREFIX=$(echo "$MILESTONE_BRANCH_TEMPLATE" | sed 's/{.*//')
465
+ MILESTONE_BRANCH=$(git branch --list "${BRANCH_PREFIX}*" 2>/dev/null | sed 's/^\*//' | tr -d ' ' | head -1)
466
+ ```
467
+
468
+ **If no branches found:** Skip to git_tag.
469
+
470
+ **If branches exist:**
471
+
472
+ ```
473
+ ## Git Branches Detected
474
+
475
+ Branching strategy: {phase/milestone}
476
+ Branches: {list}
477
+
478
+ Options:
479
+ 1. **Merge to main** — Merge branch(es) to main
480
+ 2. **Delete without merging** — Already merged or not needed
481
+ 3. **Keep branches** — Leave for manual handling
482
+ ```
483
+
484
+ AskUserQuestion with options: Squash merge (Recommended), Merge with history, Delete without merging, Keep branches.
485
+
486
+ **Squash merge:**
487
+
488
+ ```bash
489
+ CURRENT_BRANCH=$(git branch --show-current)
490
+ git checkout main
491
+
492
+ if [ "$BRANCHING_STRATEGY" = "phase" ]; then
493
+ for branch in $PHASE_BRANCHES; do
494
+ git merge --squash "$branch"
495
+ # Strip .planning/ from staging if commit_docs is false
496
+ if [ "$COMMIT_DOCS" = "false" ]; then
497
+ git reset HEAD .planning/ 2>/dev/null || true
498
+ fi
499
+ git commit -m "feat: $branch for v[X.Y]"
500
+ done
501
+ fi
502
+
503
+ if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
504
+ git merge --squash "$MILESTONE_BRANCH"
505
+ # Strip .planning/ from staging if commit_docs is false
506
+ if [ "$COMMIT_DOCS" = "false" ]; then
507
+ git reset HEAD .planning/ 2>/dev/null || true
508
+ fi
509
+ git commit -m "feat: $MILESTONE_BRANCH for v[X.Y]"
510
+ fi
511
+
512
+ git checkout "$CURRENT_BRANCH"
513
+ ```
514
+
515
+ **Merge with history:**
516
+
517
+ ```bash
518
+ CURRENT_BRANCH=$(git branch --show-current)
519
+ git checkout main
520
+
521
+ if [ "$BRANCHING_STRATEGY" = "phase" ]; then
522
+ for branch in $PHASE_BRANCHES; do
523
+ git merge --no-ff --no-commit "$branch"
524
+ # Strip .planning/ from staging if commit_docs is false
525
+ if [ "$COMMIT_DOCS" = "false" ]; then
526
+ git reset HEAD .planning/ 2>/dev/null || true
527
+ fi
528
+ git commit -m "Merge branch '$branch' for v[X.Y]"
529
+ done
530
+ fi
531
+
532
+ if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
533
+ git merge --no-ff --no-commit "$MILESTONE_BRANCH"
534
+ # Strip .planning/ from staging if commit_docs is false
535
+ if [ "$COMMIT_DOCS" = "false" ]; then
536
+ git reset HEAD .planning/ 2>/dev/null || true
537
+ fi
538
+ git commit -m "Merge branch '$MILESTONE_BRANCH' for v[X.Y]"
539
+ fi
540
+
541
+ git checkout "$CURRENT_BRANCH"
542
+ ```
543
+
544
+ **Delete without merging:**
545
+
546
+ ```bash
547
+ if [ "$BRANCHING_STRATEGY" = "phase" ]; then
548
+ for branch in $PHASE_BRANCHES; do
549
+ git branch -d "$branch" 2>/dev/null || git branch -D "$branch"
550
+ done
551
+ fi
552
+
553
+ if [ "$BRANCHING_STRATEGY" = "milestone" ]; then
554
+ git branch -d "$MILESTONE_BRANCH" 2>/dev/null || git branch -D "$MILESTONE_BRANCH"
555
+ fi
556
+ ```
557
+
558
+ **Keep branches:** Report "Branches preserved for manual handling"
559
+
560
+ </step>
561
+
562
+ <step name="git_tag">
563
+
564
+ Create git tag:
565
+
566
+ ```bash
567
+ git tag -a v[X.Y] -m "v[X.Y] [Name]
568
+
569
+ Delivered: [One sentence]
570
+
571
+ Key accomplishments:
572
+ - [Item 1]
573
+ - [Item 2]
574
+ - [Item 3]
575
+
576
+ See .planning/MILESTONES.md for full details."
577
+ ```
578
+
579
+ Confirm: "Tagged: v[X.Y]"
580
+
581
+ Ask: "Push tag to remote? (y/n)"
582
+
583
+ If yes:
584
+ ```bash
585
+ git push origin v[X.Y]
586
+ ```
587
+
588
+ </step>
589
+
590
+ <step name="git_commit_milestone">
591
+
592
+ Commit milestone completion.
593
+
594
+ ```bash
595
+ node ~/.claude/get-shit-done/bin/gsd-tools.cjs commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
596
+ ```
597
+ ```
598
+
599
+ Confirm: "Committed: chore: complete v[X.Y] milestone"
600
+
601
+ </step>
602
+
603
+ <step name="offer_next">
604
+
605
+ ```
606
+ ✅ Milestone v[X.Y] [Name] complete
607
+
608
+ Shipped:
609
+ - [N] phases ([M] plans, [P] tasks)
610
+ - [One sentence of what shipped]
611
+
612
+ Archived:
613
+ - milestones/v[X.Y]-ROADMAP.md
614
+ - milestones/v[X.Y]-REQUIREMENTS.md
615
+
616
+ Summary: .planning/MILESTONES.md
617
+ Tag: v[X.Y]
618
+
619
+ ---
620
+
621
+ ## ▶ Next Up
622
+
623
+ **Start Next Milestone** — questioning → research → requirements → roadmap
624
+
625
+ `/gsd:new-milestone`
626
+
627
+ <sub>`/clear` first → fresh context window</sub>
628
+
629
+ ---
630
+ ```
631
+
632
+ </step>
633
+
634
+ </process>
635
+
636
+ <milestone_naming>
637
+
638
+ **Version conventions:**
639
+ - **v1.0** — Initial MVP
640
+ - **v1.1, v1.2** — Minor updates, new features, fixes
641
+ - **v2.0, v3.0** — Major rewrites, breaking changes, new direction
642
+
643
+ **Names:** Short 1-2 words (v1.0 MVP, v1.1 Security, v1.2 Performance, v2.0 Redesign).
644
+
645
+ </milestone_naming>
646
+
647
+ <what_qualifies>
648
+
649
+ **Create milestones for:** Initial release, public releases, major feature sets shipped, before archiving planning.
650
+
651
+ **Don't create milestones for:** Every phase completion (too granular), work in progress, internal dev iterations (unless truly shipped).
652
+
653
+ Heuristic: "Is this deployed/usable/shipped?" If yes → milestone. If no → keep working.
654
+
655
+ </what_qualifies>
656
+
657
+ <success_criteria>
658
+
659
+ Milestone completion is successful when:
660
+
661
+ - [ ] MILESTONES.md entry created with stats and accomplishments
662
+ - [ ] PROJECT.md full evolution review completed
663
+ - [ ] All shipped requirements moved to Validated in PROJECT.md
664
+ - [ ] Key Decisions updated with outcomes
665
+ - [ ] ROADMAP.md reorganized with milestone grouping
666
+ - [ ] Roadmap archive created (milestones/v[X.Y]-ROADMAP.md)
667
+ - [ ] Requirements archive created (milestones/v[X.Y]-REQUIREMENTS.md)
668
+ - [ ] REQUIREMENTS.md deleted (fresh for next milestone)
669
+ - [ ] STATE.md updated with fresh project reference
670
+ - [ ] Git tag created (v[X.Y])
671
+ - [ ] Milestone commit made (includes archive files and deletion)
672
+ - [ ] User knows next step (/gsd:new-milestone)
673
+
674
+ </success_criteria>