| 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. |
| tags | ["frontend","design","ui-ux"] |
High-Agency Frontend Skill
1. ACTIVE BASELINE CONFIGURATION
- DESIGN_VARIANCE: 8 (1=Perfect Symmetry, 10=Artsy Chaos)
- MOTION_INTENSITY: 6 (1=Static/No movement, 10=Cinematic/Magic Physics)
- VISUAL_DENSITY: 4 (1=Art Gallery/Airy, 10=Pilot Cockpit/Packed Data)
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.
2. DEFAULT ARCHITECTURE & CONVENTIONS
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).
3. DESIGN ENGINEERING DIRECTIVES (Bias Correction)
LLMs have statistical biases toward specific UI cliche patterns. Proactively construct premium interfaces using these engineered rules:
Rule 1: Deterministic Typography
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
LAYOUT_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:
- Loading: Skeletal loaders matching layout sizes (avoid generic circular spinners).
- Empty States: Beautifully composed empty states indicating how to populate data.
- Error States: Clear, inline error reporting (e.g., forms).
- Tactile Feedback: On
:active, use -translate-y-[1px] or scale-[0.98] to simulate a physical push indicating success/action.
Rule 6: Data & Form Patterns
- Forms: Label MUST sit above input. Helper text is optional but should exist in markup. Error text below input. Use a standard
gap-2 for input blocks.
4. CREATIVE PROACTIVITY (Anti-Slop Implementation)
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.
5. PERFORMANCE GUARDRAILS
-
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).
10. FINAL PRE-FLIGHT CHECK
Evaluate your code against this matrix before outputting. This is the last filter you apply to your logic.