@hegemonart/get-design-done 1.28.0 → 1.28.6

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 (98) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +134 -0
  4. package/SKILL.md +1 -1
  5. package/hooks/gdd-decision-injector.js +149 -3
  6. package/package.json +1 -1
  7. package/reference/adr-format.md +96 -0
  8. package/reference/architecture-vocabulary.md +102 -0
  9. package/reference/context-md-format.md +106 -0
  10. package/reference/heuristics.md +84 -0
  11. package/reference/registry.json +29 -1
  12. package/reference/registry.schema.json +1 -1
  13. package/reference/shared-preamble.md +78 -6
  14. package/reference/skill-authoring-contract.md +159 -0
  15. package/scripts/validate-skill-length.cjs +283 -0
  16. package/skills/add-backlog/SKILL.md +1 -0
  17. package/skills/analyze-dependencies/SKILL.md +33 -122
  18. package/skills/apply-reflections/SKILL.md +1 -40
  19. package/skills/apply-reflections/apply-reflections-procedure.md +68 -0
  20. package/skills/audit/SKILL.md +3 -1
  21. package/skills/bandit-status/SKILL.md +31 -66
  22. package/skills/benchmark/SKILL.md +15 -55
  23. package/skills/brief/SKILL.md +12 -1
  24. package/skills/cache-manager/SKILL.md +3 -57
  25. package/skills/cache-manager/cache-policy.md +126 -0
  26. package/skills/check-update/SKILL.md +38 -75
  27. package/skills/compare/SKILL.md +29 -269
  28. package/skills/compare/compare-rubric.md +171 -0
  29. package/skills/complete-cycle/SKILL.md +1 -1
  30. package/skills/connections/SKILL.md +21 -427
  31. package/skills/connections/connections-onboarding.md +417 -0
  32. package/skills/continue/SKILL.md +1 -0
  33. package/skills/darkmode/SKILL.md +32 -287
  34. package/skills/darkmode/darkmode-audit-procedure.md +258 -0
  35. package/skills/debug/SKILL.md +11 -8
  36. package/skills/debug/debug-feedback-loops.md +119 -0
  37. package/skills/design/SKILL.md +27 -245
  38. package/skills/design/design-procedure.md +304 -0
  39. package/skills/discover/SKILL.md +26 -133
  40. package/skills/discover/discover-procedure.md +204 -0
  41. package/skills/discuss/SKILL.md +18 -2
  42. package/skills/explore/SKILL.md +40 -205
  43. package/skills/explore/explore-procedure.md +267 -0
  44. package/skills/fast/SKILL.md +1 -0
  45. package/skills/figma-write/SKILL.md +2 -2
  46. package/skills/health/SKILL.md +11 -33
  47. package/skills/health/health-mcp-detection.md +44 -0
  48. package/skills/health/health-skill-length-report.md +69 -0
  49. package/skills/help/SKILL.md +1 -0
  50. package/skills/list-assumptions/SKILL.md +1 -0
  51. package/skills/map/SKILL.md +8 -31
  52. package/skills/new-cycle/SKILL.md +3 -1
  53. package/skills/new-cycle/milestone-completeness-rubric.md +87 -0
  54. package/skills/next/SKILL.md +1 -0
  55. package/skills/note/SKILL.md +1 -0
  56. package/skills/optimize/SKILL.md +21 -44
  57. package/skills/pause/SKILL.md +1 -0
  58. package/skills/peer-cli-add/SKILL.md +26 -108
  59. package/skills/peer-cli-add/peer-cli-protocol.md +161 -0
  60. package/skills/peer-cli-customize/SKILL.md +22 -42
  61. package/skills/peers/SKILL.md +33 -57
  62. package/skills/plan/SKILL.md +33 -220
  63. package/skills/plan/plan-procedure.md +278 -0
  64. package/skills/plant-seed/SKILL.md +1 -0
  65. package/skills/pr-branch/SKILL.md +1 -0
  66. package/skills/progress/SKILL.md +1 -7
  67. package/skills/quality-gate/SKILL.md +34 -166
  68. package/skills/quality-gate/threat-modeling.md +101 -0
  69. package/skills/quick/SKILL.md +1 -0
  70. package/skills/reapply-patches/SKILL.md +1 -0
  71. package/skills/recall/SKILL.md +1 -0
  72. package/skills/resume/SKILL.md +1 -0
  73. package/skills/review-backlog/SKILL.md +1 -0
  74. package/skills/router/SKILL.md +3 -59
  75. package/skills/router/router-rules.md +84 -0
  76. package/skills/scan/SKILL.md +36 -675
  77. package/skills/scan/scan-procedure.md +731 -0
  78. package/skills/settings/SKILL.md +1 -0
  79. package/skills/ship/SKILL.md +1 -0
  80. package/skills/sketch/SKILL.md +1 -1
  81. package/skills/sketch-wrap-up/SKILL.md +13 -54
  82. package/skills/spike/SKILL.md +1 -1
  83. package/skills/spike-wrap-up/SKILL.md +12 -46
  84. package/skills/start/SKILL.md +13 -112
  85. package/skills/start/start-procedure.md +115 -0
  86. package/skills/stats/SKILL.md +1 -0
  87. package/skills/style/SKILL.md +18 -140
  88. package/skills/style/style-doc-procedure.md +150 -0
  89. package/skills/synthesize/SKILL.md +1 -0
  90. package/skills/timeline/SKILL.md +1 -0
  91. package/skills/todo/SKILL.md +1 -0
  92. package/skills/turn-closeout/SKILL.md +36 -56
  93. package/skills/undo/SKILL.md +1 -0
  94. package/skills/update/SKILL.md +1 -0
  95. package/skills/verify/SKILL.md +42 -457
  96. package/skills/verify/verify-procedure.md +512 -0
  97. package/skills/warm-cache/SKILL.md +3 -35
  98. package/skills/zoom-out/SKILL.md +26 -0
@@ -3,6 +3,7 @@ name: gdd-settings
3
3
  description: "Manage .design/config.json settings. Subcommands: profile, parallelism, cleanup, show."
4
4
  argument-hint: "<profile <name>|parallelism <key> <value>|cleanup|show>"
5
5
  tools: Read, Write, AskUserQuestion, Bash, mcp__gdd_state__get, mcp__gdd_state__frontmatter_update
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  # gdd-settings
@@ -3,6 +3,7 @@ name: gdd-ship
3
3
  description: "Post-verify PR flow — creates a clean PR branch, invokes code review check, and prepares the PR for merge."
4
4
  argument-hint: "[--title <PR title>] [--draft]"
5
5
  tools: Read, Write, Bash, AskUserQuestion, Task
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  # /gdd:ship
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: gdd-sketch
3
- description: "Multi-variant HTML design exploration. Creates .design/sketches/<slug>/ with N standalone variants. Browser-openable directly no build step."
3
+ description: "Multi-variant HTML design exploration that creates .design/sketches/<slug>/ with N standalone variants (default 3), browser-openable directly via file:// without a build step. Use when answering 'what could this look like?' before committing to a direction."
4
4
  argument-hint: "[topic] [--variants N] [--quick]"
5
5
  tools: Read, Write, AskUserQuestion, Bash
6
6
  ---
@@ -7,32 +7,33 @@ tools: Read, Write, Glob, AskUserQuestion
7
7
 
8
8
  # Get Design Done — Sketch Wrap-Up
9
9
 
10
- **Role:** Close an open sketch — elicit the winner + rationale from the user, group the decision by design area, and codify it as a project-local skill at `./.claude/skills/design-<area>-conventions.md` so future gdd sessions auto-load the decision.
10
+ **Role:** Close an open sketch — elicit the winner + rationale from the user, group the decision by design area, and codify it as a project-local skill at `./.claude/skills/design-<area>-conventions.md` so future gdd sessions auto-load the decision. See `./reference/cycle-handoff-preamble.md` for the cycle-handoff framing this decision-archive feeds into.
11
11
 
12
12
  ## Step 1 — Find sketches
13
13
 
14
14
  - Glob `.design/sketches/*/`.
15
15
  - If `[slug]` provided → use it directly.
16
16
  - If multiple pending (no `WINNER.md`) → AskUserQuestion: "Which sketch are you wrapping up?"
17
- - If none → print: "No open sketches. Run `/gdd:sketch` first." and exit.
17
+ - If none → print `No open sketches. Run /gdd:sketch first.` and exit.
18
18
 
19
19
  ## Step 2 — Walk variants
20
20
 
21
21
  Read the sketch's `README.md`. For each `variant-N.html`:
22
+
22
23
  - Show the variant's one-line description from README.
23
24
  - AskUserQuestion: "Is variant-N a keeper, maybe, or rejected?"
24
25
 
25
26
  ## Step 3 — Elicit winner rationale
26
27
 
27
- AskUserQuestion:
28
+ AskUserQuestion in sequence:
29
+
28
30
  1. "Which variant is the winner?"
29
31
  2. "What makes variant-N the winning direction? (grounds the decision for future sessions)"
30
32
  3. "Any token implications? (e.g., spacing scale clamp, color adjustment, font-weight shift)"
31
33
 
32
34
  ## Step 4 — Group by design area
33
35
 
34
- AskUserQuestion: "Which design area does this winner inform?"
35
- Options: typography / color / layout / motion / component / interaction
36
+ AskUserQuestion: "Which design area does this winner inform?" Options: `typography / color / layout / motion / component / interaction`.
36
37
 
37
38
  ## Step 5 — Write project skill
38
39
 
@@ -51,64 +52,22 @@ Auto-loaded in gdd sessions. Captures decisions codified from `/gdd:sketch-wrap-
51
52
 
52
53
  ## Step 6 — Write WINNER.md
53
54
 
54
- Write `.design/sketches/<slug>/WINNER.md`:
55
- ```markdown
56
- # Winner: variant-N
57
-
58
- **Slug**: <slug>
59
- **Area**: <area>
60
- **Rationale**: <user rationale>
61
- **Captured**: YYYY-MM-DD
62
- **Project skill written to**: ./.claude/skills/design-<area>-conventions.md
63
- ```
55
+ Write `.design/sketches/<slug>/WINNER.md` with: `# Winner: variant-N`, then bold-prefixed fields **Slug**, **Area**, **Rationale**, **Captured** (YYYY-MM-DD), **Project skill written to** (path from Step 5).
64
56
 
65
57
  ## Step 7 — Append D-XX + `<prototyping>` outcome to STATE.md
66
58
 
67
- Two coupled writes to `.design/STATE.md`. Both must succeed together so the
68
- sketch resolution is discoverable from both `<decisions>` (read by all
69
- downstream stages) and `<prototyping>` (read by planner-specific context via
70
- the decision-injector).
71
-
72
- Compute `D-XX` as the highest existing `D-NN` in `<decisions>` plus 1
73
- (scan `<decisions>` for `D-\d+:` entries and take `max + 1`, zero-padded
74
- to two digits — e.g. existing `D-07` → new entry is `D-08`). Use the same
75
- `D-XX` value in both writes below.
59
+ Two coupled writes both must succeed so the sketch resolution surfaces in both `<decisions>` (all downstream stages) and `<prototyping>` (planner-specific context via decision-injector). Compute `D-XX` as max existing `D-NN` + 1 (scan `<decisions>` for `D-\d+:`, zero-pad to 2 digits).
76
60
 
77
- **Write 1 — append a numbered decision under `<decisions>`:**
78
- ```
79
- D-XX: sketch/<slug> — winner: variant-N — <one-line rationale> (locked)
80
- Source: .design/sketches/<slug>/WINNER.md
81
- ```
61
+ - **Write 1 (`<decisions>`):** `D-XX: sketch/<slug> winner: variant-N <rationale> (locked)\n Source: .design/sketches/<slug>/WINNER.md`
62
+ - **Write 2 (`<prototyping>`):** `<sketch slug="<slug>" cycle="<cycle>" decision="D-XX" status="resolved"/>`. `<cycle>` from STATE.md frontmatter; empty string valid for single-cycle Wave A projects. If `<prototyping>` block does not exist, materialize between `<must_haves>` and `<connections>` per STATE template; append the `<sketch …/>` as first child.
82
63
 
83
- **Write 2 append a `<sketch>` child element under `<prototyping>`:**
84
- ```
85
- <sketch slug="<slug>" cycle="<cycle>" decision="D-XX" status="resolved"/>
86
- ```
64
+ Prefer MCP `gdd_state` typed mutators (byte-identical output): `mcp__gdd_state__add_decision({id, text, status})` + `mcp__gdd_state__add_prototyping({type:"sketch", slug, cycle, decision, status})`. Without MCP, edit `.design/STATE.md` directly via Read + Write.
87
65
 
88
- `<cycle>` is the current cycle id from `.design/STATE.md` frontmatter
89
- (`cycle:` field; empty string is valid for Wave A single-cycle projects).
66
+ ## Step 8 Update sketches SUMMARY.md
90
67
 
91
- If a `<prototyping>` block does not yet exist in STATE.md, materialize it
92
- between `<must_haves>` and `<connections>` per the STATE template, then
93
- append the `<sketch …/>` line as its first child. The block is omitted on
94
- fresh files and only appears once the first sketch / spike / skipped entry
95
- lands.
68
+ Append to `.design/sketches/SUMMARY.md` (create if missing):
96
69
 
97
- If MCP `gdd_state` tools are available, prefer the typed mutators (these
98
- wrap `scripts/lib/gdd-state/mutator.ts` and emit byte-identical output to
99
- manual edits):
100
70
  ```
101
- - mcp__gdd_state__add_decision({id: "D-XX", text: "sketch/<slug> — winner: variant-N — <rationale>", status: "locked"})
102
- - mcp__gdd_state__add_prototyping({type: "sketch", slug: "<slug>", cycle: "<cycle>", decision: "D-XX", status: "resolved"})
103
- ```
104
-
105
- Without MCP, edit `.design/STATE.md` directly with `Read` + `Write`,
106
- inserting the two lines into the correct blocks.
107
-
108
- ## Step 8 — Update sketches SUMMARY.md
109
-
110
- Append entry to `.design/sketches/SUMMARY.md` (create if missing):
111
- ```markdown
112
71
  - <slug> (YYYY-MM-DD) — winner: variant-N — area: <area> — D-XX — <one-line rationale>
113
72
  ```
114
73
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: gdd-spike
3
- description: "Timeboxed feasibility experiment. Answers 'can this work?' questions. Creates .design/spikes/<slug>/ with hypothesis, timebox, scratch code, findings."
3
+ description: "Timeboxed feasibility experiment that creates .design/spikes/<slug>/ with HYPOTHESIS.md, success/failure criteria, scratch/ subdirectory, and a default 60-minute timebox. Use when answering 'can this work?' before betting design or implementation effort on a risky approach."
4
4
  argument-hint: "[hypothesis] [--timebox <minutes>]"
5
5
  tools: Read, Write, Bash, AskUserQuestion
6
6
  ---
@@ -7,14 +7,14 @@ tools: Read, Write, Glob, AskUserQuestion
7
7
 
8
8
  # Get Design Done — Spike Wrap-Up
9
9
 
10
- **Role:** Close an open spike — capture the verdict, write findings, record a D-XX decision in STATE.md so `plan` sees it when creating tasks.
10
+ **Role:** Close an open spike — capture the verdict, write findings, record a D-XX decision in STATE.md so `plan` sees it when creating tasks. See `./reference/cycle-handoff-preamble.md` for the cycle-handoff framing this archive feeds into.
11
11
 
12
12
  ## Step 1 — Find spike
13
13
 
14
14
  - Glob `.design/spikes/*/`.
15
15
  - If `[slug]` provided → use it directly.
16
16
  - If multiple pending (no `FINDINGS.md`) → AskUserQuestion: "Which spike are you wrapping up?"
17
- - If none → print: "No open spikes. Run `/gdd:spike` first." and exit.
17
+ - If none → print `No open spikes. Run /gdd:spike first.` and exit.
18
18
 
19
19
  ## Step 2 — Re-surface hypothesis
20
20
 
@@ -22,7 +22,8 @@ Read `.design/spikes/<slug>/HYPOTHESIS.md`. Show the hypothesis + success/failur
22
22
 
23
23
  ## Step 3 — Elicit findings
24
24
 
25
- AskUserQuestion:
25
+ AskUserQuestion in sequence:
26
+
26
27
  1. "Did it meet success criteria? (yes / no / partial)"
27
28
  2. "What was learned? (1–3 sentences)"
28
29
  3. "Recommendation? (adopt / reject / needs more investigation)"
@@ -30,6 +31,7 @@ AskUserQuestion:
30
31
  ## Step 4 — Write FINDINGS.md
31
32
 
32
33
  Write `.design/spikes/<slug>/FINDINGS.md`:
34
+
33
35
  ```markdown
34
36
  # Findings: <slug>
35
37
 
@@ -46,57 +48,21 @@ Write `.design/spikes/<slug>/FINDINGS.md`:
46
48
 
47
49
  ## Step 5 — Record decision in STATE.md
48
50
 
49
- Append a `D-XX` entry under `<decisions>` in `.design/STATE.md`:
50
- ```
51
- D-XX: spike/<slug> — <verdict> — <recommendation>
52
- Rationale: <one line>
53
- Source: .design/spikes/<slug>/FINDINGS.md
54
- ```
55
-
56
- (Increment D-XX from the highest existing number — scan `<decisions>` for
57
- `D-\d+:` entries and take `max + 1`, zero-padded to two digits.)
58
-
59
- If MCP `gdd_state` tools are available, prefer the typed mutator:
60
- ```
61
- - mcp__gdd_state__add_decision({id: "D-XX", text: "spike/<slug> — <verdict> — <recommendation> — <one-line rationale>", status: "locked"})
62
- ```
51
+ Append under `<decisions>`: `D-XX: spike/<slug> <verdict> <recommendation>\n Rationale: <one line>\n Source: .design/spikes/<slug>/FINDINGS.md`. Compute `D-XX` as max existing `D-NN` + 1 (scan for `D-\d+:`, zero-pad to 2 digits). Prefer MCP `gdd_state` typed mutator when available: `mcp__gdd_state__add_decision({id, text, status:"locked"})`.
63
52
 
64
53
  ## Step 6 — Append `<prototyping>` outcome to STATE.md
65
54
 
66
- Coupled with the Step 5 decision write — both must succeed together so the
67
- spike resolution is discoverable from both `<decisions>` (read by all
68
- downstream stages) and `<prototyping>` (read by planner-specific context via
69
- the decision-injector). Use the **same `D-XX`** as Step 5.
70
-
71
- Append a `<spike>` child element under `<prototyping>` in `.design/STATE.md`:
72
- ```
73
- <spike slug="<slug>" cycle="<cycle>" decision="D-XX" verdict="yes|no|partial" status="resolved"/>
74
- ```
75
-
76
- `<cycle>` is the current cycle id from `.design/STATE.md` frontmatter
77
- (`cycle:` field; empty string is valid for Wave A single-cycle projects).
78
- `verdict` is the answer from Step 3 (`yes` / `no` / `partial`).
55
+ Coupled with Step 5 — both must succeed so the spike resolution surfaces in `<decisions>` (downstream stages) and `<prototyping>` (planner via decision-injector). Use **same `D-XX`**. Append under `<prototyping>`: `<spike slug="<slug>" cycle="<cycle>" decision="D-XX" verdict="yes|no|partial" status="resolved"/>`. `<cycle>` from STATE.md frontmatter (`cycle:` field; empty string valid for single-cycle Wave A); `verdict` from Step 3.
79
56
 
80
- If a `<prototyping>` block does not yet exist in STATE.md, materialize it
81
- between `<must_haves>` and `<connections>` per the STATE template, then
82
- append the `<spike …/>` line as its first child. The block is omitted on
83
- fresh files and only appears once the first sketch / spike / skipped entry
84
- lands.
57
+ If `<prototyping>` block does not exist, materialize between `<must_haves>` and `<connections>` per STATE template; append `<spike …/>` as first child.
85
58
 
86
- If MCP `gdd_state` tools are available, prefer the typed mutator (it wraps
87
- `scripts/lib/gdd-state/mutator.ts` and emits byte-identical output to manual
88
- edits):
89
- ```
90
- - mcp__gdd_state__add_prototyping({type: "spike", slug: "<slug>", cycle: "<cycle>", decision: "D-XX", verdict: "<verdict>", status: "resolved"})
91
- ```
92
-
93
- Without MCP, edit `.design/STATE.md` directly with `Read` + `Write`,
94
- inserting the line into the `<prototyping>` block.
59
+ Prefer MCP typed mutator (byte-identical output): `mcp__gdd_state__add_prototyping({type:"spike", slug, cycle, decision:"D-XX", verdict, status:"resolved"})`. Without MCP, edit `.design/STATE.md` directly via Read + Write.
95
60
 
96
61
  ## Step 7 — Update spikes SUMMARY.md
97
62
 
98
- Append entry to `.design/spikes/SUMMARY.md` (create if missing):
99
- ```markdown
63
+ Append to `.design/spikes/SUMMARY.md` (create if missing):
64
+
65
+ ```
100
66
  - <slug> (YYYY-MM-DD) — verdict: <yes|no|partial> — recommendation: <adopt|reject|more> — D-XX
101
67
  ```
102
68
 
@@ -3,19 +3,14 @@ name: start
3
3
  description: "First-Run Proof Path — one command that scans your UI code and returns one concrete first fix. Leaf command, no STATE.md writes, no pipeline entry. Writes .design/START-REPORT.md and exits."
4
4
  argument-hint: "[--budget <fast|balanced|thorough>] [--skip-interview] [--dismiss-nudge]"
5
5
  tools: Read, Grep, Glob, Bash, Write, Task
6
+ disable-model-invocation: true
6
7
  ---
7
8
 
8
9
  # Get Design Done — /gdd:start
9
10
 
10
11
  **Role:** the canonical 0→1 proof path. A new user runs `/gdd:start`, answers five short questions, and receives `.design/START-REPORT.md` with three concrete findings in the user's own code, one `best_first_proof` selected by a deterministic rubric, and a single next command to run.
11
12
 
12
- **Non-goals** (do not do any of these):
13
-
14
- - Do NOT write or mutate `.design/STATE.md`.
15
- - Do NOT enter the pipeline state machine.
16
- - Do NOT modify source code.
17
- - Do NOT auto-install MCPs or run `/gdd:connections`.
18
- - Do NOT capture before/after screenshots — that belongs to the full pipeline.
13
+ **Non-goals:** do NOT write/mutate `.design/STATE.md`, enter the pipeline state machine, modify source code, auto-install MCPs or run `/gdd:connections`, or capture before/after screenshots (that belongs to the full pipeline).
19
14
 
20
15
  ---
21
16
 
@@ -44,114 +39,20 @@ tools: Read, Grep, Glob, Bash, Write, Task
44
39
 
45
40
  ---
46
41
 
47
- ## Step 0 — Dismiss-only shortcut
48
-
49
- If invoked with `--dismiss-nudge`:
50
-
51
- 1. `touch ~/.claude/gdd-nudge-dismissed` (Windows: equivalent). Ignore errors silently.
52
- 2. Print exactly: `Nudge dismissed. Delete ~/.claude/gdd-nudge-dismissed to re-enable.`
53
- 3. Exit with `## START COMPLETE` marker.
54
-
55
- Do not proceed to any other step.
56
-
57
- ---
58
-
59
- ## Step 1 — Detect UI root
60
-
61
- Run the detector:
62
-
63
- ```bash
64
- node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/detect-ui-root.cjs" "$(pwd)"
65
- ```
66
-
67
- Capture the JSON output. Branches:
68
-
69
- - `kind: "backend-only"` → print the frontend-only diagnostic below, write nothing, exit with `## START COMPLETE`. The diagnostic copy is:
70
- > `/gdd:start` is for frontend codebases. This repo looks backend-only (detected `<framework>`). The plugin can still help with design references and component libraries imported by your clients — but there is no UI surface here to scan. Exiting without creating `.design/`.
71
- - `kind: null` (no package.json, no UI dir) → print a short "Nothing recognizable here — point me at a frontend repo and try again." and exit.
72
- - Any other `kind` → proceed with `detected.path` as the scan root.
73
-
74
- ---
75
-
76
- ## Step 2 — Run the 5-question interview
77
-
78
- Read `reference/start-interview.md` for the exact question copy, defaults, and validation rules.
79
-
80
- If `--skip-interview`, skip this step and use the defaults documented in that file.
81
-
82
- Otherwise, ask the five questions in order using `AskUserQuestion`:
83
-
84
- 1. Pain point (text, required, single-line cap 120 chars)
85
- 2. Target area confirmation (detected path)
86
- 3. Budget / latency preference (enum: fast / balanced / thorough)
87
- 4. Framework + design-system confirmation (from detection)
88
- 5. Figma / canvas workflow (enum: figma / canvas / neither / skip)
89
-
90
- Any early exit at Q1 → abort with a one-line pointer to `/gdd:scan`.
91
-
92
- Store the answers + detection result in `.design/.start-context.json`:
93
-
94
- ```json
95
- {
96
- "schema_version": "1.0",
97
- "detected": { "kind": "...", "path": "...", "framework": "...", "design_system": "...", "confidence": 0.85 },
98
- "interview": { "pain": "...", "target_area": "...", "budget": "balanced", "framework_confirmed": true, "design_system_confirmed": true, "figma_workflow": "skip" },
99
- "generated_at": "<ISO-8601>"
100
- }
101
- ```
102
-
103
- `.design/` is created here for the first time. `.design/STATE.md` is NOT written.
104
-
105
- ---
106
-
107
- ## Step 3 — Scan findings
108
-
109
- Run the findings engine:
110
-
111
- ```bash
112
- node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/start-findings-engine.cjs" \
113
- --root "<detected.path>" \
114
- --budget "<budget>" \
115
- --pain "<pain_point>"
116
- ```
117
-
118
- Capture the JSON. The output carries at most three findings, each with stable IDs `F1`..`F3`, plus `bestFirstProofId` (may be null).
119
-
120
- Append the engine output to `.design/.start-context.json` under a `scan` key.
121
-
122
- ---
123
-
124
- ## Step 4 — Spawn the writer
125
-
126
- Dispatch `Task` with:
127
-
128
- - `subagent_type: design-start-writer`
129
- - `description: "Write .design/START-REPORT.md"`
130
- - `prompt:` a short instruction pointing the agent at `.design/.start-context.json` and asking it to emit the report per its Output contract. Include a reminder that it must produce exactly 7 H2 sections plus the JSON block, and must not write `STATE.md`.
131
-
132
- Wait for the agent to complete. The agent writes `.design/START-REPORT.md`.
133
-
134
- ---
135
-
136
- ## Step 5 — Print the handoff
137
-
138
- Read the final line of `.design/START-REPORT.md` to capture the suggested command.
42
+ ## Workflow
139
43
 
140
- Print exactly (one line, no emoji):
141
-
142
- ```
143
- Report written to .design/START-REPORT.md. Next: run <suggested_command> to see the first proof.
144
- ```
145
-
146
- If `bestFirstProofId` was null, the suggested command is `/gdd:brief` (the default fallback).
147
-
148
- Emit `## START COMPLETE` and exit.
149
-
150
- ---
44
+ Six steps, all documented in `./start-procedure.md`. Companion file `./reference/start-interview.md` holds the 5-question copy + defaults + validation.
151
45
 
152
- ## Failure handling
46
+ | Step | What it does | Where to look |
47
+ |------|--------------|---------------|
48
+ | 0 | Dismiss-only shortcut (if `--dismiss-nudge`) | `start-procedure.md#step-0-dismiss-only-shortcut` |
49
+ | 1 | Detect UI root via `scripts/lib/detect-ui-root.cjs` (early-exit on backend-only or `kind: null`) | `start-procedure.md#step-1-detect-ui-root` |
50
+ | 2 | Run 5-question interview (or use `--skip-interview` defaults); write `.design/.start-context.json` (NOT STATE.md) | `start-procedure.md#step-2-run-the-5-question-interview` + `start-interview.md` |
51
+ | 3 | Invoke `scripts/lib/start-findings-engine.cjs` → up to 3 findings (`F1`..`F3`) + `bestFirstProofId` | `start-procedure.md#step-3-scan-findings` |
52
+ | 4 | Spawn `design-start-writer` Task → emit `.design/START-REPORT.md` (7 H2 sections + JSON block, no STATE.md write) | `start-procedure.md#step-4-spawn-the-writer` |
53
+ | 5 | Print one-line handoff with suggested command (fallback: `/gdd:brief` if `bestFirstProofId` is null); emit `## START COMPLETE` | `start-procedure.md#step-5-print-the-handoff` |
153
54
 
154
- Every error path exits with `## START COMPLETE` and a one-line pointer. Do not half-write files: if the writer agent fails, keep `.design/.start-context.json` and tell the user they can rerun. Do not delete `.design/` unless it was empty before the run.
55
+ Failure handling: every error path exits with `## START COMPLETE` plus a one-line pointer. Do not half-write files if the writer fails, keep `.design/.start-context.json` and tell the user they can rerun. Do not delete `.design/` unless it was empty before the run.
155
56
 
156
57
  ---
157
58
 
@@ -0,0 +1,115 @@
1
+ ---
2
+ name: start-procedure
3
+ type: heuristic
4
+ version: 1.0.0
5
+ phase: 28.5
6
+ tags: [start, first-run, proof-path, scan, writer-agent, handoff]
7
+ last_updated: 2026-05-18
8
+ ---
9
+
10
+ # Start Skill — Full Procedure
11
+
12
+ Extracted from `skills/start/SKILL.md` per Phase 28.5 D-10 (extract-then-link, never delete
13
+ content). The skill keeps its arguments table, step headings, and non-goals; the per-step
14
+ operational detail (interview JSON shape, scan invocation, writer spawn payload, handoff
15
+ template) lives here so the SKILL stays under the 100-line cap.
16
+
17
+ The companion file `./start-interview.md` (Phase 27 ship) holds the 5-question copy,
18
+ defaults, and validation rules. This file documents what `/gdd:start` does WITH the answers.
19
+
20
+ ## Step 0 — Dismiss-only shortcut
21
+
22
+ If invoked with `--dismiss-nudge`:
23
+
24
+ 1. `touch ~/.claude/gdd-nudge-dismissed` (Windows: equivalent). Ignore errors silently.
25
+ 2. Print exactly: `Nudge dismissed. Delete ~/.claude/gdd-nudge-dismissed to re-enable.`
26
+ 3. Exit with `## START COMPLETE` marker.
27
+
28
+ Do not proceed to any other step.
29
+
30
+ ## Step 1 — Detect UI root
31
+
32
+ Run the detector:
33
+
34
+ ```bash
35
+ node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/detect-ui-root.cjs" "$(pwd)"
36
+ ```
37
+
38
+ Capture the JSON output. Branches:
39
+
40
+ - `kind: "backend-only"` → print the frontend-only diagnostic below, write nothing, exit with `## START COMPLETE`. The diagnostic copy is:
41
+ > `/gdd:start` is for frontend codebases. This repo looks backend-only (detected `<framework>`). The plugin can still help with design references and component libraries imported by your clients — but there is no UI surface here to scan. Exiting without creating `.design/`.
42
+ - `kind: null` (no package.json, no UI dir) → print a short "Nothing recognizable here — point me at a frontend repo and try again." and exit.
43
+ - Any other `kind` → proceed with `detected.path` as the scan root.
44
+
45
+ ## Step 2 — Run the 5-question interview
46
+
47
+ Read `./start-interview.md` for the exact question copy, defaults, and validation rules.
48
+
49
+ If `--skip-interview`, skip this step and use the defaults documented in that file.
50
+
51
+ Otherwise, ask the five questions in order using `AskUserQuestion`:
52
+
53
+ 1. Pain point (text, required, single-line cap 120 chars)
54
+ 2. Target area confirmation (detected path)
55
+ 3. Budget / latency preference (enum: fast / balanced / thorough)
56
+ 4. Framework + design-system confirmation (from detection)
57
+ 5. Figma / canvas workflow (enum: figma / canvas / neither / skip)
58
+
59
+ Any early exit at Q1 → abort with a one-line pointer to `/gdd:scan`.
60
+
61
+ Store the answers + detection result in `.design/.start-context.json`:
62
+
63
+ ```json
64
+ {
65
+ "schema_version": "1.0",
66
+ "detected": { "kind": "...", "path": "...", "framework": "...", "design_system": "...", "confidence": 0.85 },
67
+ "interview": { "pain": "...", "target_area": "...", "budget": "balanced", "framework_confirmed": true, "design_system_confirmed": true, "figma_workflow": "skip" },
68
+ "generated_at": "<ISO-8601>"
69
+ }
70
+ ```
71
+
72
+ `.design/` is created here for the first time. `.design/STATE.md` is NOT written.
73
+
74
+ ## Step 3 — Scan findings
75
+
76
+ Run the findings engine:
77
+
78
+ ```bash
79
+ node "${CLAUDE_PLUGIN_ROOT}/scripts/lib/start-findings-engine.cjs" \
80
+ --root "<detected.path>" \
81
+ --budget "<budget>" \
82
+ --pain "<pain_point>"
83
+ ```
84
+
85
+ Capture the JSON. The output carries at most three findings, each with stable IDs `F1`..`F3`, plus `bestFirstProofId` (may be null).
86
+
87
+ Append the engine output to `.design/.start-context.json` under a `scan` key.
88
+
89
+ ## Step 4 — Spawn the writer
90
+
91
+ Dispatch `Task` with:
92
+
93
+ - `subagent_type: design-start-writer`
94
+ - `description: "Write .design/START-REPORT.md"`
95
+ - `prompt:` a short instruction pointing the agent at `.design/.start-context.json` and asking it to emit the report per its Output contract. Include a reminder that it must produce exactly 7 H2 sections plus the JSON block, and must not write `STATE.md`.
96
+
97
+ Wait for the agent to complete. The agent writes `.design/START-REPORT.md`.
98
+
99
+ ## Step 5 — Print the handoff
100
+
101
+ Read the final line of `.design/START-REPORT.md` to capture the suggested command.
102
+
103
+ Print exactly (one line, no emoji):
104
+
105
+ ```
106
+ Report written to .design/START-REPORT.md. Next: run <suggested_command> to see the first proof.
107
+ ```
108
+
109
+ If `bestFirstProofId` was null, the suggested command is `/gdd:brief` (the default fallback).
110
+
111
+ Emit `## START COMPLETE` and exit.
112
+
113
+ ## Failure handling
114
+
115
+ Every error path exits with `## START COMPLETE` and a one-line pointer. Do not half-write files: if the writer agent fails, keep `.design/.start-context.json` and tell the user they can rerun. Do not delete `.design/` unless it was empty before the run.
@@ -2,6 +2,7 @@
2
2
  name: gdd-stats
3
3
  description: "Cycle stats — decisions made, tasks completed, commits, timeline, git metrics."
4
4
  tools: Read, Bash
5
+ disable-model-invocation: true
5
6
  ---
6
7
 
7
8
  # /gdd:stats