
Radix Ui Design System
Implement accessible Radix UI primitives—dialogs, overlays, and compound components—in React with correct Title, Description, and Portal patterns.
Overview
radix-ui-design-system is an agent skill for the Build phase that shows accessible Radix UI Dialog composition patterns for React frontends.
Install
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill radix-ui-design-systemWhat is this skill?
- Radix Dialog compound pattern: Root, Trigger, Portal, Overlay, Content
- Accessibility requirements: Dialog.Title and Dialog.Description called out explicitly
- Portal rendering and custom CSS class hooks for overlay and content
- Trigger-asChild pattern for composing with existing buttons
- Form-in-dialog example with labeled fieldset and inputs
Adoption & trust: 786 installs on skills.sh; 40.1k GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need modals and overlays that meet accessibility expectations without reinventing focus trap, portal, and labeling behavior.
Who is it for?
Indie SaaS builders on React who standardize on Radix primitives for dialogs and want agent-generated UI to match design-system conventions.
Skip if: Non-React stacks, teams standardized on Material or Chakra only, or projects that need full theme tokens and Storybook docs beyond a Dialog exemplar.
When should I use this skill?
Implementing or refactoring React UI that should use Radix UI Dialog and design-system accessibility patterns.
What do I get? / Deliverables
You get copy-ready Radix Dialog structure with Title, Description, Portal, Overlay, and form content wired for custom styling.
- Dialog component structure with accessible Title and Description
- Styled overlay and content hooks for your theme
Recommended Skills
Journey fit
How it compares
Pattern reference for headless accessible primitives—not a shadcn/ui installer or Figma handoff skill.
Common Questions / FAQ
Who is radix-ui-design-system for?
Solo frontend developers using React and Radix who want agents to generate modal UI that follows compound-component and a11y conventions.
When should I use radix-ui-design-system?
During Build frontend work when adding dialogs, profile editors, confirmations, or any overlay that should use Radix Portal, Overlay, Title, and Description patterns.
Is radix-ui-design-system safe to install?
Review the Security Audits panel on this Prism page; the skill is code-pattern documentation with no declared shell or network permissions in the excerpt.
SKILL.md
READMESKILL.md - Radix Ui Design System
import * as Dialog from '@radix-ui/react-dialog'; import { Cross2Icon } from '@radix-ui/react-icons'; import './dialog.css'; /** * Example: Basic Dialog Component * * Demonstrates: * - Compound component pattern * - Portal rendering * - Accessibility features (Title, Description) * - Custom styling with CSS */ export function BasicDialog() { return ( <Dialog.Root> <Dialog.Trigger asChild> <button className="button-primary"> Open Dialog </button> </Dialog.Trigger> <Dialog.Portal> {/* Overlay (backdrop) */} <Dialog.Overlay className="dialog-overlay" /> {/* Content (modal) */} <Dialog.Content className="dialog-content"> {/* Title - Required for accessibility */} <Dialog.Title className="dialog-title"> Edit Profile </Dialog.Title> {/* Description - Recommended for accessibility */} <Dialog.Description className="dialog-description"> Make changes to your profile here. Click save when you're done. </Dialog.Description> {/* Form Content */} <form className="dialog-form"> <fieldset className="fieldset"> <label className="label" htmlFor="name"> Name </label> <input className="input" id="name" defaultValue="John Doe" /> </fieldset> <fieldset className="fieldset"> <label className="label" htmlFor="email"> Email </label> <input className="input" id="email" type="email" defaultValue="john@example.com" /> </fieldset> <div className="dialog-actions"> <Dialog.Close asChild> <button className="button-secondary" type="button"> Cancel </button> </Dialog.Close> <button className="button-primary" type="submit"> Save Changes </button> </div> </form> {/* Close button */} <Dialog.Close asChild> <button className="icon-button" aria-label="Close"> <Cross2Icon /> </button> </Dialog.Close> </Dialog.Content> </Dialog.Portal> </Dialog.Root> ); } /** * Example: Controlled Dialog * * Use when you need to: * - Sync dialog state with external state * - Programmatically open/close dialog * - Track dialog open state */ export function ControlledDialog() { const [open, setOpen] = React.useState(false); const handleSave = () => { // Your save logic here console.log('Saving...'); setOpen(false); // Close after save }; return ( <Dialog.Root open={open} onOpenChange={setOpen}> <Dialog.Trigger asChild> <button className="button-primary"> Open Controlled Dialog </button> </Dialog.Trigger> <Dialog.Portal> <Dialog.Overlay className="dialog-overlay" /> <Dialog.Content className="dialog-content"> <Dialog.Title>Controlled Dialog</Dialog.Title> <Dialog.Description> This dialog's state is managed externally. </Dialog.Description> <p>Dialog is {open ? 'open' : 'closed'}</p> <button onClick={handleSave}>Save and Close</button> </Dialog.Content> </Dialog.Portal> </Dialog.Root> ); } import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; import { HamburgerMenuIcon, DotFilledIcon, CheckIcon, ChevronRightIcon, } from '@radix-ui/react-icons'; import './dropdown.css'; /** * Example: Complete Dropdown Menu * * Features: * - Items, separators, labels * - Checkbox items * - Radio group items * - Sub-menus * - Keyboard navigation */ export