react-ui
Opinionated constraints for building better interfaces with agents.
When & Why to Use This Skill
This Claude skill provides a comprehensive set of opinionated constraints for building high-quality React user interfaces with AI agents. It optimizes the code generation process by enforcing strict standards for Tailwind CSS usage, accessibility primitives (Radix, Base UI), and performance-driven animations using motion/react. By standardizing layout, typography, and interaction patterns, it ensures that agent-produced UI code is professional, accessible, and highly maintainable.
Use Cases
- Generating Accessible React Components: Use Radix or Base UI primitives to ensure all AI-generated UI elements are keyboard-accessible and screen-reader friendly.
- Consistent Tailwind CSS Styling: Enforce the use of default Tailwind tokens for spacing, shadows, and colors to maintain design system integrity across a project.
- High-Performance UI Animations: Implement smooth, compositor-only transitions with motion/react that respect user motion preferences and performance budgets.
- Mobile-First Responsive Design: Create layouts that automatically account for modern CSS challenges like dynamic viewport heights (h-dvh) and safe-area insets for mobile devices.
| name | react-ui |
|---|---|
| description | Opinionated constraints for building better interfaces with agents. |
UI Skills
Opinionated constraints for building better interfaces with agents.
Stack
- MUST use Tailwind CSS defaults (spacing, radius, shadows) before custom values
- MUST use
motion/react(formerlyframer-motion) when JavaScript animation is required - SHOULD use
tw-animate-cssfor entrance and micro-animations in Tailwind CSS - MUST use
cnutility (clsx+tailwind-merge) for class logic
Components
- MUST use accessible component primitives for anything with keyboard or focus behavior (
Base UI,React Aria,Radix) - MUST use the project's existing component primitives first
- NEVER mix primitive systems within the same interaction surface
- SHOULD prefer
Base UIfor new primitives if compatible with the stack - MUST add an
aria-labelto icon-only buttons - NEVER rebuild keyboard or focus behavior by hand unless explicitly requested
Interaction
- MUST use an
AlertDialogfor destructive or irreversible actions - SHOULD use structural skeletons for loading states
- NEVER use
h-screen, useh-dvh - MUST respect
safe-area-insetfor fixed elements - MUST show errors next to where the action happens
- NEVER block paste in
inputortextareaelements
Animation
- NEVER add animation unless it is explicitly requested
- MUST animate only compositor props (
transform,opacity) - NEVER animate layout properties (
width,height,top,left,margin,padding) - SHOULD avoid animating paint properties (
background,color) except for small, local UI (text, icons) - SHOULD use
ease-outon entrance - NEVER exceed
200msfor interaction feedback - MUST pause looping animations when off-screen
- MUST respect
prefers-reduced-motion - NEVER introduce custom easing curves unless explicitly requested
- SHOULD avoid animating large images or full-screen surfaces
Typography
- MUST use
text-balancefor headings andtext-prettyfor body/paragraphs - MUST use
tabular-numsfor data - SHOULD use
truncateorline-clampfor dense UI - NEVER modify
letter-spacing(tracking-) unless explicitly requested
Layout
- MUST use a fixed
z-indexscale (no arbitraryz-x) - SHOULD use
size-xfor square elements instead ofw-x+h-x
Performance
- NEVER animate large
blur()orbackdrop-filtersurfaces - NEVER apply
will-changeoutside an active animation - NEVER use
useEffectfor anything that can be expressed as render logic
Design
- NEVER use gradients unless explicitly requested
- NEVER use purple or multicolor gradients
- NEVER use glow effects as primary affordances
- SHOULD use Tailwind CSS default shadow scale unless explicitly requested
- MUST give empty states one clear next action
- SHOULD limit accent color usage to one per view
- SHOULD use existing theme or Tailwind CSS color tokens before introducing new ones