What’s new here
Tastemaker adds executable checkpoints to AI UI generation. check_contrast.py --matrix runs real WCAG math over every palette pairing and reports which combinations may carry text, which may carry a border, and which may carry neither. generate_palette.py builds a fresh palette per project in OKLCH, solving each role’s lightness against the contrast floors by construction. anti_slop_scan.py flags tells like generic purple gradients, transition-all, emoji icons, and placeholder copy. The results are written to .tastemaker/style-lock.md and ~/.tastemaker/profile.md, so decisions survive the session and carry into the next project.
What it does
Tastemaker installs as a skill for Claude Code, Windsurf, or Gemini CLI. Once installed, it triggers on its own when you ask your agent to build or style a UI. No explicit invocation.
Its core loop:
- If you supply a reference image,
extract_palette.pyreads real pixel values from it. If you don’t,generate_palette.pyclassifies your app idea into a mood (premium, warm, technical, playful, or elegant) and builds a palette from a randomly chosen base hue and color-harmony rule, solved against the contrast matrix. - Icons, photos (Openverse), and illustrations (recolored unDraw SVGs) are sourced without API keys.
- A constructed geometric logo and full favicon set replace the default letter-in-a-box mark.
- GSAP and ScrollTrigger motion is wired during the build.
audit_motion.pythen checks for common craft failures likeease-in,scale(0), and missingprefers-reduced-motionhandling. - Style decisions are written to
.tastemaker/style-lock.md(project) and~/.tastemaker/profile.md(personal), so later screens stay consistent and the next project starts with your accumulated preferences.
The palette generator accepts --mood and an optional --seed. Omit the seed and every run produces a different, contrast-clean palette. Pass the seed to reproduce an exact result.
Who it’s for
Developers who use Claude Code, Windsurf, or Gemini CLI to build UIs and are tired of the indigo-gradient default every model reaches for. It helps most when you are shipping real product screens, not one-off prototypes, because the lock files and profile memory pay off over multiple sessions and projects. You need Python 3 and Pillow for the deterministic color extraction script; without Pillow it falls back to a vision-based read.
Try it
Claude Code plugin (recommended):
/plugin marketplace add codeswithroh/tastemaker
/plugin install tastemaker@codeswithrohManual install (Claude Code without the plugin system, or Windsurf):
git clone https://github.com/codeswithroh/tastemaker /tmp/tastemaker
cp -r /tmp/tastemaker/skills/tastemaker ~/.claude/skills/tastemakerFor Windsurf, copy the same folder into .windsurf/skills/ instead.
Gemini CLI:
gemini skills install https://github.com/codeswithroh/tastemaker --path skills/tastemakerAfter installation, restart your agent and try:
build a landing page for a coffee subscription
To run the palette generator directly, from inside the skills/tastemaker folder:
python3 scripts/generate_palette.py --mood technicalHow mature is it
445 stars, 46 forks, 1 contributor. Created July 2026, last pushed September 2026. 95 commits in the past 90 days. No formal releases. 13 open issues and pull requests. MIT licensed. Solo project, actively developed.