| name | get-design-done |
| short_name | gdd |
| description | Master design pipeline for Claude Code. 5-stage workflow: Brief → Explore → Plan → Design → Verify. Run 'brief' first in any new project to capture the design problem, then 'explore' to inventory the codebase and interview for context. Invoke without arguments for status and auto-routing. |
| argument-hint | [brief|explore|plan|design|verify|handoff|map|next|help|status|style|darkmode|live|compare|figma-write|graphify|discuss|list-assumptions|progress|health|todo|stats|note|plant-seed|add-backlog|review-backlog|settings|update|reapply-patches|audit|pause|resume|new-cycle|debug|quick|new-project|complete-cycle|fast|do|ship|undo|pr-branch|sketch|sketch-wrap-up|spike|spike-wrap-up|reflect|apply-reflections|analyze-dependencies|extract-learnings|skill-manifest|pin|unpin|list-pins|new-skill|new-addendum|instinct|warm-cache|optimize|cache-manager|watch-authorities|check-update|benchmark|recall|timeline|continue|zoom-out] |
| user-invocable | true |
Get Design Done - Pipeline Router
Entry point for the get-design-done toolkit. Establishes the /gdd: command namespace.
Brief → Explore → Plan → Design → Verify → next
The 5-stage pipeline. scan and discover (previously deprecated aliases of explore) have been removed - use explore directly.
Each stage produces artifacts in .design/ inside the current project.
Command Reference
| Command | Skill | Purpose |
|---|
brief | get-design-done:gdd-brief | Stage 1 of 5 - capture problem, audience, constraints, metrics, scope → BRIEF.md |
explore | get-design-done:gdd-explore | Stage 2 of 5 - inventory scan + design interview → DESIGN.md, DESIGN-DEBT.md, DESIGN-CONTEXT.md |
plan | get-design-done:plan | Stage 3 of 5 - decompose into tasks → DESIGN-PLAN.md |
design | get-design-done:design | Stage 4 of 5 - execute tasks → DESIGN-SUMMARY.md |
verify | get-design-done:verify | Stage 5 of 5 - score + audit → DESIGN-VERIFICATION.md |
handoff <path> | get-design-done:gdd-handoff | Skip scan/discover/plan; initialize from Claude Design bundle; route to verify |
map | get-design-done:gdd-map | Parallel codebase mapping - spawns 5 mappers → .design/map/*.md + .design/DESIGN-MAP.md |
next | get-design-done:gdd-next | Route to the next pipeline stage based on STATE.md |
help | get-design-done:gdd-help | List all commands with one-line descriptions |
style [ComponentName] | get-design-done:gdd-style | Generate component handoff doc → .design/DESIGN-STYLE-[Name].md |
darkmode | get-design-done:gdd-darkmode | Audit dark mode architecture + contrast + anti-patterns → .design/DARKMODE-AUDIT.md |
live [--variants N] [--resume <id>] [url] | get-design-done:gdd-live | Phase 47 - in-browser design iteration: pick an element on a running dev server (via the Preview connection), generate N variants, hot-swap via HMR, accept/discard; session persists to .design/live-sessions/. Degraded screenshot-only mode on harnesses without MCP |
Handoff Routing
Check FIRST - before any other routing logic. If $ARGUMENTS starts with handoff OR contains --from-handoff:
-
Extract bundle path:
handoff <path> → bundle path is the second argument
--from-handoff <path> → bundle path is the value after the flag
- Neither has a path → check STATE.md
handoff_path; if absent, error: "Provide a bundle path: /gdd:handoff ./path/to/bundle.html"
- Verify the file exists; if not, error: "Bundle not found at "
-
Initialize STATE.md:
- If
.design/STATE.md does not exist: copy reference/STATE-TEMPLATE.md to .design/STATE.md
- Set in
<position>: handoff_source: claude-design-html, handoff_path: <resolved path>, skipped_stages: scan, discover, plan, status: handoff-sourced, stage: verify
- Set in
<connections>: claude_design: available; all others remain not_configured
-
Spawn design-research-synthesizer in handoff mode:
Task("design-research-synthesizer", """
mode: handoff
handoff_path: <resolved bundle path>
state_path: .design/STATE.md
""")
Wait for ## SYNTHESIZE COMPLETE.
-
Spawn design-discussant in --from-handoff mode:
Task("design-discussant", """
<mode>--from-handoff</mode>
<required_reading>.design/STATE.md</required_reading>
""")
Wait for ## DISCUSS COMPLETE.
-
Route to verify with --post-handoff flag:
Skill("get-design-done:verify", "--post-handoff")
-
Optional: Bidirectional write-back (post-verify, offered to user)
After verify completes without FAIL-level gaps:
- Check STATE.md
<connections> for figma: (the unified remote MCP covers both reads and writes as of v1.0.7.1)
figma: not_configured or figma: unavailable → skip (no offer)
figma: available → offer: "Write implementation status back to Figma? (annotates frames + Code Connect mappings)"
Options: [yes, write back] [dry-run, show proposal only] [skip]
Routing Logic
When invoked without arguments (or with status), show pipeline state and suggest next action:
1. No .design/ and no BRIEF.md → Suggest brief first: "New project — run /gdd:brief to capture the problem."
2. BRIEF.md exists, no DESIGN.md → Route to explore
3. DESIGN.md + DESIGN-CONTEXT.md exist, no DESIGN-PLAN.md → Route to plan
4. DESIGN-PLAN.md exists, DESIGN-SUMMARY.md missing → Route to design
5. DESIGN-SUMMARY.md exists, DESIGN-VERIFICATION.md missing → Route to verify
6. DESIGN-VERIFICATION.md exists → Show summary + offer to start new cycle
Status Display
━━━ Get Design Done Pipeline ━━━
[✓] Brief → .design/BRIEF.md
[✓] Explore → DESIGN.md + DESIGN-DEBT.md + DESIGN-CONTEXT.md (stage 2-of-5; replaces scan+discover)
[→] Plan ← current stage (3-of-5)
[ ] Design (4-of-5)
[ ] Verify (5-of-5)
Use [✓] for complete, [→] for current, [ ] for pending, [!] for gaps/errors.
Jump Mode
If $ARGUMENTS is a stage or command name - invoke it directly, no state check:
This table lists the common stage and shortcut routes. Every skill in scripts/lib/manifest/skills.json is auto-resolvable as /gdd:<name>; run /gdd:help for the complete, always-current command reference (rendered from the manifest, never a hardcoded subset).
/gdd:brief → Skill("get-design-done:gdd-brief")
/gdd:explore → Skill("get-design-done:gdd-explore")
/gdd:plan → Skill("get-design-done:plan") # stage 3-of-5
/gdd:design → Skill("get-design-done:design") # stage 4-of-5
/gdd:verify → Skill("get-design-done:verify") # stage 5-of-5
/gdd:handoff → Skill("get-design-done:gdd-handoff")
/gdd:map → Skill("get-design-done:gdd-map") # parallel codebase mapping
/gdd:next → Skill("get-design-done:gdd-next")
/gdd:help → Skill("get-design-done:gdd-help")
/gdd:style → Skill("get-design-done:gdd-style")
/gdd:darkmode → Skill("get-design-done:gdd-darkmode")
/gdd:compare → Skill("get-design-done:gdd-compare")
/gdd:figma-write → Skill("get-design-done:gdd-figma-write")
/gdd:graphify → Skill("get-design-done:gdd-graphify")
/gdd:discuss → Skill("get-design-done:gdd-discuss")
/gdd:list-assumptions → Skill("get-design-done:gdd-list-assumptions")
/gdd:progress → Skill("get-design-done:gdd-progress")
/gdd:health → Skill("get-design-done:gdd-health")
/gdd:todo → Skill("get-design-done:gdd-todo")
/gdd:stats → Skill("get-design-done:gdd-stats")
# --- Idea capture ---
/gdd:note → Skill("get-design-done:gdd-note")
/gdd:plant-seed → Skill("get-design-done:gdd-plant-seed")
/gdd:add-backlog → Skill("get-design-done:gdd-add-backlog")
/gdd:review-backlog → Skill("get-design-done:gdd-review-backlog")
# --- Configuration ---
/gdd:settings → Skill("get-design-done:gdd-settings")
# --- Maintenance ---
/gdd:update → Skill("get-design-done:gdd-update")
/gdd:reapply-patches → Skill("get-design-done:gdd-reapply-patches")
# --- Audit & Session ---
/gdd:audit → Skill("get-design-done:gdd-audit")
/gdd:reflect → Skill("get-design-done:gdd-reflect")
/gdd:apply-reflections → Skill("get-design-done:gdd-apply-reflections")
/gdd:watch-authorities → Skill("get-design-done:gdd-watch-authorities")
/gdd:benchmark → Skill("get-design-done:gdd-benchmark")
/gdd:pause → Skill("get-design-done:gdd-pause")
/gdd:resume → Skill("get-design-done:gdd-resume")
/gdd:continue → Skill("get-design-done:gdd-continue")
/gdd:recall → Skill("get-design-done:gdd-recall")
/gdd:timeline → Skill("get-design-done:gdd-timeline")
# --- Lifecycle ---
/gdd:start → Skill("get-design-done:start") # leaf command, no STATE.md
/gdd:new-project → Skill("get-design-done:gdd-new-project")
/gdd:new-cycle → Skill("get-design-done:gdd-new-cycle")
/gdd:complete-cycle → Skill("get-design-done:gdd-complete-cycle")
# --- Execution speed ---
/gdd:quick → Skill("get-design-done:gdd-quick")
/gdd:fast → Skill("get-design-done:gdd-fast")
# --- Debug & Workflow ---
/gdd:debug → Skill("get-design-done:gdd-debug")
/gdd:do → Skill("get-design-done:gdd-do")
/gdd:report-issue → Skill("get-design-done:report-issue")
# --- Ship & Safety ---
/gdd:ship → Skill("get-design-done:gdd-ship")
/gdd:pr-branch → Skill("get-design-done:gdd-pr-branch")
/gdd:undo → Skill("get-design-done:gdd-undo")
# --- Exploration ---
/gdd:sketch → Skill("get-design-done:gdd-sketch")
/gdd:sketch-wrap-up → Skill("get-design-done:gdd-sketch-wrap-up")
/gdd:spike → Skill("get-design-done:gdd-spike")
/gdd:spike-wrap-up → Skill("get-design-done:gdd-spike-wrap-up")
# --- Bootstrap (not slash-routed) ---
# using-gdd → injected at SessionStart by hooks/inject-using-gdd.cjs
# (disable-model-invocation: true). The skill-discipline contract;
# not a user-invoked command — see skills/using-gdd/SKILL.md.
Pass remaining arguments through: /gdd:explore --skip-interview → Skill("get-design-done:gdd-explore", "--skip-interview").
Do Not
- Do not perform any design work yourself - route to the stage skill.
- Do not skip stages unless the user explicitly passes a stage argument.
- Do not create or modify
.design/ files - the stage skills own their artifacts.