@hegemonart/get-design-done 1.0.7

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 (144) hide show
  1. package/.claude-plugin/marketplace.json +63 -0
  2. package/.claude-plugin/plugin.json +54 -0
  3. package/CHANGELOG.md +221 -0
  4. package/LICENSE +21 -0
  5. package/README.md +724 -0
  6. package/SKILL.md +232 -0
  7. package/agents/README.md +226 -0
  8. package/agents/a11y-mapper.md +118 -0
  9. package/agents/component-taxonomy-mapper.md +88 -0
  10. package/agents/design-advisor.md +139 -0
  11. package/agents/design-assumptions-analyzer.md +171 -0
  12. package/agents/design-auditor.md +383 -0
  13. package/agents/design-context-builder.md +544 -0
  14. package/agents/design-context-checker-gate.md +90 -0
  15. package/agents/design-context-checker.md +260 -0
  16. package/agents/design-discussant.md +98 -0
  17. package/agents/design-doc-writer.md +229 -0
  18. package/agents/design-executor.md +452 -0
  19. package/agents/design-figma-writer.md +302 -0
  20. package/agents/design-fixer.md +180 -0
  21. package/agents/design-integration-checker-gate.md +93 -0
  22. package/agents/design-integration-checker.md +326 -0
  23. package/agents/design-pattern-mapper.md +206 -0
  24. package/agents/design-phase-researcher.md +229 -0
  25. package/agents/design-plan-checker.md +164 -0
  26. package/agents/design-planner.md +352 -0
  27. package/agents/design-reflector.md +175 -0
  28. package/agents/design-research-synthesizer.md +127 -0
  29. package/agents/design-verifier-gate.md +97 -0
  30. package/agents/design-verifier.md +605 -0
  31. package/agents/gdd-graphify-sync.md +100 -0
  32. package/agents/gdd-intel-updater.md +88 -0
  33. package/agents/gdd-learnings-extractor.md +85 -0
  34. package/agents/motion-mapper.md +103 -0
  35. package/agents/token-mapper.md +103 -0
  36. package/agents/visual-hierarchy-mapper.md +95 -0
  37. package/connections/chromatic.md +247 -0
  38. package/connections/claude-design.md +190 -0
  39. package/connections/connections.md +218 -0
  40. package/connections/figma-writer.md +139 -0
  41. package/connections/figma.md +146 -0
  42. package/connections/graphify.md +197 -0
  43. package/connections/pinterest.md +153 -0
  44. package/connections/preview.md +173 -0
  45. package/connections/refero.md +189 -0
  46. package/connections/storybook.md +280 -0
  47. package/hooks/budget-enforcer.js +318 -0
  48. package/hooks/context-exhaustion.js +127 -0
  49. package/hooks/gdd-read-injection-scanner.js +44 -0
  50. package/hooks/hooks.json +44 -0
  51. package/package.json +60 -0
  52. package/reference/BRANCH-PROTECTION.md +65 -0
  53. package/reference/DEPRECATIONS.md +41 -0
  54. package/reference/STATE-TEMPLATE.md +200 -0
  55. package/reference/accessibility.md +190 -0
  56. package/reference/anti-patterns.md +336 -0
  57. package/reference/audit-scoring.md +205 -0
  58. package/reference/checklists.md +137 -0
  59. package/reference/config-schema.md +319 -0
  60. package/reference/debugger-philosophy.md +32 -0
  61. package/reference/heuristics.md +201 -0
  62. package/reference/intel-schema.md +266 -0
  63. package/reference/model-prices.md +37 -0
  64. package/reference/model-tiers.md +118 -0
  65. package/reference/motion.md +285 -0
  66. package/reference/parallelism-rules.md +108 -0
  67. package/reference/priority-matrix.md +31 -0
  68. package/reference/project-skills-guide.md +42 -0
  69. package/reference/review-format.md +107 -0
  70. package/reference/schemas/config.schema.json +41 -0
  71. package/reference/schemas/hooks.schema.json +55 -0
  72. package/reference/schemas/intel.schema.json +191 -0
  73. package/reference/schemas/marketplace.schema.json +72 -0
  74. package/reference/schemas/plugin.schema.json +59 -0
  75. package/reference/shared-preamble.md +82 -0
  76. package/reference/typography.md +229 -0
  77. package/scripts/aggregate-agent-metrics.js +144 -0
  78. package/scripts/apply-branch-protection.sh +75 -0
  79. package/scripts/bootstrap-manifest.txt +3 -0
  80. package/scripts/bootstrap.sh +80 -0
  81. package/scripts/build-intel.cjs +458 -0
  82. package/scripts/detect-stale-refs.cjs +101 -0
  83. package/scripts/extract-changelog-section.cjs +57 -0
  84. package/scripts/release-smoke-test.cjs +169 -0
  85. package/scripts/rollback-release.sh +42 -0
  86. package/scripts/run-injection-scanner-ci.cjs +92 -0
  87. package/scripts/validate-frontmatter.cjs +68 -0
  88. package/scripts/validate-schemas.cjs +225 -0
  89. package/scripts/verify-version-sync.cjs +30 -0
  90. package/skills/add-backlog/SKILL.md +47 -0
  91. package/skills/analyze-dependencies/SKILL.md +184 -0
  92. package/skills/apply-reflections/SKILL.md +112 -0
  93. package/skills/audit/SKILL.md +54 -0
  94. package/skills/brief/SKILL.md +75 -0
  95. package/skills/cache-manager/SKILL.md +120 -0
  96. package/skills/compare/SKILL.md +322 -0
  97. package/skills/complete-cycle/SKILL.md +33 -0
  98. package/skills/darkmode/SKILL.md +331 -0
  99. package/skills/debug/SKILL.md +38 -0
  100. package/skills/design/SKILL.md +281 -0
  101. package/skills/discover/SKILL.md +172 -0
  102. package/skills/discuss/SKILL.md +67 -0
  103. package/skills/do/SKILL.md +45 -0
  104. package/skills/explore/SKILL.md +109 -0
  105. package/skills/extract-learnings/SKILL.md +98 -0
  106. package/skills/fast/SKILL.md +44 -0
  107. package/skills/figma-write/SKILL.md +40 -0
  108. package/skills/graphify/SKILL.md +48 -0
  109. package/skills/health/SKILL.md +48 -0
  110. package/skills/help/SKILL.md +76 -0
  111. package/skills/list-assumptions/SKILL.md +60 -0
  112. package/skills/map/SKILL.md +112 -0
  113. package/skills/new-cycle/SKILL.md +35 -0
  114. package/skills/new-project/SKILL.md +53 -0
  115. package/skills/next/SKILL.md +42 -0
  116. package/skills/note/SKILL.md +47 -0
  117. package/skills/optimize/SKILL.md +120 -0
  118. package/skills/pause/SKILL.md +41 -0
  119. package/skills/plan/SKILL.md +251 -0
  120. package/skills/plant-seed/SKILL.md +47 -0
  121. package/skills/pr-branch/SKILL.md +31 -0
  122. package/skills/progress/SKILL.md +60 -0
  123. package/skills/quick/SKILL.md +43 -0
  124. package/skills/reapply-patches/SKILL.md +31 -0
  125. package/skills/reflect/SKILL.md +73 -0
  126. package/skills/resume/SKILL.md +37 -0
  127. package/skills/review-backlog/SKILL.md +45 -0
  128. package/skills/router/SKILL.md +67 -0
  129. package/skills/scan/SKILL.md +721 -0
  130. package/skills/settings/SKILL.md +78 -0
  131. package/skills/ship/SKILL.md +31 -0
  132. package/skills/sketch/SKILL.md +78 -0
  133. package/skills/sketch-wrap-up/SKILL.md +88 -0
  134. package/skills/skill-manifest/SKILL.md +79 -0
  135. package/skills/spike/SKILL.md +67 -0
  136. package/skills/spike-wrap-up/SKILL.md +81 -0
  137. package/skills/stats/SKILL.md +50 -0
  138. package/skills/style/SKILL.md +193 -0
  139. package/skills/synthesize/SKILL.md +93 -0
  140. package/skills/todo/SKILL.md +54 -0
  141. package/skills/undo/SKILL.md +30 -0
  142. package/skills/update/SKILL.md +36 -0
  143. package/skills/verify/SKILL.md +452 -0
  144. package/skills/warm-cache/SKILL.md +113 -0
@@ -0,0 +1,38 @@
1
+ ---
2
+ name: gdd-debug
3
+ description: "Symptom-driven design investigation with persistent state. Writes findings to .design/DEBUG.md."
4
+ argument-hint: "[<symptom description>]"
5
+ tools: Read, Write, Grep, Glob, AskUserQuestion, Task
6
+ ---
7
+
8
+ # /gdd:debug
9
+
10
+ Systematic, checkpoint-driven design debugger. Loads philosophy from `reference/debugger-philosophy.md` and writes every investigation step to `.design/DEBUG.md` so killed sessions can resume.
11
+
12
+ ## Steps
13
+
14
+ 1. **Load philosophy**: Read `reference/debugger-philosophy.md` and keep its five principles in mind for the entire session.
15
+ 2. **Symptom**: If no symptom argument was passed, ask (AskUserQuestion): "What design symptom are you investigating? (observable only — 'cards look crowded', not 'padding is wrong')"
16
+ 3. **Resume check**: Read `.design/DEBUG.md` if it exists. If there is an open session with no `### Fix Proposal` block, ask: "Resume existing session '<symptom>' or start a new one?"
17
+ 4. **Ground truth load**: Read `.design/DESIGN-PLAN.md` (goals), `.design/STATE.md` `<decisions>` block (D-XX items), and any relevant source files pointed at by the symptom.
18
+ 5. **Optional rendered-output check**: Use ToolSearch to see if Playwright/Preview MCP tools are available. If yes, capture rendered state. If no, fall back to code-only analysis.
19
+ 6. **Investigation loop** — for each step:
20
+ - Form one hypothesis (one variable).
21
+ - Investigate (read files, grep, measure).
22
+ - Append to `.design/DEBUG.md`:
23
+ ```markdown
24
+ ## <symptom> — <date>
25
+ ### Hypothesis <N>
26
+ ### Investigation
27
+ ### Finding
28
+ ```
29
+ - Ask (AskUserQuestion): "Continue investigating? (yes / found it / dead end)"
30
+ 7. **When found**: Write `### Fix Proposal` block with a concrete patch description. Ask: "Create a todo with `/gdd:todo add`, or execute the fix now?"
31
+
32
+ ## Do Not
33
+
34
+ - Do not change multiple variables at once.
35
+ - Do not modify global tokens to fix a single component without explicit user approval.
36
+ - Do not close the DEBUG.md session without a finding (mark as "dead end" if abandoned).
37
+
38
+ ## DEBUG COMPLETE
@@ -0,0 +1,281 @@
1
+ ---
2
+ name: design
3
+ description: "Stage 4 of 5 — reads DESIGN-PLAN.md, spawns design-executor per task with wave coordination and parallel/sequential routing. Thin orchestrator."
4
+ argument-hint: "[--auto] [--parallel]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Get Design Done — Design
9
+
10
+ **Stage 4 of 5** in the get-design-done pipeline. Thin orchestrator. All design execution intelligence lives in `agents/design-executor.md`.
11
+
12
+ ---
13
+
14
+ ## State Integration
15
+
16
+ 1. Read `.design/STATE.md`.
17
+ - **If missing:** create minimal skeleton from `reference/STATE-TEMPLATE.md` with `stage: design`, `status: in_progress`; log warning: "STATE.md not found — creating from template. Prior stage outputs may be incomplete."
18
+ - **If present and `stage == design` and `status == in_progress`:** RESUME — use `task_progress` numerator as source of truth; skip tasks that already have a corresponding `.design/tasks/task-NN.md` file.
19
+ - **Otherwise:** normal transition — set `stage: design`, `status: in_progress`.
20
+ 2. Probe `<connections>`, update `last_checkpoint`, write STATE.md.
21
+
22
+ Abort only if `.design/DESIGN-PLAN.md` is missing:
23
+ > "No plan found. Run `/get-design-done:plan` first."
24
+
25
+ ---
26
+
27
+ ## Flag Parsing
28
+
29
+ - `--auto` → `auto_mode=true` (no mid-stage prompts; architectural deviations still stop the individual task but continue with remaining tasks)
30
+ - `--parallel` → `parallel_mode=true` (use worktree isolation for `Parallel: true` tasks)
31
+
32
+ ---
33
+
34
+ ## Pre-execution — Directionally-open check
35
+
36
+ Scan DESIGN-PLAN.md for tasks marked as "directionally open" (exploration-appropriate — e.g., tasks whose acceptance criteria read "explore N directions" or "pick a visual approach"). If any are found, print:
37
+
38
+ > "Tasks [IDs] appear directionally open — consider running `/gdd:sketch` first to explore variants before implementation."
39
+
40
+ Skip if `auto_mode=true`.
41
+
42
+ ## Pre-execution — Project-local conventions
43
+
44
+ When spawning the executor, include any `./.claude/skills/design-*-conventions.md` files in `<required_reading>` so the executor sees project-local design conventions (typography, color, layout, motion, component, interaction decisions codified from prior sketch wrap-ups). Also include any `~/.claude/gdd/global-skills/*.md` files if the directory exists � global skills are cross-project conventions that inform but do not override project-local D-XX decisions.
45
+
46
+ ---
47
+
48
+ ### .stories.tsx Stub (when storybook project detected)
49
+
50
+ After every new component file is created by the design-executor:
51
+
52
+ Step 1 — Check project detection (does not require server running):
53
+ Bash: ls .storybook/ 2>/dev/null || grep '"storybook"' package.json 2>/dev/null
54
+ → Found → storybook_project: true
55
+ → Not found → skip .stories.tsx emission
56
+
57
+ Step 2 — When storybook_project: true, emit a CSF stub alongside the component:
58
+ File: `<same directory as component>/<ComponentName>.stories.tsx`
59
+ Content follows CSF format (see `connections/storybook.md` for full template):
60
+ - Import `Meta` and `StoryObj` from `@storybook/react`
61
+ - Import the new component
62
+ - `meta: Meta<typeof ComponentName>` with `title` and `parameters.a11y.test = 'error'`
63
+ - Export `Default`, `Primary`, `Disabled` story variants
64
+ Adjust `title` to match directory structure (e.g., `'Components/Button'` or `'Features/Auth/LoginForm'`)
65
+
66
+ Note: the `.stories.tsx` stub is emitted whenever `storybook_project: true` regardless of whether
67
+ the dev server is running. New components need stories even in offline/CI contexts.
68
+
69
+ ---
70
+
71
+ ## Step 1 — Parse DESIGN-PLAN.md
72
+
73
+ Read `.design/DESIGN-PLAN.md`. Partition tasks by `## Wave N` heading. Within each wave, partition by `Parallel: true` vs `Parallel: false`. Compute `total_tasks` for `task_progress` denominator.
74
+
75
+ If resuming: skip tasks where `.design/tasks/task-NN.md` already exists.
76
+
77
+ ---
78
+
79
+ ## Parallelism Decision (per wave, before spawning)
80
+
81
+ For each wave:
82
+ 1. Read `.design/config.json` `parallelism` (or defaults from `reference/config-schema.md`).
83
+ 2. Collect candidates in the wave; check `Touches:`, `writes:`, `parallel-safe`, and `typical-duration-seconds` fields.
84
+ 3. Apply rules in order from `reference/parallelism-rules.md` (hard → soft). Overlapping Touches split into sequential sub-waves.
85
+ 4. Write `<parallelism_decision>` to STATE.md per wave (stage: design, wave: N).
86
+ 5. If `parallel`: spawn all candidates via concurrent `Task()` calls in one response. If `serial`: spawn sequentially.
87
+
88
+ ## Step 2 — Wave-by-Wave Execution
89
+
90
+ For each Wave in order (Wave 1, Wave 2, ...):
91
+
92
+ ### Parallel batch (if `parallel_mode=true` AND any `Parallel: true` tasks in wave)
93
+
94
+ Report the partition before spawning:
95
+
96
+ ```
97
+ ━━━ Wave [N] — parallel mode ━━━
98
+ Parallel batch ([N] tasks — spawning concurrently):
99
+ [01] [type]: [scope] — touches: [files]
100
+ [02] [type]: [scope] — touches: [files]
101
+
102
+ Sequential tail ([N] tasks):
103
+ [03] [type]: [scope] — touches: [files]
104
+
105
+ Spawning agents now...
106
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
107
+ ```
108
+
109
+ Spawn ALL `Parallel: true` tasks in this wave as concurrent `Task()` calls in ONE response. Each call uses `isolation: "worktree"`:
110
+
111
+ ```
112
+ Task("design-executor", """
113
+ <required_reading>
114
+ @.design/STATE.md
115
+ @.design/DESIGN-PLAN.md
116
+ @.design/DESIGN-CONTEXT.md
117
+ @reference/[type-relevant].md
118
+ </required_reading>
119
+
120
+ You are the design-executor agent. Execute Task NN from DESIGN-PLAN.md.
121
+
122
+ Prompt context:
123
+ task_id: NN
124
+ task_type: [type]
125
+ task_scope: [scope]
126
+ task_acceptance_criteria:
127
+ - [criterion 1]
128
+ - [criterion 2]
129
+ wave: N
130
+ is_parallel: true
131
+ auto_mode: [true|false]
132
+
133
+ Write .design/tasks/task-NN.md and make an atomic commit `feat(design-NN): [type] — [scope]`.
134
+
135
+ Emit `## EXECUTION COMPLETE` when done.
136
+ """, subagent_type="design-executor", isolation="worktree")
137
+ ```
138
+
139
+ Wait for all parallel tasks to emit `## EXECUTION COMPLETE`.
140
+
141
+ **Merge worktrees** (preserved from v2.1.0 — do not redesign):
142
+
143
+ ```
144
+ ━━━ Parallel batch complete ━━━
145
+ [✓/⚠/✗] Task 01 — [type]
146
+ [✓/⚠/✗] Task 02 — [type]
147
+
148
+ Merging worktrees...
149
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
150
+ ```
151
+
152
+ Merge each worktree branch back into the working directory. Each agent touched non-overlapping files (guaranteed by the conflict check on `Touches:` fields). If an unexpected merge conflict appears, flag it and ask the user to resolve before continuing.
153
+
154
+ Update STATE.md `task_progress` after merge.
155
+
156
+ ### Sequential tail (Parallel: false tasks, or all tasks if `parallel_mode=false`)
157
+
158
+ Announce each wave before starting:
159
+
160
+ ```
161
+ ━━━ Wave [N] — [N tasks] — sequential ━━━
162
+ Tasks:
163
+ [01] [type]: [scope]
164
+ [02] [type]: [scope]
165
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
166
+ ```
167
+
168
+ Run one at a time. Same `Task("design-executor", ...)` pattern with `is_parallel: false` (no worktree isolation):
169
+
170
+ ```
171
+ Task("design-executor", """
172
+ <required_reading>
173
+ @.design/STATE.md
174
+ @.design/DESIGN-PLAN.md
175
+ @.design/DESIGN-CONTEXT.md
176
+ @reference/[type-relevant].md
177
+ </required_reading>
178
+
179
+ You are the design-executor agent. Execute Task NN from DESIGN-PLAN.md.
180
+
181
+ Prompt context:
182
+ task_id: NN
183
+ task_type: [type]
184
+ task_scope: [scope]
185
+ task_acceptance_criteria:
186
+ - [criterion 1]
187
+ - [criterion 2]
188
+ wave: N
189
+ is_parallel: false
190
+ auto_mode: [true|false]
191
+
192
+ Write .design/tasks/task-NN.md and make an atomic commit `feat(design-NN): [type] — [scope]`.
193
+
194
+ Emit `## EXECUTION COMPLETE` when done.
195
+ """, subagent_type="design-executor")
196
+ ```
197
+
198
+ Update STATE.md `task_progress` after each task completes.
199
+
200
+ ---
201
+
202
+ ## Step 3 — Wave Checkpoint
203
+
204
+ After each wave (unless `--auto` flag was passed):
205
+
206
+ ```
207
+ ━━━ Wave [N] complete ━━━
208
+ ✓ [N] tasks complete
209
+ ⚠ [N] deviations (see .design/tasks/ files)
210
+
211
+ Ready for Wave [N+1]? (yes / review first)
212
+ ━━━━━━━━━━━━━━━━━━━━━━━
213
+ ```
214
+
215
+ Skip checkpoint if `auto_mode=true`.
216
+
217
+ ---
218
+
219
+ ## Step 4 — Handle Deviations
220
+
221
+ After each wave, check task-NN.md files for `status: deviation`. If any found:
222
+
223
+ - Present affected task IDs and their blocker descriptions (from `.design/STATE.md <blockers>`)
224
+ - Offer: (a) stop stage, (b) continue remaining tasks
225
+ - In `auto_mode`: continue automatically, log all deviations
226
+
227
+ ---
228
+
229
+ ## State Update (exit)
230
+
231
+ 1. Set `<position> status: completed`, `stage: design`.
232
+ 2. Set `<timestamps> design_completed_at: [now ISO 8601]`.
233
+ 3. Write STATE.md.
234
+
235
+ ---
236
+
237
+ ## After Completion
238
+
239
+ Print summary:
240
+
241
+ ```
242
+ ━━━ Design stage complete ━━━
243
+ Tasks: [N] complete / [M] total
244
+ Deviations: [N]
245
+ Commits: [git log --oneline since stage start]
246
+
247
+ Next: /get-design-done:verify
248
+ → Scores the result against baseline, checks must-haves,
249
+ runs NNG heuristic evaluation, and identifies gaps.
250
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
251
+ ```
252
+
253
+ ---
254
+
255
+ ### Figma Write Dispatch (after design-executor completes)
256
+
257
+ After design-executor has finished and DESIGN-PLAN.md tasks are complete:
258
+
259
+ 1. Read `figma_writer:` status from `.design/STATE.md` `<connections>`:
260
+ - If `figma_writer: not_configured` or absent → skip this block entirely (no prompt, no output)
261
+ - If `figma_writer: available` → proceed to step 2
262
+
263
+ 2. Offer the user a prompt:
264
+ ```
265
+ figma-writer is available — propagate design decisions back to Figma?
266
+ Modes: annotate (layer comments) | tokenize (variable bindings) | mappings (Code Connect)
267
+ Run figma-write? (y/N):
268
+ ```
269
+
270
+ 3. If user answers "y" or "yes":
271
+ - Ask which mode: annotate / tokenize / mappings (or all)
272
+ - Spawn `design-figma-writer` agent with the selected mode
273
+ - Pass `--dry-run` flag if user requests preview first
274
+
275
+ 4. If user answers "n", "N", or no response: skip silently.
276
+
277
+ Note: This dispatch is always opt-in. The design stage never auto-runs figma-writer without user confirmation.
278
+
279
+ ---
280
+
281
+ ## DESIGN COMPLETE
@@ -0,0 +1,172 @@
1
+ ---
2
+ name: discover
3
+ description: "Stage 1.5 of 4 — thin orchestrator that spawns design-context-builder (auto-detect + interview) and design-context-checker (6-dimension validator) to produce DESIGN-CONTEXT.md."
4
+ argument-hint: "[--auto]"
5
+ user-invocable: true
6
+ ---
7
+
8
+ # Get Design Done — Discover
9
+
10
+ **Stage 1.5 of 4.** Produces `.design/DESIGN-CONTEXT.md`.
11
+
12
+ ---
13
+
14
+ ## State Integration
15
+
16
+ 1. Read `.design/STATE.md`.
17
+ - If missing: create minimal skeleton from `reference/STATE-TEMPLATE.md` with stage=discover, status=in_progress, task_progress=0/1, and log warning: "STATE.md not found — created fresh. If this is a resumed session, run /get-design-done:scan first."
18
+ - If present and stage==discover and status==in_progress: RESUME — continue existing interview; do not reset.
19
+ - Otherwise: normal transition — set frontmatter stage=discover, <position> stage=discover, status=in_progress, task_progress=0/1.
20
+ 2. **Probe connection availability** — ToolSearch runs FIRST because MCP tools may be in the deferred tool set. This is the canonical probe pattern (spec lives in `connections/connections.md`; copied inline because SKILL.md has no include mechanism — if the probe pattern changes, update all stages that copied it).
21
+
22
+ **A — Figma probe:**
23
+
24
+ ```
25
+ A1. ToolSearch({ query: "select:mcp__figma-desktop__get_metadata", max_results: 1 })
26
+ A2. Empty result → figma: not_configured (skip all Figma paths)
27
+ Non-empty result → call mcp__figma-desktop__get_metadata
28
+ Success → figma: available
29
+ Error → figma: unavailable
30
+ ```
31
+
32
+ **B — Refero probe (ToolSearch presence is sufficient — no tool call needed):**
33
+
34
+ ```
35
+ B1. ToolSearch({ query: "refero", max_results: 5 })
36
+ B2. Empty result → refero: not_configured
37
+ Non-empty → refero: available
38
+ ```
39
+
40
+ **C — Pinterest probe (ToolSearch-only, same pattern as Refero):**
41
+
42
+ ```
43
+ C1. ToolSearch({ query: "mcp-pinterest", max_results: 5 })
44
+ C2. Empty result → pinterest: not_configured
45
+ Non-empty → pinterest: available
46
+ ```
47
+
48
+ No live `pinterest_search` call at probe time — ToolSearch presence is sufficient. The synthesizer makes the actual search calls.
49
+
50
+ After all probes (A, B, C), update `.design/STATE.md` `<connections>` with the results and continue. Downstream stages (design-context-builder) read `<connections>` from STATE.md rather than re-probing.
51
+ 3. Update last_checkpoint. Write STATE.md.
52
+
53
+ ## Auto Mode
54
+
55
+ Auto Mode CSS detection (when `auto_mode: true` is passed to the builder):
56
+ 1. If tailwind.config.{js,cjs,mjs,ts} exists → Tailwind-only project
57
+ - Skip CSS file grep
58
+ - Parse tailwind.config for color palette, spacing scale, font families
59
+ - Use tailwind.config values as the baseline style signal
60
+ 2. Else → fall through to existing CSS file grep logic
61
+
62
+ ## Step 1 — Spawn design-context-builder
63
+
64
+ Task("design-context-builder", """
65
+ <required_reading>
66
+ @.design/STATE.md
67
+ @reference/audit-scoring.md
68
+ @reference/anti-patterns.md
69
+ </required_reading>
70
+
71
+ You are the design-context-builder agent. Auto-detect existing design system
72
+ state via grep/glob before asking questions. Interview the user ONLY for areas
73
+ where auto-detect returned no confident answer. Write .design/DESIGN-CONTEXT.md.
74
+
75
+ Baseline audit directory detection (ordered fallback chain):
76
+ 1. If src/ exists → use src/
77
+ 2. Elif app/ exists → use app/ (Next.js App Router)
78
+ 3. Elif pages/ exists → use pages/ (Next.js Pages Router)
79
+ 4. Elif lib/ exists → use lib/ (library-only projects)
80
+ 5. Else → flag "layout unknown", skip baseline, note in DESIGN-CONTEXT.md
81
+
82
+ Common gray areas to probe during discovery (Area 7):
83
+ 1. font-change risk — switching type families when existing UI has body copy in a specific family. Ask: "Is the current body font intentional or inherited? OK to change?"
84
+ 2. token-layer introduction risk — adding CSS custom properties to a codebase that uses direct values. Ask: "Do you want design tokens (--primary, --surface) or inline values (hex, rgb)?"
85
+ 3. Component rebuild vs restyle — when to keep existing component, when to rebuild from scratch. Ask: "For <component>, restyle in place or rebuild?"
86
+
87
+ Context:
88
+ auto_mode: <true|false>
89
+
90
+ Output file: .design/DESIGN-CONTEXT.md
91
+ Emit `## CONTEXT COMPLETE` when done.
92
+ """)
93
+
94
+ Wait for `## CONTEXT COMPLETE`. Update STATE.md task_progress = 0.5.
95
+
96
+ ## Step 1.75 — Lazy gate: should design-context-checker run? (Plan 10.1-04, D-21)
97
+
98
+ Spawn the cheap Haiku gate before the full context-checker:
99
+
100
+ Task("design-context-checker-gate", """
101
+ <required_reading>
102
+ @.design/STATE.md
103
+ </required_reading>
104
+
105
+ You are the design-context-checker-gate.
106
+
107
+ Context:
108
+ diff_files: <git diff --name-only HEAD~1..HEAD>
109
+ diff_body: (not needed — single-file heuristic)
110
+ baseline_sha: <HEAD~1>
111
+
112
+ Apply the heuristic (DESIGN-CONTEXT.md in diff_files?). Emit JSON + `## GATE COMPLETE`.
113
+ """)
114
+
115
+ Wait for `## GATE COMPLETE`. Parse JSON:
116
+
117
+ - `spawn: false` → append `lazy_skipped: true` telemetry row for `design-context-checker`, skip Step 2, set STATE.md `<position>` as if checker passed (rationale: DESIGN-CONTEXT.md didn't change, last validation still holds), emit `design-context-checker skipped — <rationale>`.
118
+ - `spawn: true` → proceed to Step 2 as currently written.
119
+
120
+ **Note:** On first-run discover, the builder just wrote DESIGN-CONTEXT.md so the gate returns `spawn: true`. The gate meaningfully short-circuits only on re-runs where the builder made no changes.
121
+
122
+ **Parallel synthesizer note:** discover does not spawn parallel researchers in v1, so `skills/synthesize/` is not wired here. If future variants spawn N parallel interviewers/auto-detectors, wire synthesize between dispatch and collate as in `skills/map/` Step 3.5.
123
+
124
+ ## Step 2 — Spawn design-context-checker
125
+
126
+ Task("design-context-checker", """
127
+ <required_reading>
128
+ @.design/STATE.md
129
+ @.design/DESIGN-CONTEXT.md
130
+ </required_reading>
131
+
132
+ You are the design-context-checker agent. Validate DESIGN-CONTEXT.md across
133
+ 6 dimensions. Return APPROVED or BLOCKED with per-dimension verdicts.
134
+
135
+ Emit `## CONTEXT CHECK COMPLETE` when done.
136
+ """)
137
+
138
+ Wait for `## CONTEXT CHECK COMPLETE`.
139
+
140
+ ## Step 3 — Handle checker verdict
141
+
142
+ If APPROVED: proceed to state update.
143
+ If BLOCKED: present dimensions that BLOCKED to user, offer fix-and-retry loop
144
+ (re-spawn builder with specific fix instructions). Do not proceed to planning.
145
+
146
+ ---
147
+
148
+ ## State Update (exit)
149
+
150
+ 1. Set <position> status=completed, task_progress=1/1.
151
+ 2. Set <timestamps> discover_completed_at=<ISO 8601 now>.
152
+ 3. Update last_checkpoint. Write STATE.md.
153
+
154
+ ---
155
+
156
+ ## After Writing
157
+
158
+ ```
159
+ ━━━ Discovery complete ━━━
160
+ Saved: .design/DESIGN-CONTEXT.md
161
+
162
+ Baseline score: [N]/100 ([grade])
163
+ Key issues: [top issue 1], [top issue 2], [top issue 3]
164
+
165
+ Next: /get-design-done:plan
166
+ → Decomposes your context into executable design tasks.
167
+ ━━━━━━━━━━━━━━━━━━━━━━━━━
168
+ ```
169
+
170
+ Do not proceed to planning automatically unless `--auto` was passed.
171
+
172
+ ## DISCOVER COMPLETE
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: gdd-discuss
3
+ description: "Adaptive design interview — spawns design-discussant to gather decisions via one-question-at-a-time questioning. Writes D-XX decisions to STATE.md <decisions> block."
4
+ argument-hint: "[topic] [--all] [--spec] [--cycle <name>]"
5
+ tools: Read, Write, Task
6
+ ---
7
+
8
+ # /gdd:discuss
9
+
10
+ **Role:** You are the `/gdd:discuss` command. You spawn the `design-discussant` agent with the right mode and context.
11
+
12
+ ## Step 1 — Read state
13
+
14
+ Read `.design/STATE.md`. Note:
15
+ - Current `cycle:` frontmatter value
16
+ - Highest existing `D-XX` number under `<decisions>`
17
+
18
+ If `.design/STATE.md` does not exist, tell the user to run `/gdd:brief` first and stop.
19
+
20
+ ## Step 2 — Parse arguments
21
+
22
+ Inspect `$ARGUMENTS`:
23
+ - Free-text before flags → `<topic>`
24
+ - `--all` → batch gray-areas mode
25
+ - `--spec` → Socratic ambiguity scoring mode
26
+ - `--cycle <name>` → scope decisions to that cycle
27
+
28
+ ## Step 3 — Spawn design-discussant
29
+
30
+ ```
31
+ Task("design-discussant", """
32
+ <required_reading>
33
+ @.design/STATE.md
34
+ @.design/BRIEF.md
35
+ @.design/DESIGN-CONTEXT.md
36
+ @./.claude/skills
37
+ </required_reading>
38
+
39
+ <mode>{normal|--all|--spec}</mode>
40
+ <topic>{topic or omit}</topic>
41
+ <cycle>{cycle-name or omit}</cycle>
42
+
43
+ Run an adaptive design interview. Append D-XX decisions to STATE.md <decisions> block.
44
+ Emit `## DISCUSS COMPLETE` when done.
45
+ """)
46
+ ```
47
+
48
+ Use only the modes the user actually passed. Missing flags → `<mode>normal</mode>`.
49
+
50
+ ## Step 4 — Report
51
+
52
+ Wait for `## DISCUSS COMPLETE`. Re-read STATE.md. Count new D-XX entries since Step 1. Print:
53
+
54
+ ```
55
+ ━━━ Discuss complete ━━━
56
+ New decisions: N (D-XX through D-YY)
57
+ Mode: normal | --all | --spec
58
+ Cycle: <name or "default">
59
+ ━━━━━━━━━━━━━━━━━━━━━━━━
60
+ ```
61
+
62
+ ## Constraints
63
+
64
+ - Do not run the interview yourself — always spawn the agent.
65
+ - Do not touch files outside `.design/`.
66
+
67
+ ## DISCUSS COMMAND COMPLETE
@@ -0,0 +1,45 @@
1
+ ---
2
+ name: gdd-do
3
+ description: "Natural-language design task router. Parses your intent, maps to the right gdd command(s), confirms before executing."
4
+ argument-hint: "<natural language description>"
5
+ tools: Read, Write, AskUserQuestion
6
+ ---
7
+
8
+ # /gdd:do
9
+
10
+ Takes a free-form description, maps it to a `/gdd:*` command, confirms with the user, then routes.
11
+
12
+ ## Intent parsing table
13
+
14
+ | Intent signals | Maps to |
15
+ |---|---|
16
+ | "explore", "scan", "what design patterns", "what components" | `/gdd:explore` |
17
+ | "discuss", "decide", "what should we use for", "help me decide" | `/gdd:discuss` |
18
+ | "plan", "create tasks", "what tasks do we need" | `@get-design-done plan` |
19
+ | "design", "implement", "build", "execute" | `@get-design-done design` |
20
+ | "verify", "check", "audit", "review" | `/gdd:audit` |
21
+ | "sketch", "explore directions", "try designs", "variant" | `/gdd:sketch` |
22
+ | "spike", "experiment", "feasibility", "test if" | `/gdd:spike` |
23
+ | "fix [specific thing]" | `/gdd:fast` |
24
+ | "pause", "stop", "save my place" | `/gdd:pause` |
25
+ | "resume", "pick back up", "continue where I left off" | `/gdd:resume` |
26
+ | "ship", "PR", "submit", "merge" | `/gdd:ship` |
27
+ | "undo", "revert", "roll back" | `/gdd:undo` |
28
+
29
+ ## Steps
30
+
31
+ 1. Parse the argument text. Match it against the intent signals table. Choose the best fit.
32
+ 2. If two intents tie, ask (AskUserQuestion): "Did you mean <option A> or <option B>?"
33
+ 3. Print the routing decision in this exact shape:
34
+ ```
35
+ I'll run `/gdd:<command>` — "<one-line rationale>". Confirm? (yes/no)
36
+ ```
37
+ 4. On confirmation: invoke the target skill with any parameters extracted from the input (e.g., topic for `discuss`, symptom for `debug`).
38
+ 5. On rejection: ask "What did you mean instead?" and retry once, then abort gracefully.
39
+
40
+ ## Do Not
41
+
42
+ - Do not execute the target command without confirmation.
43
+ - Do not invent new commands — if no intent matches, say so and list the closest options.
44
+
45
+ ## DO COMPLETE