gsd-opencode 1.22.0 → 1.30.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 (157) hide show
  1. package/agents/gsd-advisor-researcher.md +112 -0
  2. package/agents/gsd-assumptions-analyzer.md +110 -0
  3. package/agents/gsd-codebase-mapper.md +1 -2
  4. package/agents/gsd-debugger.md +119 -2
  5. package/agents/gsd-executor.md +25 -4
  6. package/agents/gsd-integration-checker.md +1 -2
  7. package/agents/gsd-nyquist-auditor.md +1 -2
  8. package/agents/gsd-phase-researcher.md +151 -5
  9. package/agents/gsd-plan-checker.md +71 -5
  10. package/agents/gsd-planner.md +50 -4
  11. package/agents/gsd-project-researcher.md +29 -3
  12. package/agents/gsd-research-synthesizer.md +1 -2
  13. package/agents/gsd-roadmapper.md +30 -2
  14. package/agents/gsd-ui-auditor.md +445 -0
  15. package/agents/gsd-ui-checker.md +305 -0
  16. package/agents/gsd-ui-researcher.md +368 -0
  17. package/agents/gsd-user-profiler.md +173 -0
  18. package/agents/gsd-verifier.md +124 -4
  19. package/commands/gsd/gsd-add-backlog.md +76 -0
  20. package/commands/gsd/gsd-audit-uat.md +24 -0
  21. package/commands/gsd/gsd-autonomous.md +41 -0
  22. package/commands/gsd/gsd-debug.md +5 -0
  23. package/commands/gsd/gsd-discuss-phase.md +10 -36
  24. package/commands/gsd/gsd-do.md +30 -0
  25. package/commands/gsd/gsd-execute-phase.md +20 -2
  26. package/commands/gsd/gsd-fast.md +30 -0
  27. package/commands/gsd/gsd-forensics.md +56 -0
  28. package/commands/gsd/gsd-list-workspaces.md +19 -0
  29. package/commands/gsd/gsd-manager.md +39 -0
  30. package/commands/gsd/gsd-milestone-summary.md +51 -0
  31. package/commands/gsd/gsd-new-workspace.md +44 -0
  32. package/commands/gsd/gsd-next.md +24 -0
  33. package/commands/gsd/gsd-note.md +34 -0
  34. package/commands/gsd/gsd-plan-phase.md +3 -1
  35. package/commands/gsd/gsd-plant-seed.md +28 -0
  36. package/commands/gsd/gsd-pr-branch.md +25 -0
  37. package/commands/gsd/gsd-profile-user.md +46 -0
  38. package/commands/gsd/gsd-quick.md +4 -2
  39. package/commands/gsd/gsd-reapply-patches.md +10 -6
  40. package/commands/gsd/gsd-remove-workspace.md +26 -0
  41. package/commands/gsd/gsd-research-phase.md +5 -0
  42. package/commands/gsd/gsd-resume-work.md +1 -1
  43. package/commands/gsd/gsd-review-backlog.md +61 -0
  44. package/commands/gsd/gsd-review.md +37 -0
  45. package/commands/gsd/gsd-session-report.md +19 -0
  46. package/commands/gsd/gsd-set-profile.md +24 -23
  47. package/commands/gsd/gsd-ship.md +23 -0
  48. package/commands/gsd/gsd-stats.md +18 -0
  49. package/commands/gsd/gsd-thread.md +127 -0
  50. package/commands/gsd/gsd-ui-phase.md +34 -0
  51. package/commands/gsd/gsd-ui-review.md +32 -0
  52. package/commands/gsd/gsd-workstreams.md +66 -0
  53. package/get-shit-done/bin/gsd-tools.cjs +410 -84
  54. package/get-shit-done/bin/lib/commands.cjs +429 -18
  55. package/get-shit-done/bin/lib/config.cjs +318 -45
  56. package/get-shit-done/bin/lib/core.cjs +822 -84
  57. package/get-shit-done/bin/lib/frontmatter.cjs +78 -41
  58. package/get-shit-done/bin/lib/init.cjs +836 -104
  59. package/get-shit-done/bin/lib/milestone.cjs +44 -33
  60. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  61. package/get-shit-done/bin/lib/phase.cjs +293 -306
  62. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  63. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  64. package/get-shit-done/bin/lib/roadmap.cjs +55 -24
  65. package/get-shit-done/bin/lib/security.cjs +382 -0
  66. package/get-shit-done/bin/lib/state.cjs +363 -53
  67. package/get-shit-done/bin/lib/template.cjs +2 -2
  68. package/get-shit-done/bin/lib/uat.cjs +282 -0
  69. package/get-shit-done/bin/lib/verify.cjs +104 -36
  70. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  71. package/get-shit-done/references/checkpoints.md +12 -10
  72. package/get-shit-done/references/decimal-phase-calculation.md +2 -3
  73. package/get-shit-done/references/git-integration.md +47 -0
  74. package/get-shit-done/references/model-profile-resolution.md +2 -0
  75. package/get-shit-done/references/model-profiles.md +62 -16
  76. package/get-shit-done/references/phase-argument-parsing.md +2 -2
  77. package/get-shit-done/references/planning-config.md +3 -1
  78. package/get-shit-done/references/user-profiling.md +681 -0
  79. package/get-shit-done/references/workstream-flag.md +58 -0
  80. package/get-shit-done/templates/UAT.md +21 -3
  81. package/get-shit-done/templates/UI-SPEC.md +100 -0
  82. package/get-shit-done/templates/claude-md.md +122 -0
  83. package/get-shit-done/templates/config.json +10 -3
  84. package/get-shit-done/templates/context.md +61 -6
  85. package/get-shit-done/templates/dev-preferences.md +21 -0
  86. package/get-shit-done/templates/discussion-log.md +63 -0
  87. package/get-shit-done/templates/phase-prompt.md +46 -5
  88. package/get-shit-done/templates/project.md +2 -0
  89. package/get-shit-done/templates/state.md +2 -2
  90. package/get-shit-done/templates/user-profile.md +146 -0
  91. package/get-shit-done/workflows/add-phase.md +2 -2
  92. package/get-shit-done/workflows/add-tests.md +4 -4
  93. package/get-shit-done/workflows/add-todo.md +3 -3
  94. package/get-shit-done/workflows/audit-milestone.md +13 -5
  95. package/get-shit-done/workflows/audit-uat.md +109 -0
  96. package/get-shit-done/workflows/autonomous.md +891 -0
  97. package/get-shit-done/workflows/check-todos.md +2 -2
  98. package/get-shit-done/workflows/cleanup.md +4 -4
  99. package/get-shit-done/workflows/complete-milestone.md +9 -6
  100. package/get-shit-done/workflows/diagnose-issues.md +15 -3
  101. package/get-shit-done/workflows/discovery-phase.md +2 -2
  102. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  103. package/get-shit-done/workflows/discuss-phase.md +411 -38
  104. package/get-shit-done/workflows/do.md +104 -0
  105. package/get-shit-done/workflows/execute-phase.md +405 -18
  106. package/get-shit-done/workflows/execute-plan.md +77 -12
  107. package/get-shit-done/workflows/fast.md +105 -0
  108. package/get-shit-done/workflows/forensics.md +265 -0
  109. package/get-shit-done/workflows/health.md +28 -6
  110. package/get-shit-done/workflows/help.md +124 -7
  111. package/get-shit-done/workflows/insert-phase.md +2 -2
  112. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  113. package/get-shit-done/workflows/list-workspaces.md +56 -0
  114. package/get-shit-done/workflows/manager.md +362 -0
  115. package/get-shit-done/workflows/map-codebase.md +74 -13
  116. package/get-shit-done/workflows/milestone-summary.md +223 -0
  117. package/get-shit-done/workflows/new-milestone.md +120 -18
  118. package/get-shit-done/workflows/new-project.md +178 -39
  119. package/get-shit-done/workflows/new-workspace.md +237 -0
  120. package/get-shit-done/workflows/next.md +97 -0
  121. package/get-shit-done/workflows/node-repair.md +92 -0
  122. package/get-shit-done/workflows/note.md +156 -0
  123. package/get-shit-done/workflows/pause-work.md +62 -8
  124. package/get-shit-done/workflows/plan-milestone-gaps.md +4 -5
  125. package/get-shit-done/workflows/plan-phase.md +332 -33
  126. package/get-shit-done/workflows/plant-seed.md +169 -0
  127. package/get-shit-done/workflows/pr-branch.md +129 -0
  128. package/get-shit-done/workflows/profile-user.md +450 -0
  129. package/get-shit-done/workflows/progress.md +145 -20
  130. package/get-shit-done/workflows/quick.md +205 -49
  131. package/get-shit-done/workflows/remove-phase.md +2 -2
  132. package/get-shit-done/workflows/remove-workspace.md +90 -0
  133. package/get-shit-done/workflows/research-phase.md +11 -3
  134. package/get-shit-done/workflows/resume-project.md +35 -16
  135. package/get-shit-done/workflows/review.md +228 -0
  136. package/get-shit-done/workflows/session-report.md +146 -0
  137. package/get-shit-done/workflows/set-profile.md +2 -2
  138. package/get-shit-done/workflows/settings.md +80 -11
  139. package/get-shit-done/workflows/ship.md +228 -0
  140. package/get-shit-done/workflows/stats.md +60 -0
  141. package/get-shit-done/workflows/transition.md +147 -20
  142. package/get-shit-done/workflows/ui-phase.md +302 -0
  143. package/get-shit-done/workflows/ui-review.md +165 -0
  144. package/get-shit-done/workflows/update.md +108 -25
  145. package/get-shit-done/workflows/validate-phase.md +15 -8
  146. package/get-shit-done/workflows/verify-phase.md +16 -5
  147. package/get-shit-done/workflows/verify-work.md +72 -18
  148. package/package.json +1 -1
  149. package/skills/gsd-audit-milestone/SKILL.md +29 -0
  150. package/skills/gsd-cleanup/SKILL.md +19 -0
  151. package/skills/gsd-complete-milestone/SKILL.md +131 -0
  152. package/skills/gsd-discuss-phase/SKILL.md +54 -0
  153. package/skills/gsd-execute-phase/SKILL.md +49 -0
  154. package/skills/gsd-plan-phase/SKILL.md +37 -0
  155. package/skills/gsd-ui-phase/SKILL.md +24 -0
  156. package/skills/gsd-ui-review/SKILL.md +24 -0
  157. package/skills/gsd-verify-work/SKILL.md +30 -0
@@ -1,17 +1,26 @@
1
- <purpose>
1
+ <objective>
2
2
  Initialize a new project through unified flow: questioning, research (optional), requirements, roadmap. This is the most leveraged moment in any project — deep questioning here means better plans, better execution, better outcomes. One workflow takes you from idea to ready-for-planning.
3
- </purpose>
3
+ </objective>
4
4
 
5
5
  <required_reading>
6
6
  read all files referenced by the invoking prompt's execution_context before starting.
7
7
  </required_reading>
8
8
 
9
+ <available_agent_types>
10
+ Valid GSD subagent types (use exact names — do not fall back to 'general'):
11
+ - gsd-project-researcher — Researches project-level technical decisions
12
+ - gsd-research-synthesizer — Synthesizes findings from parallel research agents
13
+ - gsd-roadmapper — Creates phased execution roadmaps
14
+ </available_agent_types>
15
+
9
16
  <auto_mode>
17
+
10
18
  ## Auto Mode Detection
11
19
 
12
20
  Check if `--auto` flag is present in $ARGUMENTS.
13
21
 
14
22
  **If auto mode:**
23
+
15
24
  - Skip brownfield mapping offer (assume greenfield)
16
25
  - Skip deep questioning (extract context from provided document)
17
26
  - Config: YOLO mode is implicit (skip that question), but ask granularity/git/agents FIRST (Step 2a)
@@ -23,6 +32,7 @@ Check if `--auto` flag is present in $ARGUMENTS.
23
32
 
24
33
  **Document requirement:**
25
34
  Auto mode requires an idea document — either:
35
+
26
36
  - File reference: `/gsd-new-project --auto @prd.md`
27
37
  - Pasted/written text in the prompt
28
38
 
@@ -37,6 +47,7 @@ Usage:
37
47
 
38
48
  The document should describe what you want to build.
39
49
  ```
50
+
40
51
  </auto_mode>
41
52
 
42
53
  <process>
@@ -48,6 +59,9 @@ The document should describe what you want to build.
48
59
  ```bash
49
60
  INIT=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" init new-project)
50
61
  if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
62
+ AGENT_SKILLS_RESEARCHER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-project-researcher 2>/dev/null)
63
+ AGENT_SKILLS_SYNTHESIZER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-synthesizer 2>/dev/null)
64
+ AGENT_SKILLS_ROADMAPPER=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" agent-skills gsd-roadmapper 2>/dev/null)
51
65
  ```
52
66
 
53
67
  Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `project_path`.
@@ -55,6 +69,7 @@ Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `co
55
69
  **If `project_exists` is true:** Error — project already initialized. Use `/gsd-progress`.
56
70
 
57
71
  **If `has_git` is false:** Initialize git:
72
+
58
73
  ```bash
59
74
  git init
60
75
  ```
@@ -66,6 +81,7 @@ git init
66
81
  **If `needs_codebase_map` is true** (from init — existing code detected but no codebase map):
67
82
 
68
83
  Use question:
84
+
69
85
  - header: "Codebase"
70
86
  - question: "I detected existing code in this directory. Would you like to map the codebase first?"
71
87
  - options:
@@ -73,9 +89,11 @@ Use question:
73
89
  - "Skip mapping" — Proceed with project initialization
74
90
 
75
91
  **If "Map codebase first":**
92
+
76
93
  ```
77
94
  Run `/gsd-map-codebase` first, then return to `/gsd-new-project`
78
95
  ```
96
+
79
97
  Exit command.
80
98
 
81
99
  **If "Skip mapping" OR `needs_codebase_map` is false:** Continue to Step 3.
@@ -159,29 +177,18 @@ question([
159
177
  options: [
160
178
  { label: "Smart (Recommended)", description: "Two models: one for reseach and planing, other for execution and verification" },
161
179
  { label: "Simple", description: Description: "One model for all agents (not flexible)" },
162
- { label: "Genius (most flexible)", description: "Three models: different for every stage" }
180
+ { label: "Genius (most flexible)", description: "Three models: different for every stage" },
181
+ { label: "Inherit", description: "Use the current session model for all agents (OpenCode /model)" }
163
182
  ]
164
183
  }
165
184
  ])
166
185
  ```
167
186
 
168
- Create `.planning/config.json` with mode set to "yolo":
169
-
170
- ```json
171
- {
172
- "mode": "yolo",
173
- "granularity": "[selected]",
174
- "parallelization": true|false,
175
- "commit_docs": true|false,
176
- "model_profile": "simple|smart|genius",
177
- "workflow": {
178
- "research": true|false,
179
- "plan_check": true|false,
180
- "verifier": true|false,
181
- "nyquist_validation": depth !== "quick",
182
- "auto_advance": true
183
- }
184
- }
187
+ Create `.planning/config.json` with all settings (CLI fills in remaining defaults automatically):
188
+
189
+ ```bash
190
+ mkdir -p .planning
191
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-new-project '{"mode":"yolo","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"simple|smart|genius|inherit","workflow":{"research":true|false,"plan_check":true|false,"verifier":true|false,"nyquist_validation":true|false,"auto_advance":true}}'
185
192
  ```
186
193
 
187
194
  **If commit_docs = No:** Add `.planning/` to `.gitignore`.
@@ -221,11 +228,20 @@ Ask inline (freeform, NOT question):
221
228
 
222
229
  Wait for their response. This gives you the context needed to ask intelligent follow-up questions.
223
230
 
231
+ **Research-before-questions mode:** Check if `workflow.research_before_questions` is enabled in `.planning/config.json` (or the config from init context). When enabled, before asking follow-up questions about a topic area:
232
+
233
+ 1. Do a brief web search for best practices related to what the user described
234
+ 2. Mention key findings naturally as you ask questions (e.g., "Most projects like this use X — is that what you're thinking, or something different?")
235
+ 3. This makes questions more informed without changing the conversational flow
236
+
237
+ When disabled (default), ask questions directly as before.
238
+
224
239
  **Follow the thread:**
225
240
 
226
241
  Based on what they said, ask follow-up questions that dig into their response. Use question with options that probe what they mentioned — interpretations, clarifications, concrete examples.
227
242
 
228
243
  Keep following threads. Each answer opens new threads to explore. Ask about:
244
+
229
245
  - What excited them
230
246
  - What problem sparked this
231
247
  - What they mean by vague terms
@@ -233,6 +249,7 @@ Keep following threads. Each answer opens new threads to explore. Ask about:
233
249
  - What's already decided
234
250
 
235
251
  Consult `questioning.md` for techniques:
252
+
236
253
  - Challenge vagueness
237
254
  - Make abstract concrete
238
255
  - Surface assumptions
@@ -334,6 +351,27 @@ Initialize with any decisions made during questioning:
334
351
  *Last updated: [date] after initialization*
335
352
  ```
336
353
 
354
+ **Evolution section** (include at the end of PROJECT.md, before the footer):
355
+
356
+ ```markdown
357
+ ## Evolution
358
+
359
+ This document evolves at phase transitions and milestone boundaries.
360
+
361
+ **After each phase transition** (via `/gsd-transition`):
362
+ 1. Requirements invalidated? → Move to Out of Scope with reason
363
+ 2. Requirements validated? → Move to Validated with phase reference
364
+ 3. New requirements emerged? → Add to Active
365
+ 4. Decisions to log? → Add to Key Decisions
366
+ 5. "What This Is" still accurate? → Update if drifted
367
+
368
+ **After each milestone** (via `/gsd-complete-milestone`):
369
+ 1. Full review of all sections
370
+ 2. Core Value check — still the right priority?
371
+ 3. Audit Out of Scope — reasons still valid?
372
+ 4. Update Context with current state
373
+ ```
374
+
337
375
  Do not compress. Capture everything gathered.
338
376
 
339
377
  **Commit PROJECT.md:**
@@ -459,35 +497,29 @@ questions: [
459
497
  options: [
460
498
  { label: "Smart (Recommended)", description: "Two models: one for reseach and planing, other for execution and verification" },
461
499
  { label: "Simple", description: Description: "One model for all agents (not flexible)" },
462
- { label: "Genius (most flexible)", description: "Three models: different for every stage" }
500
+ { label: "Genius (most flexible)", description: "Three models: different for every stage" },
501
+ { label: "Inherit", description: "Use the current session model for all agents (OpenCode /model)" }
463
502
  ]
464
503
  }
465
504
  ]
466
505
  ```
467
506
 
468
- Create `.planning/config.json` with all settings:
469
-
470
- ```json
471
- {
472
- "mode": "yolo|interactive",
473
- "granularity": "coarse|standard|fine",
474
- "parallelization": true|false,
475
- "commit_docs": true|false,
476
- "model_profile": "simple|smart|genius",
477
- "workflow": {
478
- "research": true|false,
479
- "plan_check": true|false,
480
- "verifier": true|false,
481
- "nyquist_validation": depth !== "quick"
482
- }
483
- }
507
+ Create `.planning/config.json` with all settings (CLI fills in remaining defaults automatically):
508
+
509
+ ```bash
510
+ mkdir -p .planning
511
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" config-new-project '{"mode":"[yolo|interactive]","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"simple|smart|genius|inherit","workflow":{"research":true|false,"plan_check":true|false,"verifier":true|false,"nyquist_validation":[false if granularity=coarse, true otherwise]}}'
484
512
  ```
485
513
 
514
+ **Note:** Run `/gsd-settings` anytime to update model profile, workflow agents, branching strategy, and other preferences.
515
+
486
516
  **If commit_docs = No:**
517
+
487
518
  - Set `commit_docs: false` in config.json
488
519
  - Add `.planning/` to `.gitignore` (create if needed)
489
520
 
490
521
  **If commit_docs = Yes:**
522
+
491
523
  - No additional gitignore entries needed
492
524
 
493
525
  **Commit config.json:**
@@ -496,7 +528,37 @@ Create `.planning/config.json` with all settings:
496
528
  node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "chore: add project config" --files .planning/config.json
497
529
  ```
498
530
 
499
- **Note:** Run `/gsd-settings` anytime to update these preferences.
531
+ ## 5.1. Sub-Repo Detection
532
+
533
+ **Detect multi-repo workspace:**
534
+
535
+ Check for directories with their own `.git` folders (separate repos within the workspace):
536
+
537
+ ```bash
538
+ find . -maxdepth 1 -type d -not -name ".*" -not -name "node_modules" -exec test -d "{}/.git" \; -print
539
+ ```
540
+
541
+ **If sub-repos found:**
542
+
543
+ Strip the `./` prefix to get directory names (e.g., `./backend` → `backend`).
544
+
545
+ Use question:
546
+
547
+ - header: "Multi-Repo Workspace"
548
+ - question: "I detected separate git repos in this workspace. Which directories contain code that GSD should commit to?"
549
+ - multiSelect: true
550
+ - options: one option per detected directory
551
+ - "[directory name]" — Separate git repo
552
+
553
+ **If user selects one or more directories:**
554
+
555
+ - Set `planning.sub_repos` in config.json to the selected directory names array (e.g., `["backend", "frontend"]`)
556
+ - Auto-set `planning.commit_docs` to `false` (planning docs stay local in multi-repo workspaces)
557
+ - Add `.planning/` to `.gitignore` if not already present
558
+
559
+ Config changes are saved locally — no commit needed since `commit_docs` is `false` in multi-repo mode.
560
+
561
+ **If no sub-repos found or user selects none:** Continue with no changes to config.
500
562
 
501
563
  ## 5.5. Resolve Model Profile
502
564
 
@@ -507,6 +569,7 @@ Use models from init: `researcher_model`, `synthesizer_model`, `roadmapper_model
507
569
  **If auto mode:** Default to "Research first" without asking.
508
570
 
509
571
  Use question:
572
+
510
573
  - header: "Research"
511
574
  - question: "Research the domain ecosystem before defining requirements?"
512
575
  - options:
@@ -516,6 +579,7 @@ Use question:
516
579
  **If "Research first":**
517
580
 
518
581
  Display stage banner:
582
+
519
583
  ```
520
584
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
521
585
  GSD ► RESEARCHING
@@ -525,6 +589,7 @@ Researching [domain] ecosystem...
525
589
  ```
526
590
 
527
591
  Create research directory:
592
+
528
593
  ```bash
529
594
  mkdir -p .planning/research
530
595
  ```
@@ -532,10 +597,12 @@ mkdir -p .planning/research
532
597
  **Determine milestone context:**
533
598
 
534
599
  Check if this is greenfield or subsequent milestone:
600
+
535
601
  - If no "Validated" requirements in PROJECT.md → Greenfield (building from scratch)
536
602
  - If "Validated" requirements exist → Subsequent milestone (adding to existing app)
537
603
 
538
604
  Display spawning indicator:
605
+
539
606
  ```
540
607
  ◆ Spawning 4 researchers in parallel...
541
608
  → Stack research
@@ -566,6 +633,8 @@ What's the standard 2025 stack for [domain]?
566
633
  - {project_path} (Project context and goals)
567
634
  </files_to_read>
568
635
 
636
+ ${AGENT_SKILLS_RESEARCHER}
637
+
569
638
  <downstream_consumer>
570
639
  Your STACK.md feeds into roadmap creation. Be prescriptive:
571
640
  - Specific libraries with versions
@@ -604,6 +673,8 @@ What features do [domain] products have? What's table stakes vs differentiating?
604
673
  - {project_path} (Project context)
605
674
  </files_to_read>
606
675
 
676
+ ${AGENT_SKILLS_RESEARCHER}
677
+
607
678
  <downstream_consumer>
608
679
  Your FEATURES.md feeds into requirements definition. Categorize clearly:
609
680
  - Table stakes (must have or users leave)
@@ -642,6 +713,8 @@ How are [domain] systems typically structured? What are major components?
642
713
  - {project_path} (Project context)
643
714
  </files_to_read>
644
715
 
716
+ ${AGENT_SKILLS_RESEARCHER}
717
+
645
718
  <downstream_consumer>
646
719
  Your ARCHITECTURE.md informs phase structure in roadmap. Include:
647
720
  - Component boundaries (what talks to what)
@@ -680,6 +753,8 @@ What do [domain] projects commonly get wrong? Critical mistakes?
680
753
  - {project_path} (Project context)
681
754
  </files_to_read>
682
755
 
756
+ ${AGENT_SKILLS_RESEARCHER}
757
+
683
758
  <downstream_consumer>
684
759
  Your PITFALLS.md prevents mistakes in roadmap/planning. For each pitfall:
685
760
  - Warning signs (how to detect early)
@@ -715,6 +790,8 @@ Synthesize research outputs into SUMMARY.md.
715
790
  - .planning/research/PITFALLS.md
716
791
  </files_to_read>
717
792
 
793
+ ${AGENT_SKILLS_SYNTHESIZER}
794
+
718
795
  <output>
719
796
  write to: .planning/research/SUMMARY.md
720
797
  Use template: $HOME/.config/opencode/get-shit-done/templates/research-project/SUMMARY.md
@@ -724,6 +801,7 @@ Commit after writing.
724
801
  ```
725
802
 
726
803
  Display research complete banner and key findings:
804
+
727
805
  ```
728
806
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
729
807
  GSD ► RESEARCH COMPLETE ✓
@@ -743,6 +821,7 @@ Files: `.planning/research/`
743
821
  ## 7. Define Requirements
744
822
 
745
823
  Display stage banner:
824
+
746
825
  ```
747
826
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
748
827
  GSD ► DEFINING REQUIREMENTS
@@ -752,6 +831,7 @@ Display stage banner:
752
831
  **Load context:**
753
832
 
754
833
  read PROJECT.md and extract:
834
+
755
835
  - Core value (the ONE thing that must work)
756
836
  - Stated constraints (budget, timeline, tech limitations)
757
837
  - Any explicit scope boundaries
@@ -759,6 +839,7 @@ read PROJECT.md and extract:
759
839
  **If research exists:** read research/FEATURES.md and extract feature categories.
760
840
 
761
841
  **If auto mode:**
842
+
762
843
  - Auto-include all table stakes features (users expect these)
763
844
  - Include features explicitly mentioned in provided document
764
845
  - Auto-defer differentiators not mentioned in document
@@ -797,6 +878,7 @@ Here are the features for [domain]:
797
878
  Ask: "What are the main things users need to be able to do?"
798
879
 
799
880
  For each capability mentioned:
881
+
800
882
  - Ask clarifying questions to make it specific
801
883
  - Probe for related capabilities
802
884
  - Group into categories
@@ -815,6 +897,7 @@ For each category, use question:
815
897
  - "None for v1" — Defer entire category
816
898
 
817
899
  Track responses:
900
+
818
901
  - Selected features → v1 requirements
819
902
  - Unselected table stakes → v2 (users expect these)
820
903
  - Unselected differentiators → out of scope
@@ -822,6 +905,7 @@ Track responses:
822
905
  **Identify gaps:**
823
906
 
824
907
  Use question:
908
+
825
909
  - header: "Additions"
826
910
  - question: "Any requirements research missed? (Features specific to your vision)"
827
911
  - options:
@@ -835,6 +919,7 @@ Cross-check requirements against Core Value from PROJECT.md. If gaps detected, s
835
919
  **Generate REQUIREMENTS.md:**
836
920
 
837
921
  Create `.planning/REQUIREMENTS.md` with:
922
+
838
923
  - v1 Requirements grouped by category (checkboxes, REQ-IDs)
839
924
  - v2 Requirements (deferred)
840
925
  - Out of Scope (explicit exclusions with reasoning)
@@ -845,12 +930,14 @@ Create `.planning/REQUIREMENTS.md` with:
845
930
  **Requirement quality criteria:**
846
931
 
847
932
  Good requirements are:
933
+
848
934
  - **Specific and testable:** "User can reset password via email link" (not "Handle password reset")
849
935
  - **User-centric:** "User can X" (not "System does Y")
850
936
  - **Atomic:** One capability per requirement (not "User can login and manage profile")
851
937
  - **Independent:** Minimal dependencies on other requirements
852
938
 
853
939
  Reject vague requirements. Push for specificity:
940
+
854
941
  - "Handle authentication" → "User can log in with email/password and stay logged in across sessions"
855
942
  - "Support sharing" → "User can share post via link that opens in recipient's browser"
856
943
 
@@ -888,6 +975,7 @@ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: defi
888
975
  ## 8. Create Roadmap
889
976
 
890
977
  Display stage banner:
978
+
891
979
  ```
892
980
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
893
981
  GSD ► CREATING ROADMAP
@@ -909,6 +997,8 @@ task(prompt="
909
997
  - .planning/config.json (Granularity and mode settings)
910
998
  </files_to_read>
911
999
 
1000
+ ${AGENT_SKILLS_ROADMAPPER}
1001
+
912
1002
  </planning_context>
913
1003
 
914
1004
  <instructions>
@@ -928,6 +1018,7 @@ write files first, then return. This ensures artifacts persist even if context i
928
1018
  **Handle roadmapper return:**
929
1019
 
930
1020
  **If `## ROADMAP BLOCKED`:**
1021
+
931
1022
  - Present blocker information
932
1023
  - Work with user to resolve
933
1024
  - Re-spawn when resolved
@@ -977,6 +1068,7 @@ Success criteria:
977
1068
  **CRITICAL: Ask for approval before committing (interactive mode only):**
978
1069
 
979
1070
  Use question:
1071
+
980
1072
  - header: "Roadmap"
981
1073
  - question: "Does this roadmap structure work for you?"
982
1074
  - options:
@@ -987,8 +1079,10 @@ Use question:
987
1079
  **If "Approve":** Continue to commit.
988
1080
 
989
1081
  **If "Adjust phases":**
1082
+
990
1083
  - Get user's adjustment notes
991
1084
  - Re-spawn roadmapper with revision context:
1085
+
992
1086
  ```
993
1087
  task(prompt="
994
1088
  <revision>
@@ -999,20 +1093,31 @@ Use question:
999
1093
  - .planning/ROADMAP.md (Current roadmap to revise)
1000
1094
  </files_to_read>
1001
1095
 
1096
+ ${AGENT_SKILLS_ROADMAPPER}
1097
+
1002
1098
  Update the roadmap based on feedback. edit files in place.
1003
1099
  Return ROADMAP REVISED with changes made.
1004
1100
  </revision>
1005
1101
  ", subagent_type="gsd-roadmapper", model="{roadmapper_model}", description="Revise roadmap")
1006
1102
  ```
1103
+
1007
1104
  - Present revised roadmap
1008
1105
  - Loop until user approves
1009
1106
 
1010
1107
  **If "Review full file":** Display raw `cat .planning/ROADMAP.md`, then re-ask.
1011
1108
 
1109
+ **Generate or refresh project AGENTS.md before final commit:**
1110
+
1111
+ ```bash
1112
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" generate-OpenCode-md
1113
+ ```
1114
+
1115
+ This ensures new projects get the default GSD workflow-enforcement guidance and current project context in `AGENTS.md`.
1116
+
1012
1117
  **Commit roadmap (after approval or auto mode):**
1013
1118
 
1014
1119
  ```bash
1015
- node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: create roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md
1120
+ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "docs: create roadmap ([N] phases)" --files .planning/ROADMAP.md .planning/STATE.md .planning/REQUIREMENTS.md AGENTS.md
1016
1121
  ```
1017
1122
 
1018
1123
  ## 9. Done
@@ -1033,6 +1138,7 @@ Present completion summary:
1033
1138
  | Research | `.planning/research/` |
1034
1139
  | Requirements | `.planning/REQUIREMENTS.md` |
1035
1140
  | Roadmap | `.planning/ROADMAP.md` |
1141
+ | Project guide | `AGENTS.md` |
1036
1142
 
1037
1143
  **[N] phases** | **[X] requirements** | Ready to build ✓
1038
1144
  ```
@@ -1049,6 +1155,37 @@ Exit skill and invoke command("/gsd-discuss-phase 1 --auto")
1049
1155
 
1050
1156
  **If interactive mode:**
1051
1157
 
1158
+ Check if Phase 1 has UI indicators (look for `**UI hint**: yes` in Phase 1 detail section of ROADMAP.md):
1159
+
1160
+ ```bash
1161
+ PHASE1_SECTION=$(node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase 1 2>/dev/null)
1162
+ PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true" || echo "false")
1163
+ ```
1164
+
1165
+ **If Phase 1 has UI (`PHASE1_HAS_UI` is `true`):**
1166
+
1167
+ ```
1168
+ ───────────────────────────────────────────────────────────────
1169
+
1170
+ ## ▶ Next Up
1171
+
1172
+ **Phase 1: [Phase Name]** — [Goal from ROADMAP.md]
1173
+
1174
+ /gsd-discuss-phase 1 — gather context and clarify approach
1175
+
1176
+ */new first → fresh context window*
1177
+
1178
+ ---
1179
+
1180
+ **Also available:**
1181
+ - /gsd-ui-phase 1 — generate UI design contract (recommended for frontend phases)
1182
+ - /gsd-plan-phase 1 — skip discussion, plan directly
1183
+
1184
+ ───────────────────────────────────────────────────────────────
1185
+ ```
1186
+
1187
+ **If Phase 1 has no UI:**
1188
+
1052
1189
  ```
1053
1190
  ───────────────────────────────────────────────────────────────
1054
1191
 
@@ -1083,6 +1220,7 @@ Exit skill and invoke command("/gsd-discuss-phase 1 --auto")
1083
1220
  - `.planning/REQUIREMENTS.md`
1084
1221
  - `.planning/ROADMAP.md`
1085
1222
  - `.planning/STATE.md`
1223
+ - `AGENTS.md`
1086
1224
 
1087
1225
  </output>
1088
1226
 
@@ -1104,6 +1242,7 @@ Exit skill and invoke command("/gsd-discuss-phase 1 --auto")
1104
1242
  - [ ] ROADMAP.md created with phases, requirement mappings, success criteria
1105
1243
  - [ ] STATE.md initialized
1106
1244
  - [ ] REQUIREMENTS.md traceability updated
1245
+ - [ ] AGENTS.md generated with GSD workflow guidance
1107
1246
  - [ ] User knows next step is `/gsd-discuss-phase 1`
1108
1247
 
1109
1248
  **Atomic commits:** Each phase commits its artifacts immediately. If context is lost, artifacts persist.