Agent 37 Deep Dive
Taste Skill
Giving your AI coding agent good design taste
github.com/Leonxlnx/taste-skill
4.9k stars · 447 forks · 46 commits
Part 1
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.
Part 2
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:
| Dial | Low (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
| Icons | Phosphor or Radix only |
| Emojis | BANNED everywhere |
| State | useState/useReducer for local only |
| Container | max-w-[1400px] mx-auto |
| Grids | CSS Grid over Flexbox math |
| Breakpoints | sm, 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
| Stars | 4,900+ |
| Forks | 447 |
| Commits | 46 |
| Skills | 7 |
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