git clone https://github.com/ComeOnOliver/skillshub
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/noartem/skills/shadcn-vue" ~/.claude/skills/comeonoliver-skillshub-shadcn-vue && rm -rf "$T"
skills/noartem/skills/shadcn-vue/SKILL.mdshadcn-vue
Quick Start (3 Minutes)
For Vue Projects (Vite)
1. Initialize shadcn-vue
npx shadcn-vue@latest init
During initialization:
- Style:
orNew York
(cannot change later!)Default - Base color:
(recommended)Slate - CSS variables:
(required for dark mode)Yes
2. Configure TypeScript Path Aliases
// tsconfig.json { "compilerOptions": { "baseUrl": ".", "paths": { "@/*": ["./src/*"] } } }
3. Configure Vite
// vite.config.ts import { defineConfig } from "vite"; import vue from "@vitejs/plugin-vue"; import tailwindcss from "@tailwindcss/vite"; // Tailwind v4 import path from "path"; export default defineConfig({ plugins: [vue(), tailwindcss()], resolve: { alias: { "@": path.resolve(__dirname, "./src"), }, }, });
4. Add Your First Component
npx shadcn-vue@latest add button
Quick Reference
| Need | Command or file |
|---|---|
| Initialize project | |
| Add component | |
| Add multiple components | |
| Build registry JSON | |
| Generate component docs | |
| Enable CSS variables | → |
| Add registry namespace | → map |
| Opencode MCP init | |
| Codex MCP config | with |
Bundled Resources
Templates (
templates/):
- Complete setup guide for Vue/Nuxt with examples (190 lines)quick-setup.ts
References (
references/):
- CLI commands and optionscli.md
- MCP setup, client configs, promptsmcp.md
- Theming andtheming.mdcssVariables
- All 7 documented issues with solutions (267 lines)error-catalog.md
- All 50+ component examples with codecomponent-examples.md
- Complete dark mode implementation guidedark-mode-setup.md
- Data tables with TanStack Tabledata-tables.md
Component Documentation (
components/):
- Index of all shadcn-vue componentsreferences/components.md
- Individual component documentation with installation, usage, and examplescomponents/<component>.md
Official Documentation:
- shadcn-vue Docs: https://shadcn-vue.com
- Reka UI Docs: https://reka-ui.com
- GitHub: https://github.com/radix-vue/shadcn-vue
When to Load References
Load these references based on the task:
-
Load
when:references/error-catalog.md- User encounters "component not found" or import errors
- Setup commands fail or configuration issues arise
- Tailwind CSS variables or TypeScript paths broken
- Trigger phrases: "not working", "error", "fails to", "broken"
-
Load
when:references/components.md- User asks what components are available (names, categories, status)
- User needs to add/use a component and wants the correct install/import paths
- You need to confirm a component exists before recommending a custom build
-
Load
when:references/component-examples.md- User asks "how do I implement [component]?"
- Need copy-paste examples for specific components
- Building forms, tables, navigation, or data display
- Trigger phrases: "example", "how to use", "implement", "code sample"
-
Load
when:references/cli.md- User asks how to run the CLI (
,init
,add
) or what prompts meanupdate - Need the exact command/flags for installing one or more components
- Troubleshooting CLI-related issues (registry, paths, overwrites)
- User asks how to run the CLI (
-
Load
when:references/dark-mode-setup.md- Implementing dark mode / theme switching
- User mentions Vue 3 + Vite, Nuxt, or Astro setup
- Need composable patterns for theme management
- Trigger phrases: "dark mode", "theme", "light/dark", "color scheme"
-
Load
when:references/theming.md- User wants to customize theme tokens via CSS variables (
,cssVariables
,:root
).dark - Need to wire Tailwind to CSS-variable-based colors and radii
- Setting up/adjusting design tokens (colors, radius, typography) for shadcn-vue
- User wants to customize theme tokens via CSS variables (
-
Load
when:references/mcp.md- Setting up MCP server for opencode, Codex, Cursor, VS Code
- Configuring registries in
components.json - Troubleshooting missing components or registry namespaces
- Trigger phrases: "MCP", "opencode", "codex", "cursor", "registry"
-
Load
when:references/data-tables.md- Building sortable/filterable/paginated tables
- User mentions TanStack Table or
DataTable - Trigger phrases: "data table", "table", "tanstack", "sorting", "pagination"
Critical Rules
Always Do
✅ Run
before adding componentsinit
- Creates required configuration and utilities
- Sets up path aliases
✅ Use CSS variables for theming (
cssVariables: true)
- Enables dark mode support
- Flexible theme customization
✅ Configure TypeScript path aliases
- Required for component imports
- Must match
aliasescomponents.json
✅ Keep components.json in version control
- Team members need same configuration
- Documents project setup
Never Do
❌ Don't change
after initializationstyle
- Requires complete reinstall
- Reinitialize in new directory instead
❌ Don't mix Radix Vue and Reka UI v2
- Incompatible component APIs
- Use one or the other
❌ Don't skip TypeScript configuration
- Component imports will fail
- IDE autocomplete won't work
❌ Don't use without Tailwind CSS
- Components are styled with Tailwind
- Won't render correctly
Common Mistakes
- Running
beforeadd
and missinginit
.components.json - Forgetting to enable the MCP server in the client UI/config.
- Mis-typed registry namespaces (
).@namespace/component - Using CSS variable classes without
.tailwind.cssVariables: true
CLI Commands Reference
init Command
# Initialize in current directory npx shadcn-vue@latest init # Initialize in specific directory (monorepo) npx shadcn-vue@latest init -c ./apps/web
add Command
# Add single component npx shadcn-vue@latest add button # Add multiple components npx shadcn-vue@latest add button card dialog # Add all components npx shadcn-vue@latest add --all
diff Command
# Check for component updates npx shadcn-vue@latest diff button
mcp Command
# Initialize MCP for specific client npx shadcn-vue@latest mcp init --client opencode npx shadcn-vue@latest mcp init --client codex npx shadcn-vue@latest mcp init --client cursor npx shadcn-vue@latest mcp init --client vscode
Configuration
shadcn-vue uses
components.json to configure:
- Component paths (
)@/components/ui - Utils location (
)@/lib/utils - Tailwind config paths
- TypeScript paths
Full example: See
templates/components.json or generate via npx shadcn-vue@latest init
Utils Library
The
@/lib/utils.ts file provides the cn() helper for merging Tailwind classes:
- Combines multiple className strings
- Uses
+clsx
for conflict resolutiontailwind-merge
Auto-generated by
shadcn-vue init - no manual setup needed.