.claude/skills/radix-ui-design-system/SKILL.md
Provides Radix UI patterns for building accessible design systems with headless components, theming, and compound component architecture. Use when building UI with Radix UI primitives or when the user mentions Radix UI, headless components, or accessible component libraries.
npx skillsauth add tranhieutt/software_development_department radix-ui-design-systemInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
asChild on Trigger/Close — prevents nested <button> inside <button> DOM errors<Dialog.Title> and <Dialog.Description> — screen readers require them; omitting causes a11y violationsdefaultValue and value on same componentforceMount — without it Portal unmounts instantly, killing Framer Motion exit animationsoverflow: hidden or CSS transform; always wrap in <Portal><Dialog.Root open={open} onOpenChange={setOpen}>
<Dialog.Trigger asChild><button>Open</button></Dialog.Trigger>
<Dialog.Portal>
<Dialog.Overlay className="overlay" />
<Dialog.Content className="content">
<Dialog.Title>Title</Dialog.Title> {/* required */}
<Dialog.Description>Desc</Dialog.Description> {/* required */}
<Dialog.Close asChild><button>Close</button></Dialog.Close>
</Dialog.Content>
</Dialog.Portal>
</Dialog.Root>
:root { --color-primary: 220 90% 56%; --radius: 0.5rem; }
[data-theme="dark"] { --color-primary: 220 90% 66%; }
<Dialog.Content className="bg-[hsl(var(--color-primary))] rounded-[var(--radius)]" />
import { cva } from 'class-variance-authority';
const button = cva("base-styles", {
variants: {
variant: { default: "bg-primary", destructive: "bg-red-500" },
size: { sm: "h-9 px-3", md: "h-10 px-4" },
},
defaultVariants: { variant: "default", size: "md" },
});
<Dialog.Portal forceMount> {/* forceMount: critical */}
<AnimatePresence>
{open && (
<Dialog.Overlay asChild>
<motion.div initial={{opacity:0}} animate={{opacity:1}} exit={{opacity:0}} />
</Dialog.Overlay>
)}
</AnimatePresence>
</Dialog.Portal>
<Controller name="country" control={control} render={({ field }) => (
<Select.Root onValueChange={field.onChange} value={field.value}>
<Select.Trigger><Select.Value placeholder="Select..." /><Select.Icon /></Select.Trigger>
<Select.Portal>
<Select.Content><Select.Viewport>
<Select.Item value="us"><Select.ItemText>US</Select.ItemText></Select.Item>
</Select.Viewport></Select.Content>
</Select.Portal>
</Select.Root>
)} />
| Component | Key parts | |---|---| | Dialog | Root · Trigger · Portal · Overlay · Content · Title · Description · Close | | DropdownMenu | Root · Trigger · Portal · Content · Item · Separator · CheckboxItem · RadioGroup · Sub | | Tabs | Root · List · Trigger · Content | | Tooltip | Provider · Root · Trigger · Portal · Content · Arrow | | Select | Root · Trigger · Value · Icon · Portal · Content · Viewport · Item · ItemText · ItemIndicator |
npx shadcn@latest add dialogtesting
Generates high-fidelity architecture diagrams, sequence flows, and component maps for SDD projects. Use when finalizing a design phase, documenting system architecture, or visualizing agentic workflows. Default style: Style 6 (Claude Official).
data-ai
Provides vector database and semantic search patterns for Pinecone, Weaviate, Qdrant, Milvus, and pgvector in RAG and recommendation systems. Use when implementing vector search or when the user mentions vector database, semantic search, embeddings, or similarity search.
development
Updates docs/technical/CODEMAP.md by scanning the current codebase structure. Run after a significant feature merge, refactor, or when CODEMAP feels stale.
development
Unlocks the codebase after a release freeze or incident freeze period to resume normal development. Use when a freeze period ends or when the user mentions unfreezing or lifting the code freeze.