gsd-opencode 1.10.2 → 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 (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
@@ -1,35 +1,23 @@
1
- ---
2
- name: gsd-check-todos
3
- description: List pending todos and select one to work on
4
- argument-hint: [area filter]
5
- tools:
6
- - read
7
- - write
8
- - bash
9
- - glob
10
- - question
11
- ---
12
-
13
- <objective>
1
+ <purpose>
14
2
  List all pending todos, allow selection, load full context for the selected todo, and route to appropriate action.
3
+ </purpose>
15
4
 
16
- Enables reviewing captured ideas and deciding what to work on next.
17
- </objective>
18
-
19
- <context>
20
- @.planning/STATE.md
21
- @.planning/ROADMAP.md
22
- </context>
5
+ <required_reading>
6
+ read all files referenced by the invoking prompt's execution_context before starting.
7
+ </required_reading>
23
8
 
24
9
  <process>
25
10
 
26
- <step name="check_exist">
11
+ <step name="init_context">
12
+ Load todo context:
13
+
27
14
  ```bash
28
- TODO_COUNT=$(ls .planning/todos/pending/*.md 2>/dev/null | wc -l | tr -d ' ')
29
- echo "Pending todos: $TODO_COUNT"
15
+ INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init todos)
30
16
  ```
31
17
 
32
- If count is 0:
18
+ Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
19
+
20
+ If `todo_count` is 0:
33
21
  ```
34
22
  No pending todos.
35
23
 
@@ -53,16 +41,9 @@ Check for area filter in arguments:
53
41
  </step>
54
42
 
55
43
  <step name="list_todos">
56
- ```bash
57
- for file in .planning/todos/pending/*.md; do
58
- created=$(grep "^created:" "$file" | cut -d' ' -f2)
59
- title=$(grep "^title:" "$file" | cut -d':' -f2- | xargs)
60
- area=$(grep "^area:" "$file" | cut -d' ' -f2)
61
- echo "$created|$title|$area|$file"
62
- done | sort
63
- ```
44
+ Use the `todos` array from init context (already filtered by area if specified).
64
45
 
65
- Apply area filter if specified. Display as numbered list:
46
+ Parse and display as numbered list:
66
47
 
67
48
  ```
68
49
  Pending Todos:
@@ -78,7 +59,7 @@ Reply with a number to view details, or:
78
59
  - `q` to exit
79
60
  ```
80
61
 
81
- Format age as relative time.
62
+ Format age as relative time from created timestamp.
82
63
  </step>
83
64
 
84
65
  <step name="handle_selection">
@@ -109,11 +90,9 @@ If `files` field has entries, read and briefly summarize each.
109
90
  </step>
110
91
 
111
92
  <step name="check_roadmap">
112
- ```bash
113
- ls .planning/ROADMAP.md 2>/dev/null && echo "Roadmap exists"
114
- ```
93
+ Check for roadmap (can use init progress or directly check file existence):
115
94
 
116
- If roadmap exists:
95
+ If `.planning/ROADMAP.md` exists:
117
96
  1. Check if todo's area matches an upcoming phase
118
97
  2. Check if todo's files overlap with a phase's scope
119
98
  3. Note any match for action options
@@ -167,55 +146,24 @@ Return to list_todos step.
167
146
  <step name="update_state">
168
147
  After any action that changes todo count:
169
148
 
170
- ```bash
171
- ls .planning/todos/pending/*.md 2>/dev/null | wc -l
172
- ```
173
-
174
- Update STATE.md "### Pending Todos" section if exists.
149
+ Re-run `init todos` to get updated count, then update STATE.md "### Pending Todos" section if exists.
175
150
  </step>
176
151
 
177
152
  <step name="git_commit">
178
153
  If todo was moved to done/, commit the change:
179
154
 
180
- **Check planning config:**
181
-
182
155
  ```bash
183
- COMMIT_PLANNING_DOCS=$(cat .planning/config.json 2>/dev/null | grep -o '"commit_docs"[[:space:]]*:[[:space:]]*[^,}]*' | grep -o 'true\|false' || echo "true")
184
- git check-ignore -q .planning 2>/dev/null && COMMIT_PLANNING_DOCS=false
185
- ```
186
-
187
- **If `COMMIT_PLANNING_DOCS=false`:** Skip git operations, log "Todo moved (not committed - commit_docs: false)"
188
-
189
- **If `COMMIT_PLANNING_DOCS=true` (default):**
190
-
191
- ```bash
192
- git add .planning/todos/done/[filename]
193
156
  git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
194
- [ -f .planning/STATE.md ] && git add .planning/STATE.md
195
- git commit -m "$(cat <<'EOF'
196
- docs: start work on todo - [title]
197
-
198
- Moved to done/, beginning implementation.
199
- EOF
200
- )"
157
+ node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
201
158
  ```
202
159
 
160
+ Tool respects `commit_docs` config and gitignore automatically.
161
+
203
162
  Confirm: "Committed: docs: start work on todo - [title]"
204
163
  </step>
205
164
 
206
165
  </process>
207
166
 
208
- <output>
209
- - Moved todo to `.planning/todos/done/` (if "Work on it now")
210
- - Updated `.planning/STATE.md` (if todo count changed)
211
- </output>
212
-
213
- <anti_patterns>
214
- - Don't delete todos — move to done/ when work begins
215
- - Don't start work without moving to done/ first
216
- - Don't create plans from this command — route to /gsd-plan-phase or /gsd-add-phase
217
- </anti_patterns>
218
-
219
167
  <success_criteria>
220
168
  - [ ] All pending todos listed with title, area, age
221
169
  - [ ] Area filter applied if specified
@@ -0,0 +1,152 @@
1
+ <purpose>
2
+
3
+ Archive accumulated phase directories from completed milestones into `.planning/milestones/v{X.Y}-phases/`. Identifies which phases belong to each completed milestone, shows a dry-run summary, and moves directories on confirmation.
4
+
5
+ </purpose>
6
+
7
+ <required_reading>
8
+
9
+ 1. `.planning/MILESTONES.md`
10
+ 2. `.planning/milestones/` directory listing
11
+ 3. `.planning/phases/` directory listing
12
+
13
+ </required_reading>
14
+
15
+ <process>
16
+
17
+ <step name="identify_completed_milestones">
18
+
19
+ read `.planning/MILESTONES.md` to identify completed milestones and their versions.
20
+
21
+ ```bash
22
+ cat .planning/MILESTONES.md
23
+ ```
24
+
25
+ Extract each milestone version (e.g., v1.0, v1.1, v2.0).
26
+
27
+ Check which milestone archive dirs already exist:
28
+
29
+ ```bash
30
+ ls -d .planning/milestones/v*-phases 2>/dev/null
31
+ ```
32
+
33
+ Filter to milestones that do NOT already have a `-phases` archive directory.
34
+
35
+ If all milestones already have phase archives:
36
+
37
+ ```
38
+ All completed milestones already have phase directories archived. Nothing to clean up.
39
+ ```
40
+
41
+ Stop here.
42
+
43
+ </step>
44
+
45
+ <step name="determine_phase_membership">
46
+
47
+ For each completed milestone without a `-phases` archive, read the archived ROADMAP snapshot to determine which phases belong to it:
48
+
49
+ ```bash
50
+ cat .planning/milestones/v{X.Y}-ROADMAP.md
51
+ ```
52
+
53
+ Extract phase numbers and names from the archived roadmap (e.g., Phase 1: Foundation, Phase 2: Auth).
54
+
55
+ Check which of those phase directories still exist in `.planning/phases/`:
56
+
57
+ ```bash
58
+ ls -d .planning/phases/*/ 2>/dev/null
59
+ ```
60
+
61
+ Match phase directories to milestone membership. Only include directories that still exist in `.planning/phases/`.
62
+
63
+ </step>
64
+
65
+ <step name="show_dry_run">
66
+
67
+ Present a dry-run summary for each milestone:
68
+
69
+ ```
70
+ ## Cleanup Summary
71
+
72
+ ### v{X.Y} — {Milestone Name}
73
+ These phase directories will be archived:
74
+ - 01-foundation/
75
+ - 02-auth/
76
+ - 03-core-features/
77
+
78
+ Destination: .planning/milestones/v{X.Y}-phases/
79
+
80
+ ### v{X.Z} — {Milestone Name}
81
+ These phase directories will be archived:
82
+ - 04-security/
83
+ - 05-hardening/
84
+
85
+ Destination: .planning/milestones/v{X.Z}-phases/
86
+ ```
87
+
88
+ If no phase directories remain to archive (all already moved or deleted):
89
+
90
+ ```
91
+ No phase directories found to archive. Phases may have been removed or archived previously.
92
+ ```
93
+
94
+ Stop here.
95
+
96
+ question: "Proceed with archiving?" with options: "Yes — archive listed phases" | "Cancel"
97
+
98
+ If "Cancel": Stop.
99
+
100
+ </step>
101
+
102
+ <step name="archive_phases">
103
+
104
+ For each milestone, move phase directories:
105
+
106
+ ```bash
107
+ mkdir -p .planning/milestones/v{X.Y}-phases
108
+ ```
109
+
110
+ For each phase directory belonging to this milestone:
111
+
112
+ ```bash
113
+ mv .planning/phases/{dir} .planning/milestones/v{X.Y}-phases/
114
+ ```
115
+
116
+ Repeat for all milestones in the cleanup set.
117
+
118
+ </step>
119
+
120
+ <step name="commit">
121
+
122
+ Commit the changes:
123
+
124
+ ```bash
125
+ node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/
126
+ ```
127
+
128
+ </step>
129
+
130
+ <step name="report">
131
+
132
+ ```
133
+ Archived:
134
+ {For each milestone}
135
+ - v{X.Y}: {N} phase directories → .planning/milestones/v{X.Y}-phases/
136
+
137
+ .planning/phases/ cleaned up.
138
+ ```
139
+
140
+ </step>
141
+
142
+ </process>
143
+
144
+ <success_criteria>
145
+
146
+ - [ ] All completed milestones without existing phase archives identified
147
+ - [ ] Phase membership determined from archived ROADMAP snapshots
148
+ - [ ] Dry-run summary shown and user confirmed
149
+ - [ ] Phase directories moved to `.planning/milestones/v{X.Y}-phases/`
150
+ - [ ] Changes committed
151
+
152
+ </success_criteria>