Design Direction
Forces several genuinely different design directions for a website instead of the one the model always picks, then narrows to one and locks it. Use when the user says "make me a landing page", "design this site", "I need a homepage", "this looks AI-generated", "give me some design options", or is about to start building any web UI from scratch. Not for editing an existing design system or for backend work.
Add it to your agent
Pick a way — each one drops the skill into .claude/skills/.
One short line. Needs Node — works on macOS, Linux & Windows.
npx stackscout add design-direction
Playbook — how to actually use it
A skill without instructions is a download, not a capability. This is the part we wrote: what the commands do, which one to reach for, and how to phrase the request so it lands.
Or hand it straight to your agent
Drops the same guide next to the skill as PLAYBOOK.md — plain markdown, so the agent reads it along with the skill.
curl -sL https://stackscout.app/playbooks/design-direction.md -o .claude/skills/design-direction/PLAYBOOK.md
The full playbookRead it ↓Collapse ↑
Design Direction
The model does not roll its own dice. Left alone it returns the same layout, the same
type pairing and the same accent every time — measured, not assumed: impeccable's own
concept-seed.mjs documents "30/35 identical concepts across 16 prompt framings."
This skill breaks that, then narrows back down to one direction and writes it down.
Run it before any component is built. Retrofitting a direction never works.
Requirements
npx impeccable install # Paul Bakaus · Apache-2.0
npx skills@latest add emilkowalski/skills # Emil Kowalski · MIT
Optional but useful: Leonxlnx/taste-skill (MIT) for style vocabulary,
tweakcn.com/editor/theme for shadcn tokens.
Step 1 — Look at real references
Collect 10 screenshots: three the user already likes, seven you choose to cover opposite ends (dense/airy, editorial/product, quiet/loud).
Save each one into refs/ at desktop width. Use whatever screenshot tool you have —
your browser tool, or this zero-install one-liner:
npx -y capture-website-cli <url> --output refs/<name>.png --width 1440 --full-page
Then actually read the PNGs. For each, name in one line: grid, type scale, colour share, and what carries the emphasis. A reference you have not described is a reference you have not used.
Step 2 — Force different directions
In this order. Do not skip step 2b — it is the only part that breaks the rut.
node <impeccable>/scripts/palette.mjs --from <project-key>
node <impeccable>/scripts/concept-seed.mjs --scope direction --mode <persuade|operate|read|experience>
palette.mjsreturns one OKLCH seed from 129 curated colours. Compose the five roles (bg, surface, ink, accent, muted) yourself from brief + seed. It deliberately does not hand you a finished palette.concept-seed.mjsassigns an index away from the model's own shortlist and adds six challengers.--reroll <n>is reproducible.- Cross-check the result against
design-vault/guides/style-presets.md: is it near an existing preset, or genuinely new? Near a preset is allowed — unknowingly near is not. - Build 3–5 variants of one component with
emilkowalski/skills→prototype. It puts them behind a picker you can flip through, with promote/cleanup.
Step 3 — Pick one
Two of the tools disagree here, on purpose. Resolve it by context:
| Situation | Use | Why |
|---|---|---|
| Client project | prototype picker, 3–5 side by side |
The client has to co-decide; a lineup is the decision |
| Your own surface | concept-seed assigned roll + --reroll |
A lineup hands selection back to a taste function, and taste functions pick the safest card |
Then flip the variants in a real browser (impeccable live) and change what is wrong
in place — it writes back to the actual source, not to a scratch file.
Step 4 — Lock it in one file
Write DESIGN.md at the project root: the five colour roles with hex + OKLCH, both
type faces with their scale, radius, spacing unit, motion level, and a Do-not list
of three things this direction rules out.
⚠️ impeccable and website-builder both write a file called DESIGN.md with different
schemas, and impeccable/scripts/doctor.mjs only recognises drift in its own format.
Pick one owner before both run in the same project. Default: impeccable's schema, and
website-builder reads it rather than writing its own.
Step 5 — Motion pass, then ship gate
# after components exist
npx shadcn@latest apply --preset <id> --only theme,font # or export from tweakcn
Run emil-design-eng for the interaction work, then review-animations — it returns a
hard block or approve verdict against ten non-negotiable standards. Finish with
impeccable's detector (59 deterministic rules). Do not ship on a block.
Output
A DESIGN.md at the project root, a refs/ folder with the ten described screenshots,
and 3–5 promoted variants in the repo with one marked as chosen.
Quality checklist
- Ten references collected and each described in one line
-
concept-seed.mjswas actually run — not "I considered several directions" - The chosen direction was checked against
style-presets.mdand the relation named -
DESIGN.mdexists, has all five colour roles, and a Do-not list of three - One owner for
DESIGN.mddecided and written down -
review-animationsreturned approve, and the detector is clean
Credits
impeccable — Paul Bakaus, Apache-2.0 · skills — Emil Kowalski, MIT ·
taste-skill — Leonxlnx, MIT · tweakcn — Apache-2.0.
We link them, we do not host them. This skill is the order they run in.
✦ or: the whole library at once
Skip the downloads — one MCP connector, every skill right inside your agent, always current.
See the MCP