@hegemonart/get-design-done 1.57.1 → 1.57.3

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 (237) hide show
  1. package/.claude-plugin/marketplace.json +26 -41
  2. package/.claude-plugin/plugin.json +23 -48
  3. package/CHANGELOG.md +139 -0
  4. package/README.md +166 -511
  5. package/SKILL.md +4 -6
  6. package/agents/README.md +33 -36
  7. package/agents/a11y-mapper.md +3 -3
  8. package/agents/component-benchmark-harvester.md +6 -6
  9. package/agents/component-benchmark-synthesizer.md +3 -3
  10. package/agents/compose-executor.md +3 -3
  11. package/agents/cost-forecaster.md +2 -2
  12. package/agents/design-auditor.md +7 -7
  13. package/agents/design-authority-watcher.md +15 -15
  14. package/agents/design-context-builder.md +4 -4
  15. package/agents/design-context-checker-gate.md +1 -1
  16. package/agents/design-discussant.md +2 -2
  17. package/agents/design-doc-writer.md +1 -1
  18. package/agents/design-executor.md +2 -2
  19. package/agents/design-figma-writer.md +2 -2
  20. package/agents/design-fixer.md +7 -7
  21. package/agents/design-integration-checker-gate.md +1 -1
  22. package/agents/design-integration-checker.md +1 -1
  23. package/agents/design-paper-writer.md +3 -3
  24. package/agents/design-pencil-writer.md +1 -1
  25. package/agents/design-planner.md +21 -0
  26. package/agents/design-reflector.md +39 -39
  27. package/agents/design-research-synthesizer.md +1 -0
  28. package/agents/design-start-writer.md +1 -1
  29. package/agents/design-update-checker.md +5 -5
  30. package/agents/design-verifier-gate.md +1 -1
  31. package/agents/design-verifier.md +52 -48
  32. package/agents/ds-generator.md +2 -2
  33. package/agents/ds-migration-planner.md +4 -4
  34. package/agents/email-executor.md +9 -9
  35. package/agents/experiment-result-ingester.md +3 -3
  36. package/agents/flutter-executor.md +5 -5
  37. package/agents/gdd-graph-refresh.md +3 -3
  38. package/agents/gdd-intel-updater.md +2 -2
  39. package/agents/motion-mapper.md +2 -2
  40. package/agents/motion-verifier.md +4 -4
  41. package/agents/pdf-executor.md +8 -8
  42. package/agents/perf-analyzer.md +17 -17
  43. package/agents/pr-commenter.md +9 -9
  44. package/agents/prototype-gate.md +2 -2
  45. package/agents/quality-gate-runner.md +1 -1
  46. package/agents/rollout-coordinator.md +3 -3
  47. package/agents/swift-executor.md +4 -4
  48. package/agents/ticket-sync-agent.md +6 -6
  49. package/agents/user-research-synthesizer.md +2 -2
  50. package/connections/connections.md +44 -45
  51. package/connections/cursor.md +72 -0
  52. package/connections/preview.md +3 -3
  53. package/hooks/first-run-nudge.cjs +171 -0
  54. package/hooks/gdd-intel-trigger.js +243 -0
  55. package/hooks/gdd-mcp-circuit-breaker.js +62 -7
  56. package/hooks/gdd-precompact-snapshot.js +50 -29
  57. package/hooks/gdd-protected-paths.js +150 -18
  58. package/hooks/gdd-risk-gate.js +93 -1
  59. package/hooks/gdd-sessionstart-recap.js +59 -24
  60. package/hooks/hooks.json +13 -4
  61. package/hooks/inject-using-gdd.cjs +188 -0
  62. package/hooks/update-check.cjs +511 -0
  63. package/package.json +9 -3
  64. package/reference/STATE-TEMPLATE.md +10 -13
  65. package/reference/audit-scoring.md +1 -1
  66. package/reference/cache-tier-doctrine.md +46 -0
  67. package/reference/config-schema.md +9 -9
  68. package/reference/i18n.md +1 -1
  69. package/reference/intel-schema.md +37 -2
  70. package/reference/meta-rules.md +4 -4
  71. package/reference/model-tiers.md +2 -2
  72. package/reference/registry.json +101 -94
  73. package/reference/runtime-models.md +11 -1
  74. package/reference/shared-preamble.md +13 -14
  75. package/reference/skill-graph.md +22 -3
  76. package/scripts/bootstrap.cjs +373 -0
  77. package/scripts/injection-patterns.cjs +58 -0
  78. package/scripts/lib/apply-reflections/incubator-proposals.cjs +57 -26
  79. package/scripts/lib/install/converters/codex-plugin.cjs +5 -2
  80. package/scripts/lib/install/converters/cursor.cjs +20 -0
  81. package/scripts/lib/issue-reporter/report-flow.cjs +1 -1
  82. package/scripts/lib/manifest/skills.json +75 -28
  83. package/scripts/lib/state/query-surface.cjs +67 -9
  84. package/scripts/lib/state/state-store.cjs +68 -26
  85. package/scripts/lib/worktree-resolve.cjs +4 -16
  86. package/sdk/cli/commands/stage.ts +17 -0
  87. package/sdk/cli/index.js +14 -0
  88. package/skills/README.md +46 -0
  89. package/skills/bootstrap-ds/SKILL.md +1 -1
  90. package/skills/cache-manager/SKILL.md +3 -3
  91. package/skills/cache-manager/cache-policy.md +1 -1
  92. package/skills/compare/SKILL.md +1 -1
  93. package/skills/design/SKILL.md +19 -0
  94. package/skills/explore/SKILL.md +11 -0
  95. package/skills/figma-write/SKILL.md +13 -2
  96. package/skills/new-cycle/SKILL.md +1 -1
  97. package/skills/paper-write/SKILL.md +54 -0
  98. package/skills/peer-cli-customize/SKILL.md +0 -1
  99. package/skills/peers/SKILL.md +1 -1
  100. package/skills/pencil-write/SKILL.md +54 -0
  101. package/skills/reflect/procedures/capability-gap-scan.md +0 -1
  102. package/skills/report-issue/SKILL.md +2 -2
  103. package/skills/report-issue/report-issue-procedure.md +0 -1
  104. package/skills/router/SKILL.md +2 -2
  105. package/skills/synthesize/SKILL.md +1 -1
  106. package/skills/turn-closeout/SKILL.md +1 -1
  107. package/skills/verify/verify-procedure.md +10 -11
  108. package/skills/warm-cache/SKILL.md +1 -1
  109. package/dist/claude-code/.claude/skills/add-backlog/SKILL.md +0 -48
  110. package/dist/claude-code/.claude/skills/analyze-dependencies/SKILL.md +0 -95
  111. package/dist/claude-code/.claude/skills/apply-reflections/SKILL.md +0 -109
  112. package/dist/claude-code/.claude/skills/apply-reflections/apply-reflections-procedure.md +0 -170
  113. package/dist/claude-code/.claude/skills/audit/SKILL.md +0 -79
  114. package/dist/claude-code/.claude/skills/bandit-status/SKILL.md +0 -94
  115. package/dist/claude-code/.claude/skills/benchmark/SKILL.md +0 -65
  116. package/dist/claude-code/.claude/skills/bootstrap-ds/SKILL.md +0 -43
  117. package/dist/claude-code/.claude/skills/brief/SKILL.md +0 -145
  118. package/dist/claude-code/.claude/skills/budget/SKILL.md +0 -45
  119. package/dist/claude-code/.claude/skills/cache-manager/SKILL.md +0 -66
  120. package/dist/claude-code/.claude/skills/cache-manager/cache-policy.md +0 -126
  121. package/dist/claude-code/.claude/skills/check-update/SKILL.md +0 -98
  122. package/dist/claude-code/.claude/skills/compare/SKILL.md +0 -82
  123. package/dist/claude-code/.claude/skills/compare/compare-rubric.md +0 -171
  124. package/dist/claude-code/.claude/skills/complete-cycle/SKILL.md +0 -81
  125. package/dist/claude-code/.claude/skills/connections/SKILL.md +0 -71
  126. package/dist/claude-code/.claude/skills/connections/connections-onboarding.md +0 -608
  127. package/dist/claude-code/.claude/skills/context/SKILL.md +0 -137
  128. package/dist/claude-code/.claude/skills/continue/SKILL.md +0 -24
  129. package/dist/claude-code/.claude/skills/darkmode/SKILL.md +0 -76
  130. package/dist/claude-code/.claude/skills/darkmode/darkmode-audit-procedure.md +0 -258
  131. package/dist/claude-code/.claude/skills/debug/SKILL.md +0 -41
  132. package/dist/claude-code/.claude/skills/debug/debug-feedback-loops.md +0 -119
  133. package/dist/claude-code/.claude/skills/design/SKILL.md +0 -99
  134. package/dist/claude-code/.claude/skills/design/design-procedure.md +0 -304
  135. package/dist/claude-code/.claude/skills/discover/SKILL.md +0 -78
  136. package/dist/claude-code/.claude/skills/discover/discover-procedure.md +0 -222
  137. package/dist/claude-code/.claude/skills/discuss/SKILL.md +0 -96
  138. package/dist/claude-code/.claude/skills/do/SKILL.md +0 -45
  139. package/dist/claude-code/.claude/skills/explore/SKILL.md +0 -107
  140. package/dist/claude-code/.claude/skills/explore/explore-procedure.md +0 -267
  141. package/dist/claude-code/.claude/skills/export/SKILL.md +0 -30
  142. package/dist/claude-code/.claude/skills/extract-learnings/SKILL.md +0 -114
  143. package/dist/claude-code/.claude/skills/fast/SKILL.md +0 -91
  144. package/dist/claude-code/.claude/skills/figma-extract/SKILL.md +0 -64
  145. package/dist/claude-code/.claude/skills/figma-write/SKILL.md +0 -39
  146. package/dist/claude-code/.claude/skills/graphify/SKILL.md +0 -49
  147. package/dist/claude-code/.claude/skills/health/SKILL.md +0 -99
  148. package/dist/claude-code/.claude/skills/health/health-mcp-detection.md +0 -44
  149. package/dist/claude-code/.claude/skills/health/health-skill-length-report.md +0 -69
  150. package/dist/claude-code/.claude/skills/help/SKILL.md +0 -87
  151. package/dist/claude-code/.claude/skills/instinct/SKILL.md +0 -111
  152. package/dist/claude-code/.claude/skills/list-assumptions/SKILL.md +0 -61
  153. package/dist/claude-code/.claude/skills/list-pins/SKILL.md +0 -27
  154. package/dist/claude-code/.claude/skills/live/SKILL.md +0 -98
  155. package/dist/claude-code/.claude/skills/locale/SKILL.md +0 -51
  156. package/dist/claude-code/.claude/skills/map/SKILL.md +0 -89
  157. package/dist/claude-code/.claude/skills/migrate/SKILL.md +0 -70
  158. package/dist/claude-code/.claude/skills/migrate-context/SKILL.md +0 -123
  159. package/dist/claude-code/.claude/skills/new-addendum/SKILL.md +0 -81
  160. package/dist/claude-code/.claude/skills/new-cycle/SKILL.md +0 -37
  161. package/dist/claude-code/.claude/skills/new-cycle/milestone-completeness-rubric.md +0 -87
  162. package/dist/claude-code/.claude/skills/new-project/SKILL.md +0 -53
  163. package/dist/claude-code/.claude/skills/new-skill/SKILL.md +0 -90
  164. package/dist/claude-code/.claude/skills/next/SKILL.md +0 -68
  165. package/dist/claude-code/.claude/skills/note/SKILL.md +0 -48
  166. package/dist/claude-code/.claude/skills/openrouter-status/SKILL.md +0 -86
  167. package/dist/claude-code/.claude/skills/optimize/SKILL.md +0 -97
  168. package/dist/claude-code/.claude/skills/override/SKILL.md +0 -86
  169. package/dist/claude-code/.claude/skills/pause/SKILL.md +0 -77
  170. package/dist/claude-code/.claude/skills/peer-cli-add/SKILL.md +0 -88
  171. package/dist/claude-code/.claude/skills/peer-cli-add/peer-cli-protocol.md +0 -161
  172. package/dist/claude-code/.claude/skills/peer-cli-customize/SKILL.md +0 -90
  173. package/dist/claude-code/.claude/skills/peers/SKILL.md +0 -96
  174. package/dist/claude-code/.claude/skills/pin/SKILL.md +0 -37
  175. package/dist/claude-code/.claude/skills/plan/SKILL.md +0 -105
  176. package/dist/claude-code/.claude/skills/plan/plan-procedure.md +0 -278
  177. package/dist/claude-code/.claude/skills/plant-seed/SKILL.md +0 -48
  178. package/dist/claude-code/.claude/skills/pr-branch/SKILL.md +0 -32
  179. package/dist/claude-code/.claude/skills/progress/SKILL.md +0 -107
  180. package/dist/claude-code/.claude/skills/quality-gate/SKILL.md +0 -90
  181. package/dist/claude-code/.claude/skills/quality-gate/threat-modeling.md +0 -101
  182. package/dist/claude-code/.claude/skills/quick/SKILL.md +0 -44
  183. package/dist/claude-code/.claude/skills/reapply-patches/SKILL.md +0 -32
  184. package/dist/claude-code/.claude/skills/recall/SKILL.md +0 -75
  185. package/dist/claude-code/.claude/skills/reflect/SKILL.md +0 -85
  186. package/dist/claude-code/.claude/skills/reflect/procedures/capability-gap-scan.md +0 -120
  187. package/dist/claude-code/.claude/skills/report-issue/SKILL.md +0 -53
  188. package/dist/claude-code/.claude/skills/report-issue/report-issue-procedure.md +0 -120
  189. package/dist/claude-code/.claude/skills/resume/SKILL.md +0 -93
  190. package/dist/claude-code/.claude/skills/review-backlog/SKILL.md +0 -46
  191. package/dist/claude-code/.claude/skills/review-decisions/SKILL.md +0 -42
  192. package/dist/claude-code/.claude/skills/roi/SKILL.md +0 -54
  193. package/dist/claude-code/.claude/skills/rollout-status/SKILL.md +0 -35
  194. package/dist/claude-code/.claude/skills/router/SKILL.md +0 -89
  195. package/dist/claude-code/.claude/skills/router/capability-gap-emitter.md +0 -65
  196. package/dist/claude-code/.claude/skills/router/router-pick-emitter.md +0 -78
  197. package/dist/claude-code/.claude/skills/router/router-rules.md +0 -84
  198. package/dist/claude-code/.claude/skills/scan/SKILL.md +0 -92
  199. package/dist/claude-code/.claude/skills/scan/scan-procedure.md +0 -732
  200. package/dist/claude-code/.claude/skills/settings/SKILL.md +0 -87
  201. package/dist/claude-code/.claude/skills/ship/SKILL.md +0 -48
  202. package/dist/claude-code/.claude/skills/sketch/SKILL.md +0 -78
  203. package/dist/claude-code/.claude/skills/sketch-wrap-up/SKILL.md +0 -92
  204. package/dist/claude-code/.claude/skills/skill-manifest/SKILL.md +0 -79
  205. package/dist/claude-code/.claude/skills/spike/SKILL.md +0 -67
  206. package/dist/claude-code/.claude/skills/spike-wrap-up/SKILL.md +0 -86
  207. package/dist/claude-code/.claude/skills/start/SKILL.md +0 -67
  208. package/dist/claude-code/.claude/skills/start/start-procedure.md +0 -115
  209. package/dist/claude-code/.claude/skills/state/SKILL.md +0 -106
  210. package/dist/claude-code/.claude/skills/stats/SKILL.md +0 -51
  211. package/dist/claude-code/.claude/skills/style/SKILL.md +0 -71
  212. package/dist/claude-code/.claude/skills/style/style-doc-procedure.md +0 -150
  213. package/dist/claude-code/.claude/skills/synthesize/SKILL.md +0 -94
  214. package/dist/claude-code/.claude/skills/timeline/SKILL.md +0 -66
  215. package/dist/claude-code/.claude/skills/todo/SKILL.md +0 -64
  216. package/dist/claude-code/.claude/skills/turn-closeout/SKILL.md +0 -95
  217. package/dist/claude-code/.claude/skills/undo/SKILL.md +0 -31
  218. package/dist/claude-code/.claude/skills/unlock-decision/SKILL.md +0 -54
  219. package/dist/claude-code/.claude/skills/unpin/SKILL.md +0 -31
  220. package/dist/claude-code/.claude/skills/update/SKILL.md +0 -56
  221. package/dist/claude-code/.claude/skills/using-gdd/SKILL.md +0 -78
  222. package/dist/claude-code/.claude/skills/verify/SKILL.md +0 -113
  223. package/dist/claude-code/.claude/skills/verify/verify-procedure.md +0 -512
  224. package/dist/claude-code/.claude/skills/warm-cache/SKILL.md +0 -81
  225. package/dist/claude-code/.claude/skills/watch-authorities/SKILL.md +0 -82
  226. package/dist/claude-code/.claude/skills/zoom-out/SKILL.md +0 -26
  227. package/hooks/first-run-nudge.sh +0 -82
  228. package/hooks/inject-using-gdd.sh +0 -72
  229. package/hooks/run-hook.cmd +0 -35
  230. package/hooks/update-check.sh +0 -251
  231. package/scripts/lib/audit-aggregator/index.cjs +0 -219
  232. package/scripts/lib/hedge-ensemble.cjs +0 -217
  233. package/skills/discover/SKILL.md +0 -78
  234. package/skills/discover/discover-procedure.md +0 -222
  235. package/skills/new-cycle/milestone-completeness-rubric.md +0 -87
  236. package/skills/scan/SKILL.md +0 -92
  237. package/skills/scan/scan-procedure.md +0 -732
package/README.md CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  **English** · [简体中文](docs/i18n/README.zh-CN.md) · [日本語](docs/i18n/README.ja.md) · [한국어](docs/i18n/README.ko.md) · [Français](docs/i18n/README.fr.md) · [Italiano](docs/i18n/README.it.md) · [Deutsch](docs/i18n/README.de.md)
6
6
 
7
- **A design-quality pipeline for AI coding agents: brief → explore → plan → implement → verify.**
7
+ **A design-quality pipeline for AI coding agents: brief → explore → plan → design → verify.**
8
8
 
9
9
  **Get Design Done keeps AI-generated UI tied to your brief, your design system, your references, and your quality gates. Works with Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae, Qwen Code, CodeBuddy, and Cline.**
10
10
 
@@ -56,7 +56,7 @@ What I kept running into: the agent could generate a screen that looked fine in
56
56
 
57
57
  So I built Get Design Done: a design pipeline that gives AI coding agents the same kind of structure developers already expect from engineering workflows. It captures the brief, maps the current design system, grounds decisions in references, decomposes the work into atomic tasks, executes those tasks, and verifies the result before you ship.
58
58
 
59
- Behind the scenes: 37 specialized agents, a queryable intel store, tier-aware model routing, 12 optional tool connections, atomic commits, and a no-regret adaptive layer that learns from solidify-with-rollback outcomes. What you use day to day: a few `/gdd:*` commands that keep design work coherent.
59
+ Behind the scenes: 61 specialized agents, a queryable intel store, tier-aware model routing, 42 optional tool connections, atomic commits, and a no-regret adaptive layer that learns from solidify-with-rollback outcomes. What you use day to day: a few `/gdd:*` commands that keep design work coherent.
60
60
 
61
61
  - **Hegemon**
62
62
 
@@ -64,7 +64,7 @@ Behind the scenes: 37 specialized agents, a queryable intel store, tier-aware mo
64
64
 
65
65
  AI-generated design has the same failure mode as AI-generated code: describe what you want, get something plausible, then watch it fall apart at scale because no system tied the output back to the brief.
66
66
 
67
- Get Design Done is the context engineering layer for design work. It turns "make this UI better" into a traceable cycle: brief → inventoryreferences → plan → implementationverification.
67
+ Get Design Done is the context engineering layer for design work. It turns "make this UI better" into a traceable cycle: brief → explore → plan → designverify.
68
68
 
69
69
  ---
70
70
 
@@ -87,133 +87,7 @@ Use it when you care that tokens match, contrast passes WCAG, motion feels cohes
87
87
 
88
88
  You do not need to be a designer to benefit from it. The pipeline carries the design discipline into the agent workflow: it extracts context, asks only for missing decisions, grounds the work in references, and catches the issues people usually find too late.
89
89
 
90
- ### v1.27.0 Highlights - Peer-CLI Delegation Layer
91
-
92
- Closes the **outbound** half of multi-runtime: gdd agents now OPTIONALLY delegate to local peer CLIs (Codex via App Server Protocol; Gemini/Cursor/Copilot/Qwen via Agent Client Protocol) when measurably cheaper or higher-quality for the role. Falls back to in-process Anthropic SDK when peer is unavailable. Honors v1.26.0's tier maps + v1.22.0's event chain + v1.23.5's bandit posterior - `delegate?` becomes another arm in `(agent_type × tier × delegate)` Thompson sampling.
93
-
94
- - **ACP + ASP protocol clients** - `scripts/lib/peer-cli/{acp-client,asp-client}.cjs` ship line-delimited JSON-RPC over stdio with 16 MiB line-buffer overflow guards. ACP serves Gemini/Cursor/Copilot/Qwen; ASP serves Codex (thread-oriented, multi-turn). Protocol shapes adapted from `greenpolo/cc-multi-cli` (Apache 2.0, see `NOTICE`). Long-lived broker per `(peer, workspace)` over Unix socket / named pipe - cold-spawn cost amortized across delegated calls in a cycle.
95
- - **5 per-peer adapters + central registry** - `scripts/lib/peer-cli/adapters/{codex,gemini,cursor,copilot,qwen}.cjs` thin-wrap the protocol clients with role→prompt-prefix maps and slash-command translation. Central dispatch via `registry.cjs#findPeerFor(role, tier)` consults the locked capability matrix (codex→execute; gemini→research/exploration; cursor→debug/plan; copilot→review/research; qwen→write).
96
- - **`delegate_to:` agent frontmatter** - additive optional field; values are `<peer>-<role>` per matrix or `none` for explicit opt-out. Session-runner tries delegate first; transparent fallback on peer-absent OR peer-error. `peer_call_failed` event logs to `events.jsonl` for reflector telemetry. v1.27.0 ships the field but no agent in the fleet uses it yet - opt-in per agent via `/gdd:run-skill peer-cli-customize`.
97
- - **Bandit posterior `delegate?` dimension** - Phase 23.5's `(agent_type, touches_size_bin)` arm space expands to `(agent_type, touches_size_bin, delegate)` where `delegate ∈ {none, gemini, codex, cursor, copilot, qwen}`. Existing priors carry forward as the `none` arm (no behavior change for unconfigured agents); 5 delegation arms start neutral. Reward signal unchanged (two-stage lexicographic). The bandit measures and learns which delegations actually pay off over cycles.
98
- - **Event chain `runtime_role` + `peer_id` tags** - additive Phase 22 extension. `events.jsonl` rows optionally tag `runtime_role: "host" | "peer"` (defaults `"host"` for back-compat) and `peer_id`. 3 new event types: `peer_call_started`, `peer_call_complete`, `peer_call_failed`. costs.jsonl threads the same fields so v1.26's cross-runtime cost-arbitrage reflector extends to host-vs-peer arbitrage naturally.
99
- - **`/gdd:peers` discoverability + skills for setup** - `/gdd:peers` shows a single-command capability matrix (peer × installed? × allowlisted? × claimed roles × posterior delta vs local). `peer-cli-customize` rewires per-agent `delegate_to:` mappings; `peer-cli-add` walks the verification ladder for adding a brand-new peer (model-ID `-preview`-suffix trap, Windows `.cmd` quirks, 3-file footprint). Install-time peer-detection helpers (`detectInstalledPeers()`) ship in `runtimes.cjs` ready for the interactive nudge (deferred to a 1.27.x patch).
100
-
101
- See [docs/PEER-DELEGATION.md](docs/PEER-DELEGATION.md) for the ops guide (when delegation fires, fallback diagnostics, broker lifecycle, Windows quirks) and [reference/peer-protocols.md](reference/peer-protocols.md) for the ACP + ASP protocol cheat sheet.
102
-
103
- ### OpenRouter provider (v1.33.6, opt-in)
104
-
105
- You can route any agent's tier (`opus`/`sonnet`/`haiku`) through **OpenRouter** - an aggregator that fronts Claude, GPT, Llama, Gemini, DeepSeek and more behind a single API key - *alongside* your native provider auth, never instead of it. Set `OPENROUTER_API_KEY` and GDD's tier-resolver adapter dynamically fetches the OpenRouter catalog (24h TTL cache) and maps each tier onto a concrete model via a closed-vs-open + pricing heuristic, with a `.design/config.json#openrouter_tier_overrides` escape hatch for pinning exact ids. When the key is absent or the catalog is unreachable, resolution gracefully falls back to your native provider - OpenRouter is purely additive. See [`connections/openrouter.md`](connections/openrouter.md) for setup, the probe pattern, and fallback behavior, and run `/gdd:openrouter-status` to inspect catalog freshness and the resolved tier→model mapping.
106
-
107
- ### Native mobile output (v1.34.1)
108
-
109
- GDD now generates **native mobile** UI, not just web. A project-type detector routes the brief to the matching executor - web stays the default; `native-ios` / `native-android` / `flutter` opt in via the brief plus `package.json` / `pubspec.yaml` / `*.xcodeproj` presence:
110
-
111
- - **[`swift-executor`](agents/swift-executor.md)** - compilable **SwiftUI** views per iOS conventions (navigation, safe areas, SF Pro Dynamic Type).
112
- - **[`compose-executor`](agents/compose-executor.md)** - **Jetpack Compose** Material 3 composables (Kotlin), edge-to-edge with the Material 3 `sp` type scale.
113
- - **[`flutter-executor`](agents/flutter-executor.md)** - one Dart codebase that adapts the theme **per target**: Material 3 for web/Android, Cupertino for iOS.
114
-
115
- All three are fed by a shared **token-bridge** ([`reference/native-platforms.md`](reference/native-platforms.md)) that extends the Phase-23 token engine with `swift`/`compose`/`flutter` emitters - mapping your canonical tokens (`#3B82F6`, `16px`, `Inter`) deterministically onto each platform's theme primitives (`Color`/`Font`, `MaterialTheme`, `ThemeData`) with a documented, round-trippable precision contract, so the executors never hand-author colour or dimension math. Rendered verification via the iOS Simulator / Android emulator is **optional** - when no simulator is present the verify stage degrades to a code-only structural audit (the simulator only *adds* rendered confirmation).
116
-
117
- ### Email output (v1.34.2)
118
-
119
- GDD also generates **email templates** - the project-type detector routes an `email` brief to a dedicated executor that honors the real client constraints web HTML/CSS breaks on:
120
-
121
- - **[`email-executor`](agents/email-executor.md)** - generates one email per task as **MJML source (canonical) + the derived HTML**, against the constraint catalogue, with the static validator as its own self-check. It is an agent-prompt, not a compiler - **no `mjml` runtime, no Litmus account, no network** is needed to produce the email.
122
-
123
- The constraints live in [`reference/email-design.md`](reference/email-design.md) - table-based layout (no flexbox/grid/`position`), inline styles (no `<style>` sheet in Gmail), MSO conditional comments for Outlook's Word engine, dark-mode `color-scheme` handling, ~600px width, and the top-20-client quirks. A deterministic static checker ([`scripts/lib/email/validate-email-html.cjs`](scripts/lib/email/validate-email-html.cjs)) flags the statically-verifiable subset (`EM-LAYOUT`/`EM-STYLE`/`EM-MSO`/`EM-DARK`). Cross-client rendered verification via [`Litmus`](connections/litmus.md) (or Email-on-Acid) is **optional** - when absent the verify stage degrades to the static validator. Email generation is opt-in; **web stays the default**.
124
-
125
- ### Print/PDF output (v1.34.3)
126
-
127
- GDD also generates **print/PDF** output - the project-type detector routes a `print` brief to a dedicated executor that honors the production constraints screen-RGB web HTML ignores. This **completes the Non-Web Output Layer** (native + email + print all shipped):
128
-
129
- - **[`pdf-executor`](agents/pdf-executor.md)** - generates **Paged.js-compatible print HTML/CSS** (with PDFKit-fallback notes for Chrome-less runtimes) against the constraint catalogue, with the static validator as its own self-check. It is an agent-prompt, not a compiler - **no headless Chrome, no PDFKit, no network** is needed to produce the print HTML/CSS.
130
-
131
- The constraints live in [`reference/print-design.md`](reference/print-design.md) - the `@page` box model (size/margin/marks), bleed box + crop/registration marks, CMYK color-space awareness (print is subtractive CMYK, not screen RGB), font embedding/outlining (print RIPs have no web fonts), and a 300dpi raster fallback. A deterministic static checker ([`scripts/lib/print/validate-print-css.cjs`](scripts/lib/print/validate-print-css.cjs)) flags the statically-verifiable subset (`PR-PAGE`/`PR-BLEED`/`PR-CMYK`/`PR-FONT`/`PR-DPI`). Rendered PDF/page verification via the optional [`print-renderer`](connections/print-renderer.md) connection (Paged.js/headless-Chrome or PDFKit) is **optional** - when absent the verify stage degrades to the static validator. Print generation is opt-in; **web stays the default**.
132
-
133
- ### Research connections - Lazyweb + Mobbin (v1.34.4)
134
-
135
- The **discover** stage grounds design in real product references, resolving sources **cost-aware - the free source is tried before any paid one**. [`Lazyweb`](connections/lazyweb.md) (free MCP, 250k+ app screens - pricing pages, onboarding, redesign comparisons) is **Tier 1, always first**; [`Mobbin`](connections/mobbin.md) (paid MCP, 600k+ screens / 130k+ flows - mobile + flow-level) and [`Refero`](connections/refero.md) are **Tier 2** (use whichever you subscribe to), then Pinterest → local archetypes → WebFetch. Both are optional user-installed MCPs (**no new runtime dependency**), onboardable via `/gdd:connections`.
136
-
137
- ### Team surfaces - PR inline review (v1.35.1)
138
-
139
- After `/gdd:ship` opens the PR, the [`pr-commenter`](agents/pr-commenter.md) agent posts GDD's verify/audit output **inline** on it: selector-specific findings as inline review comments on changed lines, Preview/Chromatic before-after screenshot pairs, and a `gdd/design-review` status check (audit pillar scores + verify pass/fail + a11y) that a teammate's branch protection can require. Outbound bodies are redacted; `GDD_DISABLE_PR_COMMENTER` (or `.design/config.json`) is the kill-switch; it degrades to a noop (prints bodies for manual paste) and **never fails the ship**. Uses `gh` only - **no new runtime dependency**. First sub-phase of the Team Surfaces layer (Slack/Discord notifications + Linear/Jira ticket-sync follow). Contract: [`reference/pr-review-integration.md`](reference/pr-review-integration.md).
140
-
141
- ### Team surfaces - Notification backplane (v1.35.2)
142
-
143
- Routes pipeline events (verify-fail / audit-pass / ship) to **Slack** + **Discord** via incoming webhooks ([`connections/slack.md`](connections/slack.md) / [`connections/discord.md`](connections/discord.md)). The dispatcher ([`scripts/lib/notify/dispatch.cjs`](scripts/lib/notify/dispatch.cjs)) redacts every body at a single chokepoint, honors per-channel kill-switches (`GDD_DISABLE_SLACK` / `GDD_DISABLE_DISCORD`), and degrades to a noop when a webhook URL is unset - notification never blocks the pipeline. **No new runtime dependency** (injectable `fetch`, no Slack/Discord SDK). Routing: [`reference/notification-routing.md`](reference/notification-routing.md).
144
-
145
- ### Team surfaces - Ticket sync (v1.35.3)
146
-
147
- Links a design cycle to a **Linear** or **Jira** ticket and keeps them in sync ([`connections/linear.md`](connections/linear.md) / [`connections/jira.md`](connections/jira.md), MCP-based). [`agents/ticket-sync-agent.md`](agents/ticket-sync-agent.md) surfaces the linked ticket's comments as context when a design file opens (via the decision-injector) and, on `/gdd:complete-cycle`, transitions the ticket + posts a **redacted** summary. Per-system kill-switches (`GDD_DISABLE_LINEAR` / `GDD_DISABLE_JIRA`); degrade-to-noop (never gates the cycle). **No new runtime dependency, no new egress** (MCP tools only). Contract: [`reference/ticket-sync.md`](reference/ticket-sync.md). **Completes the Team Surfaces layer** (PR inline + notifications + ticket sync).
148
-
149
- ### Design-artifact export (v1.35.5)
150
-
151
- `/gdd:export <cycle> --format html|pdf|notion` packages a finished cycle's design output (`EXPERIENCE.md`, `DESIGN.md`, `DESIGN-VERIFICATION.md`, the decision log, screenshots) into a stakeholder-shareable artifact - for PMs/execs/brand who aren't in the repo. The [`build-html`](scripts/lib/export/build-html.cjs) assembler emits a **self-contained** HTML (inline CSS, base64-embedded screenshots, **zero external references**); `pdf` is the same HTML plus Paged.js-compatible `@page` print CSS you render yourself; `notion` writes a page via the Notion MCP ([`connections/notion.md`](connections/notion.md), degrade-to-HTML). Every artifact is **redacted**; `--pseudonymize` masks identity/paths/hostname for external sharing; `--pr` posts the HTML preview as a PR comment via `pr-commenter`. **No new runtime dependency** (D-02: pure assembler, no PDF/markdown library). Contract: [`reference/export-formats.md`](reference/export-formats.md).
152
-
153
- ### Domain packs - Knowledge Tier 3 (v1.36.1)
154
-
155
- Four industry-specific design-pattern packs at [`reference/domains/`](reference/domains/) - **finance** (data-table density, trading-UI color semantics, Reg-T/MiFID II disclosure, PCI-DSS masking, number-formatting precision), **healthcare** (HIPAA PHI isolation, audit-trail-as-UI, WCAG 2.1 AAA, medical-data viz), **gaming** (HUD/diegetic taxonomy, vestibular + photosensitive safety, ESRB/PEGI age-gates, controller/touch input adaptation), and **civic** (Section 508 + WCAG 2.1 AA floor, multi-language gov forms, Plain Writing Act, USWDS). The [`design-context-builder`](agents/design-context-builder.md) auto-detects the domain from brief keywords + `package.json` dependencies (`@stripe/`, `fhir`, `@react-three/fiber`, `@uswds/uswds`, …) and loads the matching pack into downstream context; [`design-auditor`](agents/design-auditor.md) folds each pack's audit checklist into the relevant pillar. Additive knowledge - no new pillar, no new runtime dependency. First sub-phase of Phase 36 (Motion-tool verification + Conversational UI follow).
156
-
157
- ### Motion-tool verification (v1.36.2)
158
-
159
- GDD now opens the motion **exports** a project ships. The pure, dependency-free [`validate-motion`](scripts/lib/motion/validate-motion.cjs) checks a **Lottie** JSON for frame-rate sanity, non-positive duration, embedded-asset bloat, and a perf budget (`MO-*` rules); for **Rive** `.riv` (binary) it does size + a `RIVE`-header sanity, and surfaces the state-machine graph (unreachable states, no-exit loops) when the opt-in Rive runtime is present. The [`motion-verifier`](agents/motion-verifier.md) agent runs at verify time ([`connections/lottie.md`](connections/lottie.md) / [`connections/rive.md`](connections/rive.md)) and **WARNs - never blocks** (motion is creative). **No new runtime dependency** - the Lottie player and Rive runtime are opt-in. Second sub-phase of Phase 36.
160
-
161
- ### Conversational UI (v1.36.3)
162
-
163
- [`reference/conversational-ui.md`](reference/conversational-ui.md) closes a zero-coverage surface: voice flows + chatbots. It codifies voice-flow reprompts (no-input / no-match → human handoff), multi-turn dialogue (context carryover, slot-filling, repair), **prompt-as-UX** (the assistant's persona/tone/boundaries as a versioned design artifact), chatbot empty-states + suggested replies, voice-first onboarding, and error recovery + accessibility. [`design-context-builder`](agents/design-context-builder.md) detects a `conversational` project type (brief keywords + chatbot/voice deps like `botpress` / `dialogflow` / `actions-on-google` / `ask-sdk-core`) and loads the pack into context. **No new runtime dependency.** This is the **final sub-phase of Phase 36 - which is now complete** (domain packs + motion-tool verification + conversational UI).
164
-
165
- ### AI-native tools - Wave 2 (v1.37.1)
166
-
167
- Six more AI-native design tools join the connection layer (Phase 14's backlog, now scheduled): **Framer**, **Penpot**, and **Webflow** (canvas-category - read frames/boards/structure as design sources) plus **v0.dev**, **Plasmic**, and **Builder.io** (generator-category - prompt→component, wired into [`design-component-generator`](agents/design-component-generator.md) as `<!-- impl: -->` sections). Plasmic is dual (canvas + generator). Onboarding grows 21 → 27. Each is an opt-in MCP/API connection that degrades to code-only when absent - **no new runtime dependency**. First sub-phase of Phase 37 (Greenfield DS Bootstrap follows).
168
-
169
- ### Greenfield design-system bootstrap (v1.37.2)
170
-
171
- `/gdd:bootstrap-ds` gives a brand-new project a coherent design system from a brand input (a primary color + optional secondary + tone tags + target framework). The pure [`token-scale`](scripts/lib/ds/token-scale.cjs) helper emits a 9-stop OKLCH color scale as native CSS `oklch()` (no color-conversion library), a modular type scale, a 4pt/8pt spacing scale, and radius/motion defaults; [`ds-generator`](agents/ds-generator.md) offers **3 variants** (conservative / balanced / bold) to pick from per [`reference/ds-bootstrap-rubric.md`](reference/ds-bootstrap-rubric.md), then scaffolds button/input/card proof components. Never invents a brand; never overwrites an existing DS. **No new runtime dependency.** This **completes Phase 37** (AI-native Wave 2 + greenfield bootstrap).
172
-
173
- ### Outcome-driven adaptation (v1.38.0)
174
-
175
- GDD now learns **which design patterns win with users**, not just which pass lint. `/gdd:design --variants N` emits N competing, hypothesis-tagged variants; a new `design_arms` posterior ([`design-arms-store`](scripts/lib/ds-arms/design-arms-store.cjs) - Beta(2,8), distinct from the routing bandit) consults prior outcomes to bias generation (**advisory, never directive**). Two read-only external signal sources close the loop: **A/B experiments** ([LaunchDarkly / Statsig / GrowthBook](connections/launchdarkly.md) → [`experiment-result-ingester`](agents/experiment-result-ingester.md)) and **user research** ([UserTesting / Maze / Hotjar](connections/usertesting.md) → [`user-research-synthesizer`](agents/user-research-synthesizer.md)), the latter **pseudonymized before any agent context** (a tested PII guard). Findings populate the brief's `<prior-research>` block, which verify cross-checks. **No new runtime dependency.** Onboarding 27 → 33.
176
-
177
- ### Deployment coordination (v1.38.5)
178
-
179
- GDD now tracks a design past "PR merged" to **actually live**. [`/gdd:rollout-status`](skills/rollout-status/SKILL.md) reads the feature-flag service (the Phase 38 LaunchDarkly/Statsig/GrowthBook connections) via [`rollout-coordinator`](agents/rollout-coordinator.md) and classifies each cycle - `unrolled` / `staging-only` / `canary-N%` / `prod-100%` - surfacing **stuck** rollouts (a canary that hasn't advanced in N days). The pure [`rollout-status`](scripts/lib/rollout/rollout-status.cjs) classifier also computes a **deployed-percentage weight** that feeds the `design_arms` posterior via `verify_outcome` events - a variant that only reached 10% of users counts as weak evidence (0.1), a fully-rolled one counts 1.0. **Read-only** (GDD never advances or rolls back) and **no new runtime dependency**.
180
-
181
- ### DS migration workflows (v1.39.1)
182
-
183
- When a design system ships a breaking major - shadcn/ui v1→v2, Tailwind v3→v4, MUI v5→v6, or the Material 2/3 token rename - GDD detects the skew from the in-repo `package.json`, consults a curated rule library ([`reference/migrations/`](reference/migrations/)), and produces an **impact-scored, proposal-only** migration plan via [`ds-migration-planner`](agents/ds-migration-planner.md). Each affected component is scored by visual-delta × usage × tests-affected, and the planner emits codemod scaffolds to `.design/migration/` through the pure [`codemod-gen`](scripts/lib/migration/codemod-gen.cjs) - which produces jscodeshift/ast-grep template **text only** (it never imports or runs a codemod engine). [`design-verifier`](agents/design-verifier.md) then treats an in-flight migration as a contract: visual-diff within threshold, component API surface unchanged, tests green, and an unmigrated high-impact rule is a gap. **Proposal-only, no new runtime dependency, no new egress.**
184
-
185
- ### Long-horizon cost governance (v1.39.2)
186
-
187
- GDD already tracks cost per task and per runtime - now it **forecasts** it, **caps** it at the project level, and shows whether the spend **shipped**. [`/gdd:budget`](skills/budget/SKILL.md) groups `costs.jsonl` by cycle and (via [`cost-forecaster`](agents/cost-forecaster.md) → the pure [`cost-forecast`](scripts/lib/budget/cost-forecast.cjs)) projects the next N cycles in **best / typical / worst** scenarios - "at the current rate you'll hit your $X project cap in Y cycles." A new `budget.json.project_cap_usd` adds a **project-level hard cap**: the [`budget-enforcer`](hooks/budget-enforcer.ts) hook warns at 50% + 80% and **gracefully halts** the next agent spawn at 100% (via the pure [`project-cap`](scripts/lib/budget/project-cap.cjs) classifier) - **disabled by default**, so existing users are unaffected. [`/gdd:roi`](skills/roi/SKILL.md) joins per-cycle cost with commits that shipped (survived ≥ 14 days) vs reverted into a cost-per-shipped-commit table ([`roi`](scripts/lib/budget/roi.cjs)). **No new runtime dependency, no new egress** - the hook only ever blocks, never spends.
188
-
189
- ### GDD self-migration (v1.39.5)
190
-
191
- GDD migrates *your* design systems (above) - now it migrates **itself**. When GDD ships a breaking path change (like the Phase 31.5 `scripts/lib/**` → `sdk/**` reorg), a machine-readable registry in [`reference/DEPRECATIONS.md`](reference/DEPRECATIONS.md) records `Since · Removed in · Old · New · hint`. After an upgrade, [`/gdd:update`](skills/update/SKILL.md) flags anything that crossed into deprecated/removed, and [`/gdd:migrate`](skills/migrate/SKILL.md) rewrites your project's stale references - **previewing a diff first, never silent** - via the pure [`deprecation-registry`](scripts/lib/deprecation-registry.cjs). Two CI gates keep the system honest: a completeness check (every entry has a shim or a confirmed removal) and `lint-changelog` (every future minor must declare a `### Breaking changes` section). **No new runtime dependency, no new egress.**
192
-
193
- ### Team collaboration mode (v1.40.0)
194
-
195
- GDD's single-operator baseline now extends to **teams** - git-native + advisory, no server. Two developers working a cycle on parallel branches merge their `.design/STATE.md` **per section** ([`section-merge`](scripts/lib/collab/section-merge.cjs) unions decisions by `D-id`; a real conflict is only a same-id divergence, which [`conflict-resolver`](agents/conflict-resolver.md) reconciles with human confirmation - never auto-picking or dropping a decision). Decisions carry optional `[author= co-author=]` attribution, move through an async review queue (`proposed → reviewing → approved → locked`) with **hard locks** (the only escape is an audited [`/gdd:unlock-decision`](skills/unlock-decision/SKILL.md)), and [`/gdd:review-decisions`](skills/review-decisions/SKILL.md) surfaces what's pending. [`decision-journal-exporter`](agents/decision-journal-exporter.md) publishes a **pseudonymized, read-only** Notion/Confluence journal for stakeholders who don't run GDD. `gdd_cycle_mode` (designer/dev/full) partitions a cycle by role, a `permissions` model gates per-section writes, and `collab.multi_writer_enabled` switches the advisory lock to a team-mode backoff. The full contract: [`reference/multi-author-model.md`](reference/multi-author-model.md). **Everything is off by default** - a single-operator project is unaffected. **No new runtime dependency.**
196
-
197
- ### CLI localization (v1.40.5)
198
-
199
- GDD's README is multilingual - now its **CLI** is too. [`/gdd:locale <code>`](skills/locale/SKILL.md) sets the language of `--help`, common error messages, and skill prompt headers, resolved by [`scripts/lib/i18n`](scripts/lib/i18n/index.cjs) (precedence: `config.locale` > env `LANG` > `en`; fallback chain `locale → base → en`). Flat-JSON message tables ship for **en** (complete source), **ru** (full), and **uk/de/fr/zh/ja** placeholders - a missing key always falls back to English, so a partial locale never breaks the CLI. Skills + agents can carry an opt-in `description_i18n` map. Adding a locale is a PR: translate the table, add a `NOTICE` credit (the contribution path is in [`reference/cli-localization.md`](reference/cli-localization.md)). Completeness is **warn-only**. **No new runtime dependency.**
200
-
201
- ### Deterministic anti-pattern CLI - `gdd-detect` (v1.41.0)
202
-
203
- GDD's BAN-NN anti-pattern catalogue is now executable. [`gdd-detect`](bin/gdd-detect) is a **dep-free, offline** Node CLI that scans HTML/CSS/JSX for the 11 statically-detectable BAN rules ([`scripts/lib/detect/rules/`](scripts/lib/detect/)) - `transition: all`, `will-change: all`, gradient text, bounce easing, `scale(0)` entry, naked `outline: none`, pure-black dark mode, disabled zoom, tinted image outline - each finding linked to its [`reference/anti-patterns.md`](reference/anti-patterns.md) paragraph. `gdd-detect <path> [--json] [--fast] [--rule BAN-NN]` exits `0` clean / `2` findings / `1` error. The rule files are the canonical executable; the markdown stays canonical prose; [`sync-rule-catalogue`](scripts/sync-rule-catalogue.cjs) keeps them in parity. `npm run lint:design` is the CI gate; an opt-in pre-commit scaffold ships too. `design-auditor` and the Phase-25 quality-gate consume it; `jsdom`/`puppeteer` are soft-optional (regex-fast is the default). **No new runtime dependency.**
204
-
205
- ### Previous releases
206
-
207
- - **v1.26.0** - Headless Model Resolver (per-runtime tier→model map, `resolved_models` router field, per-runtime price tables, `reasoning-class` runtime-neutral alias).
208
- - **v1.25.0** - Pipeline Hardening (prototype gate + STATE `<prototyping>` block, router S/M/L/XL `complexity_class`, quality-gate Stage 4.5, Stop-hook turn closeout).
209
- - **v1.24.0** - Multi-Runtime Installer (`@clack/prompts` interactive multi-select for all 14 runtimes, idempotent + foreign-AGENTS.md-safe, scripted CI surface preserved 1:1).
210
- - **v1.23.5** - No-Regret Adaptive Layer (Thompson sampling bandit + AdaNormalHedge ensemble + MMR rerank; single-user via informed-prior bootstrap, no opt-in telemetry).
211
- - **v1.23.0** - SDK Domain Primitives (solidify-with-rollback gate, JSON output contracts, auto-crystallization of `Touches:` patterns).
212
- - **v1.22.0** - SDK Observability (~24 typed event types, per-tool-call trajectory, append-only event chain, secret scrubber).
213
- - **v1.21.0** - Headless SDK (`gdd-sdk` CLI runs full pipeline without Claude Code, parallel researchers, cross-harness MCP).
214
- - **v1.20.0** - SDK Foundation (resilience primitives, lockfile-safe `STATE.md`, `gdd-state` MCP server with 11 typed tools, TypeScript foundation).
215
-
216
- For full release notes see [CHANGELOG.md](CHANGELOG.md).
90
+ For the full release history (every version from v1.0.0 onwards), see [CHANGELOG.md](CHANGELOG.md).
217
91
 
218
92
  ---
219
93
 
@@ -231,211 +105,6 @@ For full release notes see [CHANGELOG.md](CHANGELOG.md).
231
105
 
232
106
  ---
233
107
 
234
- ## Getting Started
235
-
236
- ```bash
237
- npx @hegemonart/get-design-done@latest
238
- ```
239
-
240
- The installer prompts you to choose:
241
- 1. **Runtime** - Claude Code, OpenCode, Gemini, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae, Qwen Code, CodeBuddy, Cline, or all (interactive multi-select - pick multiple runtimes in a single session)
242
- 2. **Location** - Global (all projects) or local (current project only)
243
-
244
- All 14 runtimes receive their native artifact layout (`skills/`, `command/`, `agents/`, or `.clinerules`) via per-runtime content converters - Claude SKILL.md sources are translated to each runtime's expected shape at install time (frontmatter pass-through, path rewrite, tool-name rewrite via the Phase 21 cross-harness maps). Architecture ported from `gsd-build/get-shit-done` (MIT - see `NOTICE`; upstream is now archived following the May 2026 $GSD token rug-pull, community continuation lives at [`open-gsd/get-shit-done-redux`](https://github.com/open-gsd/get-shit-done-redux)).
245
-
246
- **Multi-harness compilation (v1.42.0).** Skills are authored once in `source/skills/` with placeholders (`{{command_prefix}}`, `{{model}}`, `{{config_file}}`, `{{ask_instruction}}`) and compiled per-harness by `scripts/build-skills.cjs` (`npm run build:skills`, or `gdd-sdk build skills`) using a pure transformer factory that reads the single harness manifest at `scripts/lib/manifest/harnesses.json`. The committed `skills/` tree is the regenerated Claude-Code default (CI drift-gates `committed === generated`); the default bundle ships at `dist/claude-code/`, and the other 13 bundles are produced on demand. Adding a 15th harness is one manifest entry. Contributors: edit `source/skills/`, never `skills/` directly - see `reference/skill-placeholders.md` and `reference/DEPRECATIONS.md`.
247
-
248
- **Editorial quality floor (v1.43.0).** A tool that audits design quality should hold its own prose to the same bar. `npm run lint:prose` is a CI gate that fails on em dashes, prose double hyphens, and AI-prose tells (`load-bearing`, `leverage`, `robust`, `seamless`, ...) across the README, `SKILL.md`, `source/skills/`, `agents/`, `CHANGELOG.md`, and `reference/` (bodies and frontmatter descriptions). Fenced/inline code, HTML comments, and Cyrillic-majority files are skipped. The ruleset lives in `STYLE.md`, generated from the shared denylist at `scripts/lib/manifest/prose-denylist.json`. See `CONTRIBUTING.md`. **No new runtime dependency.**
249
-
250
- **Harness capability matrix (v1.44.0).** The full per-harness support matrix (skill discovery, command syntax, MCP, install path, status) lives in **[`HARNESSES.md`](HARNESSES.md)** at the repo root, generated from `scripts/lib/manifest/harnesses.json` (the single source of truth; CI drift-gates it). Each harness carries an honest status (`tested` / `experimental` / `untested`) and a `last_verified` stamp; a freshness gate warns at 60 days and fails at 180 for `tested` harnesses, surfaced in `/gdd:health`. The 14-harness count above is the same SoT the matrix reads, so it cannot drift. The five deep-dive reference files (`reference/codex-tools.md`, `reference/gemini-tools.md`, `reference/peer-cli-capabilities.md`, `reference/peer-protocols.md`, `reference/runtime-models.md`) remain as appendices linked from the matrix. **No new runtime dependency.**
251
-
252
- **Domain reference index (v1.45.0).** The 38+ reference docs are now navigated through 7 canonical entry-points - `reference/{typography,color,spatial,motion,interaction,responsive,ux-writing}.md` - each indexing its subordinate fragments with a "use this when" pointer plus a handful of rules-of-thumb. Design skills load the relevant domain index first and drill into a fragment only when needed (motion-mapper dropped roughly 89% of its up-front reference tokens this way). The indexes link, never copy: `check:domain-links` fails CI on a broken cross-link and `check:no-duplication` fails on large copy-paste. The detailed fragments stay in place as the drill-in targets. **No new runtime dependency.**
253
-
254
- **Skill UX polish (v1.46.0).** Skill frontmatter now has a single source of truth at `scripts/lib/manifest/skills.json` (description, argument hint, tools allow-list per skill); `scripts/generate-skill-frontmatter.cjs` regenerates each `source/skills/<id>/SKILL.md` from it, and `generate:skill-frontmatter:check` drift-gates the two in CI. The generator is order-preserving, so the committed tree stays a byte-for-byte fixed point and existing snapshots never churn. Power users get `/gdd:pin <skill>`, which writes standalone shortcut aliases (for example `/audit` alongside `/gdd:audit`) across every installed harness dir, each carrying a `gdd-pinned-skill` marker, plus `/gdd:unpin` and `/gdd:list-pins`. The 1024-character description budget (in place since the skill-authoring contract) is now an explicit `lint:agentskills` CI gate. **No new runtime dependency.**
255
-
256
- **In-browser design iteration (v1.47.0).** `/gdd:live` tightens the design loop: pick an element on a running dev server, generate N variants in one batch (default 3, grounded in the Phase 45 canonical reference), post-check each with `gdd-detect`, hot-swap them via HMR, then accept or discard. Accepted variants are applied as the canonical edit and feed the Phase 38 bandit store with a `dev_time` source tag (a conservative `Beta(2,8)` prior keeps them advisory until production outcomes accumulate). The session persists to `.design/live-sessions/<id>.json` with resume, a scope guard blocks writes outside the picked element's source files, and harnesses without MCP fall back to a screenshot-only degraded mode. It drives the existing Preview connection, so there is **no new runtime dependency**.
257
-
258
- **Audit and pillar expansion (v1.48.0).** Four audit-side gaps close at once. The copy pillar gets a real rubric (`reference/copy-quality.md` + `copy-auditor`): microcopy, error and empty-state text, ARIA and alt text, voice alignment, with an i18n overflow lens. A project-wide `design-debt-crawler` walks an existing codebase (not just the current cycle), enumerates raw color literals, anti-patterns, untokenized components, and contrast/density issues, and writes a priority-scored `.design/debt/DEBT-CATALOG.md`. A `brief-auditor` grades the brief against five anti-patterns (vague verbs, missing audience, immeasurable success criteria, scope creep, missing anti-goals) and surfaces a non-blocking `/gdd:discuss brief` pointer. And the Stage 4.5 quality-gate gains an `a11y` failure class so `axe` / `pa11y` / `lighthouse` regressions route to `design-fixer` like any other gate failure. **No new runtime dependency.**
259
-
260
- **Quick anti-slop floor (v1.49.0).** Three small safety primitives. A worktree redirect (`scripts/lib/worktree-resolve.cjs`) sends `.design/` and `.planning/` writes to the main repo root when GDD runs inside a git worktree, so artifacts never leak into an ephemeral checkout. A design-quality PostToolUse hook (`gdd-design-quality-check.js`) runs a free regex pass on every `.tsx`/`.vue`/`.svelte`/`.astro` write and warns on eight default-AI-aesthetic tells (gradient spam, generic CTAs, centered-everything, font-inter defaults, purple/violet defaults, glassmorphism spam, isometric fallbacks, decorative motion), catalogued in `reference/visual-tells.md`. And a reviewer confidence gate adds a `confidence: 0.0-1.0` field plus a 4-question Pre-Report Gate to every audit finding: HIGH and CRITICAL findings need at least 0.8 confidence and cited proof, low-confidence findings stay tentative and never reach `design-fixer`. The hook is WARN-only and there is **no new runtime dependency**.
261
-
262
- **Authoring contract v3 (v1.50.0).** Two additions. A verb-based anti-slop rubric (`reference/anti-slop-rubric.md`) scores five orthogonal axes (Directness, Distinctness, Hierarchy, Authenticity, Density); a sum below 35/50 routes a finding to the debt crawler as `aesthetic-slop`. It rides as a lens-tag on the existing 7-pillar audit, so it catches "generically AI-default" where the pillars catch "wrong". And a machine-parseable skill-composition manifest: optional `composes_with` / `next_skills` frontmatter, a DAG validator (`validate:composition-graph` fails on cycles or dangling refs), and an auto-generated `reference/skill-graph.md`. Skill descriptions move to a multi-paragraph v3 form (`<what>. Use when <triggers>. Activates for requests involving <kw>.`) with both forms accepted during a transition window, a boilerplate-cohort lint, and a `/gdd:new-skill` scaffolder. **No new runtime dependency.**
263
-
264
- **Instinct-based learnings (v1.51.0).** The reflection loop now produces atomic, confidence-weighted instinct units instead of prose nobody reads. Each unit (`reference/instinct-format.md`: trigger, confidence 0.3-0.9, domain, scope, project id) is stored via `scripts/lib/instinct-store.cjs` (a JSON store with optional `better-sqlite3` FTS5 acceleration, the same probe-and-fall-back pattern as cross-cycle recall, so no dependency is added). `design-reflector` dual-emits instincts plus a narrative; `/gdd:apply-reflections` accepts them; the decision-injector surfaces the top-3 relevant instincts into agent context on every design-file read; and `/gdd:instinct list|query|promote` inspects the project and global stores. A project instinct promotes to the global layer only after it recurs across at least two projects (a conservative `Beta(2,8)` prior keeps it advisory), and stale instincts decay and archive. **No new runtime dependency.**
265
-
266
- **Typed DesignContext graph (v1.52.0, keystone).** Design knowledge moves from flat `.design/map/*.md` notes to a typed graph at `.design/context-graph.json`: nodes are tokens, components, variants, states, motion fragments, a11y patterns, screens, layers, and design patterns; typed edges connect them (uses-token, composes, depends-on, consumes-context, and eight more). A Draft-07 schema (`reference/schemas/design-context.schema.json`) plus a dep-free validator (`scripts/validate-design-context.cjs`) and a pure query lib (`scripts/lib/design-context-query.cjs`: nodes / edges / path / consumers / unreachable / cycles / coverage) back it; regex extract passes build fragments that merge into the graph. The five mapper agents and the synthesizer dual-emit, so the markdown maps stay while fragments are added. A 13th read-only MCP tool (`gdd_context_query`) and two skills (`/gdd:context`, `/gdd:migrate-context`) expose it. Regex not tree-sitter, JSON not SQLite; this is the keystone for the phases that follow. **No new runtime dependency.**
267
-
268
- **Semantic mapper engine (v1.53.0).** Mappers get smart about scale and re-runs on top of the Phase 52 graph. Louvain community batching (`scripts/lib/mappers/compute-batches.mjs`, dep-free, deterministic) groups files that import each other so each parallel mapper sees a coherent slice; a neighborMap sidecar (`neighbor-map.mjs`) hands each batch its 1-hop external symbols so cross-batch edges emit without rereading other batches. SHA-256 fingerprinting (`sdk/fingerprint/`) classifies each re-run as SKIP / PARTIAL / ARCHITECTURE / FULL, so `/gdd:discover` (now incremental by default, `--full` to override) only re-discovers what actually changed. A graph-context-reviewer agent runs nine checks on the assembled graph (hard-reject on schema or referential breakage, soft-warn otherwise). Node builtins only, no `graphology`, no embeddings. **No new runtime dependency.**
269
-
270
- **Composable reference addendums (v1.54.0).** One general mapper prompt cannot know Tailwind's `@theme` tokens from shadcn's `cn()` from vanilla-extract's `style({})`. Phase 54 adds 18 stack-specific addendums (8 design systems, 6 frameworks, 4 motion libraries) under `reference/{systems,frameworks,motion}/`, each at most 50 lines with Conventions / File patterns / Gotchas / Example-output sections. `scripts/lib/detect/stack.cjs` detects the project stack from dependencies plus config files and import signatures; `scripts/lib/mapper-spawn.cjs` composes the matching addendums (capped at one DS + one framework + one motion) into each explore mapper's prompt at spawn time, additively, so a project on an unknown stack just keeps the base prompt and `gsd-health` reports the coverage gap. A `/gdd:new-addendum` scaffolder adds more. Maintainer-authored, vendor-cross-checked, no LLM-generated content. **No new runtime dependency.**
271
-
272
- **GDD dashboard (v1.55.0).** A read-only multi-harness control plane. `gdd-dashboard` opens a terminal TUI with five panes (sessions per runtime, current cycle, cost telemetry, findings, a DesignContext tree); `gdd dashboard --web` opens an interactive browser view of the Phase 52 graph (layered Atomic/Molecular/Organism/Template layout, pan/zoom, click-to-inspect, type/tag filters, find-consumers highlight, PNG export, minimap). It is **built fully dep-free** (a maintainer decision over the roadmap's Ink + React Flow + Vite stack, which would have added ~100 packages): the TUI is a hand-rolled ANSI renderer, the graph view is a self-contained HTML file (inline SVG + vanilla JS, extending the export builder), and the data plane reads GDD state through the existing shared libraries in-process. Read-only by design (the action surface is open-file / copy-command / run-skill); the `--web` server is a local loopback that serves to your own browser and exits. **No new runtime dependency.**
273
-
274
- **Risk-scoring and fact-forcing gate (v1.56.0).** Writer actions now carry a quantified risk score instead of a binary allow/deny. A pure, deterministic scorer (`scripts/lib/risk/compute-risk.cjs`, frozen tables, no I/O) grades each Write / Edit / MultiEdit / Bash by tool, file sensitivity, and input shape, then two PreToolUse hooks act on it: `gdd-risk-gate.js` emits a `risk_assessment` event and blocks only the genuinely dangerous actions (destructive bash, high-sensitivity-file rewrites at or above 0.85), while `gdd-fact-force.js` holds the first write to a file until its DesignContext consumers and recorded decisions have actually been read this session. The fact-force hold is soft and softens to a warning when the Phase 52 graph is absent, so greenfield projects are never over-blocked. `/gdd:override` clears a block or a fact-force hold with an approver and reason (audit-trailed as a `D-XX` override decision), and `design-fixer` routes findings by confidence times risk. **Built dep-free** (a maintainer decision: a pure scorer plus static tables, no ML). **No new runtime dependency.**
275
-
276
- **SQLite state backbone (v1.57.0).** Project state (decisions, blockers, plans, findings, recall, instincts) lives in per-file markdown, which makes cross-cycle queries ("every accessibility decision across the last five cycles") infeasible. Phase 57 adds an opt-in `.design/state.sqlite` as an indexed query layer while markdown stays the human-editable source of truth. It is **built with zero new dependency**: SQLite is reached through the existing opportunistic `probeOptional('better-sqlite3')` runtime probe (the Phase 51 pattern), with a guaranteed markdown / JS-scan fallback whenever the module is absent. Run `migrate-to-sqlite.cjs --migrate-state` to build the database (14 tables plus FTS5); afterwards state mutations dual-write (SQLite authoritative, STATE.md rendered from it byte-for-byte) while the `gdd-state` read/mutate/transition API is unchanged. `/gdd:state query "<sql>"` runs read-only SELECTs (engine-level readonly), `/gdd:state recover` rebuilds a corrupt database from markdown, and `/gdd:state demigrate` reverts to markdown-only. When better-sqlite3 is not installed, GDD behaves exactly as before. **No new runtime dependency.**
277
-
278
- Verify with:
279
-
280
- ```
281
- /gdd:help
282
- ```
283
-
284
- > [!TIP]
285
- > Run Claude Code with `--dangerously-skip-permissions` for a frictionless experience. GDD is designed for autonomous multi-stage execution - approving each Read and `git commit` defeats the purpose.
286
-
287
- ### Staying Updated
288
-
289
- GDD ships often. Update by re-running the installer (it's idempotent - updates registered marketplace entries in place):
290
-
291
- ```bash
292
- npx @hegemonart/get-design-done@latest
293
- ```
294
-
295
- Or from inside Claude Code:
296
-
297
- ```
298
- /gdd:update
299
- ```
300
-
301
- `/gdd:update` previews the changelog before applying. Local modifications under `reference/` are preserved - if a structural update needs re-stitching, run `/gdd:reapply-patches`. When a new release lands, the SessionStart hook prints a one-line banner gated by state-machine logic so it never interrupts a running stage.
302
-
303
- <details>
304
- <summary><strong>Non-interactive Install (Docker, CI, Scripts)</strong></summary>
305
-
306
- ```bash
307
- # Claude Code
308
- npx @hegemonart/get-design-done --claude --global # Install to ~/.claude/
309
- npx @hegemonart/get-design-done --claude --local # Install to ./.claude/
310
-
311
- # OpenCode
312
- npx @hegemonart/get-design-done --opencode --global # Install to ~/.config/opencode/
313
-
314
- # Gemini CLI
315
- npx @hegemonart/get-design-done --gemini --global # Install to ~/.gemini/
316
-
317
- # Kilo
318
- npx @hegemonart/get-design-done --kilo --global # Install to ~/.kilo/
319
-
320
- # Codex
321
- npx @hegemonart/get-design-done --codex --global # Install to ~/.codex/
322
-
323
- # Copilot
324
- npx @hegemonart/get-design-done --copilot --global # Install to ~/.copilot/
325
-
326
- # Cursor
327
- npx @hegemonart/get-design-done --cursor --global # Install to ~/.cursor/
328
-
329
- # Windsurf, Antigravity, Augment, Trae, Qwen, CodeBuddy, Cline
330
- npx @hegemonart/get-design-done --windsurf --global
331
- npx @hegemonart/get-design-done --antigravity --global
332
- npx @hegemonart/get-design-done --augment --global
333
- npx @hegemonart/get-design-done --trae --global
334
- npx @hegemonart/get-design-done --qwen --global
335
- npx @hegemonart/get-design-done --codebuddy --global
336
- npx @hegemonart/get-design-done --cline --global
337
-
338
- # All runtimes
339
- npx @hegemonart/get-design-done --all --global
340
-
341
- # Dry run (print diff, write nothing)
342
- npx @hegemonart/get-design-done --dry-run
343
-
344
- # Custom config dir (Docker, non-default Claude root)
345
- CLAUDE_CONFIG_DIR=/workspace/.claude npx @hegemonart/get-design-done
346
- ```
347
-
348
- </details>
349
-
350
- <details>
351
- <summary><strong>Alternative: Claude Code CLI</strong></summary>
352
-
353
- ```bash
354
- claude plugin marketplace add hegemonart/get-design-done
355
- claude plugin install get-design-done@get-design-done
356
- ```
357
-
358
- This is what the npx installer does for you - `npx` just collapses two commands into one.
359
-
360
- </details>
361
-
362
- ### Tier-2 Distribution Channels (v1.28.8+)
363
-
364
- Beyond the Phase 28.7 file-drop install paths above (which remain the default and continue to work exactly as before), v1.28.8 adds three Tier-2 distribution channels for discovery-driven install:
365
-
366
- - **agentskills.io cross-runtime portability.** Our `skills/` are spec-compliant per the [agentskills.io](https://agentskills.io) standard (lint-only path per Phase 28.8 D-13; Phase 28.5 frontmatter contract already matches the 2 required spec fields `name` + `description`; current lint score 38 PASS / 32 WARN / 0 FAIL). Runtimes that claim agentskills.io compatibility (Codex, Kilo, Augment, Hermes, Qwen) can consume our skills directly via that channel - see `.planning/research/agentskills-io-compat/<runtime>.md` for per-runtime verification reports.
367
- - **Cursor Marketplace.** Install via Cursor's marketplace UI. Publisher application submitted to Cursor post-merge; live link pending Cursor team review approval (no published SLA) - see `docs/cursor-marketplace-field-test.md` for current status. Manifest at `.cursor-plugin/plugin.json`.
368
- - **Codex Plugin.** Install via Codex's GitHub-URL plugin add:
369
-
370
- ```bash
371
- codex plugin marketplace add hegemonart/get-design-done
372
- ```
373
-
374
- Works today against any GitHub URL with `.codex-plugin/plugin.json`. Per Phase 28.8 D-14: catalog discovery reuses `.claude-plugin/marketplace.json` - no separate Codex catalog file required.
375
-
376
- Tier-1 file-drop paths above and Tier-2 channels here are **additive opt-in** - both work independently per Phase 28.8 D-05 backward-compat discipline.
377
-
378
- ### Capability-Gap Telemetry + Self-Authoring (v1.29.0+)
379
-
380
- The reflector loop now tracks "capability lookup failed" signals as first-class telemetry and - once enough recurring gaps surface - can draft new agents or skills as proposals for your review.
381
-
382
- **Stage 0 - telemetry (ships immediately).**
383
- Three lookup-fail points now emit typed `capability_gap` events: `skills/fast` no-skill-match paths, `gdd-router` unmatched-intent paths, and the reflector's pattern-detection pass (recurring `Touches:` clusters without a dedicated owner). The reflector aggregates per-cycle gap events into a `## Capability gaps observed` section in your reflection notes. View with `gdd-events --type capability_gap`. No authoring on Stage 0 - this just surfaces signal.
384
-
385
- **Stage 1 - self-authoring (opt-in once data crosses the gate).**
386
- When K=3 stable clusters surface across M=10 reflection cycles (defaults in `reference/capability-gap-stage-gate.md`), `/gdd:apply-reflections` prompts you once to enable Stage 1. With Stage 1 on, the reflector drafts incubator artifacts at `.design/reflections/incubator/<slug>/` - `SKILL.md` or `agents/<slug>.md` with full Phase 28.5-compliant frontmatter, originating events, computed usage frequency, and a suggested integration point. Drafts surface in `/gdd:apply-reflections` as a 5th proposal class with four actions: `accept` (promotes + registers), `reject`, `defer`, `edit`. Promoted arms enter the bandit with a conservative `Beta(2, 8)` prior so they don't get preferential selection until evidence accumulates. Drafts not promoted/refreshed within 30 days auto-archive.
387
-
388
- **Scope guard.** Authoring is limited to `agents/` and `skills/` only - never runtimes, transports, connections, hooks, or CI workflows. `scripts/validate-incubator-scope.cjs` blocks promotion attempts outside scope.
389
-
390
- **Discipline preserved.** Reflector authors nothing that auto-ships. `/gdd:apply-reflections` remains the single human gate (Phase 11 SC-8). Stage 1 never auto-flips - user opts in.
391
-
392
-
393
- ### Figma off-context extraction (v1.31.0+)
394
-
395
- Pull an entire Figma design system into a compact, LLM-readable local digest - **without the raw JSON ever entering Claude's context**. One command extracts the file via the Figma REST API into a local raw cache; a separate digest stage reduces it to `DESIGN.md` + `tokens.json` + `components.json`.
396
-
397
- ```bash
398
- # Stage 1 — raw pull (0 Claude tokens; writes a gitignored cache)
399
- node scripts/lib/figma-extract/pull.cjs <figma-file-url-or-key>
400
- # Stage 2 — digest (reads the cache, writes the compact spec)
401
- node scripts/lib/figma-extract/digest.cjs --raw <cache>/raw/<key> --out .design/figma
402
- ```
403
-
404
- **The economics.** A spike measured **898× compression** (223 MB raw → 254 KB digest) with a ~15.7K-token `DESIGN.md`, capturing 127 component sets + 40 singletons (variants, props, defaults) in ~33s - at **0 Claude tokens and 0 Figma MCP calls during extraction**. This is the cost-sane alternative to the Figma MCP for whole-design-system work, which can run tens of minutes and 50–500K+ tokens for the same data. (The Figma MCP remains the right tool for spot questions on a single component.)
405
-
406
- - **Token-safe by construction.** `FIGMA_TOKEN` is read from the environment only and sent solely as a request header - never logged, never written to disk (a CI static-analysis test enforces this across the whole extract library). The digest never reads raw JSON into context.
407
- - **Works on any Figma plan.** The optional **"GDD Sync"** Figma plugin (`figma-plugin/`) fills the Variables-API-Enterprise gap: it reads `figma.variables` from inside Figma and POSTs them to an ephemeral, 127.0.0.1-only receiver - so Free-tier users get full token coverage too.
408
- - **Per-component slices.** `digest --component <name|glob>` renders a ~500-token slice of just the components you ask for, instead of the full digest.
409
- - **Health-aware.** `/gdd:health` reports a `figma_extract` readiness line (token set / token missing / Free-tier plugin-sync needed).
410
-
411
- See [`skills/figma-extract/SKILL.md`](skills/figma-extract/SKILL.md) and [`figma-plugin/README.md`](figma-plugin/README.md) for the full flow.
412
-
413
- ### Skill discipline bootstrap (v1.32.0+)
414
-
415
- GDD ships 70+ skills, but a description-match skill router consults them opportunistically - easy to skip a stage under pressure. v1.32.0 adds the forcing function GDD lacked, porting the skill-discipline **mechanism** (not content) from [`obra/superpowers`](https://github.com/obra/superpowers) (MIT):
416
-
417
- - **SessionStart inject.** A `using-gdd` bootstrap contract is injected at every session start / `/clear` / compact (`hooks/inject-using-gdd.sh`, per-harness: Cursor / Claude Code / SDK). It carries the **1%-rule** ("even a 1% chance a skill applies → invoke it"), a red-flags `Thought → Reality` table, and the skill-priority + instruction-priority order - so the agent is primed to find the right skill before it acts.
418
- - **`<HARD-GATE>` at every stage transition.** Brief / Explore / Plan / Design / Verify each refuse to advance until the stage's artifact exists and is approved - no free-handing a stage.
419
- - **Rationalization tables** in all 7 stage skills name the common "skip it" justifications and rebut each; **inline self-review** blocks gate the brief and plan specs.
420
- - **`<SUBAGENT-STOP>` no-cascade.** The inject fires only on SessionStart, so the bootstrap never cascades into spawned subagents.
421
- - **Portable + health-aware.** `AGENTS.md` + `GEMINI.md` carry the same discipline block for non-Claude-Code harnesses, and `/gdd:health` reports a `skill-discipline` readiness line.
422
-
423
- See [`skills/using-gdd/SKILL.md`](skills/using-gdd/SKILL.md) and the `NOTICE` attribution for details.
424
-
425
- ### Skill behavior tests (v1.33.0+)
426
-
427
- Static validators check a skill's shape; **behavior tests** check that it holds under pressure. v1.33.0 adds a manifest-driven pressure-scenario harness (porting the TDD-for-skills methodology + pressure-scenario pattern from [`obra/superpowers/skills/writing-skills`](https://github.com/obra/superpowers), MIT): a runner drives a scenario (time / sunk-cost / authority / exhaustion / scope-minimization) through an injectable agent-invoker and scores the response against a compliance/violation rubric with N-attempts + majority rule. Ships 8 scenarios (7 stage skills + `using-gdd`) with synthetic RED baselines.
428
-
429
- Behavior tests are **opt-in** and key-gated - the default `npm test` stub suite covers the harness structurally and stays CI-green (LLM non-determinism keeps live runs out of CI). To run the live pass:
430
-
431
- ```bash
432
- # Skips + exits 0 when ANTHROPIC_API_KEY is unset.
433
- ANTHROPIC_API_KEY=sk-... GDD_BEHAVIOR_INVOKER=./path/to/invoker.cjs npm run test:behavior
434
- ```
435
-
436
- See [`docs/research/description-format-ab.md`](docs/research/description-format-ab.md) for the description-format A/B methodology and [`CONTRIBUTING.md`](CONTRIBUTING.md) ("How to add a pressure scenario").
437
-
438
-
439
108
  ## How It Works
440
109
 
441
110
  > **New to an existing codebase?** Run `/gdd:map` first. It dispatches 5 specialist mappers in parallel (tokens, components, visual hierarchy, a11y, motion) and writes structured JSON to `.design/map/` - much higher signal than the grep-based fallback in Explore.
@@ -484,7 +153,7 @@ Decomposes Explore output into atomic, wave-coordinated, dependency-analyzed des
484
153
 
485
154
  Executes plan tasks in waves. Each task gets a dedicated `design-executor` agent with a fresh 200k context, atomic git commit, and automatic deviation handling per in-context rules. Parallel-safe tasks run in worktrees.
486
155
 
487
- **Solidify-with-rollback** (v1.23.0) - every task validates (typecheck + build + targeted test) before locking in. Validation fails → `git stash` revert. Each task is atomic commit-or-revert.
156
+ **Solidify-with-rollback** - every task validates (typecheck + build + targeted test) before locking in. Validation fails → `git stash` revert. Each task is atomic commit-or-revert.
488
157
 
489
158
  **Creates:** `.design/tasks/task-NN.md` per task, atomic git commit per task
490
159
 
@@ -577,7 +246,7 @@ GDD handles it for you:
577
246
 
578
247
  Size limits where Claude's quality degrades. Stay under, get consistency.
579
248
 
580
- ### 37 Specialized Agents
249
+ ### 61 Specialized Agents
581
250
 
582
251
  Each stage is a thin orchestrator that spawns specialized agents. Heavy lifting happens in fresh 200k contexts, not your main session.
583
252
 
@@ -590,26 +259,9 @@ Each stage is a thin orchestrator that spawns specialized agents. Heavy lifting
590
259
  | Verify | spawns auditor + verifier + checker | design-auditor (6-pillar score), design-verifier (goal-backward), design-integration-checker (D-XX → code) |
591
260
  | Reflect | reads telemetry + learnings | design-reflector (opus), design-authority-watcher, design-update-checker |
592
261
 
593
- ### 12 Tool Connections
594
-
595
- All optional - the pipeline degrades gracefully when any connection is unavailable:
596
-
597
- - **Figma** (read + write + Code Connect) - annotations, token bindings, implementation status write-back
598
- - **Refero** - design reference search
599
- - **Pinterest** - visual reference grounding
600
- - **Claude Design** - handoff bundle import (`/gdd:handoff`)
601
- - **Storybook** - component-spec lookup
602
- - **Chromatic** - visual regression baseline diff
603
- - **Preview** - Playwright + Claude Preview MCP for runtime screenshots
604
- - **paper.design** - MCP canvas read/write for round-trip verification
605
- - **pencil.dev** - git-tracked `.pen` spec files
606
- - **Graphify** - knowledge-graph export
607
- - **21st.dev Magic** - prior-art component search before greenfield builds
608
- - **Magic Patterns** - DS-aware component generation with `preview_url`
609
-
610
262
  ### Embedded Design References
611
263
 
612
- The plugin ships **18+ reference files** covering every major design-knowledge domain. Agents have authoritative answers without web search:
264
+ The plugin ships 18+ reference files covering every major design-knowledge domain. Agents have authoritative answers without web search:
613
265
 
614
266
  - **Heuristics** - NN/g 10, Don Norman emotional design (visceral/behavioral/reflective), Dieter Rams 10, Disney 12 (motion), Sonner / Emil Kowalski component-authoring lens, Peak-End Rule, Loss Aversion, Cognitive Load Theory, Aesthetic-Usability Effect, Doherty Threshold, Flow.
615
267
  - **Components** - 35 component specs (Material 3, Apple HIG, Radix, shadcn, Polaris, Carbon, Fluent, Atlassian, Ant, Mantine, Chakra, Base Web, Spectrum, Lightning, Evergreen, Gestalt) with locked spec template (Purpose · Anatomy · Variants · States · Sizing · Typography · Keyboard · Motion · Do/Don't · Anti-patterns · Citations · Grep signatures).
@@ -640,7 +292,7 @@ After every cycle, `design-reflector` (opus) reads `events.jsonl`, `agent-metric
640
292
  - **Reference additions** - "L-12 cited 9 times across cycles 3–5; promote to `reference/heuristics.md`"
641
293
  - **Frontmatter updates** - "design-executor `typical-duration-seconds: 60` measured at 142s; propose 120s"
642
294
 
643
- `/gdd:apply-reflections` shows the diff and asks before applying. Nothing auto-applies. The **No-Regret Adaptive Layer** (v1.23.5) layers a Thompson sampling bandit + AdaNormalHedge ensemble + MMR rerank on top, viable in single-user mode via informed-prior bootstrap.
295
+ `/gdd:apply-reflections` shows the diff and asks before applying. Nothing auto-applies. The **No-Regret Adaptive Layer** layers a Thompson sampling bandit + AdaNormalHedge ensemble + MMR rerank on top, viable in single-user mode via informed-prior bootstrap.
644
296
 
645
297
  ### Cost Governance
646
298
 
@@ -655,6 +307,8 @@ Targets 50–70% per-task token-cost reduction with no quality-floor regression.
655
307
 
656
308
  ## Commands
657
309
 
310
+ GDD ships 94 skills. The most common ones are below; for the full reference see [SKILL.md](SKILL.md).
311
+
658
312
  ### Core Pipeline
659
313
 
660
314
  | Command | What it does |
@@ -670,126 +324,159 @@ Targets 50–70% per-task token-cost reduction with no quality-floor regression.
670
324
  | `/gdd:fast <text>` | One-shot trivial fix, no pipeline |
671
325
  | `/gdd:quick` | Ad-hoc task with GDD guarantees but skipped optional gates |
672
326
 
673
- ### First-Run + Onboarding
327
+ ### Cycle + Iteration
674
328
 
675
329
  | Command | What it does |
676
330
  |---------|--------------|
677
331
  | `/gdd:start` | First-run proof path - top-3 design issues in your repo (no `.design/` footprint until you opt in) |
678
332
  | `/gdd:new-project` | Initialize a GDD project (PROJECT.md + STATE.md + first cycle) |
679
- | `/gdd:connections` | Onboarding wizard for the 12 external integrations |
680
-
681
- ### Cycle Lifecycle
682
-
683
- | Command | What it does |
684
- |---------|--------------|
685
- | `/gdd:new-cycle` | Open a new design cycle |
686
- | `/gdd:complete-cycle` | Archive cycle artifacts + write per-cycle EXPERIENCE.md |
333
+ | `/gdd:new-cycle` / `/gdd:complete-cycle` | Open / archive a design cycle |
687
334
  | `/gdd:pause` / `/gdd:resume` | Numbered checkpoints - pause mid-stage, resume from any saved checkpoint |
688
- | `/gdd:continue` | Alias for `/gdd:resume` (latest checkpoint) |
689
- | `/gdd:timeline` | Narrative retrospective across cycles + git log |
690
-
691
- ### Iteration + Decisions
692
-
693
- | Command | What it does |
694
- |---------|--------------|
695
- | `/gdd:discuss [topic]` | Adaptive design interview - `--all` for batch gray areas, `--spec` for ambiguity scoring |
696
- | `/gdd:list-assumptions` | Surface hidden design assumptions before planning |
697
- | `/gdd:sketch [idea]` | Multi-variant HTML mockup exploration - browser-openable directly |
698
- | `/gdd:spike [idea]` | Timeboxed feasibility experiment with hypothesis + verdict |
699
- | `/gdd:sketch-wrap-up` / `/gdd:spike-wrap-up` | Package findings into project-local skill |
700
- | `/gdd:audit` | Wraps `design-verifier` + `design-auditor` + `design-reflector`. `--retroactive` audits the full cycle |
701
- | `/gdd:reflect` | Run `design-reflector` on demand - produces `.design/reflections/<cycle-slug>.md` |
702
- | `/gdd:apply-reflections` | Review and selectively apply reflector proposals - diff before apply |
335
+ | `/gdd:discuss [topic]` | Adaptive design interview |
336
+ | `/gdd:sketch [idea]` / `/gdd:spike [idea]` | Multi-variant HTML mockups + timeboxed feasibility |
337
+ | `/gdd:audit` | Wraps `design-verifier` + `design-auditor` + `design-reflector` |
703
338
 
704
- ### Memory + Knowledge Layer
339
+ ### Memory + Diagnostics
705
340
 
706
341
  | Command | What it does |
707
342
  |---------|--------------|
708
- | `/gdd:recall <query>` | FTS5-backed search across cycle archives, learnings, decisions, EXPERIENCE.md files |
709
- | `/gdd:extract-learnings` | Mine cycle artifacts for patterns + decisions + lessons |
710
- | `/gdd:note <text>` | Zero-friction idea capture - append, list, promote to todo |
711
- | `/gdd:plant-seed <idea>` | Forward-looking idea with trigger condition - surfaces at the right cycle |
712
- | `/gdd:analyze-dependencies` | Token fan-out, component call-graphs, decision traceability, circular dependency detection |
713
- | `/gdd:skill-manifest` | List all GDD skills + agents from the intel store |
714
- | `/gdd:graphify` | Build, query, inspect, diff the project knowledge graph |
715
- | `/gdd:watch-authorities` | Diff the design-authority feed whitelist + classify into 5 buckets |
343
+ | `/gdd:recall <query>` | FTS5-backed search across cycle archives, learnings, decisions |
344
+ | `/gdd:note <text>` / `/gdd:plant-seed <idea>` | Idea capture - append, list, promote, surface at the right cycle |
345
+ | `/gdd:scan` / `/gdd:map` | Codebase design-system inventory + 5 parallel mappers |
346
+ | `/gdd:health` / `/gdd:progress` | Artifact health, pipeline position, integrity audit |
347
+ | `/gdd:stats` / `/gdd:optimize` | Cycle stats, rule-based cost analysis, tier recommendations |
716
348
 
717
349
  ### Connections
718
350
 
719
351
  | Command | What it does |
720
352
  |---------|--------------|
353
+ | `/gdd:connections` | Onboarding wizard for the external integrations |
721
354
  | `/gdd:figma-write` | Write design decisions back to Figma (annotate / tokenize / roundtrip) |
722
355
  | `/gdd:handoff <bundle>` | Import a Claude Design bundle and skip Stages 1–3 |
723
- | `/gdd:darkmode` | Audit dark-mode implementation (CSS custom props / Tailwind dark: / JS class toggle) |
724
- | `/gdd:compare` | Compute delta between DESIGN.md baseline and DESIGN-VERIFICATION.md result |
725
- | `/gdd:style <Component>` | Generate component handoff doc (DESIGN-STYLE-[Component].md) |
356
+ | `/gdd:darkmode` | Audit dark-mode implementation |
357
+ | `/gdd:style <Component>` | Generate component handoff doc |
726
358
 
727
- ### Diagnostic + Forensic
359
+ ### Help
728
360
 
729
- | Command | What it does |
730
- |---------|--------------|
731
- | `/gdd:scan` | Codebase design-system inventory (no STATE.md write) |
732
- | `/gdd:map` | 5 parallel codebase mappers (tokens / components / a11y / motion / visual-hierarchy) |
733
- | `/gdd:debug [desc]` | Symptom-driven design investigation with persistent state |
734
- | `/gdd:health` | Reports `.design/` artifact health - staleness, missing files, token drift |
735
- | `/gdd:progress` | Show pipeline position; `--forensic` runs 6-check integrity audit |
736
- | `/gdd:stats` | Cycle stats - decisions made, tasks completed, commits, timeline, git metrics |
737
- | `/gdd:optimize` | Rule-based cost analysis + tier-override recommendations |
738
- | `/gdd:warm-cache` | Pre-warm Anthropic prompt cache across all agents that import shared-preamble |
361
+ ```
362
+ /gdd:help
363
+ ```
739
364
 
740
- ### Distribution + Update
365
+ The full per-command reference, including the long tail of memory, distribution, backlog, and forensic commands, lives in [SKILL.md](SKILL.md).
741
366
 
742
- | Command | What it does |
743
- |---------|--------------|
744
- | `/gdd:update` | Update GDD with changelog preview |
745
- | `/gdd:reapply-patches` | Restitch local `reference/` modifications after structural updates |
746
- | `/gdd:check-update` | Manual update check - `--refresh` bypasses 24h TTL, `--dismiss` hides nudge |
747
- | `/gdd:settings` | Configure `.design/config.json` - profile / parallelism / cleanup |
748
- | `/gdd:set-profile <profile>` | Switch model profile (quality / balanced / budget / inherit) |
749
- | `/gdd:undo` | Safe design change revert - uses git log + dependency check |
750
- | `/gdd:pr-branch` | Create clean PR branch by filtering out `.design/` and `.planning/` commits |
367
+ ---
751
368
 
752
- ### Backlog + Notes
369
+ ## Connections
753
370
 
754
- | Command | What it does |
755
- |---------|--------------|
756
- | `/gdd:todo` | Add / list / pick design tasks |
757
- | `/gdd:add-backlog <idea>` | Park a design idea for a future cycle |
758
- | `/gdd:review-backlog` | Review parked items + promote to active cycle todo |
371
+ GDD ships 42 tool connections. All are optional; the pipeline degrades gracefully to fallbacks when any connection is unavailable. Configure with `/gdd:connections`.
759
372
 
760
- ### Help
373
+ The connection layer spans these categories:
761
374
 
762
- | Command | What it does |
763
- |---------|--------------|
764
- | `/gdd:help` | Full command list + usage |
765
- | `/gdd:bandit-reset` | Reset adaptive-layer posterior on Anthropic model release |
375
+ - **Design surfaces** - Figma (read + write + Code Connect), paper.design, pencil.dev, Penpot, Framer, Webflow, Plasmic
376
+ - **Reference + research** - Refero, Pinterest, Lazyweb, Mobbin, Claude Design handoff
377
+ - **Component generation** - 21st.dev Magic, Magic Patterns, v0.dev, Builder.io
378
+ - **Component spec + visual QA** - Storybook, Chromatic, Preview (Playwright + Claude Preview MCP)
379
+ - **Knowledge graph** - Graphify
380
+ - **Native + non-web output** - Xcode Simulator, Android Emulator, Litmus / Email-on-Acid, print renderer
381
+ - **Motion verification** - Lottie, Rive
382
+ - **Experiment + research signal** - LaunchDarkly, Statsig, GrowthBook, UserTesting, Maze, Hotjar
383
+ - **Team surfaces** - Slack, Discord, Linear, Jira, Notion, GitHub PR (`pr-commenter`)
384
+ - **Provider aggregation** - OpenRouter (opt-in alongside native provider auth)
385
+
386
+ For the full connection list with probe patterns and degraded-mode behaviour, see [connections/connections.md](connections/connections.md). Each connection is also a SKILL.md file under `skills/connections/` once enabled.
766
387
 
767
388
  ---
768
389
 
769
- ## Connections
390
+ ## Install
391
+
392
+ ```bash
393
+ npx @hegemonart/get-design-done@latest
394
+ ```
395
+
396
+ The installer prompts you to choose:
397
+
398
+ 1. **Runtime** - Claude Code, OpenCode, Gemini, Kilo, Codex, Copilot, Cursor, Windsurf, Antigravity, Augment, Trae, Qwen Code, CodeBuddy, Cline, or all (interactive multi-select - pick multiple runtimes in a single session).
399
+ 2. **Location** - Global (all projects) or local (current project only).
400
+
401
+ All 14 runtimes receive their native artifact layout (`skills/`, `command/`, `agents/`, or `.clinerules`) via per-runtime content converters - source skills are translated to each runtime's expected shape at install time (frontmatter pass-through, path rewrite, tool-name rewrite via the cross-harness maps).
402
+
403
+ Verify:
404
+
405
+ ```
406
+ /gdd:help
407
+ ```
408
+
409
+ > [!TIP]
410
+ > Run Claude Code with `--dangerously-skip-permissions` for a frictionless experience. GDD is designed for autonomous multi-stage execution - approving each Read and `git commit` defeats the purpose.
411
+
412
+ ### Staying Updated
413
+
414
+ GDD ships often. Update by re-running the installer (it is idempotent and updates registered marketplace entries in place):
415
+
416
+ ```bash
417
+ npx @hegemonart/get-design-done@latest
418
+ ```
419
+
420
+ Or from inside Claude Code:
421
+
422
+ ```
423
+ /gdd:update
424
+ ```
425
+
426
+ `/gdd:update` previews the changelog before applying. Local modifications under `reference/` are preserved - if a structural update needs re-stitching, run `/gdd:reapply-patches`. When a new release lands, the SessionStart hook prints a one-line banner gated by state-machine logic so it never interrupts a running stage.
427
+
428
+ <details>
429
+ <summary><strong>Non-interactive Install (Docker, CI, Scripts)</strong></summary>
430
+
431
+ ```bash
432
+ # Claude Code
433
+ npx @hegemonart/get-design-done --claude --global # Install to ~/.claude/
434
+ npx @hegemonart/get-design-done --claude --local # Install to ./.claude/
435
+
436
+ # Per-runtime
437
+ npx @hegemonart/get-design-done --opencode --global # Install to ~/.config/opencode/
438
+ npx @hegemonart/get-design-done --gemini --global # Install to ~/.gemini/
439
+ # ... same pattern for: kilo, codex, copilot, cursor, windsurf, antigravity,
440
+ # augment, trae, qwen, codebuddy, cline
441
+
442
+ # All runtimes
443
+ npx @hegemonart/get-design-done --all --global
444
+
445
+ # Dry run (print diff, write nothing)
446
+ npx @hegemonart/get-design-done --dry-run
447
+
448
+ # Custom config dir (Docker, non-default Claude root)
449
+ CLAUDE_CONFIG_DIR=/workspace/.claude npx @hegemonart/get-design-done
450
+ ```
451
+
452
+ </details>
453
+
454
+ <details>
455
+ <summary><strong>Alternative: Claude Code CLI</strong></summary>
456
+
457
+ ```bash
458
+ claude plugin marketplace add hegemonart/get-design-done
459
+ claude plugin install get-design-done@get-design-done
460
+ ```
461
+
462
+ This is what the npx installer does for you - `npx` just collapses two commands into one.
463
+
464
+ </details>
465
+
466
+ <details>
467
+ <summary><strong>Alternative: Tier-2 Distribution Channels</strong></summary>
770
468
 
771
- GDD ships with 12 tool connections. All are optional; the pipeline degrades gracefully to fallbacks when any connection is unavailable. Configure with `/gdd:connections`.
772
-
773
- | Connection | Purpose | Probe |
774
- |------------|---------|-------|
775
- | **Figma** | Read tokens, components, screenshots; write annotations, Code Connect, implementation status | `mcp__figma__get_metadata` + `use_figma` |
776
- | **Refero** | Design reference search across catalogued sources | `mcp__refero__search` |
777
- | **Pinterest** | Visual reference grounding for brand-voice + style | OAuth + MCP |
778
- | **Claude Design** | Handoff bundle import (`/gdd:handoff`) - skip Stages 1–3 | URL or local file |
779
- | **Storybook** | Component-spec lookup at port 6006 | HTTP probe |
780
- | **Chromatic** | Visual regression baseline diff | API key |
781
- | **Preview** | Playwright + Claude Preview MCP runtime screenshots | `mcp__Claude_Preview__preview_*` |
782
- | **paper.design** | MCP canvas read/write for canvas → code → verify → canvas round-trip | `mcp__paper__use_paper` |
783
- | **pencil.dev** | Git-tracked `.pen` spec files (no MCP required) | `.pen` files in repo |
784
- | **Graphify** | Knowledge-graph export | `mcp__graphify__*` |
785
- | **21st.dev Magic** | Prior-art component search before greenfield builds | `mcp__magic__search` |
786
- | **Magic Patterns** | DS-aware component generation with `preview_url` | `mcp__magic-patterns__generate` |
787
-
788
- For full connection details and probe patterns, see [`connections/connections.md`](connections/connections.md).
469
+ Beyond the file-drop install paths above (which remain the default), three additional discovery-driven channels are supported:
470
+
471
+ - **agentskills.io** - skills are spec-compliant per the [agentskills.io](https://agentskills.io) standard, consumable by any agentskills.io-compatible runtime (Codex, Kilo, Augment, Hermes, Qwen).
472
+ - **Cursor Marketplace** - install via Cursor's marketplace UI (manifest at `.cursor-plugin/plugin.json`).
473
+ - **Codex Plugin** - `codex plugin marketplace add hegemonart/get-design-done` (manifest at `.codex-plugin/plugin.json`).
474
+
475
+ </details>
789
476
 
790
477
  ---
791
478
 
792
- ## Configuration
479
+ ## Configure
793
480
 
794
481
  GDD stores project settings in `.design/config.json`. Configure during `/gdd:new-project` or update with `/gdd:settings`.
795
482
 
@@ -814,48 +501,52 @@ Use `inherit` when using non-Anthropic providers or to follow the runtime's curr
814
501
 
815
502
  ### Adaptive Mode
816
503
 
817
- `.design/budget.json#adaptive_mode` ladder (v1.23.5):
504
+ `.design/budget.json#adaptive_mode` ladder:
818
505
 
819
506
  | Mode | What it does |
820
507
  |------|--------------|
821
- | `static` (default) | Phase 10.1 behavior - static D-13 tier map |
508
+ | `static` (default) | Static tier-map behaviour |
822
509
  | `hedge` | AdaNormalHedge ensemble + MMR rerank engaged. Bandit router still reads static map. Safest intro. |
823
510
  | `full` | Bandit router + Hedge + MMR all active, reading/writing `.design/telemetry/posterior.json` |
824
511
 
825
- ### Parallelism
512
+ ### Parallelism + Quality Gates
826
513
 
827
514
  | Setting | Default | What it controls |
828
515
  |---------|---------|------------------|
829
516
  | `parallelism.enabled` | `true` | Run independent tasks in worktrees |
830
- | `parallelism.min_estimated_savings_seconds` | `30` | Skip parallelization below this threshold |
831
517
  | `parallelism.max_concurrent_workers` | `4` | Hard cap on simultaneous worktrees |
832
-
833
- ### Quality Gates
834
-
835
- | Setting | Default | What it controls |
836
- |---------|---------|------------------|
837
518
  | `solidify.rollback_mode` | `"stash"` | `stash` / `hard` / `none` - how to revert on validation failure |
838
- | `solidify.commands` | autodetect | Override typecheck / build / test commands |
839
519
  | `verify.iterations_max` | `3` | Cap on verify→fix loop iterations |
840
520
  | `connection.figma_writeback` | `proposal` | `proposal` / `auto` - confirm before writing |
841
521
 
522
+ ### Peer-CLI Delegation
523
+
524
+ GDD agents can optionally delegate to local peer CLIs (Codex via App Server Protocol; Gemini, Cursor, Copilot, Qwen via Agent Client Protocol) when measurably cheaper or higher-quality for the role. Falls back to in-process Anthropic SDK when no peer is available. Configure per-agent via `/gdd:peers` and `/gdd:run-skill peer-cli-customize`. Full ops guide: [docs/PEER-DELEGATION.md](docs/PEER-DELEGATION.md).
525
+
526
+ ### Skill behavior tests
527
+
528
+ Static validators check a skill's shape; behavior tests check that it holds under pressure. A manifest-driven pressure-scenario harness drives 8 scenarios (7 stage skills + `using-gdd`) through time / sunk-cost / authority / exhaustion / scope-minimization pressure and scores responses against a compliance rubric. Behavior tests are opt-in and key-gated (the default `npm test` covers the harness structurally and stays CI-green):
529
+
530
+ ```bash
531
+ # Skips + exits 0 when ANTHROPIC_API_KEY is unset.
532
+ ANTHROPIC_API_KEY=sk-... GDD_BEHAVIOR_INVOKER=./path/to/invoker.cjs npm run test:behavior
533
+ ```
534
+
535
+ See [CONTRIBUTING.md](CONTRIBUTING.md) ("How to add a pressure scenario") for the authoring path.
536
+
842
537
  ---
843
538
 
844
539
  ## Security
845
540
 
846
- ### Built-in Hardening
847
-
848
- GDD ships defense-in-depth security since Phase 14.5:
541
+ GDD ships defense-in-depth security:
849
542
 
850
543
  - **`hooks/gdd-bash-guard.js`** - PreToolUse:Bash blocks ~50 dangerous patterns (`rm -rf /`, `chmod 777`, `curl | sh`, `git reset --hard`, fork bombs) after Unicode NFKC + ANSI normalization.
851
- - **`hooks/gdd-protected-paths.js`** - PreToolUse:Edit/Write/Bash enforces `protected_paths` glob list (defaults: `reference/**`, `.design/archive/**`, `skills/**`, `commands/**`, `hooks/**`, `.design/config.json`, `.design/telemetry/**`).
852
- - **`hooks/gdd-risk-gate.js`** - PreToolUse:Write/Edit/MultiEdit/Bash scores each writer action via the pure `scripts/lib/risk/compute-risk.cjs` (tool x file-sensitivity x input shape), emits a `risk_assessment` event, and blocks only actions at or above 0.85; `allow` is silent, `review` / `require_confirmation` attach advisory context. Clear a block with `/gdd:override`.
853
- - **`hooks/gdd-fact-force.js`** - PreToolUse:Edit/Write/MultiEdit holds the first write to a file until its DesignContext consumers and recorded decisions have been Read this session; soft block, softens to a warning when the graph is absent, cleared with `/gdd:override factforce <path>`.
854
- - **`hooks/gdd-read-injection-scanner.ts`** - scans inbound Read content for invisible-Unicode (zero-width, word-joiner, BOM, bidi overrides) + HTML-comment + secret-exfil patterns.
544
+ - **`hooks/gdd-protected-paths.js`** - PreToolUse:Edit/Write/Bash enforces the `protected_paths` glob list.
545
+ - **`hooks/gdd-risk-gate.js`** - scores each writer action and blocks only the genuinely dangerous ones.
546
+ - **`hooks/gdd-fact-force.js`** - holds the first write to a file until its DesignContext consumers and recorded decisions have been read this session.
547
+ - **`hooks/gdd-read-injection-scanner.ts`** - scans inbound Read content for invisible-Unicode + HTML-comment + secret-exfil patterns.
855
548
  - **`scripts/lib/blast-radius.cjs`** - `design-executor` preflight refuses tasks above `max_files_per_task: 10` / `max_lines_per_task: 400`.
856
- - **`hooks/gdd-mcp-circuit-breaker.js`** - breaks consecutive-timeout loops on `use_figma` / `use_paper` / `use_pencil`.
857
-
858
- ### Protecting Sensitive Files
549
+ - **`hooks/gdd-mcp-circuit-breaker.js`** - breaks consecutive-timeout loops on MCP-backed connections.
859
550
 
860
551
  Add sensitive paths to your runtime's deny list:
861
552
 
@@ -881,26 +572,11 @@ Add sensitive paths to your runtime's deny list:
881
572
 
882
573
  ## Troubleshooting
883
574
 
884
- **Commands not found after install?**
885
- - Restart your runtime to reload commands/skills
886
- - Verify files exist at `~/.claude/skills/get-design-done/` for global Claude Code installs
887
- - For local installs, verify `./.claude/skills/get-design-done/`
888
- - Run `/gdd:help` to confirm registration
575
+ **Commands not found after install?** Restart your runtime to reload commands/skills. Verify files exist at `~/.claude/skills/get-design-done/` for global Claude Code installs (or `./.claude/skills/get-design-done/` for local). Run `/gdd:help` to confirm registration.
889
576
 
890
- **Pipeline stuck mid-stage?**
891
- - `/gdd:resume` - restore from the most recent numbered checkpoint
892
- - `/gdd:health` - diagnose `.design/` artifact issues
893
- - `/gdd:progress --forensic` - 6-check integrity audit
577
+ **Pipeline stuck mid-stage?** `/gdd:resume` restores from the most recent numbered checkpoint. `/gdd:health` diagnoses `.design/` artifact issues. `/gdd:progress --forensic` runs the 6-check integrity audit.
894
578
 
895
- **Cost overruns?**
896
- - `/gdd:optimize` - rule-based recommendations
897
- - `/gdd:set-profile budget` - switch to budget tier
898
- - Set `adaptive_mode: "full"` in `.design/budget.json` - bandit will learn cheap-and-correct tier per agent over 5–10 cycles
899
-
900
- **Updating to the latest version?**
901
- ```bash
902
- npx @hegemonart/get-design-done@latest
903
- ```
579
+ **Cost overruns?** `/gdd:optimize` gives rule-based recommendations. `/gdd:set-profile budget` switches to the budget tier. Set `adaptive_mode: "full"` in `.design/budget.json` so the bandit learns cheap-and-correct tier per agent over 5–10 cycles.
904
580
 
905
581
  **Using Docker / containers?**
906
582
 
@@ -911,47 +587,22 @@ CLAUDE_CONFIG_DIR=/workspace/.claude npx @hegemonart/get-design-done
911
587
  ### Uninstalling
912
588
 
913
589
  ```bash
914
- # Global installs (per-runtime)
590
+ # Per-runtime (replace --claude with any runtime flag)
915
591
  npx @hegemonart/get-design-done --claude --global --uninstall
916
- npx @hegemonart/get-design-done --opencode --global --uninstall
917
- npx @hegemonart/get-design-done --gemini --global --uninstall
918
- npx @hegemonart/get-design-done --kilo --global --uninstall
919
- npx @hegemonart/get-design-done --codex --global --uninstall
920
- npx @hegemonart/get-design-done --copilot --global --uninstall
921
- npx @hegemonart/get-design-done --cursor --global --uninstall
922
- npx @hegemonart/get-design-done --windsurf --global --uninstall
923
- npx @hegemonart/get-design-done --antigravity --global --uninstall
924
- npx @hegemonart/get-design-done --augment --global --uninstall
925
- npx @hegemonart/get-design-done --trae --global --uninstall
926
- npx @hegemonart/get-design-done --qwen --global --uninstall
927
- npx @hegemonart/get-design-done --codebuddy --global --uninstall
928
- npx @hegemonart/get-design-done --cline --global --uninstall
929
592
 
930
593
  # Multi-select interactive uninstall (no runtime flag)
931
594
  npx @hegemonart/get-design-done --uninstall
932
-
933
- # Local installs (current project)
934
- npx @hegemonart/get-design-done --claude --local --uninstall
935
- # ... same flags as above with --local
936
595
  ```
937
596
 
938
597
  This removes all GDD commands, agents, hooks, and settings while preserving other configurations.
939
598
 
940
599
  ---
941
600
 
942
- ## Feedback Channel (v1.30.0+)
601
+ ## Feedback
943
602
 
944
- GDD now ships a consent-first GitHub issue reporter via the `/gdd:report-issue` slash command.
603
+ GDD ships a consent-first GitHub issue reporter via the `/gdd:report-issue` slash command. It walks you through reporting an issue or capability gap with a payload preview before submission, local-first and consent-gated. Direct identifiers are replaced with stable pseudonyms (your username, hostname, absolute paths, git identity, env-var values, emails, IPs) - but internal correlation is preserved so maintainers can debug. Set `GDD_DISABLE_ISSUE_REPORTER=1` or add `{ "issue_reporter": false }` to `.design/config.json` to halt submission before any network call.
945
604
 
946
- - **What it does.** Walks you through reporting an issue or a capability gap, with a payload preview before submission. Local-first, consent-gated, no auto-mode. Triages against `reference/known-failure-modes.md` first - many failures resolve without filing.
947
- - **Pseudonymization, NOT anonymization.** Direct identifiers (your username, hostname, absolute paths, git identity, env-var values, emails, IPs) are replaced with stable pseudonyms - but internal correlation is preserved so maintainers can debug. Side-channel data (writing style, code patterns, repo fingerprints) may still re-identify. You see the full payload before submission and explicitly consent per-issue.
948
- - **Kill-switch.** Set `GDD_DISABLE_ISSUE_REPORTER=1` (env) or add `{ "issue_reporter": false }` to `.design/config.json` to halt submission before any network call. `gsd-health` surfaces the disable line.
949
- - **Hardcoded destination.** The reporter cannot be redirected at runtime; the destination repo is a frozen constant in `scripts/lib/issue-reporter/destination.cjs`.
950
- - **`gh`-absent fallback.** If the GitHub CLI isn't installed, the payload is written to `.design/issue-drafts/` and the issue-template URL is copied to your clipboard (xclip / pbcopy / clip).
951
-
952
- See [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md) for the R1..R8 rule catalog and [`reference/known-failure-modes.md`](reference/known-failure-modes.md) for known anti-patterns the reporter detects.
953
-
954
- **v1.30.5 update** - the catalogue now ships 22 entries (was 10 in v1.30.0), and a new deterministic fuzzy matcher (`scripts/lib/failure-mode-matcher.cjs`, top-N + threshold + confidence) returns ranked candidates for ambiguous symptoms. The reflector + authority-watcher can propose new entries via `/gdd:apply-reflections` (6th proposal class) - strictly proposal-only, every entry passes through user review.
605
+ See [reference/pseudonymization-rules.md](reference/pseudonymization-rules.md) for the rule catalog.
955
606
 
956
607
  ---
957
608
 
@@ -959,6 +610,10 @@ See [`reference/pseudonymization-rules.md`](reference/pseudonymization-rules.md)
959
610
 
960
611
  MIT License. See [LICENSE](LICENSE) for details.
961
612
 
613
+ Architecture ported from `gsd-build/get-shit-done` (MIT - see `NOTICE`). Peer-CLI protocol shapes adapted from `greenpolo/cc-multi-cli` (Apache 2.0). Skill-discipline mechanism ported from [`obra/superpowers`](https://github.com/obra/superpowers) (MIT).
614
+
615
+ For the full release history, see [CHANGELOG.md](CHANGELOG.md). For contribution guidelines, see [CONTRIBUTING.md](CONTRIBUTING.md).
616
+
962
617
  ---
963
618
 
964
619
  <div align="center">