"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."
Resources
21Install
npx skillscat add hegemonart/get-design-done Install via the SkillsCat registry.
Get Design Done — Pipeline Router
Entry point for the get-design-done toolkit. Establishes the /gdd: command namespace.
Brief → Explore → Plan → Design → Verify → nextThe 5-stage pipeline. scan and discover are now merged into explore — their old aliases still route through for backward compatibility.
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> |
inline | 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 |
compare |
get-design-done:gdd-compare |
Delta between DESIGN.md baseline and DESIGN-VERIFICATION.md → .design/COMPARE-REPORT.md |
figma-write <mode> |
get-design-done:gdd-figma-write |
Write design decisions to Figma (annotate/tokenize/mappings) |
figma-extract <file-url-or-key> |
get-design-done:gdd-figma-extract |
Off-context Figma design-system extraction → compact local digest (DESIGN.md + tokens.json + components.json), zero raw JSON in context |
graphify <subcommand> |
get-design-done:gdd-graphify |
Manage Graphify knowledge graph (build/query/status/diff) |
discuss [topic] [--all] [--spec] [--cycle <name>] |
get-design-done:gdd-discuss |
Adaptive design interview — spawns design-discussant; appends D-XX decisions to STATE.md |
list-assumptions [--area] |
get-design-done:gdd-list-assumptions |
Surface implicit design assumptions baked into the codebase |
| Audit & Session | ||
audit [--retroactive] [--quick] [--no-reflect] |
get-design-done:gdd-audit |
Wraps design-verifier + design-auditor + design-reflector; --retroactive audits full cycle scope |
reflect [--dry-run] [--cycle <slug>] |
get-design-done:gdd-reflect |
On-demand reflection — reads cycle data, produces improvement proposals → .design/reflections/<slug>.md |
apply-reflections [--filter <type>] [--dry-run] |
get-design-done:gdd-apply-reflections |
Review + selectively apply reflection proposals (FRONTMATTER/REFERENCE/BUDGET/QUESTION/GLOBAL-SKILL) |
pause [context] |
get-design-done:gdd-pause |
Write numbered checkpoint to .design/checkpoints/NN-*.md |
resume [N] |
get-design-done:gdd-resume |
Restore session from checkpoint N (or list checkpoints if no arg) |
continue [N] |
get-design-done:gdd-continue |
Alias for /gdd:resume |
recall <query> |
get-design-done:gdd-recall |
Search cross-cycle memory (decisions, learnings, experience archives) |
timeline [N|N-M|all] |
get-design-done:gdd-timeline |
Narrative retrospective across completed cycles |
| Lifecycle | ||
start [--budget <t>] [--skip-interview] [--dismiss-nudge] |
get-design-done:start |
First-Run Proof Path — scans UI code, returns one concrete first fix. No STATE.md writes. |
new-project [--name <n>] |
get-design-done:gdd-new-project |
Initialize project — PROJECT.md + STATE.md + cycle-1 |
new-cycle [<goal>] |
get-design-done:gdd-new-cycle |
Start a new design cycle; writes .design/CYCLES.md entry |
complete-cycle [<note>] |
get-design-done:gdd-complete-cycle |
Archive cycle artifacts to .design/archive/cycle-N/; reset STATE.md |
| Execution speed | ||
quick [--skip <agent>] [stage] |
get-design-done:gdd-quick |
Run pipeline skipping optional agents for speed |
fast <task> |
get-design-done:gdd-fast |
Trivial inline task — no subagents, no pipeline, no artifacts |
| Debug & Workflow | ||
debug [<symptom>] |
get-design-done:gdd-debug |
Symptom-driven design investigation; persistent state in .design/DEBUG.md |
do <natural language> |
get-design-done:gdd-do |
Natural-language router — parses intent, confirms, dispatches |
report-issue [<cmd>] [--force-report] |
get-design-done:report-issue |
Consent-gated GitHub issue reporter — triage, pseudonymize, draft to disk, submit via gh (no auto-mode; hardcoded destination) |
| Ship & Safety | ||
ship [--title <t>] [--draft] |
get-design-done:gdd-ship |
Post-verify PR flow — clean branch + gh pr create |
pr-branch [<base>] |
get-design-done:gdd-pr-branch |
Strip .design/ and .planning/ commits for clean code-review branch |
undo [<sha>] |
get-design-done:gdd-undo |
Safe revert with dependency check |
| Ops | ||
progress [--forensic] |
get-design-done:gdd-progress |
Pipeline position + recommended next action; --forensic runs 6-check integrity audit |
health |
get-design-done:gdd-health |
Artifact health report for .design/ |
todo <add|list|pick> [text] |
get-design-done:gdd-todo |
Design todo list → .design/TODO.md |
stats |
get-design-done:gdd-stats |
Cycle metrics — decisions, commits, todos |
| Idea capture | ||
note <add|list|promote> [text] |
get-design-done:gdd-note |
Zero-friction notes → .design/NOTES.md |
plant-seed [--trigger <cond>] [text] |
get-design-done:gdd-plant-seed |
Forward-looking idea with trigger → .design/SEEDS.md |
add-backlog [text] |
get-design-done:gdd-add-backlog |
Park an idea → .design/backlog/BACKLOG.md |
review-backlog |
get-design-done:gdd-review-backlog |
Walk parked items; promote/archive |
| Exploration | ||
sketch [topic] [--variants N] [--quick] |
get-design-done:gdd-sketch |
Multi-variant HTML exploration → .design/sketches/<slug>/variant-*.html |
sketch-wrap-up [slug] |
get-design-done:gdd-sketch-wrap-up |
Pick winner + rationale → writes ./.claude/skills/design-<area>-conventions.md |
spike [hypothesis] [--timebox N] |
get-design-done:gdd-spike |
Timeboxed feasibility experiment → .design/spikes/<slug>/ |
spike-wrap-up [slug] |
get-design-done:gdd-spike-wrap-up |
Capture findings + D-XX decision → .design/spikes/<slug>/FINDINGS.md |
scan (deprecated) |
get-design-done:scan |
Alias — use explore instead |
discover (deprecated) |
get-design-done:discover |
Alias — use explore instead |
| Configuration | ||
settings <profile|parallelism|cleanup|show> |
get-design-done:gdd-settings |
Manage .design/config.json — model profile, parallelism, cleanup |
| Maintenance | ||
update [--dry-run] [--version <tag>] |
get-design-done:gdd-update |
Update plugin to latest release; preserves config + local skills |
reapply-patches [--dry-run] |
get-design-done:gdd-reapply-patches |
Reapply reference/ customizations after an update |
analyze-dependencies [--slice <name>] |
get-design-done:analyze-dependencies |
Query the .design/intel/ store — dependency slices, graph queries, phase-scoped reads |
extract-learnings [--cycle <slug>] |
get-design-done:extract-learnings |
Extract decisions, lessons, patterns, and surprises from a completed cycle → .design/cycles/<slug>/LEARNINGS.md |
skill-manifest [--refresh] |
get-design-done:skill-manifest |
List or refresh the local skill manifest used by the router for discovery |
quality-gate |
get-design-done:quality-gate |
Phase 25 — parallel lint/type/test/visual command runner; classifies failures via quality-gate-runner agent |
turn-closeout |
get-design-done:turn-closeout |
Phase 25 — Stop-hook mirror skill; finalizes per-turn STATE blocks and emits closeout events |
bandit-status |
get-design-done:bandit-status |
Phase 27.5 — read-only diagnostic surface for the bandit posterior; per-(agent, bin, delegate, tier) snapshots (alpha, beta, mean, stddev, count, last-used). Use /gdd:bandit-reset to mutate. |
openrouter-status [--refresh] |
get-design-done:gdd-openrouter-status |
Phase 33.6 — read-only OpenRouter catalog + tier-mapping diagnostic; surfaces catalog freshness (vs 24h TTL), last-fetch, resolved opus/sonnet/haiku → model mappings, per-tier preview. --refresh re-fetches (needs OPENROUTER_API_KEY). |
peers |
get-design-done:peers |
Phase 27 — /gdd:peers capability matrix command; shows installed peer-CLIs (codex/gemini/cursor/copilot/qwen), allowlist status, claimed roles, posterior delta vs local |
peer-cli-customize |
get-design-done:peer-cli-customize |
Phase 27 — rewire role→peer mappings on a per-agent basis (edits frontmatter delegate_to: directly) |
peer-cli-add |
get-design-done:peer-cli-add |
Phase 27 — guided ladder for adding a brand-new peer (verification ladder + adapter scaffolding + capability-matrix update) |
watch-authorities [--refresh] [--since <date>] [--feed <name>] [--schedule <cadence>] |
get-design-done:gdd-watch-authorities |
Run design-authority-watcher — fetch curated feeds, diff snapshot, classify new entries → .design/authority-report.md (consumed by /gdd:reflect) |
benchmark <component|--wave N|--list|--refresh component> |
get-design-done:gdd-benchmark |
Harvest + synthesize per-component design specs from 18 design systems → reference/components/<name>.md |
benchmark <component|--wave N|--list|--refresh component> |
get-design-done:gdd-benchmark |
Harvest + synthesize per-component design specs from 18 design systems → reference/components/<name>.md |
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.mddoes not exist: copyreference/STATE-TEMPLATE.mdto.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 remainnot_configured
- If
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-handoffmode:Task("design-discussant", """ <mode>--from-handoff</mode> <required_reading>.design/STATE.md</required_reading> """)Wait for
## DISCUSS COMPLETE.Route to verify with
--post-handoffflag: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>forfigma:(the unified remote MCP covers both reads and writes as of v1.0.7.1) figma: not_configuredorfigma: 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]- If yes or dry-run: spawn
agents/design-figma-writer.mdwithmode: implementation-status,dry_run: <true|false>
- Check STATE.md
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 cycleStatus 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:
/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 → [Handoff Routing] (inline — see ## Handoff Routing above)
/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")
/gdd:scan → Skill("get-design-done:gdd-explore") # deprecated alias → explore
/gdd:discover → Skill("get-design-done:gdd-explore") # deprecated alias → explore
# --- 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.sh
# (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.