Provides best practices for shadcn/ui components: setup, architecture, accessibility, theming, forms, and data tables using Radix primitives, Tailwind, and React Hook Form.
How this skill is triggered — by the user, by Claude, or both
Slash command
/pproenca-dot-skills-1:shadcnThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Comprehensive best practices guide for shadcn/ui applications, maintained by the shadcn/ui community. Contains 58 rules across 10 categories, prioritized by impact to guide automated refactoring and code generation.
Comprehensive best practices guide for shadcn/ui applications, maintained by the shadcn/ui community. Contains 58 rules across 10 categories, prioritized by impact to guide automated refactoring and code generation.
Reference these guidelines when:
| Priority | Category | Impact | Prefix |
|---|---|---|---|
| 1 | CLI & Project Setup | CRITICAL | setup- |
| 2 | Component Architecture | CRITICAL | arch- |
| 3 | Accessibility Preservation | CRITICAL | ally- |
| 4 | Styling & Theming | HIGH | style- |
| 5 | Form Patterns | HIGH | form- |
| 6 | Data Display | MEDIUM-HIGH | data- |
| 7 | Layout & Navigation | MEDIUM | layout- |
| 8 | Component Composition | MEDIUM | comp- |
| 9 | Performance Optimization | MEDIUM | perf- |
| 10 | State Management | LOW-MEDIUM | state- |
setup-components-json - Configure components.json before adding componentssetup-path-aliases - Configure TypeScript path aliases to match components.jsonsetup-cn-utility - Create the cn utility before using componentssetup-use-cli-not-copy - Use CLI to add components instead of copy-pastesetup-css-variables-theme - Enable CSS variables for consistent themingsetup-rsc-configuration - Set RSC flag based on framework supportarch-use-asChild-for-custom-triggers - Use asChild prop for custom trigger elementsarch-preserve-radix-primitive-structure - Maintain Radix compound component hierarchyarch-extend-variants-with-cva - Use Class Variance Authority for type-safe variantsarch-use-cn-for-class-merging - Use cn() utility for safe Tailwind class mergingarch-forward-refs-for-composable-components - Forward refs for form and focus integrationarch-isolate-component-variants - Separate base styles from variant-specific stylesally-preserve-aria-attributes - Keep Radix ARIA attributes intactally-provide-sr-only-labels - Add screen reader labels for icon buttonsally-maintain-focus-management - Preserve focus trapping in modalsally-preserve-keyboard-navigation - Keep WAI-ARIA keyboard patternsally-ensure-color-contrast - Maintain WCAG color contrast ratiosally-dialog-title-required - Always include DialogTitle for screen readersally-form-field-labels - Associate labels with form controlsally-aria-invalid-errors - Use aria-invalid for form error statesally-checkbox-label-association - Wrap Checkbox with Label for click targetally-focus-visible-styles - Preserve focus visible styles for keyboard navigationstyle-use-css-variables-for-theming - Use CSS variables for theme colorsstyle-avoid-important-overrides - Never use !important for style overridesstyle-use-tailwind-theme-extend - Extend Tailwind theme for design tokensstyle-consistent-spacing-scale - Use consistent Tailwind spacing scalestyle-responsive-design-patterns - Apply mobile-first responsive designstyle-dark-mode-support - Support dark mode with CSS variablesform-use-react-hook-form-integration - Integrate with React Hook Formform-use-zod-for-schema-validation - Use Zod for type-safe validationform-show-validation-errors-correctly - Show errors at appropriate timesform-handle-async-validation - Debounce async validation callsform-reset-form-state-correctly - Reset form state after submissiondata-use-tanstack-table-for-complex-tables - Use TanStack Table for sorting/filteringdata-virtualize-large-lists - Virtualize lists with 100+ itemsdata-use-skeleton-loading-states - Use Skeleton for loading statesdata-paginate-server-side - Paginate large datasets server-sidedata-empty-states-with-guidance - Provide actionable empty stateslayout-sidebar-provider - Wrap layout with SidebarProviderlayout-sidebar-collapsible - Configure sidebar collapsible behaviorlayout-sidebar-groups - Organize sidebar navigation with groupslayout-sheet-mobile-nav - Use Sheet for mobile navigation overlaylayout-breadcrumb-navigation - Implement breadcrumbs for deep navigationcomp-compose-with-compound-components - Use compound component patternscomp-use-drawer-for-mobile-modals - Use Drawer on mobile devicescomp-combine-command-with-popover - Create searchable selects with Commandcomp-nest-dialogs-correctly - Manage nested dialog focus correctlycomp-create-reusable-form-fields - Extract reusable form field componentscomp-use-slot-pattern-for-flexibility - Use slot pattern for flexible contentperf-lazy-load-heavy-components - Lazy load components over 50KBperf-memoize-expensive-renders - Memoize list items and expensive componentsperf-optimize-icon-imports - Use direct imports for Lucide iconsperf-avoid-unnecessary-rerenders-in-forms - Isolate form field watchingperf-debounce-search-inputs - Debounce search and filter inputsstate-prefer-uncontrolled-for-simple-inputs - Use uncontrolled for simple formsstate-lift-state-to-appropriate-level - Lift state to lowest common ancestorstate-use-controlled-dialog-state - Control dialogs for programmatic accessstate-colocate-state-with-components - Keep state close to where it's usedRead individual reference files for detailed explanations and code examples:
For a single-file reference containing all rules, see AGENTS.md.
| File | Description |
|---|---|
| AGENTS.md | Complete compiled guide with all rules |
| references/_sections.md | Category definitions and ordering |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
npx claudepluginhub joshuarweaver/cascade-code-general-misc-1 --plugin pproenca-dot-skills-1Provides 58 prioritized rules for shadcn/ui covering CLI setup, component architecture, accessibility, theming, forms, data display, and performance. Useful when installing, writing, or reviewing shadcn/ui components.
<!-- AUTO-GENERATED by export-plugins.py — DO NOT EDIT -->
Manages shadcn/ui components and projects: adding components via CLI, enforcing styling rules, and providing usage patterns for design systems.