AI Instruction: The standard baseline for all generations is strictly set to these values (8, 6, 4). Do not ask the user to edit this file. Otherwise, ALWAYS listen to the user: adapt these values dynamically based on what they explicitly request in their chat prompts. Use these baseline (or user-overridden) values as your global variables to drive the specific logic in Sections 3 through 7.
The original v1 taste-skill, preserved for projects depending on its exact behavior. The current default is `design-taste-frontend` (v2 experimental), which is a substantial rewrite. Use this v1 install name only if you need exact backward compatibility.
The verbatim description from this skill’s front matter — the string an agent matches on to decide whether to load it.
MIT — the text of every skill is reproduced unmodified, frontmatter included, under the upstream licence.
Discovery
13 skills found by walking the repository tree for SKILL.md, not by matching a directory convention. One layout observed: skills/*/SKILL.md.
Issue colours
Resolved from a deterministic hash of the owner name. Two accent tones are generated per issue and each is proven against its own ground before it ships: a single accent that passes AA on both light and dark paper is arithmetically impossible.
Heading repairs
1 repair applied to this skill so the document has one h1 and no skipped levels:
Shifted “30 headings” from h1 to h2 so the skill title is the only h1.
Spec compliance
10 editorial notes across 10 of 13 skills. They are printed in the margin of each skill rather than as errors here.
Unless the user explicitly specifies a different stack, adhere to these structural constraints to maintain consistency:
DEPENDENCY VERIFICATION [MANDATORY]: Before importing ANY 3rd party library (e.g. framer-motion, lucide-react, zustand), you MUST check package.json. If the package is missing, you MUST output the installation command (e.g. npm install package-name) before providing the code. Never assume a library exists.
Framework & Interactivity: React or Next.js. Default to Server Components (RSC).
RSC SAFETY: Global state works ONLY in Client Components. In Next.js, wrap providers in a "use client" component.
INTERACTIVITY ISOLATION: If Sections 4 or 7 (Motion/Liquid Glass) are active, the specific interactive UI component MUST be extracted as an isolated leaf component with 'use client' at the very top. Server Components must exclusively render static layouts.
State Management: Use local useState/useReducer for isolated UI. Use global state strictly for deep prop-drilling avoidance.
Styling Policy: Use Tailwind CSS (v3/v4) for 90% of styling.
TAILWIND VERSION LOCK: Check package.json first. Do not use v4 syntax in v3 projects.
T4 CONFIG GUARD: For v4, do NOT use tailwindcss plugin in postcss.config.js. Use @tailwindcss/postcss or the Vite plugin.
ANTI-EMOJI POLICY [CRITICAL]: NEVER use emojis in code, markup, text content, or alt text. Replace symbols with high-quality icons (Radix, Phosphor) or clean SVG primitives. Emojis are BANNED.
Responsiveness & Spacing:
Standardize breakpoints (sm, md, lg, xl).
Contain page layouts using max-w-[1400px] mx-auto or max-w-7xl.
Viewport Stability [CRITICAL]: NEVER use h-screen for full-height Hero sections. ALWAYS use min-h-[100dvh] to prevent catastrophic layout jumping on mobile browsers (iOS Safari).
Grid over Flex-Math: NEVER use complex flexbox percentage math (w-[calc(33%-1rem)]). ALWAYS use CSS Grid (grid grid-cols-1 md:grid-cols-3 gap-6) for reliable structures.
Icons: You MUST use exactly @phosphor-icons/react or @radix-ui/react-icons as the import paths (check installed version). Standardize strokeWidth globally (e.g., exclusively use 1.5 or 2.0).
LLMs have statistical biases toward specific UI cliché patterns. Proactively construct premium interfaces using these engineered rules:
Rule 1: Deterministic Typography
Display/Headlines: Default to text-4xl md:text-6xl tracking-tighter leading-none.
ANTI-SLOP: Discourage Inter for “Premium” or “Creative” vibes. Force unique character using Geist, Outfit, Cabinet Grotesk, or Satoshi.
TECHNICAL UI RULE: Serif fonts are strictly BANNED for Dashboard/Software UIs. For these contexts, use exclusively high-end Sans-Serif pairings (Geist + Geist Mono or Satoshi + JetBrains Mono).
Body/Paragraphs: Default to text-base text-gray-600 leading-relaxed max-w-[65ch].
Rule 2: Color Calibration
Constraint: Max 1 Accent Color. Saturation < 80%.
THE LILA BAN: The “AI Purple/Blue” aesthetic is strictly BANNED. No purple button glows, no neon gradients. Use absolute neutral bases (Zinc/Slate) with high-contrast, singular accents (e.g. Emerald, Electric Blue, or Deep Rose).
COLOR CONSISTENCY: Stick to one palette for the entire output. Do not fluctuate between warm and cool grays within the same project.
Rule 3: Layout Diversification
ANTI-CENTER BIAS: Centered Hero/H1 sections are strictly BANNED when DESIGN_VARIANCE > 4. Force “Split Screen” (50/50), “Left Aligned content/Right Aligned asset”, or “Asymmetric White-space” structures.
Rule 4: Materiality, Shadows, and “Anti-Card Overuse”
DASHBOARD HARDENING: For VISUAL_DENSITY > 7, generic card containers are strictly BANNED. Use logic-grouping via border-t, divide-y, or purely negative space. Data metrics should breathe without being boxed in unless elevation (z-index) is functionally required.
Execution: Use cards ONLY when elevation communicates hierarchy. When a shadow is used, tint it to the background hue.
Rule 5: Interactive UI States
Mandatory Generation: LLMs naturally generate “static” successful states. You MUST implement full interaction cycles:
To actively combat generic AI designs, systematically implement these high-end coding concepts as your baseline:
“Liquid Glass” Refraction: When glassmorphism is needed, go beyond backdrop-blur. Add a 1px inner border (border-white/10) and a subtle inner shadow (shadow-[inset_0_1px_0_rgba(255,255,255,0.1)]) to simulate physical edge refraction.
Magnetic Micro-physics (If MOTION_INTENSITY > 5): Implement buttons that pull slightly toward the mouse cursor. CRITICAL: NEVER use React useState for magnetic hover or continuous animations. Use EXCLUSIVELY Framer Motion’s useMotionValue and useTransform outside the React render cycle to prevent performance collapse on mobile.
Perpetual Micro-Interactions: When MOTION_INTENSITY > 5, embed continuous, infinite micro-animations (Pulse, Typewriter, Float, Shimmer, Carousel) in standard components (avatars, status dots, backgrounds). Apply premium Spring Physics (type: "spring", stiffness: 100, damping: 20) to all interactive elements—no linear easing.
Layout Transitions: Always utilize Framer Motion’s layout and layoutId props for smooth re-ordering, resizing, and shared element transitions across state changes.
Staggered Orchestration: Do not mount lists or grids instantly. Use staggerChildren (Framer) or CSS cascade (animation-delay: calc(var(--index) * 100ms)) to create sequential waterfall reveals. CRITICAL: For staggerChildren, the Parent (variants) and Children MUST reside in the identical Client Component tree. If data is fetched asynchronously, pass the data as props into a centralized Parent Motion wrapper.
DOM Cost: Apply grain/noise filters exclusively to fixed, pointer-event-none pseudo-elements (e.g., fixed inset-0 z-50 pointer-events-none) and NEVER to scrolling containers to prevent continuous GPU repaints and mobile performance degradation.
Hardware Acceleration: Never animate top, left, width, or height. Animate exclusively via transform and opacity.
Z-Index Restraint: NEVER spam arbitrary z-50 or z-10 unprompted. Use z-indexes strictly for systemic layer contexts (Sticky Navbars, Modals, Overlays).
4-7 (Offset): Use margin-top: -2rem overlapping, varied image aspect ratios (e.g., 4:3 next to 16:9), left-aligned headers over center-aligned data.
8-10 (Asymmetric): Masonry layouts, CSS Grid with fractional units (e.g., grid-template-columns: 2fr 1fr 1fr), massive empty zones (padding-left: 20vw).
MOBILE OVERRIDE: For levels 4-10, any asymmetric layout above md: MUST aggressively fall back to a strict, single-column layout (w-full, px-4, py-8) on viewports < 768px to prevent horizontal scrolling and layout breakage.
1-3 (Static): No automatic animations. CSS :hover and :active states only.
4-7 (Fluid CSS): Use transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1). Use animation-delay cascades for load-ins. Focus strictly on transform and opacity. Use will-change: transform sparingly.
8-10 (Advanced Choreography): Complex scroll-triggered reveals or parallax. Use Framer Motion hooks. NEVER use window.addEventListener('scroll').
1-3 (Art Gallery Mode): Lots of white space. Huge section gaps. Everything feels very expensive and clean.
4-7 (Daily App Mode): Normal spacing for standard web apps.
8-10 (Cockpit Mode): Tiny paddings. No card boxes; just 1px lines to separate data. Everything is packed. Mandatory: Use Monospace (font-mono) for all numbers.
Align & Space Perfectly: Ensure padding and margins are mathematically perfect. Avoid floating elements with awkward gaps.
NO 3-Column Card Layouts: The generic “3 equal cards horizontally” feature row is BANNED. Use a 2-column Zig-Zag, asymmetric grid, or horizontal scrolling approach instead.
NO Broken Unsplash Links: Do not use Unsplash. Use absolute, reliable placeholders like https://picsum.photos/seed/{random_string}/800/600 or SVG UI Avatars.
shadcn/ui Customization: You may use shadcn/ui, but NEVER in its generic default state. You MUST customize the radii, colors, and shadows to match the high-end project aesthetic.
Production-Ready Cleanliness: Code must be extremely clean, visually striking, memorable, and meticulously refined in every detail.
Do not default to generic UI. Pull from this library of advanced concepts to ensure the output is visually striking and memorable. When appropriate, leverage GSAP (ScrollTrigger/Parallax) for complex scrolltelling or ThreeJS/WebGL for 3D/Canvas animations, rather than basic CSS motion. CRITICAL: Never mix GSAP/ThreeJS with Framer Motion in the same component tree. Default to Framer Motion for UI/Bento interactions. Use GSAP/ThreeJS EXCLUSIVELY for isolated full-page scrolltelling or canvas backgrounds, wrapped in strict useEffect cleanup blocks.
Stop doing centered text over a dark image. Try asymmetric Hero sections: Text cleanly aligned to the left or right. The background should feature a high-quality, relevant image with a subtle stylistic fade (darkening or lightening gracefully into the background color depending on if it is Light or Dark mode).
When generating modern SaaS dashboards or feature sections, you MUST utilize the following “Bento 2.0” architecture and motion philosophy. This goes beyond static cards and enforces a “Vercel-core meets Dribbble-clean” aesthetic heavily reliant on perpetual physics.
Palette: Background in #f9fafb. Cards are pure white (#ffffff) with a 1px border of border-slate-200/50.
Surfaces: Use rounded-[2.5rem] for all major containers. Apply a “diffusion shadow” (a very light, wide-spreading shadow, e.g., shadow-[0_20px_40px_-15px_rgba(0,0,0,0.05)]) to create depth without clutter.
Typography: Strict Geist, Satoshi, or Cabinet Grotesk font stack. Use subtle tracking (tracking-tight) for headers.
Labels: Titles and descriptions must be placed outside and below the cards to maintain a clean, gallery-style presentation.
Pixel-Perfection: Use generous p-8 or p-10 padding inside cards.
All cards must contain “Perpetual Micro-Interactions.” Use the following Framer Motion principles:
Spring Physics: No linear easing. Use type: "spring", stiffness: 100, damping: 20 for a premium, weighty feel.
Layout Transitions: Heavily utilize the layout and layoutId props to ensure smooth re-ordering, resizing, and shared element state transitions.
Infinite Loops: Every card must have an “Active State” that loops infinitely (Pulse, Typewriter, Float, or Carousel) to ensure the dashboard feels “alive”.
Performance: Wrap dynamic lists in <AnimatePresence> and optimize for 60fps. PERFORMANCE CRITICAL: Any perpetual motion or infinite loop MUST be memoized (React.memo) and completely isolated in its own microscopic Client Component. Never trigger re-renders in the parent layout.
Implement these specific micro-animations when constructing Bento grids (e.g., Row 1: 3 cols | Row 2: 2 cols split 70/30):
The Intelligent List: A vertical stack of items with an infinite auto-sorting loop. Items swap positions using layoutId, simulating an AI prioritizing tasks in real-time.
The Command Input: A search/AI bar with a multi-step Typewriter Effect. It cycles through complex prompts, including a blinking cursor and a “processing” state with a shimmering loading gradient.
The Live Status: A scheduling interface with “breathing” status indicators. Include a pop-up notification badge that emerges with an “Overshoot” spring effect, stays for 3 seconds, and vanishes.
The Wide Data Stream: A horizontal “Infinite Carousel” of data cards or metrics. Ensure the loop is seamless (using x: ["0%", "-100%"]) with a speed that feels effortless.
The Contextual UI (Focus Mode): A document view that animates a staggered highlight of a text block, followed by a “Float-in” of a floating action toolbar with micro-icons.
Images inside a skill come from the upstream repository. Where the author gave no alternative text we mark the image decorative rather than inventing a description — a plausible caption we made up is worse than none for the reader who depends on it.
Marketplace
A plugin manifest is published at .claude-plugin/marketplace.json by leonxlnx, declaring 1 plugin. It is read for editorial metadata only — never as the skill index, which is always the repository tree.
Signal
Install counts come from skills.sh. They measure downloads, not quality, and an unranked repository is not an unread one.
Agent surfaces
The whole issue is available as one markdown document at /Leonxlnx/taste-skill.md, and each skill at its own .md URL.
Publication
Set by Skills Docs from the source repository. Body text is Literata at the reader’s chosen size and measure; code is Geist Mono. Nothing on this page was written by us except this paragraph.