design taste for coding agents

Your agent writes working code.
It doesn't write good taste.

Tastemaker is a local skill that gives Claude Code, Gemini CLI, and Windsurf a real design process: study references, lock a palette that passes contrast, cast real assets, and remember what you keep.

npx skills add codeswithroh/tastemaker

Not a prompt pack. A real local skill.

the problem

Every agent defaults to the same page.

Purple-to-indigo gradient hero. Rounded card, soft shadow. A palette picked because it looked fine in the moment, never checked against anything. Ask ten agents for a landing page and you'll recognize the ninth one before it finishes rendering.

$ anti_slop_scan.py generic-agent-output.html
  • HIGHai-gradientindigo-to-purple hero, unrelated to the product underneath it
  • HIGHunchecked-contrastcolors picked by eye, never run against a single pairing
  • MEDno-style-locknext screen in the same session drifts, nothing persists

how it works

Six checks run before the first component exists.

Every one of these is real: a script, a Markdown file, or a gate that has to pass. Nothing here is decorative.

$ tastemaker build --project tastemaker-skill.online
  • PASSreference-intelligencecompetitor + cultural board built before the first color
  • PASScontrast-checkevery pairing run through real WCAG math
  • PASSreal-assetsreal photography, real icons, real screenshots, no gray boxes
  • PASSmotion-by-defaultscroll-driven reveals ship in the same pass, not a later step
  • PASSstyle-lockpalette and type reused on every later screen, not re-derived
  • PASSregister-varietybrutalist, glassmorphic, minimalist, or calm — one committed direction

proof, not claims

Checked with real math, not eyeballed.

Every pairing on this page runs through check_contrast.py before it ships. These are this page's actual numbers.

text / background 16.15 PASS
label / primary 4.63 PASS
accent / dark surface 6.60 PASS
See the full before/after comparison

premium modes

Different products shouldn't wear the same suit.

Four sponsor-exclusive visual registers, generated by the same engine, committing to a real direction instead of a default.

Brutalist mode: a finance dashboard with heavy black type, a yellow highlight block, and hard-edged cards.
BrutalistHeavy type, hard edges, no apology.
Glassmorphic mode: a design-review tool with soft frosted panels over a warm gradient.
GlassmorphicLayered translucency, soft depth.
Minimalist mode: a clean, restrained product screen with generous whitespace.
MinimalistRestraint as the whole style.
Soft calm mode: a gentle, low-contrast interface with rounded, quiet shapes.
Soft / CalmLow contrast, unhurried pacing.

Sponsor-exclusive, on top of the free core skill.

Unlock for $8/month

what changed

The skill remembers your taste.

Project style choices live in the repo. Personal preferences can live locally. A rejected direction becomes a guardrail for next time instead of getting forgotten.

.tastemaker/this project
├── style-lock.md Palette, type, shape, assets, motion, and do-not rules for this project.
└── decisions.log Append-only keep, reject, and pending-review decisions from every design pass.
~/.tastemaker/your machine, every project
└── profile.md Reusable preferences, promoted only when you choose or repeat them.

free and local

Install once. Ask normally.

No hosted editor, no account, no separate design handoff. The taste layer lives where the agent already works.

npx skills add codeswithroh/tastemaker

Using Claude Code specifically? The plugin marketplace and manual install work too.