shadcn-migration
SkillAI & modelsUse when migrating a shadcn/ui project between Radix UI and Base UI primitives, or validating a migration's API transformations.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the shadcn-migration skill
What this skill tells your AI
The instructions your AI receives, as published by fusengine/agents in plugins/shadcn-expert/skills/shadcn-migration/SKILL.md and read by ahel’s review.
shadcn Migration
Agent Workflow (MANDATORY)
Before migration, spawn agents in parallel, one Agent call each with a name:
- fuse-ai-pilot:explore-codebase - Inventory all affected components
- fuse-ai-pilot:research-expert - Verify migration patterns via Context7
After: Run fuse-ai-pilot:sniper for validation.
Overview
| Feature | Description |
|---|---|
| Radix -> Base UI | Migrate from legacy to new primitives |
| Base UI -> Radix | Migrate to established primitives |
| API mapping | Complete transformation table |
| Validation | Post-migration checklist |
Critical Rules
- ALWAYS run detection before starting migration
- ALWAYS create backup branch before migration
- MIGRATE one component type at a time
- UPDATE CSS selectors along with JSX changes
- RUN tests after each component migration
Architecture
Migration order (leaf components first):
1. Tooltip, Switch, Checkbox (simple)
2. Accordion, Tabs (medium)
3. Dialog, Select, Popover, Menu (complex)
-> See migration-dialog.md for complete example
Pre-Migration Checklist
[ ] Run shadcn-detection to confirm current primitive
[ ] Create backup branch (git checkout -b pre-migration)
[ ] Inventory all affected files (Grep for imports)
[ ] Review component-specific API changes
[ ] Plan migration order (leaf components first)
Migration Workflow
1. DETECT -> Run shadcn-detection skill
2. BACKUP -> Create git branch
3. INVENTORY -> List all affected components
4. TRANSFORM -> Apply API changes per component
5. VALIDATE -> Run tests + sniper check
Key API Changes
| Aspect | Radix | Base UI |
|---|---|---|
| Composition | asChild | render prop |
| Dialog content | DialogContent | Dialog.Popup |
| Dialog overlay | DialogOverlay | Dialog.Backdrop |
| Positioning | Built-in | Separate Positioner |
| Accordion body | AccordionContent | Accordion.Panel |
| Data attrs | data-state="open" | data-[open] |
| Package | Multiple @radix-ui/* | Single @base-ui/react |
Best Practices
DO
- Migrate one component type at a time
- Run tests after each component migration
- Update CSS selectors along with JSX
- Remove unused Radix packages after migration
DON'T
- Migrate all components at once
- Skip detection step
- Leave mixed APIs in production
- Forget to update data-attribute CSS selectors
Reference Guide
Concepts
| Topic | Reference | When to Consult |
|---|---|---|
| Radix -> Base UI | radix-to-baseui.md | Migrating from Radix |
| Base UI -> Radix | baseui-to-radix.md | Migrating to Radix |
Templates
| Template | When to Use |
|---|---|
| migration-dialog.md | Complete migration example |
Signals
- GitHub stars
- 25
- Forks
- 4
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
shadcn-migration- Source
- github.com/fusengine/agents