bundles/frontend/skills/shadcn/SKILL.md
Provides shadcn/ui component library best practices and patterns. Triggers when writing, reviewing, or refactoring shadcn/ui components; when working with Radix primitives, Tailwind styling, React Hook Form validation, data tables, theming, or component composition patterns.
npx skillsauth add shipshitdev/library shadcnInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
58 rules across 10 categories for shadcn/ui, prioritized by impact to guide automated refactoring and code generation.
| 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:
| File | Description | |------|-------------| | references/_sections.md | Category definitions and ordering | | assets/templates/_template.md | Template for new rules | | metadata.json | Version and reference information |
development
TypeScript refactoring and modernization guidelines from a principal specialist perspective. This skill should be used when refactoring, reviewing, or modernizing TypeScript code to ensure type safety, compiler performance, and idiomatic patterns. Triggers on tasks involving TypeScript type architecture, narrowing, generics, error handling, or migration to modern TypeScript features.
tools
Resolves TypeScript and JavaScript problems across type-level programming, performance, monorepo management, migration, and modern tooling. Invoke when diagnosing "type instantiation excessively deep" errors, migrating JS to TS, configuring strict tsconfig, debugging module resolution, or choosing between Biome/ESLint/Turborepo/Nx.
tools
Turborepo monorepo build system guidance. Triggers on: `turbo.json`, task pipelines, `dependsOn`, caching, remote cache, the `turbo` CLI, `--filter`, `--affected`, CI optimization, environment variables, internal packages, monorepo structure, and package boundaries. Use when the user configures tasks or workflows, creates packages, sets up a monorepo, shares code between apps, runs changed packages, debugs cache behavior, or works in an `apps/` plus `packages/` workspace.
tools
Provides Tailwind CSS v4 performance optimization and best practices guidelines. Triggers when writing, reviewing, or refactoring Tailwind CSS v4 code; when working with Tailwind configuration, @theme directive, utility classes, responsive design, dark mode, container queries, or CSS generation optimization.