If you're using shadcn/ui with Base UI instead of Radix UI, this prevents Claude from suggesting the wrong patterns. The critical difference is the slot pattern: Base UI uses the `render` prop while Radix uses `asChild`, and getting this wrong breaks your components. It also covers the quirks like Accordion's `multiple` boolean instead of a `type` prop, and Button's `nativeButton={false}` requirement when rendering as links. Simple checklist style guide that keeps you from fighting with incorrect suggestions when Base UI is detected in your components.json. Saves time if you've already migrated or started fresh with Base UI.

skills.sh installs
251
last updated
Aug 21, 2026

Install

$ npx -y skills add thunderboltdev/shadcn-baseui --skill shadcn-baseui --agent claude-code

Installs into .claude/skills of the current project.

Files

shadcn/ui + Base UI Guidelines

A guide for using shadcn/ui components when working with Base UI. Prevents LLMs from incorrectly suggesting Radix UI patterns (asChild, etc.).

⚠️ CRITICAL: Before suggesting any code, verify this is a Base UI project by checking components.json. The style field should start with "base-" (e.g., "base-vega", "base-nova", "base-maia", "base-lyra", "base-mira"). If it starts with something else, this skill does not apply.

Ensure the @base-ui/react package is installed. If not, install it using the appropriate package manager.

Slot Pattern

The major difference between Radix UI and Base UI is the slot pattern. Radix UI uses asChild, while Base UI uses the render prop. Always use render prop over asChild.

Rule: Always use render prop instead of asChild for ALL trigger/wrapper components.

Applies to: DialogTrigger, AlertDialogTrigger, PopoverTrigger, DropdownMenuTrigger, TooltipTrigger, SelectTrigger, TabsTrigger, AccordionTrigger, Button (when wrapping links), etc.

// ❌ INCORRECT
<DialogTrigger asChild>
  <Button variant="outline">Click me</Button>
</DialogTrigger>

Sponsors

Details

Repository
github.com/thunderboltdev/shadcn-baseui
Category
Frontend Development
First seen
Jun 3, 2026
1existential-birds avatardagre-react-flowexistential-birds/beagleAutomatic graph layout using dagre with React Flow (@xyflow/react). Use when implementing auto-layout, hierarchical layouts, tree structures, or arranging nodes247skills.sh installs
2oguzhan18 avatarangular-cdkoguzhan18/angular-ecosystem-skillsALWAYS use when working with Angular CDK (Component Dev Kit), building custom accessible components, or using drag-drop, overlay, portal, or virtual scrolling.201skills.sh installs
3oguzhan18 avatarangular-componentsoguzhan18/angular-ecosystem-skillsALWAYS use when working with Angular Components, component architecture, @Component decorator, inputs, outputs, or component design patterns.182skills.sh installs
4cloudai-x avatarvercel-react-best-practicescloudai-x/claude-workflow-v2React and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js c178skills.sh installs
5oguzhan18 avatarangular-cypressoguzhan18/angular-ecosystem-skillsALWAYS use when testing Angular applications with Cypress, E2E testing, or component testing in Angular.172skills.sh installs
6bobmatnyc avatarnextjs-env-variablesbobmatnyc/claude-mpm-skillsNext.js environment variable management with file precedence, variable types, and deployment configurations. Use when configuring Next.js applications, managing153skills.sh installs