ss-shadcn-svelte
shadcn-svelte — Component-Aware Svelte UI Assistant
Use the right shadcn-svelte components when building UI in SvelteKit projects. This skill detects your project setup, shows what's available, and gives you access to full component documentation.
Prerequisites
The project must be a SvelteKit app with shadcn-svelte initialized:
# Initialize shadcn-svelte in an existing SvelteKit project
npx shadcn-svelte@latest init
How to use
Step 1: Detect project setup
Run the detection script to verify this is a SvelteKit project with shadcn-svelte and see which components are already installed:
bash <skill-path>/scripts/detect.sh .
This will:
- Confirm it's a SvelteKit project (checks for
svelte.config.js/tsand@sveltejs/kitin package.json) - Confirm shadcn-svelte is installed (checks for
components.json,bits-ui, orshadcn-sveltein package.json) - List all currently installed components in the project's UI directory
- Provide the documentation URL
If the script exits with code 1, the project either isn't SvelteKit or doesn't have shadcn-svelte — do not proceed with shadcn-svelte components in that case.
Step 2: Read the component documentation
The full component documentation for LLMs is available at:
https://www.shadcn-svelte.com/llms.txt
Fetch this URL to get a structured index of all available components organized by category, with links to individual component documentation pages (in .md format).
When you need to use a specific component, read its individual documentation page from the links provided in llms.txt. Each component doc includes:
- Import statements and usage examples
- Available props, events, and slots
- Variants and configuration options
- Accessibility information
Step 3: Use the right component for the job
When building UI, follow this decision process:
- Run detection to confirm shadcn-svelte is available and see installed components
- Fetch llms.txt to see all available components
- Read the specific component docs for the components you plan to use
- Check if the component is installed — if not, add it:
npx shadcn-svelte@latest add <component-name> - Import and use the component following the documentation patterns
Component categories
shadcn-svelte components are organized into these categories:
| Category | Components |
|---|---|
| Layout | Aspect Ratio, Collapsible, Resizable, Scroll Area, Separator, Sidebar |
| Form & Input | Button, Calendar, Checkbox, Combobox, Date Picker, Input, Input OTP, Label, Radio Group, Range Calendar, Select, Slider, Switch, Textarea, Toggle, Toggle Group |
| Data Display | Accordion, Avatar, Badge, Card, Carousel, Chart, Table, Data Table |
| Feedback | Alert, Alert Dialog, Progress, Skeleton, Sonner (Toast) |
| Overlay | Context Menu, Dialog, Drawer, Dropdown Menu, Hover Card, Menubar, Popover, Sheet, Tooltip |
| Navigation | Breadcrumb, Command, Pagination, Tabs |
| Typography | Typography |
Adding new components
# Add a single component
npx shadcn-svelte@latest add button
# Add multiple components
npx shadcn-svelte@latest add button card dialog
# List all available components
npx shadcn-svelte@latest add
Import patterns
Components are typically imported from the project's $lib/components/ui directory:
<script lang="ts">
import { Button } from "$lib/components/ui/button";
import * as Card from "$lib/components/ui/card";
import * as Dialog from "$lib/components/ui/dialog";
</script>
Some components use namespace imports (with * as) when they have multiple sub-components (Card, Dialog, Sheet, Table, etc.), while simpler components use named imports (Button, Input, Badge, etc.).
Important guidelines
- Always run detection first before suggesting shadcn-svelte components
- Always read component docs before using a component — don't guess at props or patterns
- Check installed components and add missing ones before importing
- Use the project's configured path — the components directory may vary based on
components.jsonconfiguration - Follow Svelte 5 patterns — shadcn-svelte uses runes (
$state,$derived,$effect) and snippet-based composition - Prefer composition — shadcn-svelte components are designed to be composed together, not used as monolithic blocks