Reviews shadcn/ui components for CVA patterns, composition with asChild, accessibility states, and data-slot usage. Use when reviewing React components using shadcn/ui, Radix primitives, or Tailwind styling.
| Issue Type | Reference |
|---|---|
| className in CVA, missing VariantProps, compound variants | references/cva-patterns.md |
| asChild without Slot, missing Context, component composition | references/composition.md |
| Missing focus-visible, aria-invalid, disabled states | references/accessibility.md |
| Missing data-slot, incorrect CSS targeting | references/data-slot.md |
cn() receives className, not CVA variantsVariantProps<typeof variants> exported for consumersasChild pattern uses @radix-ui/react-slotfocus-visible: states, not just :focusaria-invalid, aria-disabled for form statesdisabled: variants for all interactive elementssr-only for screen reader textdata-slot attributes for targetable composition partshas() selectors for state-based stylingThese are correct patterns that should NOT be flagged as issues:
max-h-(--var) - correct Tailwind v4 CSS variable syntax (NOT v3 bracket notation)text-[color:var(--x)] - valid arbitrary value syntaxApply these rules with appropriate context awareness:
shadcn/ui components are designed to be copied and modified. Code review should focus on:
Do NOT flag:
Load and follow review-verification-protocol before reporting any issue.