shadcn
Skill5 starsChanged 9 months agoMITView on GitHub
shadcn/ui component library best practices and patterns (formerly shadcn-ui). This skill should be used when writing, reviewing, or refactoring shadcn/ui components to ensure proper architecture, accessibility, and performance. Triggers on tasks involving Radix primitives, Tailwind styling, form validation with React Hook Form, data tables, theming, or component composition patterns.
We split this skill into the rules it gives an agent
1 rule. 0 are common, 1 is distinctive, and 0 are very specific to this project.
0
Common
Most of the 176 edited versions we read keep these.
1
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 102
Read individual reference files for detailed explanations and code examples:
“Common” is measured: kept by at least 6 in 10 of the 176 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
shadcn/ui Community Best Practices
Comprehensive best practices guide for shadcn/ui applications, maintained by the shadcn/ui community. Contains 42 rules across 8 categories, prioritized by impact to guide automated refactoring and code generation.
When to Apply
Reference these guidelines when:
- Writing new shadcn/ui components or composing primitives
- Implementing forms with React Hook Form and Zod validation
- Building data tables or handling large dataset displays
- Customizing themes or adding dark mode support
- Reviewing code for accessibility compliance
Rule Categories by Priority
| Priority | Category | Impact | Prefix |
| 1 | Component Architecture | CRITICAL | arch- |
| 2 | Accessibility Preservation | CRITICAL | ally- |
| 3 | Styling & Theming | HIGH | style- |
| 4 | Form Patterns | HIGH | form- |
| 5 | Data Display | MEDIUM-HIGH | data- |
| 6 | Component Composition | MEDIUM | comp- |
| 7 | Performance Optimization | MEDIUM | perf- |
| 8 | State Management | LOW-MEDIUM | state- |
Quick Reference
1. Component Architecture (CRITICAL)
arch-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 styles
2. Accessibility Preservation (CRITICAL)
ally-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 ratios
3. Styling & Theming (HIGH)
style-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 variables
4. Form Patterns (HIGH)
form-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 submission
5. Data Display (MEDIUM-HIGH)
data-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 states
6. Component Composition (MEDIUM)
comp-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 content
7. Performance Optimization (MEDIUM)
perf-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 inputs
8. State Management (LOW-MEDIUM)
state-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 used
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
Full Compiled Document
For a single-file reference containing all rules, see AGENTS.md.
Reference Files
| 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 |
Other versions179 projects use a version of this.
Word for word · 0
None found.
Edited · 2
- PyModel/react-frontend-skills★ 2382% same
- genfeedai/genfeed.ai★ 465% same
Wrote their own version · 177
- shadcn-ui/ui★ 127ksame name
- coollabsio/coolify★ 65ksame name
- kriasoft/react-starter-kit★ 24ksame name
- MODSetter/SurfSense★ 17ksame name
- udecode/plate★ 17ksame name
- spree/spree★ 16ksame name
- trycompai/crm★ 12ksame name
- 1weiho/open-slide★ 9.6ksame name
- openai/plugins★ 7.4ksame name
- Kiranism/next-shadcn-dashboard-starter★ 7.2ksame name
167 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use migrate-radix-to-base, friendly and 7 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
shadcn-uiSkillmigrate-radix-to-base
Migrates React projects and components from Radix UI to Base UI. Use when asked to migrate from radix, move to base-ui, convert radix primitives, or switch a shadcn project's base library. Handles single components ("migrate accordion") and whole projects.
Also in 15 projects that use this
bergsideSkillfriendly
Approachable, intuitive design with rounded elements, ample whitespace, and soft pastel color palettes.
Also in 3 projects that use this
bergsideSkillprofessional
Polished, business-ready design with modern typography, structured layouts, and a trustworthy visual identity.
Also in 3 projects that use this
pedronauckSkillapp-renderer-systems
Create, extend, or debug frontend domain modules organized under systems/. Covers adapters, Query hooks, local state, and public exports; excludes generic components and backend implementation.
Also in 3 projects that use this
pedronauckSkillrefactoring-analysis
Audit code quality and architectural health or plan refactoring using Fowler code smells and techniques; write prioritized findings to docs/_refacs/. Excludes formatting, performance, and security audits.
Also in 3 projects that use this
barisariburnuSkilltanstack
Expert assistance for TanStack Router, Query (v5), and Table (v8). Use when users need help with file-based routing, type-safe navigation, data loading, search params, queries, mutations, optimistic updates, infinite queries, table state management, or debugging TanStack libraries.
Also in 4 projects that use this
In this repository32 other files it gives its agents.
- skills/feature-arch/AGENTS.mdAGENTS.md
- skills/msw/AGENTS.mdAGENTS.md
- skills/nextjs/AGENTS.mdAGENTS.md
- skills/nuqs/AGENTS.mdAGENTS.md
- skills/playwright/AGENTS.mdAGENTS.md
- skills/react-hook-form/AGENTS.mdAGENTS.md
- skills/shadcn/AGENTS.mdAGENTS.md
- skills/tailwind/AGENTS.mdAGENTS.md
- skills/tanstack-query/AGENTS.mdAGENTS.md
- skills/tdd/AGENTS.mdAGENTS.md
- skills/ui-design/AGENTS.mdAGENTS.md
- skills/vercel-composition-patterns/AGENTS.mdAGENTS.md
- skills/vercel-react-best-practices/AGENTS.mdAGENTS.md
- skills/vitest/AGENTS.mdAGENTS.md
- skills/zod/AGENTS.mdAGENTS.md
- feature-archSkill
- mswSkill
- nextjsSkill
- nuqsSkill
- playwrightSkill
- react-hook-formSkill
- reactSkill
- tailwindSkill
- tanstack-querySkill
- tddSkill
- typescriptSkill
- ui-designSkill
- vercel-composition-patternsSkill
- vercel-react-best-practicesSkill
- vitestSkill
- web-design-guidelinesSkill
- zodSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

