| name | design-director |
| description | Use when a product's visual design must be built or rebuilt end-to-end โ choosing a design direction or style, setting up a brand identity or design system, or any multi-step UI build where design quality matters. Also use when design feedback keeps not landing ("make it prettier", "still can't see it") or the design drifts between edits. Triggers: design direction, brand identity, redesign, design system, landing page design, ๋์์ธ ๋ฐฉํฅ, ๋ธ๋๋ ๋์์ธ, ๋ฆฌ๋์์ธ, ๋์์ธ ์์คํ
, ์์๊ฒ ๋ง๋ค์ด์ค. Not for single-element tweaks or tactical polish (use impeccable) or backend-only work. |
Design Director
Directs a design build from direction choice to converged, gate-checked UI. The goal is a beautiful, finished UI: gates guarantee the quality floor, the human feedback loop raises the ceiling. Style is a user-chosen input variable; the process and quality axes are invariant. Stack-agnostic.
Entry points
| Situation | Enter at |
|---|
| New build, no direction chosen | Phase 0 |
| Existing design + improvement request | Reverse-extract the contract from code โ Phase 4 |
| Micro task (one element, one tweak) | Contract check + verify only โ or hand to impeccable |
| Redesign | Phase 0 (old contract = comparison baseline) |
Division of labor: single-element tweaks and tactical polish go straight to impeccable. Multi-step builds that need a direction: this skill directs, delegating steps to impeccable / frontend-design where noted.
Iron rules
- Never one-shot a direction. Every new build starts at Phase 0: genuinely different candidates, a real reference each, the user picks. "The brief is clear enough" is not an exemption โ a brief names a style; it does not choose a direction.
- After Phase 1, every color and font comes from the contract. Need something outside it? Amend the contract first (logged), then implement.
- Every candidate direction carries one real reference โ an actual product/site/artifact. A style name alone is not a reference.
- No done-claims from code alone. You cannot judge your own visual output without rendering it: screenshot + numeric check before reporting any visual change.
- The same feedback twice means the fix was below perception threshold. Add a mechanism; do not re-tune the same parameter.
- Never re-apply anything the user reverted. Re-proposing requires explicitly asking first.
Pipeline
Phase 0 โ Diverge
- Generate 5 direction sketches with probability estimates; inspect the low-probability tail first (the median is the trap).
- Shortlist 2โ4 genuinely different directions โ different worlds, not shades of one idea.
- Anchor each with 1 real reference (user-provided > real product in the domain).
- AskUserQuestion: one option per direction, mark a recommendation, describe each (3 adjectives + palette seed + reference).
- User picks. Do not deep-mine references for rejected candidates.
Deliverable: candidates doc + recorded user choice.
Phase 1 โ Contract
Load references/contract-template.md. Fix: 3 adjectives ยท palette (closed set) ยท type pair ยท motion vocabulary ยท anti-list. World lexicon (~10 domain objects/actions) if the style is narrative or immersive; 2โ3 light motifs suffice for minimal/product UI.
Extract from the chosen reference both ways: qualitative by eye, quantitative from its actual CSS values (no eyeballed hex). After extraction the contract is master, not the reference.
Deliverable: DESIGN-CONTRACT.md in the project + code token file mapped 1:1.
Phase 2 โ Skeleton
IA, page roles, scene list โ low-fidelity structure check โ real-density data (dozens of real items, never 3 dummies).
Deliverable: structure map + lo-fi screenshot.
Phase 3 โ Surface (the core phase for the primary goal)
High fidelity, strictly inside the contract. If the frontend-design skill is installed, delegate surface craft to it; otherwise apply the craft rules in references/principles.md.
De-template pass: any section shaped like a stock template (icon+title+text card grid, centered hero + two buttons) is re-typeset as a physical form from the world lexicon.
Deliverable: implementation + per-scene screenshots.
Phase 4 โ Perception loop (the iteration unit)
For every feedback round:
โ Translate the sensory words via references/translation-log.md โ diagnose, never implement the words literally โ โก if directions fork, AskUserQuestion 2โ4 options + recommendation โ โข implement inside the contract (amend first if needed) โ โฃ verify: eyes + numbers โ โค compare side-by-side with the reference โ โฅ commit (one design decision = one commit).
Loop rules: repeated request โ mechanism, not parameter (rule 5). "Keep the current design whileโฆ" โ isolate the change in a separate layer. Verification scope proportional to change radius โ full gates only at Phase 5 and major milestones. translation-log is append-only.
Phase 5 โ Converge
Run all floor gates from references/quality-gates.md โ one failure = not done.
Critique pass (delegable, e.g. impeccable critique): triage detector findings into false-positive/brand-intent vs real defect; act only on real defects.
reduced-motion = freeze at the final composition (not animations-off blankness). Performance: measure before optimizing. Nothing user-reverted comes back.
Close-out: append this project's new sensory-wordโtechnique cases to translation-log.
Deliverable: gate report (4-axis pass table) + appended translation-log entries.
Floor gates (summary โ full checklist in references/quality-gates.md)
| Axis | Check |
|---|
| Aesthetic craft (primary) | type scale ยท spacing rhythm ยท palette harmony ยท hierarchy ยท whitespace + full screenshot walk |
| Direction fidelity | 0 out-of-palette colors ยท 0 non-contract fonts ยท 0 anti-list hits |
| Distinctiveness | 0 slop-pattern hits (with intent triage) |
| UX floor | contrast โฅ4.5:1 ยท tap targets ยท reduced-motion state ยท keyboard/JS-off ยท measured bytes |
Progressive disclosure
Load reference files only at their phase: P1 โ contract-template ยท P4 โ translation-log ยท P5 โ quality-gates ยท pitfall suspected or P3 without frontend-design โ principles. From styles/, load only the playbook matching the chosen direction (e.g. styles/cinematic-scrolltelling.md).
Optional enhancements โ never dependencies
The default path completes every phase alone. Use these only when their condition holds; if absent or failing, continue on the default path:
| Phase | Default (self-contained) | Optional upgrade โ condition |
|---|
| P0 visual compare | AskUserQuestion with descriptions | design-shotgun โ many variants on a visual board |
| P0 reference capture | WebFetch + headless screenshot | browser-automation MCP โ dynamic/login pages |
| P1 quantitative extraction | fetch reference CSS directly | Figma MCP โ source is a Figma file |
| P3 surface craft | craft rules in principles.md | frontend-design skill โ if installed |
| P3 API syntax | own knowledge + web search | context7 โ recent-API uncertainty |
| P4โP5 verification | CDP scripts (recipes in principles.md) | browser-automation MCP โ CDP blocked |
| P5 ceiling critique | screenshot walk + checklist | impeccable critique โ dual-agent isolation |
Red flags โ stop and re-enter the pipeline
- "The brief is clear, I'll start building" โ you skipped Phase 0.
- "This hex is close enough to the palette" โ contract violation; conform or amend.
- "I'll nudge the value a bit more" after repeated feedback โ mechanism, not parameter.
- "It should look right now" without a screenshot โ rule 4.
- "The detector flagged it, so remove it" โ triage intent first (Phase 5).
- Reaching for the house default (dark theme + single warm accent + default font stack) without a chosen direction โ that is the mode-collapse median, not a decision.