gsd-opencode 1.10.2 → 1.20.1

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 (164) hide show
  1. package/agents/gsd-codebase-mapper.md +29 -3
  2. package/agents/gsd-debugger.md +19 -21
  3. package/agents/gsd-executor.md +213 -528
  4. package/agents/gsd-integration-checker.md +20 -0
  5. package/agents/gsd-phase-researcher.md +189 -267
  6. package/agents/gsd-plan-checker.md +278 -279
  7. package/agents/gsd-planner.md +299 -490
  8. package/agents/gsd-project-researcher.md +103 -345
  9. package/agents/gsd-research-synthesizer.md +5 -22
  10. package/agents/gsd-roadmapper.md +43 -6
  11. package/agents/gsd-verifier.md +158 -377
  12. package/{lib → bin/dm/lib}/constants.js +10 -3
  13. package/{src → bin/dm/src}/commands/install.js +5 -4
  14. package/{src → bin/dm/src}/commands/uninstall.js +3 -1
  15. package/{src → bin/dm/src}/services/backup-manager.js +1 -1
  16. package/{src → bin/dm/src}/services/config.js +1 -1
  17. package/{src → bin/dm/src}/services/file-ops.js +20 -4
  18. package/{src → bin/dm/src}/services/health-checker.js +3 -1
  19. package/{src → bin/dm/src}/services/repair-service.js +3 -1
  20. package/{src → bin/dm/src}/services/settings.js +1 -1
  21. package/{src → bin/dm/src}/services/update-service.js +2 -2
  22. package/bin/gsd-install.js +0 -0
  23. package/bin/gsd.js +9 -9
  24. package/commands/gsd/gsd-add-phase.md +43 -0
  25. package/commands/gsd/gsd-add-todo.md +47 -0
  26. package/commands/gsd/gsd-audit-milestone.md +36 -0
  27. package/commands/gsd/gsd-check-todos.md +45 -0
  28. package/commands/gsd/gsd-cleanup.md +18 -0
  29. package/commands/gsd/{complete-milestone.md → gsd-complete-milestone.md} +1 -1
  30. package/commands/gsd/{debug.md → gsd-debug.md} +16 -21
  31. package/commands/gsd/{discuss-phase.md → gsd-discuss-phase.md} +6 -9
  32. package/commands/gsd/gsd-execute-phase.md +41 -0
  33. package/commands/gsd/gsd-health.md +22 -0
  34. package/commands/gsd/gsd-help.md +22 -0
  35. package/commands/gsd/gsd-insert-phase.md +32 -0
  36. package/commands/gsd/gsd-join-discord.md +18 -0
  37. package/commands/gsd/{list-phase-assumptions.md → gsd-list-phase-assumptions.md} +3 -7
  38. package/commands/gsd/{map-codebase.md → gsd-map-codebase.md} +3 -3
  39. package/commands/gsd/gsd-new-milestone.md +44 -0
  40. package/commands/gsd/gsd-new-project.md +42 -0
  41. package/commands/gsd/gsd-pause-work.md +38 -0
  42. package/commands/gsd/gsd-plan-milestone-gaps.md +34 -0
  43. package/commands/gsd/gsd-plan-phase.md +44 -0
  44. package/commands/gsd/gsd-progress.md +24 -0
  45. package/commands/gsd/gsd-quick.md +41 -0
  46. package/commands/gsd/gsd-reapply-patches.md +119 -0
  47. package/commands/gsd/gsd-remove-phase.md +31 -0
  48. package/commands/gsd/{research-phase.md → gsd-research-phase.md} +38 -49
  49. package/commands/gsd/{resume-work.md → gsd-resume-work.md} +2 -2
  50. package/commands/gsd/gsd-set-profile.md +34 -0
  51. package/commands/gsd/gsd-settings.md +36 -0
  52. package/commands/gsd/gsd-update.md +37 -0
  53. package/commands/gsd/gsd-verify-work.md +38 -0
  54. package/get-shit-done/bin/gsd-tools.cjs +553 -0
  55. package/get-shit-done/bin/gsd-tools.test.cjs +2346 -0
  56. package/get-shit-done/bin/lib/commands.cjs +556 -0
  57. package/get-shit-done/bin/lib/config.cjs +162 -0
  58. package/get-shit-done/bin/lib/core.cjs +377 -0
  59. package/get-shit-done/bin/lib/frontmatter.cjs +299 -0
  60. package/get-shit-done/bin/lib/init.cjs +694 -0
  61. package/get-shit-done/bin/lib/milestone.cjs +215 -0
  62. package/get-shit-done/bin/lib/phase.cjs +877 -0
  63. package/get-shit-done/bin/lib/roadmap.cjs +298 -0
  64. package/get-shit-done/bin/lib/state.cjs +490 -0
  65. package/get-shit-done/bin/lib/template.cjs +222 -0
  66. package/get-shit-done/bin/lib/verify.cjs +772 -0
  67. package/get-shit-done/references/checkpoints.md +62 -364
  68. package/get-shit-done/references/decimal-phase-calculation.md +65 -0
  69. package/get-shit-done/references/git-integration.md +10 -16
  70. package/get-shit-done/references/git-planning-commit.md +38 -0
  71. package/get-shit-done/references/model-profile-resolution.md +34 -0
  72. package/get-shit-done/references/model-profiles.md +54 -66
  73. package/get-shit-done/references/phase-argument-parsing.md +61 -0
  74. package/get-shit-done/references/planning-config.md +112 -10
  75. package/get-shit-done/references/questioning.md +4 -0
  76. package/get-shit-done/references/ui-brand.md +1 -1
  77. package/get-shit-done/templates/UAT.md +1 -1
  78. package/get-shit-done/templates/VALIDATION.md +104 -0
  79. package/get-shit-done/templates/codebase/structure.md +6 -6
  80. package/get-shit-done/templates/config.json +37 -0
  81. package/get-shit-done/templates/context.md +2 -10
  82. package/get-shit-done/templates/continue-here.md +6 -6
  83. package/get-shit-done/templates/debug-subagent-prompt.md +2 -2
  84. package/get-shit-done/templates/discovery.md +6 -6
  85. package/get-shit-done/templates/milestone-archive.md +3 -3
  86. package/get-shit-done/templates/phase-prompt.md +9 -7
  87. package/get-shit-done/templates/planner-subagent-prompt.md +6 -6
  88. package/get-shit-done/templates/research-project/ARCHITECTURE.md +1 -1
  89. package/get-shit-done/templates/research.md +29 -6
  90. package/get-shit-done/templates/roadmap.md +1 -1
  91. package/get-shit-done/templates/state.md +0 -30
  92. package/get-shit-done/templates/summary-complex.md +59 -0
  93. package/get-shit-done/templates/summary-minimal.md +41 -0
  94. package/get-shit-done/templates/summary-standard.md +48 -0
  95. package/get-shit-done/templates/summary.md +16 -37
  96. package/get-shit-done/templates/user-setup.md +1 -13
  97. package/get-shit-done/templates/verification-report.md +5 -5
  98. package/get-shit-done/workflows/add-phase.md +111 -0
  99. package/{commands/gsd → get-shit-done/workflows}/add-todo.md +24 -60
  100. package/{commands/gsd → get-shit-done/workflows}/audit-milestone.md +83 -63
  101. package/{commands/gsd → get-shit-done/workflows}/check-todos.md +21 -73
  102. package/get-shit-done/workflows/cleanup.md +152 -0
  103. package/get-shit-done/workflows/complete-milestone.md +251 -312
  104. package/get-shit-done/workflows/diagnose-issues.md +6 -31
  105. package/get-shit-done/workflows/discovery-phase.md +11 -11
  106. package/get-shit-done/workflows/discuss-phase.md +156 -49
  107. package/get-shit-done/workflows/execute-phase.md +238 -396
  108. package/get-shit-done/workflows/execute-plan.md +180 -1609
  109. package/get-shit-done/workflows/health.md +156 -0
  110. package/{commands/gsd → get-shit-done/workflows}/help.md +33 -35
  111. package/get-shit-done/workflows/insert-phase.md +129 -0
  112. package/get-shit-done/workflows/list-phase-assumptions.md +3 -3
  113. package/get-shit-done/workflows/map-codebase.md +73 -80
  114. package/get-shit-done/workflows/new-milestone.md +382 -0
  115. package/{commands/gsd → get-shit-done/workflows}/new-project.md +281 -234
  116. package/get-shit-done/workflows/oc-set-profile.md +320 -0
  117. package/{commands/gsd → get-shit-done/workflows}/pause-work.md +31 -43
  118. package/{commands/gsd → get-shit-done/workflows}/plan-milestone-gaps.md +29 -50
  119. package/get-shit-done/workflows/plan-phase.md +478 -0
  120. package/{commands/gsd → get-shit-done/workflows}/progress.md +64 -47
  121. package/get-shit-done/workflows/quick.md +453 -0
  122. package/get-shit-done/workflows/remove-phase.md +154 -0
  123. package/get-shit-done/workflows/research-phase.md +73 -0
  124. package/get-shit-done/workflows/resume-project.md +17 -26
  125. package/get-shit-done/workflows/set-profile.md +80 -0
  126. package/get-shit-done/workflows/settings.md +213 -0
  127. package/get-shit-done/workflows/transition.md +84 -104
  128. package/{commands/gsd → get-shit-done/workflows}/update.md +70 -28
  129. package/get-shit-done/workflows/verify-phase.md +106 -492
  130. package/get-shit-done/workflows/verify-work.md +26 -53
  131. package/package.json +7 -4
  132. package/rules/gsd-oc-work-hard.md +36 -0
  133. package/skills/gsd-oc-select-model/SKILL.md +348 -0
  134. package/skills/gsd-oc-select-model/scripts/select-models.cjs +268 -0
  135. package/agents/gsd-set-model.md +0 -287
  136. package/agents/gsd-set-profile.md +0 -239
  137. package/agents/gsd-settings.md +0 -749
  138. package/bin/install.js +0 -323
  139. package/commands/gsd/add-phase.md +0 -207
  140. package/commands/gsd/execute-phase.md +0 -339
  141. package/commands/gsd/insert-phase.md +0 -227
  142. package/commands/gsd/new-milestone.md +0 -721
  143. package/commands/gsd/plan-phase.md +0 -525
  144. package/commands/gsd/quick.md +0 -309
  145. package/commands/gsd/remove-phase.md +0 -349
  146. package/commands/gsd/set-model.md +0 -77
  147. package/commands/gsd/set-profile.md +0 -46
  148. package/commands/gsd/settings.md +0 -33
  149. package/commands/gsd/verify-work.md +0 -219
  150. package/commands/gsd/whats-new.md +0 -124
  151. /package/{src → bin/dm/src}/commands/check.js +0 -0
  152. /package/{src → bin/dm/src}/commands/config.js +0 -0
  153. /package/{src → bin/dm/src}/commands/list.js +0 -0
  154. /package/{src → bin/dm/src}/commands/repair.js +0 -0
  155. /package/{src → bin/dm/src}/commands/update.js +0 -0
  156. /package/{src → bin/dm/src}/services/manifest-manager.js +0 -0
  157. /package/{src → bin/dm/src}/services/migration-service.js +0 -0
  158. /package/{src → bin/dm/src}/services/scope-manager.js +0 -0
  159. /package/{src → bin/dm/src}/services/structure-detector.js +0 -0
  160. /package/{src → bin/dm/src}/utils/hash.js +0 -0
  161. /package/{src → bin/dm/src}/utils/interactive.js +0 -0
  162. /package/{src → bin/dm/src}/utils/logger.js +0 -0
  163. /package/{src → bin/dm/src}/utils/npm-registry.js +0 -0
  164. /package/{src → bin/dm/src}/utils/path-resolver.js +0 -0
@@ -0,0 +1,48 @@
1
+ ---
2
+ phase: XX-name
3
+ plan: YY
4
+ subsystem: [primary category]
5
+ tags: [searchable tech]
6
+ provides:
7
+ - [bullet list of what was built/delivered]
8
+ affects: [list of phase names or keywords]
9
+ tech-stack:
10
+ added: [libraries/tools]
11
+ patterns: [architectural/code patterns]
12
+ key-files:
13
+ created: [important files created]
14
+ modified: [important files modified]
15
+ key-decisions:
16
+ - "Decision 1"
17
+ duration: Xmin
18
+ completed: YYYY-MM-DD
19
+ ---
20
+
21
+ # Phase [X]: [Name] Summary
22
+
23
+ **[Substantive one-liner describing outcome]**
24
+
25
+ ## Performance
26
+ - **Duration:** [time]
27
+ - **Tasks:** [count completed]
28
+ - **Files modified:** [count]
29
+
30
+ ## Accomplishments
31
+ - [Key outcome 1]
32
+ - [Key outcome 2]
33
+
34
+ ## task Commits
35
+ 1. **task 1: [task name]** - `hash`
36
+ 2. **task 2: [task name]** - `hash`
37
+ 3. **task 3: [task name]** - `hash`
38
+
39
+ ## Files Created/Modified
40
+ - `path/to/file.ts` - What it does
41
+ - `path/to/another.ts` - What it does
42
+
43
+ ## Decisions & Deviations
44
+ [Key decisions or "None - followed plan as specified"]
45
+ [Minor deviations if any, or "None"]
46
+
47
+ ## Next Phase Readiness
48
+ [What's ready for next phase]
@@ -38,6 +38,8 @@ patterns-established:
38
38
  - "Pattern 1: description"
39
39
  - "Pattern 2: description"
40
40
 
41
+ requirements-completed: [] # REQUIRED — Copy ALL requirement IDs from this plan's `requirements` frontmatter field.
42
+
41
43
  # Metrics
42
44
  duration: Xmin
43
45
  completed: YYYY-MM-DD
@@ -60,13 +62,13 @@ completed: YYYY-MM-DD
60
62
  - [Second key accomplishment]
61
63
  - [Third if applicable]
62
64
 
63
- ## Task Commits
65
+ ## task Commits
64
66
 
65
67
  Each task was committed atomically:
66
68
 
67
- 1. **Task 1: [task name]** - `abc123f` (feat/fix/test/refactor)
68
- 2. **Task 2: [task name]** - `def456g` (feat/fix/test/refactor)
69
- 3. **Task 3: [task name]** - `hij789k` (feat/fix/test/refactor)
69
+ 1. **task 1: [task name]** - `abc123f` (feat/fix/test/refactor)
70
+ 2. **task 2: [task name]** - `def456g` (feat/fix/test/refactor)
71
+ 3. **task 3: [task name]** - `hij789k` (feat/fix/test/refactor)
70
72
 
71
73
  **Plan metadata:** `lmn012o` (docs: complete plan)
72
74
 
@@ -88,7 +90,7 @@ _Note: TDD tasks may have multiple commits (test → feat → refactor)_
88
90
  ### Auto-fixed Issues
89
91
 
90
92
  **1. [Rule X - Category] Brief description**
91
- - **Found during:** Task [N] ([task name])
93
+ - **Found during:** task [N] ([task name])
92
94
  - **Issue:** [What was wrong]
93
95
  - **Fix:** [What was done]
94
96
  - **Files modified:** [file paths]
@@ -199,20 +201,20 @@ The one-liner should tell someone what actually shipped.
199
201
  ### Auto-fixed Issues
200
202
 
201
203
  **1. [Rule 2 - Missing Critical] Added password hashing with bcrypt**
202
- - **Found during:** Task 2 (Login endpoint implementation)
204
+ - **Found during:** task 2 (Login endpoint implementation)
203
205
  - **Issue:** Plan didn't specify password hashing - storing plaintext would be critical security flaw
204
206
  - **Fix:** Added bcrypt hashing on registration, comparison on login with salt rounds 10
205
207
  - **Files modified:** src/app/api/auth/login/route.ts, src/lib/auth.ts
206
208
  - **Verification:** Password hash test passes, plaintext never stored
207
- - **Committed in:** abc123f (Task 2 commit)
209
+ - **Committed in:** abc123f (task 2 commit)
208
210
 
209
211
  **2. [Rule 3 - Blocking] Installed missing jose dependency**
210
- - **Found during:** Task 4 (JWT token generation)
212
+ - **Found during:** task 4 (JWT token generation)
211
213
  - **Issue:** jose package not in package.json, import failing
212
214
  - **Fix:** Ran `npm install jose`
213
215
  - **Files modified:** package.json, package-lock.json
214
216
  - **Verification:** Import succeeds, build passes
215
- - **Committed in:** def456g (Task 4 commit)
217
+ - **Committed in:** def456g (task 4 commit)
216
218
 
217
219
  ---
218
220
 
@@ -233,37 +235,14 @@ The one-liner should tell someone what actually shipped.
233
235
  </example>
234
236
 
235
237
  <guidelines>
236
- **When to create:**
237
- - After completing each phase plan
238
- - Required output from execute-plan workflow
239
- - Documents what actually happened vs what was planned
240
-
241
- **Frontmatter completion:**
242
- - MANDATORY: Complete all frontmatter fields during summary creation
243
- - See <frontmatter_guidance> for field purposes
244
- - Frontmatter enables automatic context assembly for future planning
245
-
246
- **One-liner requirements:**
247
- - Must be substantive (describe what shipped, not "phase complete")
248
- - Should tell someone what was accomplished
249
- - Examples: "JWT auth with refresh rotation using jose library" not "Authentication implemented"
250
-
251
- **Performance tracking:**
252
- - Include duration, start/end timestamps
253
- - Used for velocity metrics in STATE.md
254
-
255
- **Deviations section:**
256
- - Documents unplanned work handled via deviation rules
257
- - Separate from "Issues Encountered" (which is planned work problems)
258
- - Auto-fixed issues: What was wrong, how fixed, verification
238
+ **Frontmatter:** MANDATORY - complete all fields. Enables automatic context assembly for future planning.
239
+
240
+ **One-liner:** Must be substantive. "JWT auth with refresh rotation using jose library" not "Authentication implemented".
259
241
 
260
242
  **Decisions section:**
261
- - Key decisions made during execution
262
- - Include rationale (why this choice)
243
+ - Key decisions made during execution with rationale
263
244
  - Extracted to STATE.md accumulated context
264
245
  - Use "None - followed plan as specified" if no deviations
265
246
 
266
- **After creation:**
267
- - STATE.md updated with position, decisions, issues
268
- - Next plan can reference decisions made
247
+ **After creation:** STATE.md updated with position, decisions, issues.
269
248
  </guidelines>
@@ -304,20 +304,8 @@ curl -X POST http://localhost:3000/api/test-email \
304
304
 
305
305
  ## Guidelines
306
306
 
307
- **Include in USER-SETUP.md:**
308
- - Environment variable names and where to find values
309
- - Account creation URLs (if new service)
310
- - Dashboard configuration steps
311
- - Verification commands to confirm setup works
312
- - Local development alternatives (e.g., `stripe listen`)
313
-
314
- **Do NOT include:**
315
- - Actual secret values (never)
316
- - Steps OpenCode can automate (package installs, code changes, file creation)
317
- - Generic instructions ("set up your environment")
307
+ **Never include:** Actual secret values. Steps OpenCode can automate (package installs, code changes).
318
308
 
319
309
  **Naming:** `{phase}-USER-SETUP.md` matches the phase number pattern.
320
-
321
310
  **Status tracking:** User marks checkboxes and updates status line when complete.
322
-
323
311
  **Searchability:** `grep -r "USER-SETUP" .planning/` finds all phases with user requirements.
@@ -1,6 +1,6 @@
1
1
  # Verification Report Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-VERIFICATION.md` — phase goal verification results.
3
+ Template for `.planning/phases/XX-name/{phase_num}-VERIFICATION.md` — phase goal verification results.
4
4
 
5
5
  ---
6
6
 
@@ -124,8 +124,8 @@ None — all verifiable items checked programmatically.
124
124
  **Objective:** {What this fixes}
125
125
 
126
126
  **Tasks:**
127
- 1. {Task to fix gap 1}
128
- 2. {Task to fix gap 2}
127
+ 1. {task to fix gap 1}
128
+ 2. {task to fix gap 2}
129
129
  3. {Verification task}
130
130
 
131
131
  **Estimated scope:** {Small / Medium}
@@ -137,8 +137,8 @@ None — all verifiable items checked programmatically.
137
137
  **Objective:** {What this fixes}
138
138
 
139
139
  **Tasks:**
140
- 1. {Task}
141
- 2. {Task}
140
+ 1. {task}
141
+ 2. {task}
142
142
 
143
143
  **Estimated scope:** {Small / Medium}
144
144
 
@@ -0,0 +1,111 @@
1
+ <purpose>
2
+ Add a new integer phase to the end of the current milestone in the roadmap. Automatically calculates next phase number, creates phase directory, and updates roadmap structure.
3
+ </purpose>
4
+
5
+ <required_reading>
6
+ read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
8
+
9
+ <process>
10
+
11
+ <step name="parse_arguments">
12
+ Parse the command arguments:
13
+ - $ARGUMENTS become the phase description
14
+ - Example: `/gsd-add-phase Add authentication` → description = "Add authentication"
15
+ - Example: `/gsd-add-phase Fix critical performance issues` → description = "Fix critical performance issues"
16
+
17
+ If no arguments provided:
18
+
19
+ ```
20
+ ERROR: Phase description required
21
+ Usage: /gsd-add-phase <description>
22
+ Example: /gsd-add-phase Add authentication system
23
+ ```
24
+
25
+ Exit.
26
+ </step>
27
+
28
+ <step name="init_context">
29
+ Load phase operation context:
30
+
31
+ ```bash
32
+ INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init phase-op "0")
33
+ ```
34
+
35
+ Check `roadmap_exists` from init JSON. If false:
36
+ ```
37
+ ERROR: No roadmap found (.planning/ROADMAP.md)
38
+ Run /gsd-new-project to initialize.
39
+ ```
40
+ Exit.
41
+ </step>
42
+
43
+ <step name="add_phase">
44
+ **Delegate the phase addition to gsd-tools:**
45
+
46
+ ```bash
47
+ RESULT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs phase add "${description}")
48
+ ```
49
+
50
+ The CLI handles:
51
+ - Finding the highest existing integer phase number
52
+ - Calculating next phase number (max + 1)
53
+ - Generating slug from description
54
+ - Creating the phase directory (`.planning/phases/{NN}-{slug}/`)
55
+ - Inserting the phase entry into ROADMAP.md with Goal, Depends on, and Plans sections
56
+
57
+ Extract from result: `phase_number`, `padded`, `name`, `slug`, `directory`.
58
+ </step>
59
+
60
+ <step name="update_project_state">
61
+ Update STATE.md to reflect the new phase:
62
+
63
+ 1. read `.planning/STATE.md`
64
+ 2. Under "## Accumulated Context" → "### Roadmap Evolution" add entry:
65
+ ```
66
+ - Phase {N} added: {description}
67
+ ```
68
+
69
+ If "Roadmap Evolution" section doesn't exist, create it.
70
+ </step>
71
+
72
+ <step name="completion">
73
+ Present completion summary:
74
+
75
+ ```
76
+ Phase {N} added to current milestone:
77
+ - Description: {description}
78
+ - Directory: .planning/phases/{phase-num}-{slug}/
79
+ - Status: Not planned yet
80
+
81
+ Roadmap updated: .planning/ROADMAP.md
82
+
83
+ ---
84
+
85
+ ## ▶ Next Up
86
+
87
+ **Phase {N}: {description}**
88
+
89
+ `/gsd-plan-phase {N}`
90
+
91
+ *`/new` first → fresh context window*
92
+
93
+ ---
94
+
95
+ **Also available:**
96
+ - `/gsd-add-phase <description>` — add another phase
97
+ - Review roadmap
98
+
99
+ ---
100
+ ```
101
+ </step>
102
+
103
+ </process>
104
+
105
+ <success_criteria>
106
+ - [ ] `gsd-tools phase add` executed successfully
107
+ - [ ] Phase directory created
108
+ - [ ] Roadmap updated with new phase entry
109
+ - [ ] STATE.md updated with roadmap evolution note
110
+ - [ ] User informed of next steps
111
+ </success_criteria>
@@ -1,38 +1,28 @@
1
- ---
2
- name: gsd-add-todo
3
- description: Capture idea or task as todo from current conversation context
4
- argument-hint: [optional description]
5
- tools:
6
- - read
7
- - write
8
- - bash
9
- - glob
10
- ---
11
-
12
- <objective>
13
- Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work.
1
+ <purpose>
2
+ Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
3
+ </purpose>
14
4
 
15
- Enables "thought → capture → continue" flow without losing context or derailing current work.
16
- </objective>
17
-
18
- <context>
19
- @.planning/STATE.md
20
- </context>
5
+ <required_reading>
6
+ read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
21
8
 
22
9
  <process>
23
10
 
24
- <step name="ensure_directory">
11
+ <step name="init_context">
12
+ Load todo context:
13
+
25
14
  ```bash
26
- mkdir -p .planning/todos/pending .planning/todos/done
15
+ INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init todos)
27
16
  ```
28
- </step>
29
17
 
30
- <step name="check_existing_areas">
18
+ Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
19
+
20
+ Ensure directories exist:
31
21
  ```bash
32
- ls .planning/todos/pending/*.md 2>/dev/null | xargs -I {} grep "^area:" {} 2>/dev/null | cut -d' ' -f2 | sort -u
22
+ mkdir -p .planning/todos/pending .planning/todos/done
33
23
  ```
34
24
 
35
- Note existing areas for consistency in infer_area step.
25
+ Note existing areas from the todos array for consistency in infer_area step.
36
26
  </step>
37
27
 
38
28
  <step name="extract_content">
@@ -71,6 +61,7 @@ Use existing area from step 2 if similar match exists.
71
61
 
72
62
  <step name="check_duplicates">
73
63
  ```bash
64
+ # Search for key words from title in existing todos
74
65
  grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null
75
66
  ```
76
67
 
@@ -88,14 +79,14 @@ If overlapping, use question:
88
79
  </step>
89
80
 
90
81
  <step name="create_file">
82
+ Use values from init context: `timestamp` and `date` are already available.
83
+
84
+ Generate slug for the title:
91
85
  ```bash
92
- timestamp=$(date "+%Y-%m-%dT%H:%M")
93
- date_prefix=$(date "+%Y-%m-%d")
86
+ slug=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs generate-slug "$title" --raw)
94
87
  ```
95
88
 
96
- Generate slug from title (lowercase, hyphens, no special chars).
97
-
98
- write to `.planning/todos/pending/${date_prefix}-${slug}.md`:
89
+ write to `.planning/todos/pending/${date}-${slug}.md`:
99
90
 
100
91
  ```markdown
101
92
  ---
@@ -119,34 +110,18 @@ files:
119
110
  <step name="update_state">
120
111
  If `.planning/STATE.md` exists:
121
112
 
122
- 1. Count todos: `ls .planning/todos/pending/*.md 2>/dev/null | wc -l`
113
+ 1. Use `todo_count` from init context (or re-run `init todos` if count changed)
123
114
  2. Update "### Pending Todos" under "## Accumulated Context"
124
115
  </step>
125
116
 
126
117
  <step name="git_commit">
127
118
  Commit the todo and any updated state:
128
119
 
129
- **Check planning config:**
130
-
131
120
  ```bash
132
- COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
133
- git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
121
+ node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
134
122
  ```
135
123
 
136
- **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Todo saved (not committed - commit_docs: false)"
137
-
138
- **If `COMMIT_PLANNING_DOCS=true` (default):**
139
-
140
- ```bash
141
- git add .planning/todos/pending/[filename]
142
- [ -f .planning/STATE.md ] && git add .planning/STATE.md
143
- git commit -m "$(cat <<'EOF'
144
- docs: capture todo - [title]
145
-
146
- Area: [area]
147
- EOF
148
- )"
149
- ```
124
+ Tool respects `commit_docs` config and gitignore automatically.
150
125
 
151
126
  Confirm: "Committed: docs: capture todo - [title]"
152
127
  </step>
@@ -171,17 +146,6 @@ Would you like to:
171
146
 
172
147
  </process>
173
148
 
174
- <output>
175
- - `.planning/todos/pending/[date]-[slug].md`
176
- - Updated `.planning/STATE.md` (if exists)
177
- </output>
178
-
179
- <anti_patterns>
180
- - Don't create todos for work in current plan (that's deviation rule territory)
181
- - Don't create elaborate solution sections — captures ideas, not plans
182
- - Don't block on missing information — "TBD" is fine
183
- </anti_patterns>
184
-
185
149
  <success_criteria>
186
150
  - [ ] Directory structure exists
187
151
  - [ ] Todo file created with valid frontmatter
@@ -1,67 +1,31 @@
1
- ---
2
- name: gsd-audit-milestone
3
- description: Audit milestone completion against original intent before archiving
4
- argument-hint: "[version]"
5
- tools:
6
- - read
7
- - glob
8
- - grep
9
- - bash
10
-
11
- - write
12
- ---
13
-
14
- <objective>
15
- Verify milestone achieved its definition of done. Check requirements coverage, cross-phase integration, and end-to-end flows.
16
-
17
- **This command IS the orchestrator.** Reads existing VERIFICATION.md files (phases already verified during execute-phase), aggregates tech debt and deferred gaps, then spawns integration checker for cross-phase wiring.
18
- </objective>
19
-
20
- <execution_context>
21
- <!-- Spawns gsd-integration-checker agent which has all audit expertise baked in -->
22
- </execution_context>
23
-
24
- <context>
25
- Version: `$ARGUMENTS` (optional — defaults to current milestone)
26
-
27
- **Original Intent:**
28
- @.planning/PROJECT.md
29
- @.planning/REQUIREMENTS.md
30
-
31
- **Planned Work:**
32
- @.planning/ROADMAP.md
33
- @.planning/config.json (if exists)
1
+ <purpose>
2
+ Verify milestone achieved its definition of done by aggregating phase verifications, checking cross-phase integration, and assessing requirements coverage. Reads existing VERIFICATION.md files (phases already verified during execute-phase), aggregates tech debt and deferred gaps, then spawns integration checker for cross-phase wiring.
3
+ </purpose>
34
4
 
35
- **Completed Work:**
36
- glob: .planning/phases/*/*-SUMMARY.md
37
- glob: .planning/phases/*/*-VERIFICATION.md
38
- </context>
5
+ <required_reading>
6
+ read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
39
8
 
40
9
  <process>
41
10
 
42
- ## 0. Resolve Model Profile
43
-
44
- read model profile for agent spawning:
11
+ ## 0. Initialize Milestone Context
45
12
 
46
13
  ```bash
47
- MODEL_PROFILE=$(cat .planning/config.json 2>/dev/null | grep -o '"model_profile"[[:space:]]*:[[:space:]]*"[^"]*"' | grep -o '"[^"]*"$' | tr -d '"' || echo "balanced")
14
+ INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init milestone-op)
48
15
  ```
49
16
 
50
- Default to "balanced" if not set.
51
-
52
- **Model lookup table:**
17
+ Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
53
18
 
54
- | Agent | quality | balanced | budget |
55
- |-------|---------|----------|--------|
56
- | gsd-integration-checker | sonnet | sonnet | haiku |
57
-
58
- Store resolved model for use in Task call below.
19
+ Resolve integration checker model:
20
+ ```bash
21
+ CHECKER_MODEL=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs resolve-model gsd-integration-checker --raw)
22
+ ```
59
23
 
60
24
  ## 1. Determine Milestone Scope
61
25
 
62
26
  ```bash
63
- # Get phases in milestone
64
- ls -d .planning/phases/*/ | sort -V
27
+ # Get phases in milestone (sorted numerically, handles decimals)
28
+ node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs phases list
65
29
  ```
66
30
 
67
31
  - Parse version from arguments or detect current from ROADMAP.md
@@ -74,9 +38,10 @@ ls -d .planning/phases/*/ | sort -V
74
38
  For each phase directory, read the VERIFICATION.md:
75
39
 
76
40
  ```bash
77
- cat .planning/phases/01-*/*-VERIFICATION.md
78
- cat .planning/phases/02-*/*-VERIFICATION.md
79
- # etc.
41
+ # For each phase, use find-phase to resolve the directory (handles archived phases)
42
+ PHASE_INFO=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs find-phase 01 --raw)
43
+ # Extract directory from JSON, then read VERIFICATION.md from that directory
44
+ # Repeat for each phase number from ROADMAP.md
80
45
  ```
81
46
 
82
47
  From each VERIFICATION.md, extract:
@@ -92,14 +57,21 @@ If a phase is missing VERIFICATION.md, flag it as "unverified phase" — this is
92
57
 
93
58
  With phase context collected:
94
59
 
60
+ Extract `MILESTONE_REQ_IDS` from REQUIREMENTS.md traceability table — all REQ-IDs assigned to phases in this milestone.
61
+
95
62
  ```
96
- Task(
63
+ task(
97
64
  prompt="Check cross-phase integration and E2E flows.
98
65
 
99
66
  Phases: {phase_dirs}
100
67
  Phase exports: {from SUMMARYs}
101
68
  API routes: {routes created}
102
69
 
70
+ Milestone Requirements:
71
+ {MILESTONE_REQ_IDS — list each REQ-ID with description and assigned phase}
72
+
73
+ MUST map each integration finding to affected requirement IDs where applicable.
74
+
103
75
  Verify cross-phase wiring and E2E user flows.",
104
76
  subagent_type="gsd-integration-checker",
105
77
  model="{integration_checker_model}"
@@ -112,12 +84,48 @@ Combine:
112
84
  - Phase-level gaps and tech debt (from step 2)
113
85
  - Integration checker's report (wiring gaps, broken flows)
114
86
 
115
- ## 5. Check Requirements Coverage
87
+ ## 5. Check Requirements Coverage (3-Source Cross-Reference)
88
+
89
+ MUST cross-reference three independent sources for each requirement:
90
+
91
+ ### 5a. Parse REQUIREMENTS.md Traceability Table
92
+
93
+ Extract all REQ-IDs mapped to milestone phases from the traceability table:
94
+ - Requirement ID, description, assigned phase, current status, checked-off state (`[x]` vs `[ ]`)
95
+
96
+ ### 5b. Parse Phase VERIFICATION.md Requirements Tables
97
+
98
+ For each phase's VERIFICATION.md, extract the expanded requirements table:
99
+ - Requirement | Source Plan | Description | Status | Evidence
100
+ - Map each entry back to its REQ-ID
101
+
102
+ ### 5c. Extract SUMMARY.md Frontmatter Cross-Check
103
+
104
+ For each phase's SUMMARY.md, extract `requirements-completed` from YAML frontmatter:
105
+ ```bash
106
+ for summary in .planning/phases/*-*/*-SUMMARY.md; do
107
+ node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs summary-extract "$summary" --fields requirements_completed | jq -r '.requirements_completed'
108
+ done
109
+ ```
110
+
111
+ ### 5d. Status Determination Matrix
112
+
113
+ For each REQ-ID, determine status using all three sources:
114
+
115
+ | VERIFICATION.md Status | SUMMARY Frontmatter | REQUIREMENTS.md | → Final Status |
116
+ |------------------------|---------------------|-----------------|----------------|
117
+ | passed | listed | `[x]` | **satisfied** |
118
+ | passed | listed | `[ ]` | **satisfied** (update checkbox) |
119
+ | passed | missing | any | **partial** (verify manually) |
120
+ | gaps_found | any | any | **unsatisfied** |
121
+ | missing | listed | any | **partial** (verification gap) |
122
+ | missing | missing | any | **unsatisfied** |
123
+
124
+ ### 5e. FAIL Gate and Orphan Detection
125
+
126
+ **REQUIRED:** Any `unsatisfied` requirement MUST force `gaps_found` status on the milestone audit.
116
127
 
117
- For each requirement in REQUIREMENTS.md mapped to this milestone:
118
- - Find owning phase
119
- - Check phase verification status
120
- - Determine: satisfied | partial | unsatisfied
128
+ **Orphan detection:** Requirements present in REQUIREMENTS.md traceability table but absent from ALL phase VERIFICATION.md files MUST be flagged as orphaned. Orphaned requirements are treated as `unsatisfied` — they were assigned but never verified by any phase.
121
129
 
122
130
  ## 6. Aggregate into v{version}-MILESTONE-AUDIT.md
123
131
 
@@ -134,7 +142,14 @@ scores:
134
142
  integration: N/M
135
143
  flows: N/M
136
144
  gaps: # Critical blockers
137
- requirements: [...]
145
+ requirements:
146
+ - id: "{REQ-ID}"
147
+ status: "unsatisfied | partial | orphaned"
148
+ phase: "{assigned phase}"
149
+ claimed_by_plans: ["{plan files that reference this requirement}"]
150
+ completed_by_plans: ["{plan files whose SUMMARY marks it complete}"]
151
+ verification_status: "passed | gaps_found | missing | orphaned"
152
+ evidence: "{specific evidence or lack thereof}"
138
153
  integration: [...]
139
154
  flows: [...]
140
155
  tech_debt: # Non-critical, deferred
@@ -270,8 +285,13 @@ All requirements met. No critical blockers. Accumulated tech debt needs review.
270
285
  <success_criteria>
271
286
  - [ ] Milestone scope identified
272
287
  - [ ] All phase VERIFICATION.md files read
288
+ - [ ] SUMMARY.md `requirements-completed` frontmatter extracted for each phase
289
+ - [ ] REQUIREMENTS.md traceability table parsed for all milestone REQ-IDs
290
+ - [ ] 3-source cross-reference completed (VERIFICATION + SUMMARY + traceability)
291
+ - [ ] Orphaned requirements detected (in traceability but absent from all VERIFICATIONs)
273
292
  - [ ] Tech debt and deferred gaps aggregated
274
- - [ ] Integration checker spawned for cross-phase wiring
275
- - [ ] v{version}-MILESTONE-AUDIT.md created
293
+ - [ ] Integration checker spawned with milestone requirement IDs
294
+ - [ ] v{version}-MILESTONE-AUDIT.md created with structured requirement gap objects
295
+ - [ ] FAIL gate enforced — any unsatisfied requirement forces gaps_found status
276
296
  - [ ] Results presented with actionable next steps
277
297
  </success_criteria>