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 requiredSHOULD use
tw-animate-cssfor entrance and micro-animations in Tailwind CSSMUST 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 stackMUST add an
aria-labelto icon-only buttonsNEVER rebuild keyboard or focus behavior by hand unless explicitly requested
Interaction
MUST use an
AlertDialogfor destructive or irreversible actionsSHOULD use structural skeletons for loading states
NEVER use
h-screen, useh-dvhMUST respect
safe-area-insetfor fixed elementsMUST 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 entranceNEVER exceed
200msfor interaction feedbackMUST pause looping animations when off-screen
MUST respect
prefers-reduced-motionNEVER 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/paragraphsMUST use
tabular-numsfor dataSHOULD use
truncateorline-clampfor dense UINEVER 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-filtersurfacesNEVER apply
will-changeoutside an active animationNEVER 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