shadcn/ui Components Skill
This skill helps you work with shadcn/ui components in packages/ui/.
When to Use This Skill Adding new shadcn/ui components to the shared UI library Customizing existing shadcn/ui component variants Updating component styling with Tailwind Finding and implementing component examples Debugging shadcn/ui component issues Managing component dependencies shadcn/ui Overview
shadcn/ui is a collection of re-usable components built with Radix UI and Tailwind CSS. Components are copied into your codebase, giving you full control.
packages/ui/ ├── src/ │ ├── components/ # shadcn/ui components │ │ ├── badge.tsx │ │ ├── button.tsx │ │ ├── card.tsx │ │ ├── dialog.tsx │ │ └── ... │ ├── lib/ │ │ └── utils.ts # cn() utility for class merging │ └── styles/ │ └── globals.css # Global styles ├── components.json # shadcn/ui configuration └── package.json
Discovery and Research Search for Components // Use MCP tool to search for components mcp__shadcn__search_items_in_registries({ registries: ["@shadcn"], query: "button" })
mcp__shadcn__search_items_in_registries({ registries: ["@shadcn"], query: "form input" })
View Component Details // Get component implementation details mcp__shadcn__view_items_in_registries({ items: ["@shadcn/button", "@shadcn/card"] })
Get Component Examples // Find usage examples mcp__shadcn__get_item_examples_from_registries({ registries: ["@shadcn"], query: "button demo" })
mcp__shadcn__get_item_examples_from_registries({ registries: ["@shadcn"], query: "form example" })
Get Add Command // Get CLI command to add components mcp__shadcn__get_add_command_for_items({ items: ["@shadcn/button", "@shadcn/dialog"] })
Adding New Components Step 1: Search and Research
Use MCP tools to find the component
Example: Adding a dropdown menu component
mcp__shadcn__search_items_in_registries({ registries: ["@shadcn"], query: "dropdown menu" })
Step 2: Get Add Command mcp__shadcn__get_add_command_for_items({ items: ["@shadcn/dropdown-menu"] })
// Returns: npx shadcn@latest add dropdown-menu
Step 3: Add Component
Navigate to packages/ui
cd packages/ui
Add component using CLI
npx shadcn@latest add dropdown-menu
Or add multiple components at once
npx shadcn@latest add dropdown-menu select tabs
Step 4: Export Component
Update packages/ui/src/index.ts:
export { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, DropdownMenuCheckboxItem, DropdownMenuRadioItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuShortcut, DropdownMenuGroup, DropdownMenuPortal, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuRadioGroup, } from "./components/dropdown-menu";
Step 5: Use in App // In apps/web or apps/api import { DropdownMenu, DropdownMenuTrigger, DropdownMenuContent, DropdownMenuItem, } from "@sgcarstrends/ui";
export function UserMenu() {
return (
Core Components Button Component // packages/ui/src/components/button.tsx import { Button } from "@sgcarstrends/ui";
// Variants
// Sizes
Card Component import { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent, } from "@sgcarstrends/ui";
export function InfoCard() {
return (
Card content Card footer
Dialog Component import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle, DialogTrigger, } from "@sgcarstrends/ui";
export function ConfirmDialog() { return ( ); }
Form Components import { Label } from "@sgcarstrends/ui"; import { Input } from "@sgcarstrends/ui"; import { Textarea } from "@sgcarstrends/ui";
export function ContactForm() { return (