Taste Skill

Giving your AI coding agent good design taste

github.com/Leonxlnx/taste-skill

4.9k stars · 447 forks · 46 commits

ELI5

The simple version anyone can understand

AI Makes Boring Websites

Ask an AI to build you a website, and you almost always get the same thing:

What AI gives you

  • Same font every time (Inter)
  • Three identical cards in a row
  • Purple glowing buttons
  • Fake names like "John Doe"
  • Text saying "Lorem ipsum..."
  • Everything centered, everything the same
vs.

What you actually want

  • Unique, premium typography
  • Interesting asymmetric layouts
  • Elegant, subtle color palettes
  • Realistic data and content
  • Smooth, natural animations
  • A site that looks like a designer made it

Taste Skill = A Recipe Book for Your AI

Think of it like this:

Your AI is a talented chef who can cook anything — but left alone, it always makes plain toast.

Taste Skill hands it a Michelin-star recipe book with strict rules: "never use ketchup, always use real ingredients, plate it beautifully."

It is a set of Markdown instruction files that get loaded into your AI coding agent, overriding its default "generic" instincts with premium design rules.

One Command, Seven Flavors

npx skills add https://github.com/Leonxlnx/taste-skill

That is it. Now your AI has access to seven specialized design "flavors":

taste-skill

The core recipe: layouts, fonts, colors, animations

redesign-skill

Audits and upgrades existing projects

soft-skill

Luxurious, soft, premium aesthetic

output-skill

Stops AI from being lazy with code

minimalist-skill

Clean editorial style (Notion/Linear)

brutalist-skill

Raw industrial CRT terminal look

stitch-skill

Google Stitch-compatible design rules

The Three Dials

The core taste-skill has three knobs you can turn (1-10 each) to control the vibe:

Design Variance

8
1 = perfectly symmetric → 10 = artsy chaos

How "experimental" the layout feels

Motion Intensity

6
1 = no animation → 10 = cinematic

How much things move and animate

Visual Density

4
1 = art gallery → 10 = pilot cockpit

How packed with content each screen is

Default baseline: (8, 6, 4) — asymmetric, fluid, airy. The AI dynamically adjusts these based on what you ask for in your prompts.

Technical Deep Dive

Architecture, anti-patterns, code enforcement, and design engineering

Repository Architecture

.
+-- .github/
|   +-- FUNDING.yml
|   +-- copilot-instructions.md
+-- examples/
|   +-- floria-bottom.webp
|   +-- floria-full.webp
|   +-- floria-top.webp
+-- research/
|   +-- laziness/          # Why AI produces incomplete output
|   +-- README.md
+-- skills/
|   +-- taste-skill/SKILL.md     # Core design skill
|   +-- redesign-skill/SKILL.md  # Audit & upgrade
|   +-- soft-skill/SKILL.md      # Premium aesthetic
|   +-- output-skill/SKILL.md    # Anti-laziness
|   +-- minimalist-skill/SKILL.md
|   +-- brutalist-skill/SKILL.md
|   +-- stitch-skill/SKILL.md
|   +-- llms.txt                 # Skill index
+-- README.md

Each skill is a standalone SKILL.md file inside its own directory. The llms.txt file provides a machine-readable index. Installation is via npx skills add, which works with Cursor, Claude Code, Antigravity, and other AI coding agents.

How Skills Work

A "skill" is a Markdown file that gets injected into an AI agent's system prompt at code-generation time. It acts as a persistent instruction layer.

The Mechanism

  • Each SKILL.md defines a persona and directives
  • YAML frontmatter provides name and description
  • Rules override the LLM's default statistical biases
  • Agent loads the skill into context before generating code
  • Works with any agent that supports the skills protocol

Example Frontmatter

---
name: design-taste-frontend
description: Senior UI/UX Engineer.
  Architect digital interfaces
  overriding default LLM biases.
  Enforces metric-based rules,
  strict component architecture,
  CSS hardware acceleration,
  and balanced design
  engineering.
---

The Core Problem: LLM Design Bias

LLMs are trained on massive code corpora. That training creates statistical biases toward the most common patterns — which are almost always the most generic ones.

Statistical Defaults the LLM Reaches For

  • Inter font (appears in millions of codebases)
  • Three-column equal card grids
  • Centered hero sections
  • Purple/blue AI gradient buttons
  • Pure black #000000 text
  • Generic Lucide/FontAwesome icons
  • Static UI with no interaction states
  • Linear easing on all transitions

Taste Skill's Corrections

  • Force Geist, Outfit, Cabinet Grotesk, Satoshi
  • Ban 3-column grids, require asymmetry
  • Ban centered heroes when variance > 4
  • Ban purple/neon; enforce neutral + 1 accent
  • Require off-black (Zinc-950, #0a0a0a)
  • Mandate Phosphor or Radix icons only
  • Require loading, empty, error, and active states
  • Spring physics with custom cubic-bezier

The Three-Dial System (Technical)

The dials are not just vibes — they are conditional logic branches that change the generated code:

DialLow (1-3)Mid (4-7)High (8-10)
Design Variance Flexbox justify-center, strict 12-col symmetric grids Overlapping margins, mixed aspect ratios, left-aligned headers Masonry, CSS Grid fractional units, massive padding-left: 20vw empty zones
Motion Intensity No auto-animations. CSS :hover and :active only Custom cubic-bezier, animation-delay cascades, transform+opacity only Scroll-triggered parallax, Framer Motion hooks, spring physics. Never addEventListener('scroll')
Visual Density "Art Gallery" — huge white space, expensive feel "Daily App" — normal spacing for standard web apps "Cockpit" — tiny padding, 1px dividers, monospace for all numbers

Mobile Override: For variance levels 4-10, any asymmetric layout above md: MUST fall back to single-column w-full, px-4, py-8 on viewports < 768px. This is enforced unconditionally.

Design Engineering Directives

Seven concrete rules form the backbone of the taste-skill:

Rule 1: Deterministic Typography

  • Headlines: text-4xl md:text-6xl tracking-tighter
  • Body: text-base text-gray-600 max-w-[65ch]
  • Serif fonts BANNED for dashboard UIs
  • Mandatory font pairings: Geist + Geist Mono

Rule 2: Color Calibration

  • Max 1 accent color, saturation < 80%
  • "AI Purple" aesthetic is strictly banned
  • Neutral base (Zinc/Slate) + singular accent
  • Never mix warm and cool grays

Rule 3: Layout Diversification

  • Centered heroes banned when variance > 4
  • Force split-screen, left-aligned, or asymmetric

Rule 4: Materiality & Anti-Card Overuse

  • For density > 7, cards are BANNED
  • Use border-t, divide-y, or negative space
  • Shadows must be hue-tinted to background

Rule 5: Interactive UI States

  • Skeletal loaders (not spinners)
  • Beautiful empty states
  • Inline error reporting
  • Tactile feedback: scale-[0.98] on active

Rule 6: Data & Form Patterns

  • Label above input, error below
  • Standard gap-2 spacing
  • Helper text optional but in markup

"AI Tells" — Forbidden Patterns

The skill defines specific patterns that instantly betray AI-generated code. These are strictly banned:

Visual & CSS Tells

  • Neon/outer glow box-shadow
  • Pure black #000000 anywhere
  • Oversaturated accent colors
  • Gradient text on large headers
  • Custom mouse cursors

Typography Tells

  • Inter font (the universal "AI default")
  • Oversized H1s that "scream"
  • Serif on clean dashboards

Content Tells ("The Jane Doe Effect")

  • "John Doe", "Sarah Chan" — generic names
  • Perfect round numbers: 99.99%, 50%
  • Startup names: "Acme", "Nexus", "SmartFlow"
  • Filler words: "Elevate", "Seamless", "Unleash"
  • Broken Unsplash image links
  • Emojis anywhere (the Anti-Emoji Policy)

Layout Tells

  • 3 equal cards in a row
  • Everything centered symmetrically
  • Awkward floating gaps

Creative Proactivity (Anti-Slop)

Beyond banning bad patterns, the skill prescribes specific high-end techniques:

Liquid Glass Refraction

When glassmorphism is needed: go beyond backdrop-blur. Add a 1px inner border border-white/10 and a subtle inner shadow to simulate physical edge refraction.

Magnetic Micro-Physics

When motion > 5: buttons pull toward the cursor. Must use Framer Motion's useMotionValue and useTransform, never React useState (which causes render-loop performance collapse).

Perpetual Micro-Interactions

When motion > 5: embed continuous animations — pulse, typewriter, float, shimmer — with spring physics (stiffness: 100, damping: 20).

Layout Transitions

Use Framer Motion layout and layoutId props for smooth re-ordering and shared element transitions.

Staggered Orchestration

Never mount lists instantly. Use staggerChildren or CSS cascade delays for sequential waterfall reveals.

/* CSS cascade approach */
animation-delay:
  calc(var(--index) * 100ms);

/* Or Framer Motion */
variants: {
  show: {
    transition: {
      staggerChildren: 0.1
    }
  }
}

The Creative Arsenal

Section 8 of the taste-skill provides a catalog of ~40 premium interaction patterns the AI should pull from:

Navigation

  • Mac OS Dock Magnification
  • Gooey liquid detach menu
  • Dynamic Island morphing pill
  • Contextual radial menu at click point

Layout & Grids

  • Bento Grid (Apple Control Center)
  • Masonry (Pinterest)
  • Split Screen Scroll (opposing halves)
  • Curtain Reveal on scroll

Cards & Containers

  • Parallax 3D tilt card (mouse tracking)
  • Spotlight border illumination
  • Holographic foil iridescence
  • Morphing Modal expansion

Scroll Animations

  • Sticky scroll card stacking
  • Horizontal scroll hijack
  • SVG path scroll progress drawing
  • Liquid swipe page transitions

Typography & Text

  • Kinetic marquee (direction-sensitive)
  • Text mask reveal over video
  • Matrix-style text scramble
  • Circular text path spinning

Micro-Interactions

  • Particle explosion on CTA success
  • Directional hover-aware button fill
  • Mesh gradient animated backgrounds
  • Lens blur depth for foreground focus

Performance Guardrails

The skill enforces strict performance rules to prevent the AI from generating beautiful but unusable code:

GPU-Safe Animation

NEVER animate top, left, width, or height.

ONLY animate via transform and opacity.

Blur Constraints

  • backdrop-blur only on fixed/sticky elements
  • Never on scrolling containers
  • Causes continuous GPU repaints on mobile

DOM Cost Control

  • Grain/noise overlays on fixed inset-0 pointer-events-none pseudo-elements only
  • Never attached to scrolling containers

Z-Index Discipline

  • No arbitrary z-50 or z-[9999]
  • Reserved for systemic layers only: nav, modals, overlays

Viewport Stability

  • Never h-screen for hero sections
  • Always min-h-[100dvh] to prevent iOS Safari jump

Default Architecture Conventions

The taste-skill assumes a specific technical stack and enforces conventions around it:

Framework Defaults

  • React or Next.js
  • Default to Server Components (RSC)
  • Interactive parts isolated as 'use client' leaf components
  • Tailwind CSS v3/v4 for 90% of styling

Dependency Verification

Before importing ANY 3rd-party library, you MUST check package.json. If missing, output the install command first. Never assume a library exists.

Strict Policies

IconsPhosphor or Radix only
EmojisBANNED everywhere
StateuseState/useReducer for local only
Containermax-w-[1400px] mx-auto
GridsCSS Grid over Flexbox math
Breakpointssm, md, lg, xl standardized

Tailwind Version Lock

Must check package.json for v3 vs v4. v4 uses @tailwindcss/postcss plugin, not the v3 approach.

Soft Skill: $150k Agency Aesthetic

The soft-skill variant targets "Awwwards-tier" luxury design with a creative variance engine:

Vibe Archetypes (Pick 1)

Ethereal Glass — OLED black, radial mesh gradients, vantablack cards with heavy backdrop-blur-2xl

Editorial Luxury — warm creams, muted sage, variable serif fonts, CSS film-grain overlay at opacity-[0.03]

Soft Structuralism — silver-grey, massive bold Grotesk type, ultra-diffused ambient shadows

The "Double-Bezel" Pattern

Every premium card uses nested enclosures like machined hardware:

<!-- Outer Shell -->
<div class="bg-black/5
  ring-1 ring-black/5
  p-1.5 rounded-[2rem]">

  <!-- Inner Core -->
  <div class="bg-white
    shadow-[inset_0_1px_1px_...]
    rounded-[calc(2rem-0.375rem)]">
    ...content...
  </div>

</div>

Outer shell + inner core = physical depth illusion. Radius is mathematically concentric.

Redesign Skill: Audit & Upgrade

A systematic 3-step process for upgrading existing projects without rewrites:

1. Scan
→
2. Diagnose
→
3. Fix

The diagnosis phase runs a comprehensive 10-category audit:

  • Typography — replace defaults, fix widows, add weight variety
  • Color & Surface — off-black, desaturate, tinted shadows, add texture
  • Layout — break symmetry, use 100dvh, prefer Grid
  • Interactivity — hover, active, focus, skeleton loaders
  • Content — real names, organic data, no lorem ipsum
  • Components — eliminate generic cards, diversify buttons
  • Iconography — Phosphor/Heroicons, consistent stroke
  • Code Quality — semantic HTML, meta tags, z-index scale
  • Strategic Omissions — 404 pages, privacy links, skip-to-content
  • Execution Order — fonts first, then colors, states, layout, components

Critical rule: Preserve existing tech stack. No framework migrations. Maintain all existing functionality. Test comprehensively after changes.

Minimalist vs. Brutalist: Opposing Philosophies

Minimalist Skill

Notion/Linear-inspired editorial design

  • Warm monochrome palette: bone #F7F6F3
  • Ultra-light borders: 1px solid #EAEAEA
  • Fonts: SF Pro Display, Geist Sans, Switzer
  • Serif headlines: Lyon Text, Newsreader
  • Shadows at < 0.05 opacity
  • Entry animations: translateY(12px) over 600ms
  • Background drift: 20+ second durations
  • Solid black buttons #111111, 4-6px radius

Banned: Inter, Roboto, Lucide, Feather, gradients, emojis, heavy shadows

Brutalist Skill (Beta)

Swiss typography meets CRT terminal aesthetics

  • Two paradigms: Swiss Industrial Print or Tactical Telemetry
  • Light: #F4F4F0 bg, #050505 text
  • Dark: #0A0A0A bg, #E61919 accent red
  • Terminal green #4AF626 sparingly
  • 90-degree corners only — no border-radius
  • ASCII framing: brackets, crosshairs, barcodes
  • CRT scanlines via repeating gradients
  • Halftone/dithering via mix-blend-mode

Banned: gradients, shadows, translucency, rounded corners

Output Skill & Stitch Skill

Output Skill: Anti-Laziness Enforcement

Addresses AI's tendency to produce incomplete code:

"Treat every task as production-critical. A partial output is a broken output."

Banned Shortcuts

  • // ... and // TODO placeholder comments
  • Ellipsis replacing omitted code
  • "For brevity..." or "similarly for the remaining..."
  • Skeleton outputs when full implementation was requested
  • Describing code instead of writing it

When hitting token limits: write at full quality to a clean breakpoint, then emit a structured pause marker for resumption.

Stitch Skill: Google Stitch Bridge

Generates DESIGN.md files compatible with Google Stitch's AI screen generation pipeline.

  • Translates taste-skill directives into semantic design language
  • Same three-dial system (variance, motion, density)
  • Same anti-patterns and font rules
  • Adds hero section standards: inline image typography at type-height
  • Enforces strict spatial separation: no overlapping elements
  • Touch targets minimum 44px
  • Typography scaling via clamp()
  • Section gaps: clamp(3rem, 8vw, 6rem)

Essentially a "translation layer" so taste-skill principles work inside Google's tooling.

The "Motion-Engine" Bento Paradigm

Section 9 of the taste-skill defines a specific architecture for modern SaaS dashboards:

Design Spec

  • Background: #f9fafb
  • Cards: pure white #ffffff
  • Border: 1px border-slate-200/50
  • Radius: rounded-[2.5rem] for all containers
  • "Diffusion shadow" — ultra-wide, ultra-light
  • Font: strict Geist/Satoshi/Cabinet Grotesk
  • Titles and descriptions outside and below cards

The Philosophy

"Vercel-core meets Dribbble-clean" — perpetual physics-driven bento grid where every tile has its own micro-animation running continuously.

Shadow Formula

shadow-[
  0_20px_40px_-15px_
  rgba(0,0,0,0.05)
]

Wide spread, low opacity, large negative offset — creates a "floating" effect without harsh edges.

Animation Library Integration

  • Framer Motion for UI/Bento interactions (default)
  • GSAP + ScrollTrigger for full-page scrolltelling
  • Three.js/WebGL for 3D canvas backgrounds

Never mix GSAP/Three.js with Framer Motion in the same component tree. Isolate in strict useEffect cleanup blocks.

Execution Protocol & Pre-Output Checklist

The soft-skill defines an exact 5-step sequence the AI must follow:

1. Roll Variance Engine
→
2. Scaffold
→
3. Architect
→
4. Choreograph
→
5. Output

Before delivering, the AI must pass this checklist:

  • No banned fonts, icons, borders, shadows, layouts
  • Vibe + Layout archetype consciously selected
  • All cards use Double-Bezel nested architecture
  • CTA buttons use Button-in-Button trailing icon
  • Section padding minimum py-24
  • All transitions use custom cubic-bezier curves
  • Scroll entry animations present on every element
  • Graceful collapse below 768px to single-column
  • Animations use only transform and opacity
  • Overall impression reads as "$150k agency build"

Compatibility & Ecosystem

Supported AI Agents

  • Cursor — via skills protocol integration
  • Claude Code — Anthropic's CLI agent
  • Antigravity — AI development platform
  • Google Stitch — via stitch-skill translation
  • Any agent supporting the npx skills protocol

Project Stats

Stars4,900+
Forks447
Commits46
Skills7

What Makes This Approach Unique

  • Prompt engineering as design system — design rules encoded as Markdown, not CSS libraries
  • Bias correction, not generation — overrides statistical defaults rather than adding new capabilities
  • Parameterized via dials — three numeric axes let you tune output without editing the skill file
  • Composable — pick one skill or combine several
  • Framework-aware — checks package.json, Tailwind version, RSC boundaries
  • Performance-aware — GPU-safe animation rules built in

Key Takeaways

  • AI coding agents have design biases baked in from training data — they default to the most common (and most generic) patterns
  • Skills are Markdown instruction files injected into the agent's context at code-generation time, overriding those defaults
  • Taste Skill encodes a comprehensive design system covering typography, color, layout, motion, interaction states, content quality, and performance
  • The three-dial system (variance, motion, density) parameterizes output without editing the skill files
  • Seven specialized variants let you choose between minimalist, brutalist, soft luxury, redesign audit, and more
  • The approach treats prompt engineering as a design discipline — encoding expert knowledge as instructions rather than code

npx skills add https://github.com/Leonxlnx/taste-skill