@hegemonart/get-design-done 1.28.0 → 1.28.5
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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +78 -0
- package/SKILL.md +1 -1
- package/hooks/gdd-decision-injector.js +149 -3
- package/package.json +1 -1
- package/reference/adr-format.md +96 -0
- package/reference/apply-reflections-procedure.md +68 -0
- package/reference/architecture-vocabulary.md +102 -0
- package/reference/cache-policy.md +126 -0
- package/reference/compare-rubric.md +171 -0
- package/reference/connections-onboarding.md +417 -0
- package/reference/context-md-format.md +106 -0
- package/reference/darkmode-audit-procedure.md +258 -0
- package/reference/debug-feedback-loops.md +119 -0
- package/reference/design-procedure.md +304 -0
- package/reference/discover-procedure.md +204 -0
- package/reference/explore-procedure.md +267 -0
- package/reference/health-mcp-detection.md +44 -0
- package/reference/health-skill-length-report.md +69 -0
- package/reference/heuristics.md +84 -0
- package/reference/milestone-completeness-rubric.md +87 -0
- package/reference/peer-cli-protocol.md +161 -0
- package/reference/plan-procedure.md +278 -0
- package/reference/registry.json +169 -1
- package/reference/registry.schema.json +1 -1
- package/reference/router-rules.md +84 -0
- package/reference/scan-procedure.md +731 -0
- package/reference/shared-preamble.md +78 -6
- package/reference/skill-authoring-contract.md +128 -0
- package/reference/start-procedure.md +115 -0
- package/reference/style-doc-procedure.md +150 -0
- package/reference/threat-modeling.md +101 -0
- package/reference/verify-procedure.md +512 -0
- package/scripts/validate-skill-length.cjs +283 -0
- package/skills/add-backlog/SKILL.md +1 -0
- package/skills/analyze-dependencies/SKILL.md +33 -122
- package/skills/apply-reflections/SKILL.md +1 -40
- package/skills/audit/SKILL.md +3 -1
- package/skills/bandit-status/SKILL.md +31 -66
- package/skills/benchmark/SKILL.md +15 -55
- package/skills/brief/SKILL.md +12 -1
- package/skills/cache-manager/SKILL.md +3 -57
- package/skills/check-update/SKILL.md +38 -75
- package/skills/compare/SKILL.md +29 -269
- package/skills/complete-cycle/SKILL.md +1 -1
- package/skills/connections/SKILL.md +21 -427
- package/skills/continue/SKILL.md +1 -0
- package/skills/darkmode/SKILL.md +32 -287
- package/skills/debug/SKILL.md +11 -8
- package/skills/design/SKILL.md +27 -245
- package/skills/discover/SKILL.md +26 -133
- package/skills/discuss/SKILL.md +18 -2
- package/skills/explore/SKILL.md +40 -205
- package/skills/fast/SKILL.md +1 -0
- package/skills/figma-write/SKILL.md +2 -2
- package/skills/health/SKILL.md +11 -33
- package/skills/help/SKILL.md +1 -0
- package/skills/list-assumptions/SKILL.md +1 -0
- package/skills/map/SKILL.md +8 -31
- package/skills/new-cycle/SKILL.md +3 -1
- package/skills/next/SKILL.md +1 -0
- package/skills/note/SKILL.md +1 -0
- package/skills/optimize/SKILL.md +21 -44
- package/skills/pause/SKILL.md +1 -0
- package/skills/peer-cli-add/SKILL.md +26 -108
- package/skills/peer-cli-customize/SKILL.md +22 -42
- package/skills/peers/SKILL.md +33 -57
- package/skills/plan/SKILL.md +33 -220
- package/skills/plant-seed/SKILL.md +1 -0
- package/skills/pr-branch/SKILL.md +1 -0
- package/skills/progress/SKILL.md +1 -7
- package/skills/quality-gate/SKILL.md +34 -166
- package/skills/quick/SKILL.md +1 -0
- package/skills/reapply-patches/SKILL.md +1 -0
- package/skills/recall/SKILL.md +1 -0
- package/skills/resume/SKILL.md +1 -0
- package/skills/review-backlog/SKILL.md +1 -0
- package/skills/router/SKILL.md +3 -59
- package/skills/scan/SKILL.md +36 -675
- package/skills/settings/SKILL.md +1 -0
- package/skills/ship/SKILL.md +1 -0
- package/skills/sketch/SKILL.md +1 -1
- package/skills/sketch-wrap-up/SKILL.md +13 -54
- package/skills/spike/SKILL.md +1 -1
- package/skills/spike-wrap-up/SKILL.md +12 -46
- package/skills/start/SKILL.md +13 -112
- package/skills/stats/SKILL.md +1 -0
- package/skills/style/SKILL.md +18 -140
- package/skills/synthesize/SKILL.md +1 -0
- package/skills/timeline/SKILL.md +1 -0
- package/skills/todo/SKILL.md +1 -0
- package/skills/turn-closeout/SKILL.md +36 -56
- package/skills/undo/SKILL.md +1 -0
- package/skills/update/SKILL.md +1 -0
- package/skills/verify/SKILL.md +42 -457
- package/skills/warm-cache/SKILL.md +3 -35
- package/skills/zoom-out/SKILL.md +26 -0
package/skills/settings/SKILL.md
CHANGED
|
@@ -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
|
package/skills/ship/SKILL.md
CHANGED
|
@@ -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
|
package/skills/sketch/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gdd-sketch
|
|
3
|
-
description: "Multi-variant HTML design exploration
|
|
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
|
|
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
|
|
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 —
|
|
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
|
-
|
|
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
|
-
|
|
89
|
-
(`cycle:` field; empty string is valid for Wave A single-cycle projects).
|
|
66
|
+
## Step 8 — Update sketches SUMMARY.md
|
|
90
67
|
|
|
91
|
-
|
|
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
|
|
package/skills/spike/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gdd-spike
|
|
3
|
-
description: "Timeboxed feasibility experiment
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
99
|
-
|
|
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
|
|
package/skills/start/SKILL.md
CHANGED
|
@@ -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
|
|
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
|
-
##
|
|
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
|
-
|
|
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 `./reference/start-procedure.md`. Companion file `./reference/start-interview.md` holds the 5-question copy + defaults + validation.
|
|
151
45
|
|
|
152
|
-
|
|
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
|
-
|
|
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
|
|
package/skills/stats/SKILL.md
CHANGED
package/skills/style/SKILL.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: get-design-done:style
|
|
3
|
-
description: "Generate a component handoff doc
|
|
3
|
+
description: "Generate a component handoff doc at `.design/DESIGN-STYLE-<ComponentName>.md` by dispatching the `design-doc-writer` agent in one of two modes: post-pipeline (uses `DESIGN-SUMMARY.md`) or pre-pipeline fallback (uses `DESIGN.md` + source). Use when the user wants a single-component spec covering tokens, states, and AI-slop detection. Invoke with a ComponentName, or with no argument to list available components."
|
|
4
4
|
argument-hint: "[ComponentName]"
|
|
5
5
|
user-invocable: true
|
|
6
6
|
---
|
|
@@ -9,6 +9,8 @@ user-invocable: true
|
|
|
9
9
|
|
|
10
10
|
Generates a per-component style spec at `.design/DESIGN-STYLE-[ComponentName].md`. This is a **standalone command**, not a pipeline stage.
|
|
11
11
|
|
|
12
|
+
For the full mode-detection logic, source-resolution fallback chain (10 paths), agent-spawn payload, and STYL-05 section spec, see `../../reference/style-doc-procedure.md`. For the cross-skill output discipline (artifact prefix, completion marker, MUST-NOT-write list), see `../../reference/shared-preamble.md#output-contract-reminders`. For the raw-hex audit signal used in Token Semantic Health Score, see `../../reference/shared-preamble.md#token-first-reasoning`.
|
|
13
|
+
|
|
12
14
|
Output artifact naming: `.design/DESIGN-STYLE-[ComponentName].md` — Title-cased component name, one file per invocation.
|
|
13
15
|
|
|
14
16
|
---
|
|
@@ -27,134 +29,24 @@ This separation is a pre-roadmap decision recorded in `.planning/STATE.md`: util
|
|
|
27
29
|
|
|
28
30
|
---
|
|
29
31
|
|
|
30
|
-
##
|
|
31
|
-
|
|
32
|
-
**If `$ARGUMENTS` contains a ComponentName** → proceed to Mode Detection with that name.
|
|
33
|
-
|
|
34
|
-
**If `$ARGUMENTS` is empty** → do not generate a doc. Instead:
|
|
35
|
-
|
|
36
|
-
1. List available component files by globbing:
|
|
37
|
-
- `src/components/*.tsx`
|
|
38
|
-
- `src/components/*.jsx`
|
|
39
|
-
- `src/**/*.vue`
|
|
40
|
-
- `src/**/*.svelte`
|
|
41
|
-
- `components/*.tsx`
|
|
42
|
-
- `components/*.jsx`
|
|
43
|
-
2. Also list task names from `.design/tasks/*.md` (if directory exists).
|
|
44
|
-
3. Display the list to the user and prompt: "Specify a ComponentName to generate a style spec. Example: `/get-design-done style Button`"
|
|
45
|
-
4. Exit without generating any file.
|
|
46
|
-
|
|
47
|
-
---
|
|
48
|
-
|
|
49
|
-
## Mode Detection
|
|
50
|
-
|
|
51
|
-
Before spawning the agent, detect which mode to use:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
If .design/DESIGN-SUMMARY.md exists:
|
|
55
|
-
mode = post-pipeline (STYL-03)
|
|
56
|
-
pipeline_complete = true
|
|
57
|
-
|
|
58
|
-
Elif .design/DESIGN.md exists:
|
|
59
|
-
mode = pre-pipeline (STYL-04)
|
|
60
|
-
pipeline_complete = false
|
|
61
|
-
|
|
62
|
-
Else:
|
|
63
|
-
Abort: "No .design/ artifacts found. Run /get-design-done scan first to initialize."
|
|
64
|
-
```
|
|
65
|
-
|
|
66
|
-
The mode controls which files are supplied to the agent in `<required_reading>`.
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Component Source Resolution
|
|
71
|
-
|
|
72
|
-
Search for a source file matching the provided ComponentName (case-insensitive):
|
|
73
|
-
|
|
74
|
-
1. `src/components/[ComponentName].tsx`
|
|
75
|
-
2. `src/components/[ComponentName].jsx`
|
|
76
|
-
3. `src/components/[ComponentName].vue`
|
|
77
|
-
4. `src/components/[ComponentName].svelte`
|
|
78
|
-
5. `src/**/[ComponentName]/index.tsx`
|
|
79
|
-
6. `src/**/[ComponentName]/index.jsx`
|
|
80
|
-
7. `components/[ComponentName].tsx`
|
|
81
|
-
8. `components/[ComponentName].jsx`
|
|
82
|
-
9. `components/[ComponentName].vue`
|
|
83
|
-
10. `components/[ComponentName].svelte`
|
|
84
|
-
|
|
85
|
-
**If multiple matches found:** Present the list to the user and prompt them to specify the exact path. Do not proceed until a single file is selected.
|
|
86
|
-
|
|
87
|
-
**If zero matches found:** Abort with: "Component [ComponentName] not found in expected paths. Verify the name matches a file in src/components/ or components/."
|
|
88
|
-
|
|
89
|
-
---
|
|
90
|
-
|
|
91
|
-
## Agent Spawn
|
|
92
|
-
|
|
93
|
-
Once mode and source path are resolved, spawn the `design-doc-writer` agent:
|
|
94
|
-
|
|
95
|
-
```
|
|
96
|
-
Task("design-doc-writer", """
|
|
97
|
-
<required_reading>
|
|
98
|
-
[If pipeline_complete=true:]
|
|
99
|
-
@.design/STATE.md
|
|
100
|
-
@.design/DESIGN-SUMMARY.md
|
|
101
|
-
@.design/DESIGN-CONTEXT.md
|
|
102
|
-
@<component_source_path>
|
|
103
|
-
[Else (pipeline_complete=false):]
|
|
104
|
-
@.design/DESIGN.md
|
|
105
|
-
@<component_source_path>
|
|
106
|
-
@reference/anti-patterns.md
|
|
107
|
-
@reference/audit-scoring.md
|
|
108
|
-
</required_reading>
|
|
109
|
-
|
|
110
|
-
Generate a handoff spec for component <ComponentName>.
|
|
111
|
-
|
|
112
|
-
Context:
|
|
113
|
-
component_name: <ComponentName>
|
|
114
|
-
component_source_path: <resolved absolute path>
|
|
115
|
-
pipeline_complete: <true|false>
|
|
116
|
-
output_path: .design/DESIGN-STYLE-<ComponentName>.md
|
|
117
|
-
|
|
118
|
-
Produce the doc per STYL-05 sections:
|
|
119
|
-
- Spacing Tokens (used by component)
|
|
120
|
-
- Color Tokens (used by component)
|
|
121
|
-
- Typography Scale (used by component)
|
|
122
|
-
- Component States (default, hover, focus, active, disabled, etc.)
|
|
123
|
-
- Token Semantic Health Score (raw-hex-ratio formula)
|
|
124
|
-
- AI-Slop Detection (using reference/anti-patterns.md BAN/SLOP patterns)
|
|
125
|
-
[If pipeline_complete=true:]
|
|
126
|
-
- Decisions Applied (D-XX from DESIGN-SUMMARY.md that mention this component)
|
|
127
|
-
|
|
128
|
-
Emit ## DOC COMPLETE when the output file is written.
|
|
129
|
-
""")
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
After the agent emits `## DOC COMPLETE`, confirm the file exists at `output_path` and report success to the user.
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
## Output Location
|
|
137
|
-
|
|
138
|
-
Output is written by the agent to:
|
|
139
|
-
|
|
140
|
-
```
|
|
141
|
-
.design/DESIGN-STYLE-[ComponentName].md
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
This artifact is **outside the pipeline namespace**. The `DESIGN-STYLE-` prefix is distinct from all pipeline-owned artifacts (`DESIGN.md`, `DESIGN-CONTEXT.md`, `DESIGN-PLAN.md`, `DESIGN-SUMMARY.md`, `DESIGN-VERIFICATION.md`). There is no naming conflict.
|
|
32
|
+
## Workflow
|
|
145
33
|
|
|
146
|
-
|
|
34
|
+
1. **Argument check** — if `$ARGUMENTS` is empty, enter list mode (see `../../reference/style-doc-procedure.md#component-source-resolution`); display available components from `src/components/` + `.design/tasks/`, then exit.
|
|
35
|
+
2. **Mode detect** — `DESIGN-SUMMARY.md` exists → post-pipeline; else `DESIGN.md` exists → pre-pipeline; else abort with a "run /get-design-done scan first" message. Full decision tree at `../../reference/style-doc-procedure.md#mode-detection`.
|
|
36
|
+
3. **Source resolve** — search the 10-path fallback chain for a file matching the ComponentName. On zero matches: abort. On multiple matches: prompt the user to disambiguate.
|
|
37
|
+
4. **Agent spawn** — dispatch `design-doc-writer` with the mode-specific `<required_reading>` block and the STYL-05 section list. The full Task payload + STYL-05 spec live in `../../reference/style-doc-procedure.md#agent-spawn-payload`.
|
|
38
|
+
5. **Confirm + report** — after the agent emits `## DOC COMPLETE`, verify the output path exists and report success.
|
|
147
39
|
|
|
148
40
|
---
|
|
149
41
|
|
|
150
42
|
## Constraints
|
|
151
43
|
|
|
152
|
-
This command MUST NOT:
|
|
44
|
+
This command MUST NOT (per `../../reference/shared-preamble.md#output-contract-reminders`):
|
|
153
45
|
|
|
154
|
-
-
|
|
155
|
-
-
|
|
156
|
-
-
|
|
157
|
-
-
|
|
46
|
+
- Write to `DESIGN.md`, `DESIGN-SUMMARY.md`, `DESIGN-VERIFICATION.md`, `DESIGN-CONTEXT.md`, or `.design/STATE.md`
|
|
47
|
+
- Invoke the pipeline router (this command is a leaf invocation, not a pipeline stage)
|
|
48
|
+
- Require Figma or Refero MCPs — v3 uses only local source files and `.design/` artifacts (MCP enrichment is reserved for a future version)
|
|
49
|
+
- Produce more than one output file per invocation — no batch mode in v3
|
|
158
50
|
|
|
159
51
|
---
|
|
160
52
|
|
|
@@ -166,12 +58,7 @@ This command MUST NOT:
|
|
|
166
58
|
/get-design-done style Button
|
|
167
59
|
```
|
|
168
60
|
|
|
169
|
-
|
|
170
|
-
- Detects mode: DESIGN-SUMMARY.md exists → post-pipeline
|
|
171
|
-
- Spawns `design-doc-writer` with `pipeline_complete: true`
|
|
172
|
-
- Output: `.design/DESIGN-STYLE-Button.md`
|
|
173
|
-
|
|
174
|
-
---
|
|
61
|
+
Resolves `src/components/Button.tsx`, detects post-pipeline mode (DESIGN-SUMMARY.md exists), spawns `design-doc-writer` with `pipeline_complete: true`, writes `.design/DESIGN-STYLE-Button.md`.
|
|
175
62
|
|
|
176
63
|
**Example 2: No argument (list mode)**
|
|
177
64
|
|
|
@@ -179,15 +66,6 @@ This command MUST NOT:
|
|
|
179
66
|
/get-design-done style
|
|
180
67
|
```
|
|
181
68
|
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
Available components:
|
|
186
|
-
Button
|
|
187
|
-
CardHeader
|
|
188
|
-
Input
|
|
189
|
-
Modal
|
|
190
|
-
Toast
|
|
191
|
-
Specify: /get-design-done style [ComponentName]
|
|
192
|
-
```
|
|
193
|
-
- Exits without generating any file.
|
|
69
|
+
Globs component files and prompts the user to specify a ComponentName. Exits without generating any file. See `../../reference/style-doc-procedure.md#component-source-resolution` for the full glob path list.
|
|
70
|
+
|
|
71
|
+
## STYLE COMPLETE
|
|
@@ -3,6 +3,7 @@ name: synthesize
|
|
|
3
3
|
description: "Streaming synthesizer — collapses N parallel-agent markdown outputs into one compact merged summary via a single Haiku 4.5 call. Invoked inline by orchestrators (skills/map/, skills/discover/, skills/plan/) after parallel spawns return. Not user-invocable."
|
|
4
4
|
tools: Read, Task
|
|
5
5
|
user-invocable: false
|
|
6
|
+
disable-model-invocation: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
@reference/shared-preamble.md
|
package/skills/timeline/SKILL.md
CHANGED
|
@@ -3,6 +3,7 @@ name: gdd-timeline
|
|
|
3
3
|
description: "Narrative retrospective across cycles: reads EXPERIENCE.md files and git log to produce a timeline view."
|
|
4
4
|
argument-hint: "[<cycle-N> | <from>-<to> | all]"
|
|
5
5
|
tools: Read, Bash, Glob
|
|
6
|
+
disable-model-invocation: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
@reference/retrieval-contract.md
|
package/skills/todo/SKILL.md
CHANGED
|
@@ -3,6 +3,7 @@ name: gdd-todo
|
|
|
3
3
|
description: "Design backlog — add/list/pick design tasks. Writes to .design/TODO.md."
|
|
4
4
|
argument-hint: "<add|list|pick> [text]"
|
|
5
5
|
tools: Read, Write, AskUserQuestion, mcp__gdd_state__get, mcp__gdd_state__add_decision, mcp__gdd_state__add_must_have
|
|
6
|
+
disable-model-invocation: true
|
|
6
7
|
---
|
|
7
8
|
|
|
8
9
|
# /gdd:todo
|