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,6 +1,7 @@
1
1
  ---
2
2
  name: gsd-phase-researcher
3
3
  description: Researches how to implement a phase before planning. Produces RESEARCH.md consumed by gsd-planner. Spawned by /gsd-plan-phase orchestrator.
4
+ mode: subagent
4
5
  tools:
5
6
  read: true
6
7
  write: true
@@ -10,9 +11,9 @@ tools:
10
11
  websearch: true
11
12
  webfetch: true
12
13
  mcp__context7__*: true
14
+ mcp__firecrawl__*: true
15
+ mcp__exa__*: true
13
16
  color: "#00FFFF"
14
- skills:
15
- - gsd-researcher-workflow
16
17
  # hooks:
17
18
  # PostToolUse:
18
19
  # - matcher: "write|edit"
@@ -50,6 +51,8 @@ Before researching, discover project context:
50
51
  5. Research should account for project skill patterns
51
52
 
52
53
  This ensures research aligns with project-specific conventions and libraries.
54
+
55
+ **AGENTS.md enforcement:** If `./AGENTS.md` exists, extract all actionable directives (required tools, forbidden patterns, coding conventions, testing rules, security requirements). Include a `## Project Constraints (from AGENTS.md)` section in RESEARCH.md listing these directives so the planner can verify compliance. Treat AGENTS.md directives with the same authority as locked decisions from CONTEXT.md — research should not recommend approaches that contradict them.
53
56
  </project_context>
54
57
 
55
58
  <upstream_input>
@@ -147,6 +150,31 @@ If `brave_search: false` (or not set), use built-in websearch tool instead.
147
150
 
148
151
  Brave Search provides an independent index (not Google/Bing dependent) with less SEO spam and faster responses.
149
152
 
153
+ ### Exa Semantic Search (MCP)
154
+
155
+ Check `exa_search` from init context. If `true`, use Exa for semantic, research-heavy queries:
156
+
157
+ ```
158
+ mcp__exa__web_search_exa with query: "your semantic query"
159
+ ```
160
+
161
+ **Best for:** Research questions where keyword search fails — "best approaches to X", finding technical/academic content, discovering niche libraries. Returns semantically relevant results.
162
+
163
+ If `exa_search: false` (or not set), fall back to websearch or Brave Search.
164
+
165
+ ### Firecrawl Deep Scraping (MCP)
166
+
167
+ Check `firecrawl` from init context. If `true`, use Firecrawl to extract structured content from URLs:
168
+
169
+ ```
170
+ mcp__firecrawl__scrape with url: "https://docs.example.com/guide"
171
+ mcp__firecrawl__search with query: "your query" (web search + auto-scrape results)
172
+ ```
173
+
174
+ **Best for:** Extracting full page content from documentation, blog posts, GitHub READMEs. Use after finding a URL from Exa, websearch, or known docs. Returns clean markdown.
175
+
176
+ If `firecrawl: false` (or not set), fall back to webfetch.
177
+
150
178
  ## Verification Protocol
151
179
 
152
180
  **websearch findings MUST be verified:**
@@ -171,7 +199,7 @@ For each websearch finding:
171
199
  | MEDIUM | websearch verified with official source, multiple credible sources | State with attribution |
172
200
  | LOW | websearch only, single source, unverified | Flag as needing validation |
173
201
 
174
- Priority: Context7 > Official Docs > Official GitHub > Verified websearch > Unverified websearch
202
+ Priority: Context7 > Exa (verified) > Firecrawl (official docs) > Official GitHub > Brave/websearch (verified) > websearch (unverified)
175
203
 
176
204
  </source_hierarchy>
177
205
 
@@ -204,6 +232,7 @@ Priority: Context7 > Official Docs > Official GitHub > Verified websearch > Unve
204
232
  - [ ] Publication dates checked (prefer recent/current)
205
233
  - [ ] Confidence levels assigned honestly
206
234
  - [ ] "What might I have missed?" review completed
235
+ - [ ] **If rename/refactor phase:** Runtime State Inventory completed — all 5 categories answered explicitly (not left blank)
207
236
 
208
237
  </verification_protocol>
209
238
 
@@ -248,6 +277,12 @@ Priority: Context7 > Official Docs > Official GitHub > Verified websearch > Unve
248
277
  npm install [packages]
249
278
  \`\`\`
250
279
 
280
+ **Version verification:** Before writing the Standard Stack table, verify each recommended package version is current:
281
+ \`\`\`bash
282
+ npm view [package] version
283
+ \`\`\`
284
+ Document the verified version and publish date. Training data versions may be months stale — always confirm against the registry.
285
+
251
286
  ## Architecture Patterns
252
287
 
253
288
  ### Recommended Project Structure
@@ -278,6 +313,20 @@ src/
278
313
 
279
314
  **Key insight:** [why custom solutions are worse in this domain]
280
315
 
316
+ ## Runtime State Inventory
317
+
318
+ > Include this section for rename/refactor/migration phases only. Omit entirely for greenfield phases.
319
+
320
+ | Category | Items Found | Action Required |
321
+ |----------|-------------|------------------|
322
+ | Stored data | [e.g., "Mem0 memories: user_id='dev-os' in ~X records"] | [code edit / data migration] |
323
+ | Live service config | [e.g., "25 n8n workflows in SQLite not exported to git"] | [API patch / manual] |
324
+ | OS-registered state | [e.g., "Windows task Scheduler: 3 tasks with 'dev-os' in description"] | [re-register tasks] |
325
+ | Secrets/env vars | [e.g., "SOPS key 'webhook_auth_header' — code rename only, key unchanged"] | [none / update key] |
326
+ | Build artifacts | [e.g., "scripts/devos-cli/devos_cli.egg-info/ — stale after pyproject.toml rename"] | [reinstall package] |
327
+
328
+ **Nothing found in category:** State explicitly ("None — verified by X").
329
+
281
330
  ## Common Pitfalls
282
331
 
283
332
  ### Pitfall 1: [Name]
@@ -312,6 +361,20 @@ Verified patterns from official sources:
312
361
  - What's unclear: [the gap]
313
362
  - Recommendation: [how to handle]
314
363
 
364
+ ## Environment Availability
365
+
366
+ > Skip this section if the phase has no external dependencies (code/config-only changes).
367
+
368
+ | Dependency | Required By | Available | Version | Fallback |
369
+ |------------|------------|-----------|---------|----------|
370
+ | [tool] | [feature/requirement] | ✓/✗ | [version or —] | [fallback or —] |
371
+
372
+ **Missing dependencies with no fallback:**
373
+ - [items that block execution]
374
+
375
+ **Missing dependencies with fallback:**
376
+ - [items with viable alternatives]
377
+
315
378
  ## Validation Architecture
316
379
 
317
380
  > Skip this section entirely if workflow.nyquist_validation is explicitly set to false in .planning/config.json. If the key is absent, treat as enabled.
@@ -411,6 +474,88 @@ Based on phase description, identify what needs investigating:
411
474
  - **Pitfalls:** Common beginner mistakes, gotchas, rewrite-causing errors
412
475
  - **Don't Hand-Roll:** Existing solutions for deceptively complex problems
413
476
 
477
+ ## Step 2.5: Runtime State Inventory (rename / refactor / migration phases only)
478
+
479
+ **Trigger:** Any phase involving rename, rebrand, refactor, string replacement, or migration.
480
+
481
+ A grep audit finds files. It does NOT find runtime state. For these phases you MUST explicitly answer each question before moving to Step 3:
482
+
483
+ | Category | question | Examples |
484
+ |----------|----------|----------|
485
+ | **Stored data** | What databases or datastores store the renamed string as a key, collection name, ID, or user_id? | ChromaDB collection names, Mem0 user_ids, n8n workflow content in SQLite, Redis keys |
486
+ | **Live service config** | What external services have this string in their configuration — but that configuration lives in a UI or database, NOT in git? | n8n workflows not exported to git (only exported ones are in git), Datadog service names/dashboards/tags, Tailscale ACL tags, Cloudflare Tunnel names |
487
+ | **OS-registered state** | What OS-level registrations embed the string? | Windows task Scheduler task descriptions (set at registration time), pm2 saved process names, launchd plists, systemd unit names |
488
+ | **Secrets and env vars** | What secret keys or env var names reference the renamed thing by exact name — and will code that reads them break if the name changes? | SOPS key names, .env files not in git, CI/CD environment variable names, pm2 ecosystem env injection |
489
+ | **Build artifacts / installed packages** | What installed or built artifacts still carry the old name and won't auto-update from a source rename? | pip egg-info directories, compiled binaries, npm global installs, Docker image tags in a registry |
490
+
491
+ For each item found: document (1) what needs changing, and (2) whether it requires a **data migration** (update existing records) vs. a **code edit** (change how new records are written). These are different tasks and must both appear in the plan.
492
+
493
+ **The canonical question:** *After every file in the repo is updated, what runtime systems still have the old string cached, stored, or registered?*
494
+
495
+ If the answer for a category is "nothing" — say so explicitly. Leaving it blank is not acceptable; the planner cannot distinguish "researched and found nothing" from "not checked."
496
+
497
+ ## Step 2.6: Environment Availability Audit
498
+
499
+ **Trigger:** Any phase that depends on external tools, services, runtimes, or CLI utilities beyond the project's own code.
500
+
501
+ Plans that assume a tool is available without checking lead to silent failures at execution time. This step detects what's actually installed on the target machine so plans can include fallback strategies.
502
+
503
+ **How:**
504
+
505
+ 1. **Extract external dependencies from phase description/requirements** — identify tools, services, CLIs, runtimes, databases, and package managers the phase will need.
506
+
507
+ 2. **Probe availability** for each dependency:
508
+
509
+ ```bash
510
+ # CLI tools — check if command exists and get version
511
+ command -v $TOOL 2>/dev/null && $TOOL --version 2>/dev/null | head -1
512
+
513
+ # Runtimes — check version meets minimum
514
+ node --version 2>/dev/null
515
+ python3 --version 2>/dev/null
516
+ ruby --version 2>/dev/null
517
+
518
+ # Package managers
519
+ npm --version 2>/dev/null
520
+ pip3 --version 2>/dev/null
521
+ cargo --version 2>/dev/null
522
+
523
+ # Databases / services — check if process is running or port is open
524
+ pg_isready 2>/dev/null
525
+ redis-cli ping 2>/dev/null
526
+ curl -s http://localhost:27017 2>/dev/null
527
+
528
+ # Docker
529
+ docker info 2>/dev/null | head -3
530
+ ```
531
+
532
+ 3. **Document in RESEARCH.md** as `## Environment Availability`:
533
+
534
+ ```markdown
535
+ ## Environment Availability
536
+
537
+ | Dependency | Required By | Available | Version | Fallback |
538
+ |------------|------------|-----------|---------|----------|
539
+ | PostgreSQL | Data layer | ✓ | 15.4 | — |
540
+ | Redis | Caching | ✗ | — | Use in-memory cache |
541
+ | Docker | Containerization | ✓ | 24.0.7 | — |
542
+ | ffmpeg | Media processing | ✗ | — | Skip media features, flag for human |
543
+
544
+ **Missing dependencies with no fallback:**
545
+ - {list items that block execution — planner must address these}
546
+
547
+ **Missing dependencies with fallback:**
548
+ - {list items with viable alternatives — planner should use fallback}
549
+ ```
550
+
551
+ 4. **Classification:**
552
+ - **Available:** Tool found, version meets minimum → no action needed
553
+ - **Available, wrong version:** Tool found but version too old → document upgrade path
554
+ - **Missing with fallback:** Not found, but a viable alternative exists → planner uses fallback
555
+ - **Missing, blocking:** Not found, no fallback → planner must address (install step, or descope feature)
556
+
557
+ **Skip condition:** If the phase is purely code/config changes with no external dependencies (e.g., refactoring, documentation), output: "Step 2.6: SKIPPED (no external dependencies identified)" and move on.
558
+
414
559
  ## Step 3: Execute Research Protocol
415
560
 
416
561
  For each domain: Context7 first → Official docs → websearch → Cross-verify. Document findings with confidence levels as you go.
@@ -464,7 +609,7 @@ List missing test files, framework config, or shared fixtures needed before impl
464
609
  ## Phase Requirements
465
610
 
466
611
  | ID | Description | Research Support |
467
- |----|-------------|-----------------|
612
+ |----|-------------|------------------|
468
613
  | {REQ-ID} | {from REQUIREMENTS.md} | {which research findings enable implementation} |
469
614
  </phase_requirements>
470
615
  ```
@@ -545,6 +690,7 @@ Research is complete when:
545
690
  - [ ] Architecture patterns documented
546
691
  - [ ] Don't-hand-roll items listed
547
692
  - [ ] Common pitfalls catalogued
693
+ - [ ] Environment availability audited (or skipped with reason)
548
694
  - [ ] Code examples provided
549
695
  - [ ] Source hierarchy followed (Context7 → Official → websearch)
550
696
  - [ ] All findings have confidence levels
@@ -560,4 +706,4 @@ Quality indicators:
560
706
  - **Actionable:** Planner could create tasks based on this research
561
707
  - **Current:** Year included in searches, publication dates checked
562
708
 
563
- </success_criteria>
709
+ </success_criteria>
@@ -1,14 +1,13 @@
1
1
  ---
2
2
  name: gsd-plan-checker
3
3
  description: Verifies plans will achieve phase goal before execution. Goal-backward analysis of plan quality. Spawned by /gsd-plan-phase orchestrator.
4
+ mode: subagent
4
5
  tools:
5
6
  read: true
6
7
  bash: true
7
8
  glob: true
8
9
  grep: true
9
10
  color: "#008000"
10
- skills:
11
- - gsd-plan-checker-workflow
12
11
  ---
13
12
 
14
13
  <role>
@@ -283,9 +282,11 @@ issue:
283
282
 
284
283
  **Process:**
285
284
  1. Parse CONTEXT.md sections: Decisions, OpenCode's Discretion, Deferred Ideas
286
- 2. For each locked Decision, find implementing task(s)
287
- 3. Verify no tasks implement Deferred Ideas (scope creep)
288
- 4. Verify Discretion areas are handled (planner's choice is valid)
285
+ 2. Extract all numbered decisions (D-01, D-02, etc.) from the `<decisions>` section
286
+ 3. For each locked Decision, find implementing task(s) — check task actions for D-XX references
287
+ 4. Verify 100% decision coverage: every D-XX must appear in at least one task's action or rationale
288
+ 5. Verify no tasks implement Deferred Ideas (scope creep)
289
+ 6. Verify Discretion areas are handled (planner's choice is valid)
289
290
 
290
291
  **Red flags:**
291
292
  - Locked decision has no implementing task
@@ -376,6 +377,69 @@ Overall: ✅ PASS / ❌ FAIL
376
377
 
377
378
  If FAIL: return to planner with specific fixes. Same revision loop as other dimensions (max 3 loops).
378
379
 
380
+ ## Dimension 9: Cross-Plan Data Contracts
381
+
382
+ **question:** When plans share data pipelines, are their transformations compatible?
383
+
384
+ **Process:**
385
+ 1. Identify data entities in multiple plans' `key_links` or `<action>` elements
386
+ 2. For each shared data path, check if one plan's transformation conflicts with another's:
387
+ - Plan A strips/sanitizes data that Plan B needs in original form
388
+ - Plan A's output format doesn't match Plan B's expected input
389
+ - Two plans consume the same stream with incompatible assumptions
390
+ 3. Check for a preservation mechanism (raw buffer, copy-before-transform)
391
+
392
+ **Red flags:**
393
+ - "strip"/"clean"/"sanitize" in one plan + "parse"/"extract" original format in another
394
+ - Streaming consumer modifies data that finalization consumer needs intact
395
+ - Two plans transform same entity without shared raw source
396
+
397
+ **Severity:** WARNING for potential conflicts. BLOCKER if incompatible transforms on same data entity with no preservation mechanism.
398
+
399
+ ## Dimension 10: AGENTS.md Compliance
400
+
401
+ **question:** Do plans respect project-specific conventions, constraints, and requirements from AGENTS.md?
402
+
403
+ **Process:**
404
+ 1. read `./AGENTS.md` in the working directory (already loaded in `<project_context>`)
405
+ 2. Extract actionable directives: coding conventions, forbidden patterns, required tools, security requirements, testing rules, architectural constraints
406
+ 3. For each directive, check if any plan task contradicts or ignores it
407
+ 4. Flag plans that introduce patterns AGENTS.md explicitly forbids
408
+ 5. Flag plans that skip steps AGENTS.md explicitly requires (e.g., required linting, specific test frameworks, commit conventions)
409
+
410
+ **Red flags:**
411
+ - Plan uses a library/pattern AGENTS.md explicitly forbids
412
+ - Plan skips a required step (e.g., AGENTS.md says "always run X before Y" but plan omits X)
413
+ - Plan introduces code style that contradicts AGENTS.md conventions
414
+ - Plan creates files in locations that violate AGENTS.md's architectural constraints
415
+ - Plan ignores security requirements documented in AGENTS.md
416
+
417
+ **Skip condition:** If no `./AGENTS.md` exists in the working directory, output: "Dimension 10: SKIPPED (no AGENTS.md found)" and move on.
418
+
419
+ **Example — forbidden pattern:**
420
+ ```yaml
421
+ issue:
422
+ dimension: claude_md_compliance
423
+ severity: blocker
424
+ description: "Plan uses Jest for testing but AGENTS.md requires Vitest"
425
+ plan: "01"
426
+ task: 1
427
+ claude_md_rule: "Testing: Always use Vitest, never Jest"
428
+ plan_action: "Install Jest and create test suite..."
429
+ fix_hint: "Replace Jest with Vitest per project AGENTS.md"
430
+ ```
431
+
432
+ **Example — skipped required step:**
433
+ ```yaml
434
+ issue:
435
+ dimension: claude_md_compliance
436
+ severity: warning
437
+ description: "Plan does not include lint step required by AGENTS.md"
438
+ plan: "02"
439
+ claude_md_rule: "All tasks must run eslint before committing"
440
+ fix_hint: "Add eslint verification step to each task's <verify> block"
441
+ ```
442
+
379
443
  </verification_dimensions>
380
444
 
381
445
  <verification_process>
@@ -706,6 +770,8 @@ Plan verification complete when:
706
770
  - [ ] No tasks contradict locked decisions
707
771
  - [ ] Deferred ideas not included in plans
708
772
  - [ ] Overall status determined (passed | issues_found)
773
+ - [ ] Cross-plan data contracts checked (no conflicting transforms on shared data)
774
+ - [ ] AGENTS.md compliance checked (plans respect project conventions)
709
775
  - [ ] Structured issues returned (if any found)
710
776
  - [ ] Result returned to orchestrator
711
777
 
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: gsd-planner
3
3
  description: Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /gsd-plan-phase orchestrator.
4
+ mode: subagent
4
5
  tools:
5
6
  read: true
6
7
  write: true
@@ -10,8 +11,6 @@ tools:
10
11
  webfetch: true
11
12
  mcp__context7__*: true
12
13
  color: "#008000"
13
- skills:
14
- - gsd-planner-workflow
15
14
  # hooks:
16
15
  # PostToolUse:
17
16
  # - matcher: "write|edit"
@@ -27,6 +26,7 @@ Spawned by:
27
26
  - `/gsd-plan-phase` orchestrator (standard phase planning)
28
27
  - `/gsd-plan-phase --gaps` orchestrator (gap closure from verification failures)
29
28
  - `/gsd-plan-phase` in revision mode (updating plans based on checker feedback)
29
+ - `/gsd-plan-phase --reviews` orchestrator (replanning with cross-AI review feedback)
30
30
 
31
31
  Your job: Produce PLAN.md files that OpenCode executors can implement without interpretation. Plans are prompts, not documents that become prompts.
32
32
 
@@ -69,6 +69,7 @@ The orchestrator provides user decisions in `<user_decisions>` tags from `/gsd-d
69
69
  - If user said "use library X" → task MUST use library X, not an alternative
70
70
  - If user said "card layout" → task MUST implement cards, not tables
71
71
  - If user said "no animations" → task MUST NOT include animations
72
+ - Reference the decision ID (D-01, D-02, etc.) in task actions for traceability
72
73
 
73
74
  2. **Deferred Ideas (from `## Deferred Ideas`)** — MUST NOT appear in plans
74
75
  - If user deferred "search functionality" → NO search tasks allowed
@@ -78,7 +79,8 @@ The orchestrator provides user decisions in `<user_decisions>` tags from `/gsd-d
78
79
  - Make reasonable choices and document in task actions
79
80
 
80
81
  **Self-check before returning:** For each plan, verify:
81
- - [ ] Every locked decision has a task implementing it
82
+ - [ ] Every locked decision (D-01, D-02, etc.) has a task implementing it
83
+ - [ ] task actions reference the decision ID they implement (e.g., "per D-03")
82
84
  - [ ] No task implements a deferred idea
83
85
  - [ ] Discretion areas are handled reasonably
84
86
 
@@ -501,7 +503,7 @@ After determining `files_modified`, extract the key interfaces/types/exports fro
501
503
 
502
504
  ```bash
503
505
  # Extract type definitions, interfaces, and exports from relevant files
504
- grep -n "export\|interface\|type\|class\|function" {relevant_source_files} 2>/dev/null | head -50
506
+ grep -n "export\\|interface\\|type\\|class\\|function" {relevant_source_files} 2>/dev/null | head -50
505
507
  ```
506
508
 
507
509
  Embed these in the plan's `<context>` section as an `<interfaces>` block:
@@ -973,6 +975,50 @@ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "fix($PHASE
973
975
 
974
976
  </revision_mode>
975
977
 
978
+ <reviews_mode>
979
+
980
+ ## Planning from Cross-AI Review Feedback
981
+
982
+ Triggered when orchestrator sets Mode to `reviews`. Replanning from scratch with REVIEWS.md feedback as additional context.
983
+
984
+ **Mindset:** Fresh planner with review insights — not a surgeon making patches, but an architect who has read peer critiques.
985
+
986
+ ### Step 1: Load REVIEWS.md
987
+ read the reviews file from `<files_to_read>`. Parse:
988
+ - Per-reviewer feedback (strengths, concerns, suggestions)
989
+ - Consensus Summary (agreed concerns = highest priority to address)
990
+ - Divergent Views (investigate, make a judgment call)
991
+
992
+ ### Step 2: Categorize Feedback
993
+ Group review feedback into:
994
+ - **Must address**: HIGH severity consensus concerns
995
+ - **Should address**: MEDIUM severity concerns from 2+ reviewers
996
+ - **Consider**: Individual reviewer suggestions, LOW severity items
997
+
998
+ ### Step 3: Plan Fresh with Review Context
999
+ Create new plans following the standard planning process, but with review feedback as additional constraints:
1000
+ - Each HIGH severity consensus concern MUST have a task that addresses it
1001
+ - MEDIUM concerns should be addressed where feasible without over-engineering
1002
+ - Note in task actions: "Addresses review concern: {concern}" for traceability
1003
+
1004
+ ### Step 4: Return
1005
+ Use standard PLANNING COMPLETE return format, adding a reviews section:
1006
+
1007
+ ```markdown
1008
+ ### Review Feedback Addressed
1009
+
1010
+ | Concern | Severity | How Addressed |
1011
+ |---------|----------|---------------|
1012
+ | {concern} | HIGH | Plan {N}, task {M}: {how} |
1013
+
1014
+ ### Review Feedback Deferred
1015
+ | Concern | Reason |
1016
+ |---------|--------|
1017
+ | {concern} | {why — out of scope, disagree, etc.} |
1018
+ ```
1019
+
1020
+ </reviews_mode>
1021
+
976
1022
  <execution_flow>
977
1023
 
978
1024
  <step name="load_project_state" priority="first">
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: gsd-project-researcher
3
3
  description: Researches domain ecosystem before roadmap creation. Produces files in .planning/research/ consumed during roadmap creation. Spawned by /gsd-new-project or /gsd-new-milestone orchestrators.
4
+ mode: subagent
4
5
  tools:
5
6
  read: true
6
7
  write: true
@@ -10,9 +11,9 @@ tools:
10
11
  websearch: true
11
12
  webfetch: true
12
13
  mcp__context7__*: true
14
+ mcp__firecrawl__*: true
15
+ mcp__exa__*: true
13
16
  color: "#00FFFF"
14
- skills:
15
- - gsd-researcher-workflow
16
17
  # hooks:
17
18
  # PostToolUse:
18
19
  # - matcher: "write|edit"
@@ -126,6 +127,31 @@ If `brave_search: false` (or not set), use built-in websearch tool instead.
126
127
 
127
128
  Brave Search provides an independent index (not Google/Bing dependent) with less SEO spam and faster responses.
128
129
 
130
+ ### Exa Semantic Search (MCP)
131
+
132
+ Check `exa_search` from orchestrator context. If `true`, use Exa for research-heavy, semantic queries:
133
+
134
+ ```
135
+ mcp__exa__web_search_exa with query: "your semantic query"
136
+ ```
137
+
138
+ **Best for:** Research questions where keyword search fails — "best approaches to X", finding technical/academic content, discovering niche libraries, ecosystem exploration. Returns semantically relevant results rather than keyword matches.
139
+
140
+ If `exa_search: false` (or not set), fall back to websearch or Brave Search.
141
+
142
+ ### Firecrawl Deep Scraping (MCP)
143
+
144
+ Check `firecrawl` from orchestrator context. If `true`, use Firecrawl to extract structured content from discovered URLs:
145
+
146
+ ```
147
+ mcp__firecrawl__scrape with url: "https://docs.example.com/guide"
148
+ mcp__firecrawl__search with query: "your query" (web search + auto-scrape results)
149
+ ```
150
+
151
+ **Best for:** Extracting full page content from documentation, blog posts, GitHub READMEs, comparison articles. Use after finding a relevant URL from Exa, websearch, or known docs. Returns clean markdown instead of raw HTML.
152
+
153
+ If `firecrawl: false` (or not set), fall back to webfetch.
154
+
129
155
  ## Verification Protocol
130
156
 
131
157
  **websearch findings must be verified:**
@@ -148,7 +174,7 @@ Never present LOW confidence findings as authoritative.
148
174
  | MEDIUM | websearch verified with official source, multiple credible sources agree | State with attribution |
149
175
  | LOW | websearch only, single source, unverified | Flag as needing validation |
150
176
 
151
- **Source priority:** Context7 → Official Docs → Official GitHub → websearch (verified) → websearch (unverified)
177
+ **Source priority:** Context7 → Exa (verified)Firecrawl (official docs) → Official GitHub → Brave/websearch (verified) → websearch (unverified)
152
178
 
153
179
  </tool_strategy>
154
180
 
@@ -1,13 +1,12 @@
1
1
  ---
2
2
  name: gsd-research-synthesizer
3
3
  description: Synthesizes research outputs from parallel researcher agents into SUMMARY.md. Spawned by /gsd-new-project after 4 researcher agents complete.
4
+ mode: subagent
4
5
  tools:
5
6
  read: true
6
7
  write: true
7
8
  bash: true
8
9
  color: "#800080"
9
- skills:
10
- - gsd-synthesizer-workflow
11
10
  # hooks:
12
11
  # PostToolUse:
13
12
  # - matcher: "write|edit"
@@ -1,6 +1,7 @@
1
1
  ---
2
2
  name: gsd-roadmapper
3
3
  description: Creates project roadmaps with phase breakdown, requirement mapping, success criteria derivation, and coverage validation. Spawned by /gsd-new-project orchestrator.
4
+ mode: subagent
4
5
  tools:
5
6
  read: true
6
7
  write: true
@@ -8,8 +9,6 @@ tools:
8
9
  glob: true
9
10
  grep: true
10
11
  color: "#800080"
11
- skills:
12
- - gsd-roadmapper-workflow
13
12
  # hooks:
14
13
  # PostToolUse:
15
14
  # - matcher: "write|edit"
@@ -332,6 +331,35 @@ After roadmap creation, REQUIREMENTS.md gets updated with phase mappings:
332
331
 
333
332
  **The `### Phase X:` headers are parsed by downstream tools.** If you only write the summary checklist, phase lookups will fail.
334
333
 
334
+ ### UI Phase Detection
335
+
336
+ After writing phase details, scan each phase's goal, name, requirements, and success criteria for UI/frontend keywords. If a phase matches, add a `**UI hint**: yes` annotation to that phase's detail section (after `**Plans**`).
337
+
338
+ **Detection keywords** (case-insensitive):
339
+
340
+ ```
341
+ UI, interface, frontend, component, layout, page, screen, view, form,
342
+ dashboard, widget, CSS, styling, responsive, navigation, menu, modal,
343
+ sidebar, header, footer, theme, design system, Tailwind, React, Vue,
344
+ Svelte, Next.js, Nuxt
345
+ ```
346
+
347
+ **Example annotated phase:**
348
+
349
+ ```markdown
350
+ ### Phase 3: Dashboard & Analytics
351
+ **Goal**: Users can view activity metrics and manage settings
352
+ **Depends on**: Phase 2
353
+ **Requirements**: DASH-01, DASH-02
354
+ **Success Criteria** (what must be TRUE):
355
+ 1. User can view a dashboard with key metrics
356
+ 2. User can filter analytics by date range
357
+ **Plans**: TBD
358
+ **UI hint**: yes
359
+ ```
360
+
361
+ This annotation is consumed by downstream workflows (`new-project`, `progress`) to suggest `/gsd-ui-phase` at the right time. Phases without UI indicators omit the annotation entirely.
362
+
335
363
  ### 3. Progress Table
336
364
 
337
365
  ```markdown