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,239 +0,0 @@
1
- ---
2
- name: gsd-set-profile
3
- description: Switch between model profiles with confirmation workflow
4
- tools:
5
- question: true
6
- ---
7
-
8
- <role>
9
- You are executing the `/gsd-set-profile` command. Switch the project's active model profile (quality/balanced/budget) with a clear before/after preview and confirmation workflow.
10
-
11
- This command reads/writes two files:
12
- - `.planning/config.json` — profile state (active_profile, presets, custom_overrides)
13
- - `opencode.json` — agent model assignments (OpenCode's native config)
14
-
15
- Do NOT modify agent .md files. Profile switching updates `opencode.json` in the project root.
16
- </role>
17
-
18
- <context>
19
- **Invocation styles:**
20
-
21
- 1. No args (interactive picker): `/gsd-set-profile`
22
- 2. Positional: `/gsd-set-profile quality` or `balanced` or `budget`
23
- 3. Flags: `--quality` or `-q`, `--balanced` or `-b`, `--budget` or `-u`
24
-
25
- Precedence: Positional > Flags > Interactive picker
26
-
27
- **Stage-to-agent mapping (11 agents):**
28
-
29
- | Stage | Agents |
30
- |--------------|--------|
31
- | Planning | gsd-planner, gsd-plan-checker, gsd-phase-researcher, gsd-roadmapper, gsd-project-researcher, gsd-research-synthesizer, gsd-codebase-mapper |
32
- | Execution | gsd-executor, gsd-debugger |
33
- | Verification | gsd-verifier, gsd-integration-checker, gsd-set-profile, gsd-settings, gsd-set-model |
34
-
35
- **Profile presets:** Defined in `.planning/config.json` (user-configurable via `/gsd-settings`). No hardcoded defaults—presets are discovered dynamically on first run.
36
- </context>
37
-
38
- <behavior>
39
-
40
- ## Step 1: Read config file
41
-
42
- Read `.planning/config.json`. Handle these cases:
43
-
44
- **Case A: File missing or no `profiles.presets` key**
45
- - Print: `Error: No model presets configured. Run /gsd-settings first to set up your profiles.`
46
- - Stop.
47
-
48
- **Case B: File exists with `profiles.presets` key**
49
- - Use as-is
50
-
51
- **Also check `opencode.json`:**
52
- - If missing, it will be created when changes are saved
53
- - If exists, it will be merged (preserve non-agent keys)
54
-
55
- ## Step 2: Compute effective models for current profile
56
-
57
- 1. Get `currentProfile` = `config.profiles.active_profile` (default: "balanced")
58
- 2. Get `preset` = `config.profiles.presets[currentProfile]`
59
- 3. Get `overrides` = `config.profiles.custom_overrides[currentProfile]` (may be undefined)
60
- 4. Compute effective models:
61
- - `planning` = overrides?.planning || preset.planning
62
- - `execution` = overrides?.execution || preset.execution
63
- - `verification` = overrides?.verification || preset.verification
64
-
65
- ## Step 3: Display current state
66
-
67
- Print:
68
-
69
- ```
70
- Active profile: {currentProfile}
71
-
72
- Current configuration:
73
- | Stage | Model |
74
- |--------------|-------|
75
- | planning | {current.planning} |
76
- | execution | {current.execution} |
77
- | verification | {current.verification} |
78
- ```
79
-
80
- ## Step 4: Determine requested profile
81
-
82
- **A) Check for positional argument:**
83
- - If user typed `/gsd-set-profile quality` (or balanced/budget), use that as `newProfile`
84
-
85
- **B) Check for flags:**
86
- - `--quality` or `-q` → quality
87
- - `--balanced` or `-b` → balanced
88
- - `--budget` or `-u` → budget
89
-
90
- **C) Interactive picker (no args/flags):**
91
-
92
- Build options dynamically from `config.profiles.presets`:
93
-
94
- Use Question tool:
95
-
96
- ```
97
- header: "Model profile"
98
- question: "Select a profile"
99
- options:
100
- - label: "Quality"
101
- description: "{preset.quality.planning} / {preset.quality.execution} / {preset.quality.verification}"
102
- - label: "Balanced"
103
- description: "{preset.balanced.planning} / {preset.balanced.execution} / {preset.balanced.verification}"
104
- - label: "Budget"
105
- description: "{preset.budget.planning} / {preset.budget.execution} / {preset.budget.verification}"
106
- - label: "Cancel"
107
- description: "Exit without changes"
108
- ```
109
-
110
- (Substitute actual model IDs from `config.profiles.presets` for each profile.)
111
-
112
- Input rules:
113
- - OpenCode's Question UI may display a "Type your own answer" option.
114
- - For this command, custom/freeform answers are NOT allowed.
115
- - If the user's selection is not exactly one of the option labels, print an error and re-run the same Question prompt.
116
-
117
- If user selects Cancel, print the cancellation message (Step 5) and stop.
118
-
119
- **D) Invalid profile handling:**
120
-
121
- If an invalid profile name is provided:
122
- - Print: `Unknown profile '{name}'. Valid options: quality, balanced, budget`
123
- - Fall back to interactive picker
124
-
125
- ## Step 5: Handle edge cases
126
-
127
- **If user selected Cancel:**
128
- ```
129
- Profile change cancelled. Current profile: {currentProfile}
130
- ```
131
- Stop.
132
-
133
- **If newProfile === currentProfile:**
134
- ```
135
- Profile '{currentProfile}' is already active.
136
- ```
137
- Re-print current configuration table and stop.
138
-
139
- ## Step 5.5: Validate selected models exist in OpenCode
140
-
141
- Before writing any files, validate that the effective models for `newProfile` are actually available in the current OpenCode installation.
142
-
143
- Run:
144
-
145
- ```bash
146
- opencode models
147
- ```
148
-
149
- Parse the output and extract valid model IDs in `provider/model` format.
150
-
151
- Validate that all three effective model IDs exist in that list:
152
-
153
- - `{new.planning}`
154
- - `{new.execution}`
155
- - `{new.verification}`
156
-
157
- If `opencode models` fails, or any model is missing:
158
-
159
- Print an error like:
160
-
161
- ```text
162
- Error: One or more selected models are not available in OpenCode.
163
-
164
- Missing:
165
- - {missingModel1}
166
- - {missingModel2}
167
-
168
- Run `opencode models` to see what is available, then update presets/overrides via /gsd-settings.
169
- ```
170
-
171
- Stop. Do NOT write `.planning/config.json` and do NOT update `opencode.json`.
172
-
173
- ## Step 6: Apply changes
174
-
175
- Use the **write tool directly** to update both files. Do NOT use bash, python, or other scripts—use native file writing.
176
-
177
- 1. **Update .planning/config.json:**
178
-
179
- - Set `config.profiles.active_profile` to `newProfile`
180
- - Also set `config.model_profile` to `newProfile` (for orchestrators that read this key)
181
- - Write the config file (preserve all other keys)
182
-
183
- 2. **Update opencode.json:**
184
-
185
- Build agent config from effective stage models for `newProfile`:
186
-
187
- ```json
188
- {
189
- "$schema": "https://opencode.ai/config.json",
190
- "agent": {
191
- "gsd-planner": { "model": "{new.planning}" },
192
- "gsd-plan-checker": { "model": "{new.planning}" },
193
- "gsd-phase-researcher": { "model": "{new.planning}" },
194
- "gsd-roadmapper": { "model": "{new.planning}" },
195
- "gsd-project-researcher": { "model": "{new.planning}" },
196
- "gsd-research-synthesizer": { "model": "{new.planning}" },
197
- "gsd-codebase-mapper": { "model": "{new.planning}" },
198
- "gsd-executor": { "model": "{new.execution}" },
199
- "gsd-debugger": { "model": "{new.execution}" },
200
- "gsd-verifier": { "model": "{new.verification}" },
201
- "gsd-integration-checker": { "model": "{new.verification}" },
202
- "gsd-set-profile": { "model": "{new.verification}" },
203
- "gsd-settings": { "model": "{new.verification}" },
204
- "gsd-set-model": { "model": "{new.verification}" }
205
- }
206
- }
207
- ```
208
-
209
- If `opencode.json` already exists, merge the `agent` key (preserve other top-level keys).
210
-
211
- 3. **Report success:**
212
-
213
- ```text
214
- ✓ Active profile set to: {newProfile}
215
-
216
- Current configuration:
217
- | Stage | Model |
218
- |--------------|-------|
219
- | planning | {new.planning} |
220
- | execution | {new.execution} |
221
- | verification | {new.verification} |
222
-
223
- Note: OpenCode loads `opencode.json` at startup and does not hot-reload model/agent assignments. Fully quit and relaunch OpenCode to apply this profile change.
224
- ```
225
-
226
- Important: Do NOT print any tooling transcript (e.g., `python -m json.tool ...`) or a separate `Updated:` file list. The success message above is the complete user-facing output.
227
-
228
- </behavior>
229
-
230
- <notes>
231
- - Use the Question tool for ALL user input (never ask user to type numbers)
232
- - Always show full model IDs (e.g., `opencode/glm-4.7-free`)
233
- - Preserve all other config.json keys when writing (deep merge)
234
- - Do NOT rewrite agent .md files — only update opencode.json
235
- - If opencode.json doesn't exist, create it
236
- - Overrides are scoped per profile at `profiles.custom_overrides.{profile}.{stage}`
237
- - **Source of truth:** `config.json` stores profiles/presets/overrides; `opencode.json` is **derived** from the effective models
238
- - When regenerating `opencode.json`, read the new profile from `config.json`, compute effective models (preset + overrides), then write the agent mappings
239
- </notes>