gsd-opencode 1.20.3 → 1.22.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 (114) hide show
  1. package/agents/gsd-codebase-mapper.md +9 -1
  2. package/agents/gsd-debugger.md +66 -10
  3. package/agents/gsd-executor.md +36 -16
  4. package/agents/gsd-integration-checker.md +2 -0
  5. package/agents/gsd-nyquist-auditor.md +178 -0
  6. package/agents/gsd-phase-researcher.md +28 -34
  7. package/agents/gsd-plan-checker.md +42 -78
  8. package/agents/gsd-planner.md +139 -24
  9. package/agents/gsd-project-researcher.md +11 -1
  10. package/agents/gsd-research-synthesizer.md +13 -3
  11. package/agents/gsd-roadmapper.md +25 -15
  12. package/agents/gsd-verifier.md +29 -6
  13. package/bin/dm/lib/constants.js +6 -1
  14. package/bin/dm/src/services/file-ops.js +14 -1
  15. package/commands/gsd/gsd-add-phase.md +6 -6
  16. package/commands/gsd/gsd-add-tests.md +41 -0
  17. package/commands/gsd/gsd-add-todo.md +7 -7
  18. package/commands/gsd/gsd-audit-milestone.md +9 -9
  19. package/commands/gsd/gsd-check-profile.md +3 -3
  20. package/commands/gsd/gsd-check-todos.md +7 -7
  21. package/commands/gsd/gsd-cleanup.md +2 -2
  22. package/commands/gsd/gsd-complete-milestone.md +6 -6
  23. package/commands/gsd/gsd-debug.md +11 -7
  24. package/commands/gsd/gsd-discuss-phase.md +26 -19
  25. package/commands/gsd/gsd-execute-phase.md +13 -13
  26. package/commands/gsd/gsd-health.md +7 -7
  27. package/commands/gsd/gsd-help.md +2 -2
  28. package/commands/gsd/gsd-insert-phase.md +6 -6
  29. package/commands/gsd/gsd-join-discord.md +1 -1
  30. package/commands/gsd/gsd-list-phase-assumptions.md +6 -6
  31. package/commands/gsd/gsd-map-codebase.md +8 -8
  32. package/commands/gsd/gsd-new-milestone.md +12 -12
  33. package/commands/gsd/gsd-new-project.md +12 -12
  34. package/commands/gsd/gsd-pause-work.md +6 -6
  35. package/commands/gsd/gsd-plan-milestone-gaps.md +9 -9
  36. package/commands/gsd/gsd-plan-phase.md +14 -13
  37. package/commands/gsd/gsd-progress.md +8 -8
  38. package/commands/gsd/gsd-quick.md +17 -13
  39. package/commands/gsd/gsd-reapply-patches.md +19 -11
  40. package/commands/gsd/gsd-remove-phase.md +7 -7
  41. package/commands/gsd/gsd-research-phase.md +12 -11
  42. package/commands/gsd/gsd-resume-work.md +8 -8
  43. package/commands/gsd/gsd-set-profile.md +6 -6
  44. package/commands/gsd/gsd-settings.md +7 -7
  45. package/commands/gsd/gsd-update.md +5 -5
  46. package/commands/gsd/gsd-validate-phase.md +35 -0
  47. package/commands/gsd/gsd-verify-work.md +11 -11
  48. package/get-shit-done/bin/gsd-oc-commands/allow-read-config.cjs +235 -0
  49. package/get-shit-done/bin/gsd-oc-tools.cjs +11 -5
  50. package/get-shit-done/bin/gsd-tools.cjs +45 -6
  51. package/get-shit-done/bin/lib/commands.cjs +11 -19
  52. package/get-shit-done/bin/lib/config.cjs +8 -1
  53. package/get-shit-done/bin/lib/core.cjs +131 -16
  54. package/get-shit-done/bin/lib/init.cjs +28 -12
  55. package/get-shit-done/bin/lib/milestone.cjs +34 -8
  56. package/get-shit-done/bin/lib/phase.cjs +74 -50
  57. package/get-shit-done/bin/lib/roadmap.cjs +7 -7
  58. package/get-shit-done/bin/lib/state.cjs +294 -63
  59. package/get-shit-done/bin/lib/template.cjs +3 -3
  60. package/get-shit-done/bin/lib/verify.cjs +56 -8
  61. package/get-shit-done/bin/test/allow-read-config.test.cjs +262 -0
  62. package/get-shit-done/references/checkpoints.md +1 -1
  63. package/get-shit-done/references/decimal-phase-calculation.md +6 -6
  64. package/get-shit-done/references/git-integration.md +3 -3
  65. package/get-shit-done/references/git-planning-commit.md +2 -2
  66. package/get-shit-done/references/model-profile-resolution.md +1 -1
  67. package/get-shit-done/references/model-profiles.md +1 -0
  68. package/get-shit-done/references/phase-argument-parsing.md +4 -4
  69. package/get-shit-done/references/planning-config.md +10 -6
  70. package/get-shit-done/references/questioning.md +17 -0
  71. package/get-shit-done/references/verification-patterns.md +1 -1
  72. package/get-shit-done/templates/DEBUG.md +7 -2
  73. package/get-shit-done/templates/VALIDATION.md +18 -46
  74. package/get-shit-done/templates/codebase/structure.md +3 -3
  75. package/get-shit-done/templates/config.json +2 -2
  76. package/get-shit-done/templates/context.md +14 -0
  77. package/get-shit-done/templates/phase-prompt.md +10 -10
  78. package/get-shit-done/templates/retrospective.md +54 -0
  79. package/get-shit-done/templates/roadmap.md +1 -1
  80. package/get-shit-done/workflows/add-phase.md +3 -2
  81. package/get-shit-done/workflows/add-tests.md +351 -0
  82. package/get-shit-done/workflows/add-todo.md +4 -3
  83. package/get-shit-done/workflows/audit-milestone.md +40 -5
  84. package/get-shit-done/workflows/check-todos.md +3 -2
  85. package/get-shit-done/workflows/cleanup.md +1 -1
  86. package/get-shit-done/workflows/complete-milestone.md +69 -5
  87. package/get-shit-done/workflows/diagnose-issues.md +2 -2
  88. package/get-shit-done/workflows/discovery-phase.md +6 -6
  89. package/get-shit-done/workflows/discuss-phase.md +194 -58
  90. package/get-shit-done/workflows/execute-phase.md +29 -23
  91. package/get-shit-done/workflows/execute-plan.md +22 -18
  92. package/get-shit-done/workflows/health.md +5 -2
  93. package/get-shit-done/workflows/help.md +4 -1
  94. package/get-shit-done/workflows/insert-phase.md +3 -2
  95. package/get-shit-done/workflows/map-codebase.md +3 -2
  96. package/get-shit-done/workflows/new-milestone.md +12 -10
  97. package/get-shit-done/workflows/new-project.md +44 -49
  98. package/get-shit-done/workflows/oc-set-profile.md +24 -0
  99. package/get-shit-done/workflows/pause-work.md +2 -2
  100. package/get-shit-done/workflows/plan-milestone-gaps.md +3 -3
  101. package/get-shit-done/workflows/plan-phase.md +155 -73
  102. package/get-shit-done/workflows/progress.md +8 -7
  103. package/get-shit-done/workflows/quick.md +158 -10
  104. package/get-shit-done/workflows/remove-phase.md +5 -4
  105. package/get-shit-done/workflows/research-phase.md +5 -4
  106. package/get-shit-done/workflows/resume-project.md +3 -2
  107. package/get-shit-done/workflows/set-profile.md +3 -2
  108. package/get-shit-done/workflows/settings.md +6 -6
  109. package/get-shit-done/workflows/transition.md +5 -5
  110. package/get-shit-done/workflows/update.md +45 -19
  111. package/get-shit-done/workflows/validate-phase.md +167 -0
  112. package/get-shit-done/workflows/verify-phase.md +10 -9
  113. package/get-shit-done/workflows/verify-work.md +18 -4
  114. package/package.json +1 -1
@@ -12,7 +12,8 @@ read all files referenced by the invoking prompt's execution_context before star
12
12
  Load todo context:
13
13
 
14
14
  ```bash
15
- INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init todos)
15
+ INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init todos)
16
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
16
17
  ```
17
18
 
18
19
  Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
@@ -83,7 +84,7 @@ Use values from init context: `timestamp` and `date` are already available.
83
84
 
84
85
  Generate slug for the title:
85
86
  ```bash
86
- slug=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs generate-slug "$title" --raw)
87
+ slug=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" generate-slug "$title" --raw)
87
88
  ```
88
89
 
89
90
  write to `.planning/todos/pending/${date}-${slug}.md`:
@@ -118,7 +119,7 @@ If `.planning/STATE.md` exists:
118
119
  Commit the todo and any updated state:
119
120
 
120
121
  ```bash
121
- node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
122
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
122
123
  ```
123
124
 
124
125
  Tool respects `commit_docs` config and gitignore automatically.
@@ -11,21 +11,22 @@ read all files referenced by the invoking prompt's execution_context before star
11
11
  ## 0. Initialize Milestone Context
12
12
 
13
13
  ```bash
14
- INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init milestone-op)
14
+ INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init milestone-op)
15
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
15
16
  ```
16
17
 
17
18
  Extract from init JSON: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `commit_docs`.
18
19
 
19
20
  Resolve integration checker model:
20
21
  ```bash
21
- CHECKER_MODEL=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs resolve-model gsd-integration-checker --raw)
22
+ integration_checker_model=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" resolve-model gsd-integration-checker --raw)
22
23
  ```
23
24
 
24
25
  ## 1. Determine Milestone Scope
25
26
 
26
27
  ```bash
27
28
  # Get phases in milestone (sorted numerically, handles decimals)
28
- node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs phases list
29
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" phases list
29
30
  ```
30
31
 
31
32
  - Parse version from arguments or detect current from ROADMAP.md
@@ -39,7 +40,7 @@ For each phase directory, read the VERIFICATION.md:
39
40
 
40
41
  ```bash
41
42
  # 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
+ PHASE_INFO=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" find-phase 01 --raw)
43
44
  # Extract directory from JSON, then read VERIFICATION.md from that directory
44
45
  # Repeat for each phase number from ROADMAP.md
45
46
  ```
@@ -104,7 +105,7 @@ For each phase's VERIFICATION.md, extract the expanded requirements table:
104
105
  For each phase's SUMMARY.md, extract `requirements-completed` from YAML frontmatter:
105
106
  ```bash
106
107
  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
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" summary-extract "$summary" --fields requirements_completed | jq -r '.requirements_completed'
108
109
  done
109
110
  ```
110
111
 
@@ -127,6 +128,30 @@ For each REQ-ID, determine status using all three sources:
127
128
 
128
129
  **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.
129
130
 
131
+ ## 5.5. Nyquist Compliance Discovery
132
+
133
+ Skip if `workflow.nyquist_validation` is explicitly `false` (absent = enabled).
134
+
135
+ ```bash
136
+ NYQUIST_CONFIG=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config get workflow.nyquist_validation --raw 2>/dev/null)
137
+ ```
138
+
139
+ If `false`: skip entirely.
140
+
141
+ For each phase directory, check `*-VALIDATION.md`. If exists, parse frontmatter (`nyquist_compliant`, `wave_0_complete`).
142
+
143
+ Classify per phase:
144
+
145
+ | Status | Condition |
146
+ |--------|-----------|
147
+ | COMPLIANT | `nyquist_compliant: true` and all tasks green |
148
+ | PARTIAL | VALIDATION.md exists, `nyquist_compliant: false` or red/pending |
149
+ | MISSING | No VALIDATION.md |
150
+
151
+ Add to audit YAML: `nyquist: { compliant_phases, partial_phases, missing_phases, overall }`
152
+
153
+ Discovery only — never auto-calls `/gsd-validate-phase`.
154
+
130
155
  ## 6. Aggregate into v{version}-MILESTONE-AUDIT.md
131
156
 
132
157
  Create `.planning/v{version}-v{version}-MILESTONE-AUDIT.md` with:
@@ -227,6 +252,14 @@ All requirements covered. Cross-phase integration verified. E2E flows complete.
227
252
  {For each flow gap:}
228
253
  - **{flow name}:** breaks at {step}
229
254
 
255
+ ### Nyquist Coverage
256
+
257
+ | Phase | VALIDATION.md | Compliant | Action |
258
+ |-------|---------------|-----------|--------|
259
+ | {phase} | exists/missing | true/false/partial | `/gsd-validate-phase {N}` |
260
+
261
+ Phases needing validation: run `/gsd-validate-phase {N}` for each flagged phase.
262
+
230
263
  ───────────────────────────────────────────────────────────────
231
264
 
232
265
  ## ▶ Next Up
@@ -293,5 +326,7 @@ All requirements met. No critical blockers. Accumulated tech debt needs review.
293
326
  - [ ] Integration checker spawned with milestone requirement IDs
294
327
  - [ ] v{version}-MILESTONE-AUDIT.md created with structured requirement gap objects
295
328
  - [ ] FAIL gate enforced — any unsatisfied requirement forces gaps_found status
329
+ - [ ] Nyquist compliance scanned for all milestone phases (if enabled)
330
+ - [ ] Missing VALIDATION.md phases flagged with validate-phase suggestion
296
331
  - [ ] Results presented with actionable next steps
297
332
  </success_criteria>
@@ -12,7 +12,8 @@ read all files referenced by the invoking prompt's execution_context before star
12
12
  Load todo context:
13
13
 
14
14
  ```bash
15
- INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init todos)
15
+ INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init todos)
16
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
16
17
  ```
17
18
 
18
19
  Extract from init JSON: `todo_count`, `todos`, `pending_dir`.
@@ -154,7 +155,7 @@ If todo was moved to done/, commit the change:
154
155
 
155
156
  ```bash
156
157
  git rm --cached .planning/todos/pending/[filename] 2>/dev/null || true
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
158
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: start work on todo - [title]" --files .planning/todos/done/[filename] .planning/STATE.md
158
159
  ```
159
160
 
160
161
  Tool respects `commit_docs` config and gitignore automatically.
@@ -122,7 +122,7 @@ Repeat for all milestones in the cleanup set.
122
122
  Commit the changes:
123
123
 
124
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/
125
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/
126
126
  ```
127
127
 
128
128
  </step>
@@ -40,7 +40,7 @@ When a milestone completes:
40
40
  **Use `roadmap analyze` for comprehensive readiness check:**
41
41
 
42
42
  ```bash
43
- ROADMAP=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs roadmap analyze)
43
+ ROADMAP=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap analyze)
44
44
  ```
45
45
 
46
46
  This returns all phases with plan/summary counts and disk status. Use this to verify:
@@ -154,7 +154,7 @@ Extract one-liners from SUMMARY.md files using summary-extract:
154
154
  ```bash
155
155
  # For each phase in milestone, extract one-liner
156
156
  for summary in .planning/phases/*-*/*-SUMMARY.md; do
157
- node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
157
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" summary-extract "$summary" --fields one_liner | jq -r '.one_liner'
158
158
  done
159
159
  ```
160
160
 
@@ -367,7 +367,7 @@ Update `.planning/ROADMAP.md` — group completed milestone phases:
367
367
  **Delegate archival to gsd-tools:**
368
368
 
369
369
  ```bash
370
- ARCHIVE=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs milestone complete "v[X.Y]" --name "[Milestone Name]")
370
+ ARCHIVE=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" milestone complete "v[X.Y]" --name "[Milestone Name]")
371
371
  ```
372
372
 
373
373
  The CLI handles:
@@ -438,6 +438,67 @@ rm .planning/REQUIREMENTS.md
438
438
 
439
439
  </step>
440
440
 
441
+ <step name="write_retrospective">
442
+
443
+ **Append to living retrospective:**
444
+
445
+ Check for existing retrospective:
446
+ ```bash
447
+ ls .planning/RETROSPECTIVE.md 2>/dev/null
448
+ ```
449
+
450
+ **If exists:** read the file, append new milestone section before the "## Cross-Milestone Trends" section.
451
+
452
+ **If doesn't exist:** Create from template at `$HOME/.config/opencode/get-shit-done/templates/retrospective.md`.
453
+
454
+ **Gather retrospective data:**
455
+
456
+ 1. From SUMMARY.md files: Extract key deliverables, one-liners, tech decisions
457
+ 2. From VERIFICATION.md files: Extract verification scores, gaps found
458
+ 3. From UAT.md files: Extract test results, issues found
459
+ 4. From git log: Count commits, calculate timeline
460
+ 5. From the milestone work: Reflect on what worked and what didn't
461
+
462
+ **write the milestone section:**
463
+
464
+ ```markdown
465
+ ## Milestone: v{version} — {name}
466
+
467
+ **Shipped:** {date}
468
+ **Phases:** {phase_count} | **Plans:** {plan_count}
469
+
470
+ ### What Was Built
471
+ {Extract from SUMMARY.md one-liners}
472
+
473
+ ### What Worked
474
+ {Patterns that led to smooth execution}
475
+
476
+ ### What Was Inefficient
477
+ {Missed opportunities, rework, bottlenecks}
478
+
479
+ ### Patterns Established
480
+ {New conventions discovered during this milestone}
481
+
482
+ ### Key Lessons
483
+ {Specific, actionable takeaways}
484
+
485
+ ### Cost Observations
486
+ - Model mix: {X}% opus, {Y}% sonnet, {Z}% haiku
487
+ - Sessions: {count}
488
+ - Notable: {efficiency observation}
489
+ ```
490
+
491
+ **Update cross-milestone trends:**
492
+
493
+ If the "## Cross-Milestone Trends" section exists, update the tables with new data from this milestone.
494
+
495
+ **Commit:**
496
+ ```bash
497
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: update retrospective for v${VERSION}" --files .planning/RETROSPECTIVE.md
498
+ ```
499
+
500
+ </step>
501
+
441
502
  <step name="update_state">
442
503
 
443
504
  Most STATE.md updates were handled by `milestone complete`, but verify and update remaining fields:
@@ -467,7 +528,8 @@ Check branching strategy and offer merge options.
467
528
  Use `init milestone-op` for context, or load config directly:
468
529
 
469
530
  ```bash
470
- INIT=$(node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs init execute-phase "1")
531
+ INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init execute-phase "1")
532
+ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
471
533
  ```
472
534
 
473
535
  Extract `branching_strategy`, `phase_branch_template`, `milestone_branch_template`, and `commit_docs` from init JSON.
@@ -615,7 +677,7 @@ git push origin v[X.Y]
615
677
  Commit milestone completion.
616
678
 
617
679
  ```bash
618
- node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
680
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "chore: complete v[X.Y] milestone" --files .planning/milestones/v[X.Y]-ROADMAP.md .planning/milestones/v[X.Y]-REQUIREMENTS.md .planning/milestones/v[X.Y]-MILESTONE-AUDIT.md .planning/MILESTONES.md .planning/PROJECT.md .planning/STATE.md
619
681
  ```
620
682
  ```
621
683
 
@@ -695,6 +757,8 @@ Milestone completion is successful when:
695
757
  - [ ] Requirements completion checked against REQUIREMENTS.md traceability table
696
758
  - [ ] Incomplete requirements surfaced with proceed/audit/abort options
697
759
  - [ ] Known gaps recorded in MILESTONES.md if user proceeded with incomplete requirements
760
+ - [ ] RETROSPECTIVE.md updated with milestone section
761
+ - [ ] Cross-milestone trends updated
698
762
  - [ ] User knows next step (/gsd-new-milestone)
699
763
 
700
764
  </success_criteria>
@@ -80,7 +80,7 @@ For each gap, fill the debug-subagent-prompt template and spawn:
80
80
  ```
81
81
  task(
82
82
  prompt=filled_debug_subagent_prompt + "\n\n<files_to_read>\n- {phase_dir}/{phase_num}-UAT.md\n- .planning/STATE.md\n</files_to_read>",
83
- subagent_type="general",
83
+ subagent_type="gsd-debugger",
84
84
  description="Debug: {truth_short}"
85
85
  )
86
86
  ```
@@ -158,7 +158,7 @@ Update status in frontmatter to "diagnosed".
158
158
 
159
159
  Commit the updated UAT.md:
160
160
  ```bash
161
- node ~/.config/opencode/get-shit-done/bin/gsd-tools.cjs commit "docs({phase_num}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
161
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs({phase_num}): add root causes from diagnosis" --files ".planning/phases/XX-name/{phase_num}-UAT.md"
162
162
  ```
163
163
  </step>
164
164
 
@@ -28,7 +28,7 @@ OpenCode's training data is 6-18 months stale. Always verify.
28
28
  2. **Official docs** - When Context7 lacks coverage
29
29
  3. **websearch LAST** - For comparisons and trends only
30
30
 
31
- See ~/.config/opencode/get-shit-done/templates/discovery.md `<discovery_protocol>` for full protocol.
31
+ See $HOME/.config/opencode/get-shit-done/templates/discovery.md `<discovery_protocol>` for full protocol.
32
32
  </source_hierarchy>
33
33
 
34
34
  <process>
@@ -93,7 +93,7 @@ For: Choosing between options, new external integration.
93
93
 
94
94
  ```
95
95
  For each library/framework:
96
- - mcp__context7__resolve-library-id
96
+ - mcp__context7__resolve-library-id
97
97
  - mcp__context7__get-library-docs (mode: "code" for API, "info" for concepts)
98
98
  ```
99
99
 
@@ -107,7 +107,7 @@ For: Choosing between options, new external integration.
107
107
 
108
108
  5. **Cross-verify:** Any websearch finding → confirm with Context7/official docs.
109
109
 
110
- 6. **Create DISCOVERY.md** using ~/.config/opencode/get-shit-done/templates/discovery.md structure:
110
+ 6. **Create DISCOVERY.md** using $HOME/.config/opencode/get-shit-done/templates/discovery.md structure:
111
111
 
112
112
  - Summary with recommendation
113
113
  - Key findings per option
@@ -126,7 +126,7 @@ For: Architectural decisions, novel problems, high-risk choices.
126
126
 
127
127
  **Process:**
128
128
 
129
- 1. **Scope the discovery** using ~/.config/opencode/get-shit-done/templates/discovery.md:
129
+ 1. **Scope the discovery** using $HOME/.config/opencode/get-shit-done/templates/discovery.md:
130
130
 
131
131
  - Define clear scope
132
132
  - Define include/exclude boundaries
@@ -160,7 +160,7 @@ For: Architectural decisions, novel problems, high-risk choices.
160
160
 
161
161
  6. **Create comprehensive DISCOVERY.md:**
162
162
 
163
- - Full structure from ~/.config/opencode/get-shit-done/templates/discovery.md
163
+ - Full structure from $HOME/.config/opencode/get-shit-done/templates/discovery.md
164
164
  - Quality report with source attribution
165
165
  - Confidence by finding
166
166
  - If LOW confidence on any critical finding → add validation checkpoints
@@ -184,7 +184,7 @@ Ask: What do we need to learn before we can plan this phase?
184
184
  </step>
185
185
 
186
186
  <step name="create_discovery_scope">
187
- Use ~/.config/opencode/get-shit-done/templates/discovery.md.
187
+ Use $HOME/.config/opencode/get-shit-done/templates/discovery.md.
188
188
 
189
189
  Include:
190
190