gsd-opencode 1.22.1 → 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 (156) 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 +0 -2
  4. package/agents/gsd-debugger.md +118 -2
  5. package/agents/gsd-executor.md +24 -4
  6. package/agents/gsd-integration-checker.md +0 -2
  7. package/agents/gsd-nyquist-auditor.md +0 -2
  8. package/agents/gsd-phase-researcher.md +150 -5
  9. package/agents/gsd-plan-checker.md +70 -5
  10. package/agents/gsd-planner.md +49 -4
  11. package/agents/gsd-project-researcher.md +28 -3
  12. package/agents/gsd-research-synthesizer.md +0 -2
  13. package/agents/gsd-roadmapper.md +29 -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 +123 -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 +9 -8
  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-review-backlog.md +61 -0
  43. package/commands/gsd/gsd-review.md +37 -0
  44. package/commands/gsd/gsd-session-report.md +19 -0
  45. package/commands/gsd/gsd-set-profile.md +24 -23
  46. package/commands/gsd/gsd-ship.md +23 -0
  47. package/commands/gsd/gsd-stats.md +18 -0
  48. package/commands/gsd/gsd-thread.md +127 -0
  49. package/commands/gsd/gsd-ui-phase.md +34 -0
  50. package/commands/gsd/gsd-ui-review.md +32 -0
  51. package/commands/gsd/gsd-workstreams.md +66 -0
  52. package/get-shit-done/bin/gsd-tools.cjs +410 -84
  53. package/get-shit-done/bin/lib/commands.cjs +429 -18
  54. package/get-shit-done/bin/lib/config.cjs +318 -45
  55. package/get-shit-done/bin/lib/core.cjs +822 -84
  56. package/get-shit-done/bin/lib/frontmatter.cjs +78 -41
  57. package/get-shit-done/bin/lib/init.cjs +836 -104
  58. package/get-shit-done/bin/lib/milestone.cjs +44 -33
  59. package/get-shit-done/bin/lib/model-profiles.cjs +68 -0
  60. package/get-shit-done/bin/lib/phase.cjs +293 -306
  61. package/get-shit-done/bin/lib/profile-output.cjs +952 -0
  62. package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
  63. package/get-shit-done/bin/lib/roadmap.cjs +55 -24
  64. package/get-shit-done/bin/lib/security.cjs +382 -0
  65. package/get-shit-done/bin/lib/state.cjs +363 -53
  66. package/get-shit-done/bin/lib/template.cjs +2 -2
  67. package/get-shit-done/bin/lib/uat.cjs +282 -0
  68. package/get-shit-done/bin/lib/verify.cjs +104 -36
  69. package/get-shit-done/bin/lib/workstream.cjs +491 -0
  70. package/get-shit-done/references/checkpoints.md +12 -10
  71. package/get-shit-done/references/decimal-phase-calculation.md +2 -3
  72. package/get-shit-done/references/git-integration.md +47 -0
  73. package/get-shit-done/references/model-profile-resolution.md +2 -0
  74. package/get-shit-done/references/model-profiles.md +62 -16
  75. package/get-shit-done/references/phase-argument-parsing.md +2 -2
  76. package/get-shit-done/references/planning-config.md +3 -1
  77. package/get-shit-done/references/user-profiling.md +681 -0
  78. package/get-shit-done/references/workstream-flag.md +58 -0
  79. package/get-shit-done/templates/UAT.md +21 -3
  80. package/get-shit-done/templates/UI-SPEC.md +100 -0
  81. package/get-shit-done/templates/claude-md.md +122 -0
  82. package/get-shit-done/templates/config.json +10 -3
  83. package/get-shit-done/templates/context.md +61 -6
  84. package/get-shit-done/templates/dev-preferences.md +21 -0
  85. package/get-shit-done/templates/discussion-log.md +63 -0
  86. package/get-shit-done/templates/phase-prompt.md +46 -5
  87. package/get-shit-done/templates/project.md +2 -0
  88. package/get-shit-done/templates/state.md +2 -2
  89. package/get-shit-done/templates/user-profile.md +146 -0
  90. package/get-shit-done/workflows/add-phase.md +2 -2
  91. package/get-shit-done/workflows/add-tests.md +4 -4
  92. package/get-shit-done/workflows/add-todo.md +3 -3
  93. package/get-shit-done/workflows/audit-milestone.md +13 -5
  94. package/get-shit-done/workflows/audit-uat.md +109 -0
  95. package/get-shit-done/workflows/autonomous.md +891 -0
  96. package/get-shit-done/workflows/check-todos.md +2 -2
  97. package/get-shit-done/workflows/cleanup.md +4 -4
  98. package/get-shit-done/workflows/complete-milestone.md +9 -6
  99. package/get-shit-done/workflows/diagnose-issues.md +15 -3
  100. package/get-shit-done/workflows/discovery-phase.md +3 -3
  101. package/get-shit-done/workflows/discuss-phase-assumptions.md +653 -0
  102. package/get-shit-done/workflows/discuss-phase.md +411 -38
  103. package/get-shit-done/workflows/do.md +104 -0
  104. package/get-shit-done/workflows/execute-phase.md +405 -18
  105. package/get-shit-done/workflows/execute-plan.md +77 -12
  106. package/get-shit-done/workflows/fast.md +105 -0
  107. package/get-shit-done/workflows/forensics.md +265 -0
  108. package/get-shit-done/workflows/health.md +28 -6
  109. package/get-shit-done/workflows/help.md +124 -7
  110. package/get-shit-done/workflows/insert-phase.md +2 -2
  111. package/get-shit-done/workflows/list-phase-assumptions.md +2 -2
  112. package/get-shit-done/workflows/list-workspaces.md +56 -0
  113. package/get-shit-done/workflows/manager.md +362 -0
  114. package/get-shit-done/workflows/map-codebase.md +74 -13
  115. package/get-shit-done/workflows/milestone-summary.md +223 -0
  116. package/get-shit-done/workflows/new-milestone.md +120 -18
  117. package/get-shit-done/workflows/new-project.md +178 -39
  118. package/get-shit-done/workflows/new-workspace.md +237 -0
  119. package/get-shit-done/workflows/next.md +97 -0
  120. package/get-shit-done/workflows/node-repair.md +92 -0
  121. package/get-shit-done/workflows/note.md +156 -0
  122. package/get-shit-done/workflows/pause-work.md +62 -8
  123. package/get-shit-done/workflows/plan-milestone-gaps.md +4 -5
  124. package/get-shit-done/workflows/plan-phase.md +332 -33
  125. package/get-shit-done/workflows/plant-seed.md +169 -0
  126. package/get-shit-done/workflows/pr-branch.md +129 -0
  127. package/get-shit-done/workflows/profile-user.md +450 -0
  128. package/get-shit-done/workflows/progress.md +145 -20
  129. package/get-shit-done/workflows/quick.md +205 -49
  130. package/get-shit-done/workflows/remove-phase.md +2 -2
  131. package/get-shit-done/workflows/remove-workspace.md +90 -0
  132. package/get-shit-done/workflows/research-phase.md +11 -3
  133. package/get-shit-done/workflows/resume-project.md +35 -16
  134. package/get-shit-done/workflows/review.md +228 -0
  135. package/get-shit-done/workflows/session-report.md +146 -0
  136. package/get-shit-done/workflows/set-profile.md +2 -2
  137. package/get-shit-done/workflows/settings.md +79 -10
  138. package/get-shit-done/workflows/ship.md +228 -0
  139. package/get-shit-done/workflows/stats.md +60 -0
  140. package/get-shit-done/workflows/transition.md +147 -20
  141. package/get-shit-done/workflows/ui-phase.md +302 -0
  142. package/get-shit-done/workflows/ui-review.md +165 -0
  143. package/get-shit-done/workflows/update.md +108 -25
  144. package/get-shit-done/workflows/validate-phase.md +15 -8
  145. package/get-shit-done/workflows/verify-phase.md +16 -5
  146. package/get-shit-done/workflows/verify-work.md +72 -18
  147. package/package.json +1 -1
  148. package/skills/gsd-audit-milestone/SKILL.md +29 -0
  149. package/skills/gsd-cleanup/SKILL.md +19 -0
  150. package/skills/gsd-complete-milestone/SKILL.md +131 -0
  151. package/skills/gsd-discuss-phase/SKILL.md +54 -0
  152. package/skills/gsd-execute-phase/SKILL.md +49 -0
  153. package/skills/gsd-plan-phase/SKILL.md +37 -0
  154. package/skills/gsd-ui-phase/SKILL.md +24 -0
  155. package/skills/gsd-ui-review/SKILL.md +24 -0
  156. package/skills/gsd-verify-work/SKILL.md +30 -0
@@ -11,9 +11,9 @@ tools:
11
11
  websearch: true
12
12
  webfetch: true
13
13
  mcp__context7__*: true
14
+ mcp__firecrawl__*: true
15
+ mcp__exa__*: true
14
16
  color: "#00FFFF"
15
- skills:
16
- - gsd-researcher-workflow
17
17
  # hooks:
18
18
  # PostToolUse:
19
19
  # - matcher: "write|edit"
@@ -51,6 +51,8 @@ Before researching, discover project context:
51
51
  5. Research should account for project skill patterns
52
52
 
53
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.
54
56
  </project_context>
55
57
 
56
58
  <upstream_input>
@@ -148,6 +150,31 @@ If `brave_search: false` (or not set), use built-in websearch tool instead.
148
150
 
149
151
  Brave Search provides an independent index (not Google/Bing dependent) with less SEO spam and faster responses.
150
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
+
151
178
  ## Verification Protocol
152
179
 
153
180
  **websearch findings MUST be verified:**
@@ -172,7 +199,7 @@ For each websearch finding:
172
199
  | MEDIUM | websearch verified with official source, multiple credible sources | State with attribution |
173
200
  | LOW | websearch only, single source, unverified | Flag as needing validation |
174
201
 
175
- 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)
176
203
 
177
204
  </source_hierarchy>
178
205
 
@@ -205,6 +232,7 @@ Priority: Context7 > Official Docs > Official GitHub > Verified websearch > Unve
205
232
  - [ ] Publication dates checked (prefer recent/current)
206
233
  - [ ] Confidence levels assigned honestly
207
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)
208
236
 
209
237
  </verification_protocol>
210
238
 
@@ -249,6 +277,12 @@ Priority: Context7 > Official Docs > Official GitHub > Verified websearch > Unve
249
277
  npm install [packages]
250
278
  \`\`\`
251
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
+
252
286
  ## Architecture Patterns
253
287
 
254
288
  ### Recommended Project Structure
@@ -279,6 +313,20 @@ src/
279
313
 
280
314
  **Key insight:** [why custom solutions are worse in this domain]
281
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
+
282
330
  ## Common Pitfalls
283
331
 
284
332
  ### Pitfall 1: [Name]
@@ -313,6 +361,20 @@ Verified patterns from official sources:
313
361
  - What's unclear: [the gap]
314
362
  - Recommendation: [how to handle]
315
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
+
316
378
  ## Validation Architecture
317
379
 
318
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.
@@ -412,6 +474,88 @@ Based on phase description, identify what needs investigating:
412
474
  - **Pitfalls:** Common beginner mistakes, gotchas, rewrite-causing errors
413
475
  - **Don't Hand-Roll:** Existing solutions for deceptively complex problems
414
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
+
415
559
  ## Step 3: Execute Research Protocol
416
560
 
417
561
  For each domain: Context7 first → Official docs → websearch → Cross-verify. Document findings with confidence levels as you go.
@@ -465,7 +609,7 @@ List missing test files, framework config, or shared fixtures needed before impl
465
609
  ## Phase Requirements
466
610
 
467
611
  | ID | Description | Research Support |
468
- |----|-------------|-----------------|
612
+ |----|-------------|------------------|
469
613
  | {REQ-ID} | {from REQUIREMENTS.md} | {which research findings enable implementation} |
470
614
  </phase_requirements>
471
615
  ```
@@ -546,6 +690,7 @@ Research is complete when:
546
690
  - [ ] Architecture patterns documented
547
691
  - [ ] Don't-hand-roll items listed
548
692
  - [ ] Common pitfalls catalogued
693
+ - [ ] Environment availability audited (or skipped with reason)
549
694
  - [ ] Code examples provided
550
695
  - [ ] Source hierarchy followed (Context7 → Official → websearch)
551
696
  - [ ] All findings have confidence levels
@@ -561,4 +706,4 @@ Quality indicators:
561
706
  - **Actionable:** Planner could create tasks based on this research
562
707
  - **Current:** Year included in searches, publication dates checked
563
708
 
564
- </success_criteria>
709
+ </success_criteria>
@@ -8,8 +8,6 @@ tools:
8
8
  glob: true
9
9
  grep: true
10
10
  color: "#008000"
11
- skills:
12
- - gsd-plan-checker-workflow
13
11
  ---
14
12
 
15
13
  <role>
@@ -284,9 +282,11 @@ issue:
284
282
 
285
283
  **Process:**
286
284
  1. Parse CONTEXT.md sections: Decisions, OpenCode's Discretion, Deferred Ideas
287
- 2. For each locked Decision, find implementing task(s)
288
- 3. Verify no tasks implement Deferred Ideas (scope creep)
289
- 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)
290
290
 
291
291
  **Red flags:**
292
292
  - Locked decision has no implementing task
@@ -377,6 +377,69 @@ Overall: ✅ PASS / ❌ FAIL
377
377
 
378
378
  If FAIL: return to planner with specific fixes. Same revision loop as other dimensions (max 3 loops).
379
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
+
380
443
  </verification_dimensions>
381
444
 
382
445
  <verification_process>
@@ -707,6 +770,8 @@ Plan verification complete when:
707
770
  - [ ] No tasks contradict locked decisions
708
771
  - [ ] Deferred ideas not included in plans
709
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)
710
775
  - [ ] Structured issues returned (if any found)
711
776
  - [ ] Result returned to orchestrator
712
777
 
@@ -11,8 +11,6 @@ tools:
11
11
  webfetch: true
12
12
  mcp__context7__*: true
13
13
  color: "#008000"
14
- skills:
15
- - gsd-planner-workflow
16
14
  # hooks:
17
15
  # PostToolUse:
18
16
  # - matcher: "write|edit"
@@ -28,6 +26,7 @@ Spawned by:
28
26
  - `/gsd-plan-phase` orchestrator (standard phase planning)
29
27
  - `/gsd-plan-phase --gaps` orchestrator (gap closure from verification failures)
30
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)
31
30
 
32
31
  Your job: Produce PLAN.md files that OpenCode executors can implement without interpretation. Plans are prompts, not documents that become prompts.
33
32
 
@@ -70,6 +69,7 @@ The orchestrator provides user decisions in `<user_decisions>` tags from `/gsd-d
70
69
  - If user said "use library X" → task MUST use library X, not an alternative
71
70
  - If user said "card layout" → task MUST implement cards, not tables
72
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
73
73
 
74
74
  2. **Deferred Ideas (from `## Deferred Ideas`)** — MUST NOT appear in plans
75
75
  - If user deferred "search functionality" → NO search tasks allowed
@@ -79,7 +79,8 @@ The orchestrator provides user decisions in `<user_decisions>` tags from `/gsd-d
79
79
  - Make reasonable choices and document in task actions
80
80
 
81
81
  **Self-check before returning:** For each plan, verify:
82
- - [ ] 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")
83
84
  - [ ] No task implements a deferred idea
84
85
  - [ ] Discretion areas are handled reasonably
85
86
 
@@ -502,7 +503,7 @@ After determining `files_modified`, extract the key interfaces/types/exports fro
502
503
 
503
504
  ```bash
504
505
  # Extract type definitions, interfaces, and exports from relevant files
505
- 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
506
507
  ```
507
508
 
508
509
  Embed these in the plan's `<context>` section as an `<interfaces>` block:
@@ -974,6 +975,50 @@ node "$HOME/.config/opencode/get-shit-done/bin/gsd-tools.cjs" commit "fix($PHASE
974
975
 
975
976
  </revision_mode>
976
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
+
977
1022
  <execution_flow>
978
1023
 
979
1024
  <step name="load_project_state" priority="first">
@@ -11,9 +11,9 @@ tools:
11
11
  websearch: true
12
12
  webfetch: true
13
13
  mcp__context7__*: true
14
+ mcp__firecrawl__*: true
15
+ mcp__exa__*: true
14
16
  color: "#00FFFF"
15
- skills:
16
- - gsd-researcher-workflow
17
17
  # hooks:
18
18
  # PostToolUse:
19
19
  # - matcher: "write|edit"
@@ -127,6 +127,31 @@ If `brave_search: false` (or not set), use built-in websearch tool instead.
127
127
 
128
128
  Brave Search provides an independent index (not Google/Bing dependent) with less SEO spam and faster responses.
129
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
+
130
155
  ## Verification Protocol
131
156
 
132
157
  **websearch findings must be verified:**
@@ -149,7 +174,7 @@ Never present LOW confidence findings as authoritative.
149
174
  | MEDIUM | websearch verified with official source, multiple credible sources agree | State with attribution |
150
175
  | LOW | websearch only, single source, unverified | Flag as needing validation |
151
176
 
152
- **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)
153
178
 
154
179
  </tool_strategy>
155
180
 
@@ -7,8 +7,6 @@ tools:
7
7
  write: true
8
8
  bash: true
9
9
  color: "#800080"
10
- skills:
11
- - gsd-synthesizer-workflow
12
10
  # hooks:
13
11
  # PostToolUse:
14
12
  # - matcher: "write|edit"
@@ -9,8 +9,6 @@ tools:
9
9
  glob: true
10
10
  grep: true
11
11
  color: "#800080"
12
- skills:
13
- - gsd-roadmapper-workflow
14
12
  # hooks:
15
13
  # PostToolUse:
16
14
  # - matcher: "write|edit"
@@ -333,6 +331,35 @@ After roadmap creation, REQUIREMENTS.md gets updated with phase mappings:
333
331
 
334
332
  **The `### Phase X:` headers are parsed by downstream tools.** If you only write the summary checklist, phase lookups will fail.
335
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
+
336
363
  ### 3. Progress Table
337
364
 
338
365
  ```markdown