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
@@ -0,0 +1,104 @@
1
+ ---
2
+ phase: {N}
3
+ slug: {phase-slug}
4
+ status: draft
5
+ nyquist_compliant: false
6
+ wave_0_complete: false
7
+ created: {date}
8
+ ---
9
+
10
+ # Phase {N} — Validation Strategy
11
+
12
+ > Generated by `gsd-phase-researcher` during `/gsd-plan-phase {N}`.
13
+ > Updated by `gsd-plan-checker` after plan approval.
14
+ > Governs feedback sampling during `/gsd-execute-phase {N}`.
15
+
16
+ ---
17
+
18
+ ## Test Infrastructure
19
+
20
+ | Property | Value |
21
+ |----------|-------|
22
+ | **Framework** | {pytest 7.x / jest 29.x / vitest / go test / other} |
23
+ | **Config file** | {path/to/pytest.ini or "none — Wave 0 installs"} |
24
+ | **Quick run command** | `{e.g., pytest -x --tb=short}` |
25
+ | **Full suite command** | `{e.g., pytest tests/ --tb=short}` |
26
+ | **Estimated runtime** | ~{N} seconds |
27
+ | **CI pipeline** | {.github/workflows/test.yml — exists / needs creation} |
28
+
29
+ ---
30
+
31
+ ## Nyquist Sampling Rate
32
+
33
+ > The minimum feedback frequency required to reliably catch errors in this phase.
34
+
35
+ - **After every task commit:** Run `{quick run command}`
36
+ - **After every plan wave:** Run `{full suite command}`
37
+ - **Before `/gsd-verify-work`:** Full suite must be green
38
+ - **Maximum acceptable task feedback latency:** {N} seconds
39
+
40
+ ---
41
+
42
+ ## Per-task Verification Map
43
+
44
+ | task ID | Plan | Wave | Requirement | Test Type | Automated Command | File Exists | Status |
45
+ |---------|------|------|-------------|-----------|-------------------|-------------|--------|
46
+ | {N}-01-01 | 01 | 1 | REQ-{XX} | unit | `pytest tests/test_{module}.py::test_{name} -x` | ✅ / ❌ W0 | ⬜ pending |
47
+ | {N}-01-02 | 01 | 1 | REQ-{XX} | integration | `pytest tests/test_{flow}.py -x` | ✅ / ❌ W0 | ⬜ pending |
48
+ | {N}-02-01 | 02 | 2 | REQ-{XX} | smoke | `curl -s {endpoint} \| grep {expected}` | ✅ N/A | ⬜ pending |
49
+
50
+ *Status values: ⬜ pending · ✅ green · ❌ red · ⚠️ flaky*
51
+
52
+ ---
53
+
54
+ ## Wave 0 Requirements
55
+
56
+ > Test scaffolding committed BEFORE any implementation task. Executor runs Wave 0 first.
57
+
58
+ - [ ] `{tests/test_file.py}` — stubs for REQ-{XX}, REQ-{XX}
59
+ - [ ] `{tests/conftest.py}` — shared fixtures
60
+ - [ ] `{framework install}` — if no framework detected
61
+
62
+ *If none required: "Existing infrastructure covers all phase requirements — no Wave 0 test tasks needed."*
63
+
64
+ ---
65
+
66
+ ## Manual-Only Verifications
67
+
68
+ > Behaviors that genuinely cannot be automated, with justification.
69
+ > These are surfaced during `/gsd-verify-work` UAT.
70
+
71
+ | Behavior | Requirement | Why Manual | Test Instructions |
72
+ |----------|-------------|------------|-------------------|
73
+ | {behavior} | REQ-{XX} | {reason: visual, third-party auth, physical device...} | {step-by-step} |
74
+
75
+ *If none: "All phase behaviors have automated verification coverage."*
76
+
77
+ ---
78
+
79
+ ## Validation Sign-Off
80
+
81
+ Updated by `gsd-plan-checker` when plans are approved:
82
+
83
+ - [ ] All tasks have `<automated>` verify commands or Wave 0 dependencies
84
+ - [ ] No 3 consecutive implementation tasks without automated verify (sampling continuity)
85
+ - [ ] Wave 0 test files cover all MISSING references
86
+ - [ ] No watch-mode flags in any automated command
87
+ - [ ] Feedback latency per task: < {N}s ✅
88
+ - [ ] `nyquist_compliant: true` set in frontmatter
89
+
90
+ **Plan-checker approval:** {pending / approved on YYYY-MM-DD}
91
+
92
+ ---
93
+
94
+ ## Execution Tracking
95
+
96
+ Updated during `/gsd-execute-phase {N}`:
97
+
98
+ | Wave | Tasks | Tests Run | Pass | Fail | Sampling Status |
99
+ |------|-------|-----------|------|------|-----------------|
100
+ | 0 | {N} | — | — | — | scaffold |
101
+ | 1 | {N} | {command} | {N} | {N} | ✅ sampled |
102
+ | 2 | {N} | {command} | {N} | {N} | ✅ sampled |
103
+
104
+ **Phase validation complete:** {pending / YYYY-MM-DD HH:MM}
@@ -15,7 +15,7 @@ Template for `.planning/codebase/STRUCTURE.md` - captures physical file organiza
15
15
 
16
16
  ## Directory Layout
17
17
 
18
- [ASCII tree of top-level directories with purpose]
18
+ [ASCII box-drawing tree of top-level directories with purpose - use ├── └── │ characters for tree structure only]
19
19
 
20
20
  ```
21
21
  [project-root]/
@@ -127,7 +127,7 @@ get-shit-done/
127
127
  ├── bin/ # Executable entry points
128
128
  ├── commands/ # Slash command definitions
129
129
  │ └── gsd/ # GSD-specific commands
130
- ├── get-shit-done/ # Skill resources
130
+ ├── get-shit-done/ # skill resources
131
131
  │ ├── references/ # Principle documents
132
132
  │ ├── templates/ # File templates
133
133
  │ └── workflows/ # Multi-step procedures
@@ -186,14 +186,14 @@ get-shit-done/
186
186
 
187
187
  **Documentation:**
188
188
  - `README.md` - User-facing installation and usage guide
189
- - `CLAUDE.md` - Instructions for OpenCode when working in this repo
189
+ - `OPENCODE.md` - Instructions for OpenCode when working in this repo
190
190
 
191
191
  ## Naming Conventions
192
192
 
193
193
  **Files:**
194
194
  - kebab-case.md: Markdown documents
195
195
  - kebab-case.js: JavaScript source files
196
- - UPPERCASE.md: Important project files (README, CLAUDE, CHANGELOG)
196
+ - UPPERCASE.md: Important project files (README, OPENCODE, CHANGELOG)
197
197
 
198
198
  **Directories:**
199
199
  - kebab-case: All directories
@@ -247,7 +247,7 @@ get-shit-done/
247
247
 
248
248
  <guidelines>
249
249
  **What belongs in STRUCTURE.md:**
250
- - Directory layout (ASCII tree)
250
+ - Directory layout (ASCII box-drawing tree for structure visualization)
251
251
  - Purpose of each directory
252
252
  - Key file locations (entry points, configs, core logic)
253
253
  - Naming conventions
@@ -267,7 +267,7 @@ get-shit-done/
267
267
  - Locate entry points, configs, and main logic areas
268
268
  - Keep directory tree concise (max 2-3 levels)
269
269
 
270
- **ASCII tree format:**
270
+ **Tree format (ASCII box-drawing characters for structure only):**
271
271
  ```
272
272
  root/
273
273
  ├── dir1/ # Purpose
@@ -0,0 +1,37 @@
1
+ {
2
+ "mode": "interactive",
3
+ "depth": "standard",
4
+ "workflow": {
5
+ "research": true,
6
+ "plan_check": true,
7
+ "verifier": true,
8
+ "auto_advance": false,
9
+ "nyquist_validation": false
10
+ },
11
+ "planning": {
12
+ "commit_docs": true,
13
+ "search_gitignored": false
14
+ },
15
+ "parallelization": {
16
+ "enabled": true,
17
+ "plan_level": true,
18
+ "task_level": false,
19
+ "skip_checkpoints": true,
20
+ "max_concurrent_agents": 3,
21
+ "min_plans_for_parallel": 2
22
+ },
23
+ "gates": {
24
+ "confirm_project": true,
25
+ "confirm_phases": true,
26
+ "confirm_roadmap": true,
27
+ "confirm_breakdown": true,
28
+ "confirm_plan": true,
29
+ "execute_next_plan": true,
30
+ "issues_review": true,
31
+ "confirm_transition": true
32
+ },
33
+ "safety": {
34
+ "always_confirm_destructive": true,
35
+ "always_confirm_external_services": true
36
+ }
37
+ }
@@ -1,6 +1,6 @@
1
1
  # Phase Context Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-CONTEXT.md` - captures implementation decisions for a phase.
3
+ Template for `.planning/phases/XX-name/{phase_num}-CONTEXT.md` - captures implementation decisions for a phase.
4
4
 
5
5
  **Purpose:** Document decisions that downstream agents need. Researcher uses this to know WHAT to investigate. Planner uses this to know WHAT choices are locked vs flexible.
6
6
 
@@ -275,16 +275,8 @@ The output should answer: "What does the researcher need to investigate? What ch
275
275
  - "Fast and responsive"
276
276
  - "Easy to use"
277
277
 
278
- **Sections explained:**
279
-
280
- - **Domain** — The scope anchor. Copied/derived from ROADMAP.md. Fixed boundary.
281
- - **Decisions** — Organized by areas discussed (NOT predefined categories). Section headers come from the actual discussion — "Layout style", "Flag design", "Grouping criteria", etc.
282
- - **OpenCode's Discretion** — Explicit acknowledgment of what OpenCode can decide during implementation.
283
- - **Specifics** — Product references, examples, "like X but..." statements.
284
- - **Deferred** — Ideas captured but explicitly out of scope. Prevents scope creep while preserving good ideas.
285
-
286
278
  **After creation:**
287
- - File lives in phase directory: `.planning/phases/XX-name/{phase}-CONTEXT.md`
279
+ - File lives in phase directory: `.planning/phases/XX-name/{phase_num}-CONTEXT.md`
288
280
  - `gsd-phase-researcher` uses decisions to focus investigation
289
281
  - `gsd-planner` uses decisions + research to create executable tasks
290
282
  - Downstream agents should NOT need to ask the user again about captured decisions
@@ -20,17 +20,17 @@ last_updated: 2025-01-15T14:30:00Z
20
20
  <completed_work>
21
21
  [What got done this session - be specific]
22
22
 
23
- - Task 1: [name] - Done
24
- - Task 2: [name] - Done
25
- - Task 3: [name] - In progress, [what's done on it]
23
+ - task 1: [name] - Done
24
+ - task 2: [name] - Done
25
+ - task 3: [name] - In progress, [what's done on it]
26
26
  </completed_work>
27
27
 
28
28
  <remaining_work>
29
29
  [What's left in this phase]
30
30
 
31
- - Task 3: [name] - [what's left to do]
32
- - Task 4: [name] - Not started
33
- - Task 5: [name] - Not started
31
+ - task 3: [name] - [what's left to do]
32
+ - task 4: [name] - Not started
33
+ - task 5: [name] - Not started
34
34
  </remaining_work>
35
35
 
36
36
  <decisions_made>
@@ -53,7 +53,7 @@ Create: .planning/debug/{slug}.md
53
53
 
54
54
  **From /gsd-debug:**
55
55
  ```python
56
- Task(
56
+ task(
57
57
  prompt=filled_template,
58
58
  subagent_type="gsd-debugger",
59
59
  description="Debug {slug}"
@@ -62,7 +62,7 @@ Task(
62
62
 
63
63
  **From diagnose-issues (UAT):**
64
64
  ```python
65
- Task(prompt=template, subagent_type="gsd-debugger", description="Debug UAT-001")
65
+ task(prompt=template, subagent_type="gsd-debugger", description="Debug UAT-001")
66
66
  ```
67
67
 
68
68
  ---
@@ -35,7 +35,7 @@ Output: DISCOVERY.md with recommendation
35
35
 
36
36
  <discovery_scope>
37
37
  <include>
38
- - [Question to answer]
38
+ - [question to answer]
39
39
  - [Area to investigate]
40
40
  - [Specific comparison if needed]
41
41
  </include>
@@ -51,21 +51,21 @@ Output: DISCOVERY.md with recommendation
51
51
  **Source Priority:**
52
52
  1. **Context7 MCP** - For library/framework documentation (current, authoritative)
53
53
  2. **Official Docs** - For platform-specific or non-indexed libraries
54
- 3. **webfetch** - For comparisons, trends, community patterns (verify all findings)
54
+ 3. **websearch** - For comparisons, trends, community patterns (verify all findings)
55
55
 
56
56
  **Quality Checklist:**
57
57
  Before completing discovery, verify:
58
58
  - [ ] All claims have authoritative sources (Context7 or official docs)
59
59
  - [ ] Negative claims ("X is not possible") verified with official documentation
60
- - [ ] API syntax/configuration from Context7 or official docs (never webfetch alone)
61
- - [ ] webfetch findings cross-checked with authoritative sources
60
+ - [ ] API syntax/configuration from Context7 or official docs (never websearch alone)
61
+ - [ ] websearch findings cross-checked with authoritative sources
62
62
  - [ ] Recent updates/changelogs checked for breaking changes
63
63
  - [ ] Alternative approaches considered (not just first solution found)
64
64
 
65
65
  **Confidence Levels:**
66
66
  - HIGH: Context7 or official docs confirm
67
- - MEDIUM: webfetch + Context7/official docs confirm
68
- - LOW: webfetch only or training knowledge only (mark for validation)
67
+ - MEDIUM: websearch + Context7/official docs confirm
68
+ - LOW: websearch only or training knowledge only (mark for validation)
69
69
 
70
70
  </discovery_protocol>
71
71
 
@@ -39,7 +39,7 @@ Plans:
39
39
 
40
40
  **For decimal phases, include (INSERTED) marker:**
41
41
 
42
- ### Phase 2.1: Critical Security Patch (INSERTED)
42
+ ### Phase 2.1: Critical Security patch (INSERTED)
43
43
 
44
44
  **Goal**: Fix authentication bypass vulnerability
45
45
  **Depends on**: Phase 2
@@ -47,7 +47,7 @@ Plans:
47
47
 
48
48
  Plans:
49
49
 
50
- - [x] 02.1-01: Patch auth vulnerability
50
+ - [x] 02.1-01: patch auth vulnerability
51
51
 
52
52
  **Details:**
53
53
  {{PHASE_DETAILS_FROM_ROADMAP}}
@@ -58,7 +58,7 @@ Plans:
58
58
 
59
59
  **Decimal Phases:**
60
60
 
61
- - Phase 2.1: Critical Security Patch (inserted after Phase 2 for urgent fix)
61
+ - Phase 2.1: Critical Security patch (inserted after Phase 2 for urgent fix)
62
62
  - Phase 5.1: Performance Hotfix (inserted after Phase 5 for production issue)
63
63
 
64
64
  **Key Decisions:**
@@ -20,6 +20,7 @@ wave: N # Execution wave (1, 2, 3...). Pre-computed at plan
20
20
  depends_on: [] # Plan IDs this plan requires (e.g., ["01-01"]).
21
21
  files_modified: [] # Files this plan modifies.
22
22
  autonomous: true # false if plan has checkpoints requiring user interaction
23
+ requirements: [] # REQUIRED — Requirement IDs from ROADMAP this plan addresses. MUST NOT be empty.
23
24
  user_setup: [] # Human-required setup OpenCode cannot automate (see below)
24
25
 
25
26
  # Goal-backward verification (derived during planning, verified after execution)
@@ -60,7 +61,7 @@ Output: [What artifacts will be created]
60
61
  <tasks>
61
62
 
62
63
  <task type="auto">
63
- <name>Task 1: [Action-oriented name]</name>
64
+ <name>task 1: [Action-oriented name]</name>
64
65
  <files>path/to/file.ext, another/file.ext</files>
65
66
  <action>[Specific implementation - what to do, how to do it, what to avoid and WHY]</action>
66
67
  <verify>[Command or check to prove it worked]</verify>
@@ -68,7 +69,7 @@ Output: [What artifacts will be created]
68
69
  </task>
69
70
 
70
71
  <task type="auto">
71
- <name>Task 2: [Action-oriented name]</name>
72
+ <name>task 2: [Action-oriented name]</name>
72
73
  <files>path/to/file.ext</files>
73
74
  <action>[Specific implementation]</action>
74
75
  <verify>[Command or check]</verify>
@@ -129,6 +130,7 @@ After completion, create `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
129
130
  | `depends_on` | Yes | Array of plan IDs this plan requires. |
130
131
  | `files_modified` | Yes | Files this plan touches. |
131
132
  | `autonomous` | Yes | `true` if no checkpoints, `false` if has checkpoints |
133
+ | `requirements` | Yes | **MUST** list requirement IDs from ROADMAP. Every roadmap requirement MUST appear in at least one plan. |
132
134
  | `user_setup` | No | Array of human-required setup items (external services) |
133
135
  | `must_haves` | Yes | Goal-backward verification criteria (see below) |
134
136
 
@@ -272,7 +274,7 @@ See `~/.config/opencode/get-shit-done/references/tdd.md` for TDD plan structure.
272
274
 
273
275
  ---
274
276
 
275
- ## Task Types
277
+ ## task Types
276
278
 
277
279
  | Type | Use For | Autonomy |
278
280
  |------|---------|----------|
@@ -320,7 +322,7 @@ Output: User model, API endpoints, and UI components.
320
322
 
321
323
  <tasks>
322
324
  <task type="auto">
323
- <name>Task 1: Create User model</name>
325
+ <name>task 1: Create User model</name>
324
326
  <files>src/features/user/model.ts</files>
325
327
  <action>Define User type with id, email, name, createdAt. Export TypeScript interface.</action>
326
328
  <verify>tsc --noEmit passes</verify>
@@ -328,7 +330,7 @@ Output: User model, API endpoints, and UI components.
328
330
  </task>
329
331
 
330
332
  <task type="auto">
331
- <name>Task 2: Create User API endpoints</name>
333
+ <name>task 2: Create User API endpoints</name>
332
334
  <files>src/features/user/api.ts</files>
333
335
  <action>GET /users (list), GET /users/:id (single), POST /users (create). Use User type from model.</action>
334
336
  <verify>curl tests pass for all endpoints</verify>
@@ -386,7 +388,7 @@ Output: Working dashboard component.
386
388
 
387
389
  <tasks>
388
390
  <task type="auto">
389
- <name>Task 1: Build Dashboard layout</name>
391
+ <name>task 1: Build Dashboard layout</name>
390
392
  <files>src/components/Dashboard.tsx</files>
391
393
  <action>Create responsive grid with UserList and ProductList components. Use Tailwind for styling.</action>
392
394
  <verify>npm run build succeeds</verify>
@@ -553,7 +555,7 @@ must_haves:
553
555
 
554
556
  **Why this matters:**
555
557
 
556
- Task completion ≠ Goal achievement. A task "create chat component" can complete by creating a placeholder. The `must_haves` field captures what must actually work, enabling verification to catch gaps before they compound.
558
+ task completion ≠ Goal achievement. A task "create chat component" can complete by creating a placeholder. The `must_haves` field captures what must actually work, enabling verification to catch gaps before they compound.
557
559
 
558
560
  **Verification flow:**
559
561
 
@@ -22,14 +22,14 @@ Template for spawning gsd-planner agent. The agent contains all planning experti
22
22
  @.planning/REQUIREMENTS.md
23
23
 
24
24
  **Phase Context (if exists):**
25
- @.planning/phases/{phase_dir}/{phase}-CONTEXT.md
25
+ @.planning/phases/{phase_dir}/{phase_num}-CONTEXT.md
26
26
 
27
27
  **Research (if exists):**
28
- @.planning/phases/{phase_dir}/{phase}-RESEARCH.md
28
+ @.planning/phases/{phase_dir}/{phase_num}-RESEARCH.md
29
29
 
30
30
  **Gap Closure (if --gaps mode):**
31
- @.planning/phases/{phase_dir}/{phase}-VERIFICATION.md
32
- @.planning/phases/{phase_dir}/{phase}-UAT.md
31
+ @.planning/phases/{phase_dir}/{phase_num}-VERIFICATION.md
32
+ @.planning/phases/{phase_dir}/{phase_num}-UAT.md
33
33
 
34
34
  </planning_context>
35
35
 
@@ -70,7 +70,7 @@ Before returning PLANNING COMPLETE:
70
70
 
71
71
  **From /gsd-plan-phase (standard mode):**
72
72
  ```python
73
- Task(
73
+ task(
74
74
  prompt=filled_template,
75
75
  subagent_type="gsd-planner",
76
76
  description="Plan Phase {phase}"
@@ -79,7 +79,7 @@ Task(
79
79
 
80
80
  **From /gsd-plan-phase --gaps (gap closure mode):**
81
81
  ```python
82
- Task(
82
+ task(
83
83
  prompt=filled_template, # with mode: gap_closure
84
84
  subagent_type="gsd-planner",
85
85
  description="Plan gaps for Phase {phase}"
@@ -177,7 +177,7 @@ src/
177
177
  <guidelines>
178
178
 
179
179
  **System Overview:**
180
- - Use ASCII diagrams for clarity
180
+ - Use ASCII box-drawing diagrams for clarity (├── └── │ ─ for structure visualization only)
181
181
  - Show major components and their relationships
182
182
  - Don't over-detail — this is conceptual, not implementation
183
183
 
@@ -1,6 +1,6 @@
1
1
  # Research Template
2
2
 
3
- Template for `.planning/phases/XX-name/{phase}-RESEARCH.md` - comprehensive ecosystem research before planning.
3
+ Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive ecosystem research before planning.
4
4
 
5
5
  **Purpose:** Document what OpenCode needs to know to implement a phase well - not just "which library" but "how do experts build this."
6
6
 
@@ -15,6 +15,29 @@ Template for `.planning/phases/XX-name/{phase}-RESEARCH.md` - comprehensive ecos
15
15
  **Domain:** [primary technology/problem domain]
16
16
  **Confidence:** [HIGH/MEDIUM/LOW]
17
17
 
18
+ <user_constraints>
19
+ ## User Constraints (from CONTEXT.md)
20
+
21
+ **CRITICAL:** If CONTEXT.md exists from /gsd-discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
22
+
23
+ ### Locked Decisions
24
+ [Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
25
+ - [Decision 1]
26
+ - [Decision 2]
27
+
28
+ ### OpenCode's Discretion
29
+ [Copy from CONTEXT.md - areas where researcher/planner can choose]
30
+ - [Area 1]
31
+ - [Area 2]
32
+
33
+ ### Deferred Ideas (OUT OF SCOPE)
34
+ [Copy from CONTEXT.md - do NOT research or plan these]
35
+ - [Deferred 1]
36
+ - [Deferred 2]
37
+
38
+ **If no CONTEXT.md exists:** write "No user constraints - all decisions at OpenCode's discretion"
39
+ </user_constraints>
40
+
18
41
  <research_summary>
19
42
  ## Summary
20
43
 
@@ -170,12 +193,12 @@ What's changed recently:
170
193
 
171
194
  Things that couldn't be fully resolved:
172
195
 
173
- 1. **[Question]**
196
+ 1. **[question]**
174
197
  - What we know: [partial info]
175
198
  - What's unclear: [the gap]
176
199
  - Recommendation: [how to handle during planning/execution]
177
200
 
178
- 2. **[Question]**
201
+ 2. **[question]**
179
202
  - What we know: [partial info]
180
203
  - What's unclear: [the gap]
181
204
  - Recommendation: [how to handle]
@@ -189,10 +212,10 @@ Things that couldn't be fully resolved:
189
212
  - [Official docs URL] - [what was checked]
190
213
 
191
214
  ### Secondary (MEDIUM confidence)
192
- - [webfetch verified with official source] - [finding + verification]
215
+ - [websearch verified with official source] - [finding + verification]
193
216
 
194
217
  ### Tertiary (LOW confidence - needs validation)
195
- - [webfetch only] - [finding, marked for validation during implementation]
218
+ - [websearch only] - [finding, marked for validation during implementation]
196
219
  </sources>
197
220
 
198
221
  <metadata>
@@ -524,6 +547,6 @@ function useVehicleControls(rigidBodyRef) {
524
547
  - Code examples can be referenced in task actions
525
548
 
526
549
  **After creation:**
527
- - File lives in phase directory: `.planning/phases/XX-name/{phase}-RESEARCH.md`
550
+ - File lives in phase directory: `.planning/phases/XX-name/{phase_num}-RESEARCH.md`
528
551
  - Referenced during planning workflow
529
552
  - plan-phase loads it automatically when present
@@ -29,7 +29,7 @@ Decimal phases appear between their surrounding integers in numeric order.
29
29
  ### Phase 1: [Name]
30
30
  **Goal**: [What this phase delivers]
31
31
  **Depends on**: Nothing (first phase)
32
- **Requirements**: [REQ-01, REQ-02, REQ-03]
32
+ **Requirements**: [REQ-01, REQ-02, REQ-03] <!-- brackets optional, parser handles both formats -->
33
33
  **Success Criteria** (what must be TRUE):
34
34
  1. [Observable behavior from user perspective]
35
35
  2. [Observable behavior from user perspective]
@@ -174,33 +174,3 @@ It's a DIGEST, not an archive. If accumulated context grows too large:
174
174
  The goal is "read once, know where we are" — if it's too long, that fails.
175
175
 
176
176
  </size_constraint>
177
-
178
- <guidelines>
179
-
180
- **When created:**
181
- - During project initialization (after ROADMAP.md)
182
- - Reference PROJECT.md (extract core value and current focus)
183
- - Initialize empty sections
184
-
185
- **When read:**
186
- - Every workflow starts by reading STATE.md
187
- - Then read PROJECT.md for full context
188
- - Provides instant context restoration
189
-
190
- **When updated:**
191
- - After each plan execution (update position, note decisions, update issues/blockers)
192
- - After phase transitions (update progress bar, clear resolved blockers, refresh project reference)
193
-
194
- **Size management:**
195
- - Keep under 100 lines total
196
- - Recent decisions only in STATE.md (full log in PROJECT.md)
197
- - Keep only active blockers
198
-
199
- **Sections:**
200
- - Project Reference: Pointer to PROJECT.md with core value
201
- - Current Position: Where we are now (phase, plan, status)
202
- - Performance Metrics: Velocity tracking
203
- - Accumulated Context: Recent decisions, pending todos, blockers
204
- - Session Continuity: Resume information
205
-
206
- </guidelines>
@@ -0,0 +1,59 @@
1
+ ---
2
+ phase: XX-name
3
+ plan: YY
4
+ subsystem: [primary category]
5
+ tags: [searchable tech]
6
+ requires:
7
+ - phase: [prior phase]
8
+ provides: [what that phase built]
9
+ provides:
10
+ - [bullet list of what was built/delivered]
11
+ affects: [list of phase names or keywords]
12
+ tech-stack:
13
+ added: [libraries/tools]
14
+ patterns: [architectural/code patterns]
15
+ key-files:
16
+ created: [important files created]
17
+ modified: [important files modified]
18
+ key-decisions:
19
+ - "Decision 1"
20
+ patterns-established:
21
+ - "Pattern 1: description"
22
+ duration: Xmin
23
+ completed: YYYY-MM-DD
24
+ ---
25
+
26
+ # Phase [X]: [Name] Summary (Complex)
27
+
28
+ **[Substantive one-liner describing outcome]**
29
+
30
+ ## Performance
31
+ - **Duration:** [time]
32
+ - **Tasks:** [count completed]
33
+ - **Files modified:** [count]
34
+
35
+ ## Accomplishments
36
+ - [Key outcome 1]
37
+ - [Key outcome 2]
38
+
39
+ ## task Commits
40
+ 1. **task 1: [task name]** - `hash`
41
+ 2. **task 2: [task name]** - `hash`
42
+ 3. **task 3: [task name]** - `hash`
43
+
44
+ ## Files Created/Modified
45
+ - `path/to/file.ts` - What it does
46
+ - `path/to/another.ts` - What it does
47
+
48
+ ## Decisions Made
49
+ [Key decisions with brief rationale]
50
+
51
+ ## Deviations from Plan (Auto-fixed)
52
+ [Detailed auto-fix records per GSD deviation rules]
53
+
54
+ ## Issues Encountered
55
+ [Problems during planned work and resolutions]
56
+
57
+ ## Next Phase Readiness
58
+ [What's ready for next phase]
59
+ [Blockers or concerns]
@@ -0,0 +1,41 @@
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
+ duration: Xmin
17
+ completed: YYYY-MM-DD
18
+ ---
19
+
20
+ # Phase [X]: [Name] Summary (Minimal)
21
+
22
+ **[Substantive one-liner describing outcome]**
23
+
24
+ ## Performance
25
+ - **Duration:** [time]
26
+ - **Tasks:** [count]
27
+ - **Files modified:** [count]
28
+
29
+ ## Accomplishments
30
+ - [Most important outcome]
31
+ - [Second key accomplishment]
32
+
33
+ ## task Commits
34
+ 1. **task 1: [task name]** - `hash`
35
+ 2. **task 2: [task name]** - `hash`
36
+
37
+ ## Files Created/Modified
38
+ - `path/to/file.ts` - What it does
39
+
40
+ ## Next Phase Readiness
41
+ [Ready for next phase]