agent-creator
Use when creating expert agents. Generates agent.md with frontmatter, hooks, required sections, and skill references.
Use when building or editing shadcn/ui components, mapping Base UI vs Radix vs React Aria APIs, or choosing a composition pattern (render vs asChild vs trigger wrapper).
Claude Code
$ npx -y skills add fusengine/claude-plugins --skill shadcn-components --agent claude-code
Codex
$ npx skills add fusengine/claude-plugins --skill shadcn-components -a codex -y
Cursor
$ npx skills add fusengine/claude-plugins --skill shadcn-components -a cursor -y
Gemini CLI
$ npx skills add fusengine/claude-plugins --skill shadcn-components -a gemini-cli -y
GitHub Copilot
$ npx skills add fusengine/claude-plugins --skill shadcn-components -a github-copilot -y
OpenCode
$ npx skills add fusengine/claude-plugins --skill shadcn-components -a opencode -y
Windsurf
$ npx skills add fusengine/claude-plugins --skill shadcn-components -a windsurf -y
name: shadcn-components description: "Use when building or editing shadcn/ui components, mapping Base UI vs Radix vs React Aria APIs, or choosing a composition pattern (render vs asChild vs trigger wrapper)." versions: shadcn-ui: "4.x" radix-ui: "1.x" base-ui: "1.x" user-invocable: true allowed-tools: Read, Write, Edit, Glob, Grep, Task, mcp__shadcn__search_items_in_registries, mcp__shadcn__view_items_in_registries, mcp__shadcn__get_item_examples_from_registries, mcp__shadcn__get_add_command_for_items references: references/radix-components.md, references/baseui-components.md, references/templates/dialog-example.md related-skills: shadcn-detection, shadcn-registries
<objective> Documents component patterns for shadcn/ui on its three bases — Base UI (default since July 2026), Radix and React Aria — API differences, mapping between primitives (Dialog/Select/Tooltip/Accordion/Popover/Menu/Combobox), per-base component availability, and the three composition patterns (`render` for Base UI, `asChild` for Radix, trigger-wrapper children for React Aria).
Requires detecting the project's primitive first (`shadcn-detection`) and consulting the shadcn MCP for registry source instead of hand-writing component internals. </objective>
Before component work, spawn agents in parallel, one `Agent` call each with a `name`:
1. **fuse-ai-pilot:explore-codebase** - Find existing components 2. **fuse-ai-pilot:research-expert** - Verify component APIs via Context7 3. **mcp__shadcn__search_items_in_registries** - Search available components
After: Run **fuse-ai-pilot:sniper** for validation.
---
| Feature | Description | |---------|-------------| | **Base UI primitives** | Default base for new projects since 2026-07-02 (`base-*` styles, `@base-ui/react`); `init --defaults` = Next.js template + `nova` preset on the `base` base = `base-nova` | | **Radix primitives** | Original base (2023), still fully supported (`radix-*` styles, unified `radix-ui` package); `init -b radix` | | **React Aria primitives** | Third base since 2026-07-17 (`aria-*` styles, `react-aria-components`); `init -b aria` | | **Component mapping** | Same shadcn wrapper names for Base UI and Radix; React Aria wrappers differ (see below) | | **API differences** | `render` vs `asChild` vs trigger wrapper, part naming, data attributes | | **`cn` import** | Components import `cn` from the `cn` package (Sept 2026); `lib/utils.ts` is `export { cn } from "cn"` |
Get base-specific docs, examples and API links from the CLI: `{runner} shadcn@latest docs dialog --base aria` (`--base base|radix|aria`, defaults to the project base). Component pages: `/docs/components/{base|radix|aria}/<name>`, each with a Composition tree.
---
1. **ALWAYS detect primitive** before component work (shadcn-detection) 2. **ALWAYS consult MCP** before adding any component 3. **NEVER mix** Base UI, Radix and React Aria APIs in same component 4. **MATCH composition** pattern to detected primitive 5. **USE registry source** as truth, not manual code
---
components/ui/ ├── dialog.tsx # Adapted to detected primitive ├── select.tsx ├── accordion.tsx └── ...
-> See [dialog-example.md](references/templates/dialog-example.md) for complete component
---
ALWAYS consult shadcn MCP before adding components:
mcp__shadcn__search_items_in_registries -> find component mcp__shadcn__view_items_in_registries -> view source mcp__shadcn__get_add_command_for_items -> get install command
---
Primitive parts used inside `components/ui/*.tsx` (registry `*-nova` sources, `ui.shadcn.com/r/styles/<style>/<name>.json`):
| Component | Radix Part | Base UI Part | React Aria Part | |-----------|-----------|--------------|-----------------| | Dialog content | `Dialog.Content` | `Dialog.Popup` | `Modal` > `Dialog` | | Dialog overlay | `Dialog.Overlay` | `Dialog.Backdrop` | `ModalOverlay` | | Select | `Select.Content` | `Select.Positioner` + `Select.Popup` (+ `Select.List`) | `Select` + `Popover` > `ListBox` | | Tooltip | `Tooltip.Content` | `Tooltip.Positioner` + `Tooltip.Popup` | `TooltipTrigger` > `Tooltip` | | Accordion | `Accordion.Content` | `Accordion.Panel` | `DisclosureGroup` > `Disclosure` > `DisclosurePanel` | | Popover | `Popover.Content` | `Popover.Positioner` + `Popover.Popup` | `DialogTrigger` > `Popover` | | Menu | `DropdownMenu.Content` | `Menu.Positioner` + `Menu.Popup` | `MenuTrigger` > `Popover` > `Menu` | | Combobox | none (uses `@base-ui/react` Combobox) | `Combobox.*` | `ComboBox` + `Popover` > `ListBox` |
Wrapper API at call sites (`@/components/ui/*`):
| Wrapper usage | Base UI | Radix | React Aria | |---------------|---------|-------|------------| | Dialog | `Dialog > DialogTrigger + DialogContent` | same as Base UI | `DialogTrigger > Button + Dialog` (no `DialogContent`) | | Popover / Tooltip / DropdownMenu | `X > XTrigger + XContent` | same | `XTrigger > Button + X` (e.g. `DropdownMenuTrigger > Button + DropdownMenu`) | | Accordion | `defaultValue={["a"]}`, `multiple` | `type="single" collapsible defaultValue="a"`, `type="multiple"` | `defaultExpandedKeys={["a"]}`, `allowsMultipleExpanded`, items use `id` | | Select | `items` prop on `Select`, `SelectItem value` | `SelectItem value` | `placeholder` on `Select`, `SelectItem id` | | Combobox | `items` + `ComboboxList` render function | same as Base UI | `ComboboxList` children, `renderEmptyState`, `ComboboxItem id` | | Events / state | `onClick`, `disabled`, `open`/`onOpenChange` | same | `onPress`, `isDisabled`, `isOpen`/`onOpenChange` | | Raw data attrs | `data-open`, `data-starting-style`, `data-side` | `data-state="open"`, `data-side` | `data-entering`/`data-exiting`, `data-placement`, `data-focused`, `data-pressed` |
Shared `data-open:` / `data-closed:` / `data-checked:` Tailwind variants (from `shadcn/tailwind.css`) m
A plugin ecosystem that turns Claude Code into a supervised, multi-agent development environment.
Use when creating expert agents. Generates agent.md with frontmatter, hooks, required sections, and skill references.
Use when starting ANY development task -- feature, bug fix, refactor, hotfix (triggers: implement, create, build, fix, add…
Use when creating a feature/component or adding functionality. Fires BEFORE APEX Analyze to refine requirements via structured…
Use before a root-cause, done/verified claim, irreversible action, or 2nd-time fix reaches the owner (APEX or plain…
Use when validating code quality after modifications -- SOLID compliance, DRY duplication, linter errors, architecture…
Use when an expert agent self-reviews and self-corrects code after the Execute phase, before sniper validation (BMAD-METHOD…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.