@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
@@ -1,99 +0,0 @@
1
- ---
2
- name: gdd-health
3
- description: "Reports .design/ artifact health - staleness, missing files, token drift, broken state transitions. Activates for requests involving checking .design artifact health, staleness, token drift, or broken state transitions."
4
- tools: Read, Bash, Glob, Grep, mcp__gdd_state__get
5
- disable-model-invocation: true
6
- ---
7
-
8
- # /gdd:health
9
-
10
- **Role:** Report the health of the `.design/` directory. Print a score and list the checks that failed.
11
-
12
- ## Checks
13
-
14
- 1. **Artifact inventory** - `ls -la .design/*.md` with size and mtime. Print a table.
15
- 2. **Missing expected artifacts** - by `stage` field from the `mcp__gdd_state__get` snapshot:
16
- - `brief` expects BRIEF.md
17
- - `explore` expects DESIGN.md, DESIGN-DEBT.md, DESIGN-CONTEXT.md
18
- - `plan` expects DESIGN-PLAN.md
19
- - `design` expects DESIGN-SUMMARY.md
20
- - `verify` expects DESIGN-VERIFICATION.md
21
- FAIL per missing.
22
- 3. **Token drift** - `wc -c .design/DESIGN.md .design/DESIGN-CONTEXT.md`; approx tokens = bytes/4. WARN if combined >40000.
23
- 4. **Aged DESIGN-DEBT** - items in `.design/DESIGN-DEBT.md` not touched in >14 days (file mtime). WARN.
24
- 5. **Broken state transitions** - `stage` field from the snapshot inconsistent with artifacts present (e.g. stage=`verify` but DESIGN-SUMMARY.md missing). FAIL.
25
- 6. **Pending sketch/spike wrap-ups** - any `.design/sketches/*` or `.design/spikes/*` directory lacking a SUMMARY.md. WARN.
26
- 7. **Seed germination** - scan `.design/SEEDS.md` (if present) for seeds whose trigger keywords match the snapshot or CYCLES.md content. List as "Seed ready: <text>".
27
-
28
- ## State snapshot
29
-
30
- Call `mcp__gdd_state__get` once at the start to pull the snapshot used by checks 2, 5, and 7. Aggregate health math stays prose-level:
31
- - Count available connections from `<connections>`.
32
- - Count open blockers from `<blockers>` where `resolved` is absent.
33
- - Count pending must-haves from `<must_haves>` where `status: "pending"`.
34
-
35
- ## Output
36
-
37
- ```
38
- ━━━ Design health ━━━
39
- Artifacts:
40
- BRIEF.md 2.1 KB 2026-04-14
41
- DESIGN.md 18.4 KB 2026-04-17
42
- DESIGN-CONTEXT.md 7.2 KB 2026-04-17
43
-
44
- Checks:
45
- [PASS] Missing artifacts
46
- [WARN] Token drift (42,100)
47
- [PASS] Aged DESIGN-DEBT
48
- [PASS] State transitions
49
- [PASS] Sketch/spike wrap-ups
50
- [PASS] Seed germination
51
-
52
- Health: 5 / 6 checks passing.
53
- ━━━━━━━━━━━━━━━━━━━━━
54
- ```
55
-
56
- ## Figma-extract readiness (figma_extract)
57
-
58
- After the health table, the `gdd_health` MCP surface (`scripts/lib/health-mirror/index.cjs`) reports a `figma_extract` check so a user knows whether figma-extract is usable. The detail is one of three exact strings:
59
-
60
- - `figma extract: ready (token set)` - `FIGMA_TOKEN` (or `FIGMA_PERSONAL_ACCESS_TOKEN`) is present (status `ok`).
61
- - `figma extract: token missing` - no token env is set (status `warn`).
62
- - `figma extract: plugin sync needed for variables (Free tier detected)` - token present but a prior pull recorded a 403/skip on the Variables REST path, so run the plugin-sync step (status `warn`).
63
-
64
- Token PRESENCE only is detected (D-10) - the token value is never read, logged, or shown. The Free-tier signal is read from the local raw-pull cache only; no network call is made.
65
-
66
- ## Skill-discipline bootstrap (skill_discipline)
67
-
68
- The `gdd_health` MCP surface also reports a `skill_discipline` check (Phase 32) confirming the using-gdd SessionStart bootstrap is live - detail is one of three exact strings:
69
- - `skill-discipline: ready` - `skills/using-gdd/SKILL.md` exists AND `hooks/hooks.json` SessionStart wires `inject-using-gdd.sh` (status `ok`).
70
- - `skill-discipline: missing using-gdd` (skill absent) or `skill-discipline: hook not wired` (skill present, no SessionStart inject) - both `warn`. The MCP surface also reports a `harness_freshness` check (Phase 44): per-harness `last_verified` age, status-aware (only `tested` harnesses warn at 60d / fail at 180d; others `n/a`). Full taxonomy in `HARNESSES.md`; refresh with `npm run verify:harness <id>`.
71
-
72
- ## Check MCP registration (gdd-mcp)
73
-
74
- After the health table, inspect whether `gdd-mcp` (Phase 27.7+) is registered with any installed harness and render a one-line status row. Dismissable via `.design/config.json#mcp_nudge=false`. Non-blocking: failure paths render `MCP server: unknown` rather than crash. Full detection procedure (dismissal check, detection via `scripts/lib/install/mcp-register.cjs`, row rendering for claude/codex/both/neither, fallback) lives in `./health-mcp-detection.md`.
75
-
76
- ## Update notice (safe-window surface)
77
-
78
- After the health table, emit the plugin-update banner if one is present:
79
-
80
- ```bash
81
- [ -f .design/update-available.md ] && cat .design/update-available.md
82
- ```
83
-
84
- Written by `hooks/update-check.sh`; suppressed mid-pipeline and when the latest release is dismissed.
85
-
86
- ## Skill-length report
87
-
88
- After the health table, surface the Phase 28.5 skill-authoring contract drift signal by running `node scripts/validate-skill-length.cjs --quiet --json` and reading `summary` from stdout. Print two prose lines:
89
-
90
- - `Skill-length: <total> total | <clean> clean | <warnings> warn (>=100) | <blockers> block (>=250)`
91
- - If blockers > 0: list each blocker as a row `- <name> (<lines> lines)`. Else: print `All skills within contract.`
92
-
93
- Thresholds: warn >=100, block >=250 (D-01). Strict description-format off by default (D-02). Then add two compact Phase 50 lines from `scripts/lib/manifest/skills.json`: `Skills: <n>/<total> in v3 description form` (descriptions matching `/Activates for requests involving/i`) and `Composition: <edges> edges | <cycles> cycles` (`composes_with`/`next_skills` fan-out; cycles via `scripts/validate-composition-graph.cjs` when present, else `0`). See `./health-skill-length-report.md` for the JSON shape and threshold rationale.
94
-
95
- ## Do Not
96
-
97
- - Do not mutate STATE.md - this skill is read-only. Only `mcp__gdd_state__get` is permitted.
98
-
99
- ## HEALTH COMPLETE
@@ -1,44 +0,0 @@
1
- ---
2
- name: health-mcp-detection
3
- type: heuristic
4
- version: 1.0.0
5
- phase: 28.5
6
- tags: [health, mcp, detection, gdd-mcp, registration-nudge]
7
- last_updated: 2026-05-18
8
- ---
9
-
10
- # Health MCP-Registration Detection Procedure
11
-
12
- Extracted from `skills/health/SKILL.md` per Phase 28.5 D-10 (extract-then-link, never delete content).
13
- This file documents the canonical procedure for inspecting whether `gdd-mcp` (Phase 27.7+) is
14
- registered with any installed harness and rendering a one-line status row after the health
15
- table. The procedure is non-blocking by design: any failure path renders `unknown` rather
16
- than crashing the skill.
17
-
18
- ## Dismissal check
19
-
20
- 1. Read `.design/config.json` (if present). Parse JSON inside a try/catch.
21
- 2. If `config.mcp_nudge === false`, SKIP this step entirely (render nothing).
22
- 3. On parse failure: default to `mcp_nudge=true` (show the row) - fail-safe per threat T-27.7-04-05.
23
-
24
- ## Detection
25
-
26
- 1. Read `.claude/settings.local.json` (or equivalent harness settings file) and inspect its `mcpServers` object - alternatively run `claude mcp list` / `codex mcp list` if a CLI is available (see fallback below).
27
- 2. Preferred invocation via the install-lib: call `detectMcpRegistration()` from `scripts/lib/install/mcp-register.cjs`. Returns `{harnesses: [{harness, present, registered}], summary}`.
28
-
29
- ## Row rendering
30
-
31
- Based on the detection result, render exactly ONE of these row strings:
32
-
33
- - When `claude` and `codex` both present + both registered:
34
- `MCP server: registered with claude+codex`
35
- - When only one harness is present and registered:
36
- `MCP server: registered with claude` (or `MCP server: registered with codex`)
37
- - When at least one harness is present but `gdd-mcp` is NOT in its registered list:
38
- `MCP server: not registered (run: npx @hegemonart/get-design-done --register-mcp; dismiss: .design/config.json#mcp_nudge=false)`
39
- - When neither harness CLI is found on PATH:
40
- `MCP server: unknown (claude/codex CLI not found)`
41
-
42
- ## Fallback (if `mcp-register.cjs` not yet shipped)
43
-
44
- Skip this step silently with status `MCP server: unknown`. This step is non-blocking - failures here MUST NOT crash the SKILL.
@@ -1,69 +0,0 @@
1
- # Health skill - skill-length report subsection
2
-
3
- Phase 28.5-11 / D-11 reference. Read by `skills/health/SKILL.md` to render the
4
- "Skill-length report" subsection after the standard health checks.
5
-
6
- ## JSON shape (from `validate-skill-length.cjs --quiet --json`)
7
-
8
- ```jsonc
9
- {
10
- "summary": {
11
- "total": 70, // number of SKILL.md files under skills/
12
- "clean": 70, // skills with 0 errors and 0 warnings
13
- "warnings": 0, // skills with >=100 lines but <250 (D-01 warn band)
14
- "blockers": 0 // skills with any block-level error (>=250 lines,
15
- // missing frontmatter field, description out of
16
- // range, disable-model-invocation non-whitelisted)
17
- },
18
- "skills": [
19
- {
20
- "name": "...", // skill folder name (matches skills/<name>/SKILL.md)
21
- "path": "...", // absolute path to the file on disk
22
- "lines": 0, // wc -l semantics
23
- "descriptionLength": 0, // length of frontmatter.description string
24
- "hasRequiredFields": true,
25
- "level": "clean", // "clean" | "warn" | "block"
26
- "errors": [{ "code": "...", "message": "..." }],
27
- "warnings": [{ "code": "...", "message": "..." }],
28
- "reasons": ["..."] // human-readable summary lines
29
- }
30
- ]
31
- }
32
- ```
33
-
34
- ## Render contract
35
-
36
- The health skill prints two lines after the existing checks table:
37
-
38
- ```
39
- Skill-length: <total> total | <clean> clean | <warnings> warn (>=100) | <blockers> block (>=250)
40
- All skills within contract.
41
- ```
42
-
43
- If `summary.blockers > 0`, replace the second line with one indented row per
44
- blocker entry (skills where `level === "block"`):
45
-
46
- ```
47
- Skill-length: 70 total | 67 clean | 2 warn (>=100) | 1 block (>=250)
48
- - <name> (<lines> lines)
49
- ```
50
-
51
- ## Thresholds (D-01)
52
-
53
- - `warn >=100` - skill flagged as advisory; CI emits `::warning::` annotation
54
- but does not fail the build.
55
- - `block >=250` - skill flagged as blocker; CI emits `::error::` and fails
56
- the build via exit code 2.
57
-
58
- ## Strict description-format (D-02)
59
-
60
- `STRICT_DESCRIPTION=1` / `--strict-description` is OFF by default. Phase 33
61
- will graduate the strict `<what>. Use when <triggers>.` regex from advisory
62
- to hard-block based on A/B evidence at
63
- `.design/research/description-format-ab.md`.
64
-
65
- ## Cross-link from health
66
-
67
- - `skills/health/SKILL.md` - emits the report after the main checks table.
68
- - `scripts/validate-skill-length.cjs` - provides the JSON.
69
- - `tests/phase-28.5-baseline.test.cjs` - locks the post-rework distribution.
@@ -1,87 +0,0 @@
1
- ---
2
- name: gdd-help
3
- description: "Lists all available get-design-done commands with one-line descriptions"
4
- tools: Read
5
- disable-model-invocation: true
6
- ---
7
-
8
- # Get Design Done - Help
9
-
10
- **Role:** Print a formatted reference of all `/gdd:` commands, grouped by purpose.
11
-
12
- ---
13
-
14
- ## Output
15
-
16
- Print the following table:
17
-
18
- ```
19
- ━━━ Get Design Done — Command Reference ━━━
20
-
21
- Pipeline stages (run in order):
22
- brief Stage 1 — capture problem statement, audience, constraints → BRIEF.md
23
- explore Stage 2 — inventory scan + design context interview → DESIGN.md, DESIGN-DEBT.md, DESIGN-CONTEXT.md
24
- plan Stage 3 — decompose into executable tasks → DESIGN-PLAN.md
25
- design Stage 4 — execute tasks with wave coordination → DESIGN-SUMMARY.md
26
- verify Stage 5 — audit, verify, score → DESIGN-VERIFICATION.md
27
-
28
- Standalone analysis:
29
- style [Component] Generate component handoff doc → DESIGN-STYLE-[Name].md
30
- darkmode Audit dark mode architecture + contrast → DARKMODE-AUDIT.md
31
- compare Delta between baseline and verification → COMPARE-REPORT.md
32
-
33
- Ergonomics:
34
- next Route to the next pipeline stage based on STATE.md
35
- help This reference
36
- progress Show current pipeline state
37
- health Health check of .design/ artifacts
38
- quick Fast pass through the whole pipeline
39
- fast Aggressive speed mode
40
-
41
- Exploration:
42
- discuss Open discussion thread with design-discussant agent
43
- list-assumptions Print active D-XX decisions from STATE.md
44
- sketch Open a design sketch scratchpad
45
- sketch-wrap-up Close sketch and merge learnings
46
- spike Time-boxed exploratory spike
47
- spike-wrap-up Close spike and capture outcomes
48
- map Map the codebase structure
49
- audit Run audit-only pass
50
-
51
- Maintenance:
52
- note Record a quick note to STATE.md
53
- plant-seed Record an idea for later
54
- add-backlog Append item to backlog
55
- review-backlog Review pending backlog
56
- todo List/manage design TODOs
57
- stats Print pipeline stats
58
- settings View/edit plugin settings
59
- update Update the plugin
60
- reapply-patches Reapply any pending patches
61
- debug Enter systematic debugging mode
62
- undo Revert the last stage action
63
-
64
- Lifecycle:
65
- new-project Initialize STATE.md + .design/ directory
66
- new-cycle Start a new design cycle on an existing project
67
- complete-cycle Archive the current cycle
68
- pause Pause work and save context
69
- resume Resume paused work
70
- do Execute a specific task
71
- ship Create PR from completed work
72
- pr-branch Create/switch PR branch
73
-
74
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
75
- ```
76
-
77
- ## Update notice (safe-window surface)
78
-
79
- After the command reference, emit the plugin-update banner if one is present:
80
-
81
- ```bash
82
- [ -f .design/update-available.md ] && cat .design/update-available.md
83
- ```
84
-
85
- Written by `hooks/update-check.sh`; suppressed mid-pipeline and when the latest release is dismissed.
86
-
87
- ## HELP COMPLETE
@@ -1,111 +0,0 @@
1
- ---
2
- name: gdd-instinct
3
- description: "Inspects and manages atomic instinct learning units - small, scoped, confidence-weighted patterns the pipeline accumulates across cycles. Lists the project and global instinct stores, searches them by keyword, and promotes a vetted project instinct to the global store once it has cleared the cross-project gate. Use when the user wants to see what instincts exist, find an instinct by topic, or promote one to global scope. Activates for requests involving instincts, learned patterns, instinct promotion, instinct search, or the instinct store."
4
- argument-hint: "[list | query <keyword> | promote <id>] [--scope project|global] [--domain <d>]"
5
- tools: Read, Bash
6
- user-invocable: true
7
- ---
8
-
9
- # /gdd:instinct
10
-
11
- **Role:** Front end for the atomic instinct store. An instinct is a single learned pattern with a trigger, a confidence between 0.3 and 0.9, a domain, and a scope. This skill lists, searches, and promotes instincts. It never edits stored units by hand and never invents new ones - the reflector and `/gdd:extract-learnings` author them.
12
-
13
- The store engine ships at `scripts/lib/instinct-store.cjs` (authored elsewhere - this skill only calls it). Unit shape (YAML frontmatter plus a short body) is specified in `reference/instinct-format.md`. The project store lives at `.design/instincts/instincts.json`; the global store at `~/.claude/gdd/global-instincts.json`.
14
-
15
- Invoke the engine with `node`, the same way other skills call a `scripts/lib` helper:
16
-
17
- ```bash
18
- node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/instinct-store.cjs" <subcommand> [args]
19
- ```
20
-
21
- If the engine exposes only a module API rather than a CLI, drive it from a short `node -e` script:
22
-
23
- ```bash
24
- node -e "const s=require('${CLAUDE_PLUGIN_ROOT}/scripts/lib/instinct-store.cjs'); console.log(JSON.stringify(s.list({scope:process.env.SCOPE})))"
25
- ```
26
-
27
- ## Invocation Modes
28
-
29
- | Command | Behavior |
30
- |---|---|
31
- | `/gdd:instinct list` | Compact table of stored instincts (default mode). |
32
- | `/gdd:instinct query "<keyword>"` | Search instincts by keyword; show the top matches. |
33
- | `/gdd:instinct promote <id>` | Promote one project instinct to the global store (gated). |
34
-
35
- Flags apply across modes:
36
-
37
- - `--scope project|global` selects which store to read. Default is `project`.
38
- - `--domain <d>` filters to one domain (the domain enum is defined in `reference/instinct-format.md`).
39
-
40
- ## list
41
-
42
- Read the requested store and print a compact table. Call `instinct-store.list({ scope, domain, baseDir })`:
43
-
44
- ```bash
45
- node -e "const s=require('${CLAUDE_PLUGIN_ROOT}/scripts/lib/instinct-store.cjs'); \
46
- const rows=s.list({ scope: process.env.SCOPE || 'project', domain: process.env.DOMAIN || undefined }); \
47
- console.log(JSON.stringify(rows));"
48
- ```
49
-
50
- Render one row per instinct. Keep it scannable:
51
-
52
- ```
53
- ID DOMAIN CONF CYCLES TRIGGER
54
- in-7f3a tokens 0.72 3 palette has no neutral ramp
55
- in-91bc layout 0.55 2 cards overflow on the 320px breakpoint
56
- ```
57
-
58
- - `CONF` is the stored confidence (0.3 to 0.9).
59
- - `CYCLES` is `cycles_seen`.
60
- - Truncate `TRIGGER` to keep each line on one row.
61
-
62
- If the store is empty, print: `No instincts in the <scope> store yet. Run /gdd:reflect or /gdd:extract-learnings to accumulate some.`
63
-
64
- ## query
65
-
66
- Search by keyword and show the closest matches. Call `instinct-store.query(keyword, { scope, baseDir, limit })`. The engine uses an FTS5 index when one is present and falls back to a plain scan otherwise; either path returns the same row shape.
67
-
68
- ```bash
69
- node -e "const s=require('${CLAUDE_PLUGIN_ROOT}/scripts/lib/instinct-store.cjs'); \
70
- const hits=s.query(process.env.KW, { scope: process.env.SCOPE || 'project', limit: 10 }); \
71
- console.log(JSON.stringify(hits));"
72
- ```
73
-
74
- Print the top matches in the same table shape as `list`, ordered by the engine's relevance ranking. If there are no matches, say so plainly and suggest a broader keyword. Quote multi-word keywords so the shell passes one argument.
75
-
76
- ## promote
77
-
78
- Promote a single project instinct into the global store so it applies across every project. Promotion is **gated**: `instinct-store.promote(id, { baseDir })` only succeeds when the instinct has been seen across at least K cycles (K=2) spanning at least M distinct project ids (M=2). The engine enforces the gate; this skill surfaces the outcome and asks the user to confirm before the write.
79
-
80
- Confirm first. Prefer `@clack/prompts`, and fall back to `AskUserQuestion` when it is absent (mirror the probe in `/gdd:new-skill`):
81
-
82
- ```bash
83
- node -e "try { require.resolve('@clack/prompts'); console.log('clack'); } catch { console.log('fallback'); }"
84
- ```
85
-
86
- - `clack`: drive `clack.confirm({ message: 'Promote <id> to the global store?' })` from a short Node script.
87
- - `fallback`: ask the same yes or no question with `AskUserQuestion`.
88
-
89
- On a confirmed yes, run the promotion:
90
-
91
- ```bash
92
- node -e "const s=require('${CLAUDE_PLUGIN_ROOT}/scripts/lib/instinct-store.cjs'); \
93
- console.log(JSON.stringify(s.promote(process.env.ID, {})));"
94
- ```
95
-
96
- Branch on the engine result:
97
-
98
- - Promotion succeeded: print `Promoted <id> to the global store.` and show the new global row.
99
- - Gate not met: the engine reports how far the instinct is from the K=2 / M=2 bar. Print that plainly, for example `<id> needs 2 cycles across 2 projects; seen 1 cycle in 1 project so far. Not promoted.` Do not retry and do not force the write.
100
- - Unknown id: print `No instinct <id> in the project store.` and suggest `/gdd:instinct list`.
101
-
102
- If the user answers no at the confirm step, print `Promotion cancelled.` and exit without writing.
103
-
104
- ## Do Not
105
-
106
- - Do not edit `.design/instincts/instincts.json` or the global store by hand. All writes go through `scripts/lib/instinct-store.cjs`.
107
- - Do not author new instincts here. The reflector and `/gdd:extract-learnings` emit units; this skill reads and promotes them.
108
- - Do not bypass the promotion gate. If the K=2 / M=2 bar is not met, report it and stop.
109
- - Do not modify `reference/instinct-format.md` or the store engine.
110
-
111
- ## INSTINCT COMPLETE
@@ -1,61 +0,0 @@
1
- ---
2
- name: gdd-list-assumptions
3
- description: "Surfaces hidden design assumptions baked into the codebase before planning - pattern-based detection plus user-surfaced items."
4
- argument-hint: "[--area typography|color|layout|motion|a11y]"
5
- tools: Read, Grep, Glob
6
- disable-model-invocation: true
7
- ---
8
-
9
- # /gdd:list-assumptions
10
-
11
- **Role:** Surface implicit design assumptions that were never explicitly decided. Output a numbered list tagging each as `[EXPLICIT]` (found in STATE.md/DESIGN-CONTEXT.md decisions) or `[IMPLICIT]` (inferred from code patterns).
12
-
13
- ## Step 1 - Read explicit decisions
14
-
15
- Read `.design/STATE.md` `<decisions>` and `.design/DESIGN-CONTEXT.md` (if present). Collect every D-XX as `[EXPLICIT]` entries keyed by category.
16
-
17
- ## Step 2 - Scan codebase for implicit patterns
18
-
19
- If `--area <name>` is given, restrict to that area. Otherwise scan all.
20
-
21
- **Layout**
22
- - Grep for `@media` queries → "Is mobile-first or desktop-first assumed?"
23
- - Grep for `grid-template`, `flex-direction` → "Is F-pattern or Z-pattern layout assumed?"
24
-
25
- **Typography**
26
- - Grep for `font-family` declarations → "Does the chosen font stack assume brand acceptance?"
27
- - Grep for `font-size: [0-9]+px` with varying values → "Is a modular scale assumed or ad-hoc sizing?"
28
-
29
- **Color**
30
- - Grep for hex literals `#[0-9a-fA-F]{3,8}` → "Is the palette assumed to be fixed without a token layer?"
31
-
32
- **Motion**
33
- - Grep for `@keyframes`, `transition`, `animate` → "Does the brand tolerate animation?"
34
- - Grep for `prefers-reduced-motion` → "Is reduced-motion honored or assumed ignored?"
35
-
36
- **A11y**
37
- - Grep for `aria-`, `role=`, `alt=` coverage → "Is WCAG AA the target, or AAA?"
38
- - Grep for `outline: none`, `outline: 0` → "Are focus rings intentionally removed?"
39
-
40
- For each hit, emit `Detected assumption: [pattern] at [file:line]` and flag as `[IMPLICIT]`.
41
-
42
- ## Step 3 - Output
43
-
44
- ```
45
- ━━━ Design assumptions ━━━
46
-
47
- Typography
48
- 01 [EXPLICIT] D-03: Font family Inter
49
- 02 [IMPLICIT] 18 px font-size values found — scale not explicit (src/Card.css:12, ...)
50
-
51
- Color
52
- 03 [IMPLICIT] 47 hex literals — no token layer (see /gdd:discuss color)
53
-
54
- ...
55
-
56
- N assumptions total — M implicit.
57
- Next: /gdd:discuss --all to resolve implicit ones.
58
- ━━━━━━━━━━━━━━━━━━━━━━━━
59
- ```
60
-
61
- ## LIST-ASSUMPTIONS COMPLETE
@@ -1,27 +0,0 @@
1
- ---
2
- name: gdd-list-pins
3
- description: "Lists pinned skill aliases per harness with their source skill and pin timestamp. Use when you want to see which gdd skills have been pinned as standalone shortcuts and where."
4
- tools: Read, Bash
5
- ---
6
-
7
- # /gdd:list-pins
8
-
9
- **Role:** Show every pinned skill alias across the installed harness `skills/` directories. For each one, report the harness it lives in, the on-disk alias directory name, the source skill it points at (from the `<!-- gdd-pinned-skill source=<skill> -->` marker), and when it was pinned (the file modification time).
10
-
11
- ## Steps
12
-
13
- 1. **Run the list CLI.** Invoke the shipped script (it takes no arguments). The plugin root resolves via `CLAUDE_PLUGIN_ROOT` (falling back to the current directory when that variable is absent):
14
-
15
- ```bash
16
- node "${CLAUDE_PLUGIN_ROOT:-$(pwd)}/scripts/lib/pin/cli.cjs" list
17
- ```
18
-
19
- The CLI scans each harness `skills/` directory under the current project, finds the stubs carrying the gdd pin marker, and prints one line per pinned alias in the form `[<config-dir>] <alias> -> source=<skill> (pinned <timestamp>)`.
20
-
21
- 2. **Report the result.** Relay the CLI output verbatim. Exit codes: 0 means one or more pinned aliases were found, 1 means none were found (nothing has been pinned yet), 2 means an error.
22
-
23
- ## Do Not
24
-
25
- - Do not scan the harness directories by hand. The CLI already enforces the marker check, so only genuine gdd pins are listed.
26
-
27
- ## LIST-PINS COMPLETE
@@ -1,98 +0,0 @@
1
- ---
2
- name: gdd-live
3
- description: "Live in-browser design mode. The user picks a DOM element on a running dev server (via the Claude Preview MCP), the agent generates N design variants in one batch, they hot-swap in place through HMR or preview_eval using a data-gdd-variant marker, the user accepts or discards, and the whole pick-generate-accept loop persists to .design/live-sessions so it survives a crash or resume. Use when the user wants to iterate on the look of a live component against a real running server, asks to try variants on a page, or runs the live command with a url; falls back to a screenshot-only degraded mode on harnesses without MCP support. Activates for requests involving in-browser design iteration, picking an element on a dev server, or generating variants with hot-swap."
4
- argument-hint: "[--variants N] [--resume <session-id>] [url]"
5
- tools: Read, Write, Edit, Bash, Glob, Grep, Task
6
- user-invocable: true
7
- ---
8
-
9
- # gdd-live - Live In-Browser Design Mode
10
-
11
- Pick a DOM element on a running dev server, generate competing design variants, hot-swap them in place, and accept the winner as a real source edit. Every step persists to `.design/live-sessions/<id>.json` so the session survives a crash or a later resume.
12
-
13
- The browser-side runtime, the harness-mode gate, the session store, the events feed, the post-check, the scope guard, and the bandit feed are all separate modules under `scripts/lib/live/`. This skill describes the loop and names the module that owns each step; it does not import them.
14
-
15
- For the full surface (the Preview MCP tools, the six `live_*` events, the session file, the bandit feed, degraded mode, the scope guard), see `../../reference/live-mode-integration.md`. For the SKILL.md structural contract, see `../../reference/skill-authoring-contract.md`.
16
-
17
- ---
18
-
19
- ## Arguments
20
-
21
- - `[url]` - the page to drive. Optional. When omitted, detect the dev server and use its root.
22
- - `--variants N` - how many variants to generate per pick. Default 3.
23
- - `--resume <session-id>` - reattach to an in-progress session in `.design/live-sessions/`.
24
-
25
- ---
26
-
27
- ## BOOT
28
-
29
- 1. Probe the Preview MCP per `../../connections/preview.md`: `ToolSearch({ query: "Claude_Preview" })`, then `mcp__Claude_Preview__preview_list`. Empty ToolSearch means the MCP is not loaded.
30
- 2. Resolve the harness live mode. The capability signal is `capability_matrix.mcp_support` in `scripts/lib/manifest/harnesses.json`, projected by `scripts/lib/live/harness-mode.cjs` (`liveModeFor(harnessId)`). A `puppeteer` result means full live mode; a `degraded` result means screenshot-only.
31
- 3. If `mcp_support` is false for this harness, or Preview is unavailable, enter DEGRADED mode and say so plainly: variants are generated and captured as static screenshots, with no in-page hot-swap. Skip the INJECT and PICK steps; generate against the file the user names instead.
32
- 4. Detect the dev server. Look for Vite, Next, Bun, or a static server (check `package.json` scripts plus a `preview_list` entry). Record the server descriptor on the session.
33
- 5. Open or create the session via `scripts/lib/live/session-store.cjs` (`.design/live-sessions/<id>.json`). On `--resume`, load the named session (see RESUME).
34
-
35
- ---
36
-
37
- ## INJECT
38
-
39
- Inject the browser runtime once. Read `RUNTIME_JS` from `scripts/lib/live/runtime.cjs` and evaluate it in the page with `mcp__Claude_Preview__preview_eval`. The runtime is an idempotent IIFE bound to `window.__gddLive`, so a re-inject after navigation rebinds the same singleton rather than stacking listeners. It installs the pick handler and the variant-swap helpers, and stamps the live variant on the element via the `data-gdd-variant` attribute.
40
-
41
- ---
42
-
43
- ## PICK
44
-
45
- 1. Arm the picker (`window.__gddLive.pick()`), then guide the user to click the target element. Use `preview_click` and `preview_inspect` to confirm the element and read its computed styles and bounding box.
46
- 2. Read the pick report back. Its fields are documented in `pickReportShape` (selector, tagName, classList, boundingRect, computedStyle subset, current variant). The selector strategy prefers id, then a data-testid, then a tag plus class plus nth-of-type path.
47
- 3. Emit a `live_pick` event through `scripts/lib/live/events.cjs` and append a `pick` entry to the session.
48
-
49
- ---
50
-
51
- ## GENERATE (one batch)
52
-
53
- 1. Load the relevant Phase 45 canonical reference index FIRST, so variants are grounded in real guidance: the domain index that matches the picked element (for example `../../reference/spatial.md` for layout, `../../reference/interaction.md` for components and a11y, `../../reference/color.md` for color, `../../reference/typography.md` for type, `../../reference/motion.md` for animation).
54
- 2. Generate all N variants in ONE batch (default 3), each a distinct, hypothesis-tagged design direction for the picked element. Do not generate them one at a time.
55
- 3. For each variant: write the change atomically to the implicated source file, then make it live. With HMR running, the file write is enough; otherwise apply the variant in place with `window.__gddLive.swapVariant({ n, style, html })`, which sets `data-gdd-variant="n"` and applies the variant's style or markup.
56
-
57
- ---
58
-
59
- ## POST-CHECK
60
-
61
- Run the post-check on each variant via `scripts/lib/live/postcheck.cjs`, which invokes `gdd-detect`. Show the findings inline next to each variant. A variant that trips a finding is flagged, NOT auto-rejected: the user still decides. Append a `live_postcheck` event per variant.
62
-
63
- ---
64
-
65
- ## ACCEPT / DISCARD
66
-
67
- - ACCEPT one variant: apply the chosen variant as the canonical source edit, and revert the others in the page (`window.__gddLive.revert()` on each non-chosen element). Emit a `live_accept` event and feed the outcome to the design-variants bandit via `scripts/lib/live/bandit-feed.cjs` (a dev-time signal). Append an `accept` entry.
68
- - DISCARD: revert every variant in the page back to its captured original and leave the source untouched. Emit a `live_discard` event and append a `discard` entry.
69
-
70
- Either way, persist the result through `scripts/lib/live/session-store.cjs` before continuing.
71
-
72
- ---
73
-
74
- ## PERSIST
75
-
76
- Every step (boot, pick, generate, post-check, accept, discard) is written to the session file through `scripts/lib/live/session-store.cjs` as it happens. The on-disk event log uses the `pick`, `generate`, `accept`, `discard` kinds; the telemetry stream uses the six `live_*` event types. Writes are atomic, so an interrupted step never leaves a half-written session.
77
-
78
- ---
79
-
80
- ## RESUME
81
-
82
- With `--resume <session-id>`, load the named session from `.design/live-sessions/`. Only an `in_progress` session is resumable. Offer the user two choices: continue from the last recorded event (report what that was, for example "last pick was the primary button"), or start fresh (open a new session and leave the old one intact). Never silently replay completed events.
83
-
84
- ---
85
-
86
- ## SCOPE GUARD
87
-
88
- Never write outside the source files implicated by the picked element. Run every proposed write through `scripts/lib/live/scope-guard.cjs`, which maps the picked selector to its owning source files and rejects edits that fall outside them. If a variant would need a change beyond that scope (a shared token, a parent layout, a new dependency), stop and surface it to the user rather than widening the blast radius.
89
-
90
- ## Constraints
91
-
92
- - Do NOT edit files outside the picked element's implicated sources (enforced by the scope guard).
93
- - Do NOT generate variants one at a time; generate the full batch, then swap.
94
- - Do NOT auto-reject a variant on a post-check finding; flag it and let the user decide.
95
- - In DEGRADED mode, state up front that hot-swap is unavailable and fall back to screenshots.
96
- - Persist before every user-facing prompt so a crash never loses accepted work.
97
-
98
- ## LIVE COMPLETE
@@ -1,51 +0,0 @@
1
- ---
2
- name: gdd-locale
3
- description: "Inspects or sets the GDD CLI locale for this project. With no argument, reports the resolved locale (config.locale > env LANG > en), the fallback chain, and per-locale coverage (which message tables are complete vs placeholder). With a <code> (en/ru/uk/de/fr/zh/ja), sets .design/config.json#locale after previewing the change. Localizes --help, common error messages, and skill prompt headers via scripts/lib/i18n/; missing keys fall back to English, so a partial locale never breaks the CLI. Use to switch GDD's own output language."
4
- argument-hint: "[<code>]"
5
- user-invocable: true
6
- tools: Read, Write, Bash, Grep, Glob
7
- ---
8
-
9
- # /gdd:locale
10
-
11
- Closes the English-only CLI gap: GDD's README is multilingual, but `--help`, errors, and skill prompt
12
- headers spoke English until now. This skill inspects or sets the project's locale. Contract:
13
- `../../reference/cli-localization.md`.
14
-
15
- ## Invocation
16
-
17
- | Command | Behavior |
18
- |---|---|
19
- | `/gdd:locale` | Report the resolved locale, the fallback chain, and per-locale coverage. |
20
- | `/gdd:locale <code>` | Set `.design/config.json#locale` to `<code>` (en/ru/uk/de/fr/zh/ja), after preview. |
21
-
22
- ## Steps
23
-
24
- 1. **Resolve current.** Read `.design/config.json#locale` (if any) and the environment, then call the
25
- resolver to report the active locale + chain:
26
-
27
- ```bash
28
- node -e '
29
- const i = require("./scripts/lib/i18n/index.cjs");
30
- let cfg = {}; try { cfg = JSON.parse(require("fs").readFileSync(".design/config.json","utf8")); } catch {}
31
- const loc = i.resolveLocale({ env: process.env, configLocale: cfg.locale });
32
- const cov = i.KNOWN_LOCALES.map((l) => `${l}:${(i.loadTable(l)._meta||{}).coverage||"?"}`).join(" ");
33
- console.log(JSON.stringify({ resolved: loc, chain: i.fallbackChain(loc), coverage: cov }));
34
- '
35
- ```
36
-
37
- 2. **No argument** → print the resolved locale, the fallback chain, and the coverage line (which
38
- tables are `complete` vs `placeholder`). Stop.
39
- 3. **`<code>` argument** → validate it is in `KNOWN_LOCALES` (en/ru/uk/de/fr/zh/ja). Unknown → print the
40
- `error.invalid_locale` message + the known list, change nothing.
41
- 4. **Preview + set.** Show `locale: <old> -> <code>`, then write `locale` into `.design/config.json`
42
- (create the file if absent, preserving any existing keys). Confirm, and note that missing keys in a
43
- placeholder locale fall back to English.
44
-
45
- ## Output
46
-
47
- End with:
48
-
49
- ```
50
- ## LOCALE COMPLETE
51
- ```