radix-ui-design-system — Claude Code skill: what it does
Builds accessible design systems and headless UI components with Radix UI primitives. Useful for custom component libraries and WCAG 2.1 compliance.
npx skills add sickn33/agentic-awesome-skills --skill radix-ui-design-system -a claude-codeWhat radix-ui-design-system does
The skill provides implementation patterns for unstyled Radix UI primitives. It covers interactive elements like dialogs, command palettes, dropdown menus, and form selects. Inside, the patterns handle portals, trigger delegation via asChild, and bindings with react-hook-form or cmdk.
React 16.8 or newer is strictly required because Radix depends on hooks. If your project demands pre-styled components like shadcn/ui or Mantine, this skill is the wrong choice. It exists solely for teams writing their own styles using Tailwind or CSS variables. Check your React version before setting it up.
What it helps with
- build accessible modal dialogs and command palettes using @radix-ui/react-dialog
- connect @radix-ui/react-select dropdowns to react-hook-form
- set up unstyled action dropdowns with @radix-ui/react-dropdown-menu
- meet WCAG 2.1 AA/AAA accessibility standards for interactive UI
Example prompts for the agent
- Create a command palette using @radix-ui/react-dialog and cmdk
- Implement a form select component with @radix-ui/react-select and react-hook-form
- Build an actions dropdown menu using @radix-ui/react-dropdown-menu
How to install radix-ui-design-system
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill radix-ui-design-system -a claude-code2Manually: put the files in place
~/.claude/skills/radix-ui-design-system/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/radix-ui-design-system/
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill radix-ui-design-system -a codex2Manually: put the files in place
.agents/skills/radix-ui-design-system/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill radix-ui-design-system -a cursor2Manually: put the files in place
.cursor/skills/radix-ui-design-system/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install sickn33/agentic-awesome-skills radix-ui-design-system2Manually: put the files in place
.github/skills/radix-ui-design-system/SKILL.md1Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill radix-ui-design-system -a gemini-cli2Platform CLI
gemini skills install https://github.com/sickn33/agentic-awesome-skills --path skills/radix-ui-design-systemManually: put the files in place
.devin/skills/radix-ui-design-system/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add sickn33/agentic-awesome-skills --skill radix-ui-design-system -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set80
The whole set →Similar
Questions about radix-ui-design-system
How to install radix-ui-design-system in Claude Code?
Run npx skills add sickn33/agentic-awesome-skills --skill radix-ui-design-system -a claude-code in your terminal.
What does radix-ui-design-system do?
It guides the agent in building accessible, unstyled UI components using Radix UI primitives. It focuses on custom styling setups and compound component patterns.
What are the project prerequisites?
Your project must run React 16.8+ to support hooks. The skill does not support non-React environments or projects looking for ready-made visual themes.
Source text
SKILL.md · MIT
---
name: radix-ui-design-system
description: "Build accessible design systems with Radix UI primitives. Headless component customization, theming strategies, and compound component patterns for production-grade UI libraries."
risk: safe
source: self
date_added: "2026-02-27"
---
# Radix UI Design System
Build production-ready, accessible design systems using Radix UI primitives with full customization control and zero style opinions.
## Detailed Guide
Read [the detailed guide](references/detailed-guide.md) before executing this skill. It retains the complete procedure and reference material. Treat its safety, prerequisites, and validation requirements as mandatory. For focused work, load the relevant sections; for end-to-end work, read the guide completely.
## When to Use This Skill
- Creating a custom design system from scratch
- Building accessible UI component libraries
- Implementing complex interactive components (Dialog, Dropdown, Tabs, etc.)
- Migrating from styled component libraries to unstyled primitives
- Setting up theming systems with CSS variables or Tailwind
- Need full control over component behavior and styling
- Building applications requiring WCAG 2.1 AA/AAA compliance
## Do not use this skill when
- You need pre-styled components out of the box (use shadcn/ui, Mantine, etc.)
- Building simple static pages without interactivity
- The project doesn't use React 16.8+ (Radix requires hooks)
- You need components for frameworks other than React
---
## Real-World Examples
### Example 1: Command Palette (Combo Dialog)
```tsx
import { useState, useEffect } from 'react';
import * as Dialog from '@radix-ui/react-dialog';
import { Command } from 'cmdk';
export function CommandPalette() {
const [open, setOpen] = useState(false);
useEffect(() => {
const down = (e: KeyboardEvent) => {
if (e.key === 'k' && (e.metaKey || e.ctrlKey)) {
e.preventDefault();
setOpen((open) => !open);
}
};
document.addEventListener('keydown', down);
return () => document.removeEventListener('keydown', down);
}, []);
return (
<Dialog.Root open={open} onOpenChange={setOpen}>
<Dialog.Portal>
<Dialog.Overlay className="fixed inset-0 bg-black/50" />
<Dialog.Content className="fixed left-1/2 top-1/2 -translate-x-1/2 -translate-y-1/2">
<Dialog.Title>Commands</Dialog.Title>
<Dialog.Description>Search available actions.</Dialog.Description>
<Command>
<Command.Input placeholder="Type a command..." />
<Command.List>
<Command.Empty>No results found.</Command.Empty>
<Command.Group heading="Suggestions">
<Command.Item>Calendar</Command.Item>
<Command.Item>Search Emoji</Command.Item>
</Command.Group>
</Command.List>
</Command>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
);
}
```
### Example 2: Dropdown Menu with Icons
```tsx
import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
import { DotsHorizontalIcon } from '@radix-ui/react-icons';
export function ActionsMenu() {
return (
<DropdownMenu.Root>
<DropdownMenu.Trigger asChild>
<button className="icon-button" aria-label="Actions">
<DotsHorizontalIcon />
</button>
</DropdownMenu.Trigger>
<DropdownMenu.Portal>
<DropdownMenu.Content className="dropdown-content" align="end">
<DropdownMenu.Item className="dropdown-item">
Edit
</DropdownMenu.Item>
<DropdownMenu.Item className="dropdown-item">
Duplicate
</DropdownMenu.Item>
<DropdownMenu.Separator className="dropdown-separator" />
<DropdownMenu.Item className="dropdown-item text-red-500">
Delete
</DropdownMenu.Item>
</DropdownMenu.Content>
</DropdownMenu.Portal>
</DropdownMenu.Root>
);
}
```
### Example 3: Form with Radix Select + React Hook Form
```tsx
import * as Select from '@radix-ui/react-select';
import { useForm, Controller } from 'react-hook-form';
interface FormData {
country: string;
}
export function CountryForm() {
const { control, handleSubmit } = useForm<FormData>();
return (
<form onSubmit={handleSubmit((data) => console.log(data))}>
<Controller
name="country"
control={control}
render={({ field }) => (
<Select.Root onValueChange={field.onChange} value={field.value}>
<Select.Trigger ref={field.ref} onBlur={field.onBlur} aria-label="Country" className="select-trigger">
<Select.Value placeholder="Select a country" />
<Select.Icon />
</Select.Trigger>
<Select.Portal>
<Select.Content className="select-content">
<Select.Viewport>
<Select.Item value="us"><Select.ItemText>United States</Select.ItemText></Select.Item>
<Select.Item value="ca"><Select.ItemText>Canada</Select.ItemText></Select.Item>
<Select.Item value="uk"><Select.ItemText>United Kingdom</Select.ItemText></Select.Item>
</Select.Viewport>
</Select.Content>
</Select.Portal>
</Select.Root>
)}
/>
<button type="submit">Submit</button>
</form>
);
}
```
---
## Limitations
- Use this skill only when the task clearly matches the scope described above.
- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.
- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.
© sickn33 · MIT · sickn33/agentic-awesome-skills