| name | component-search |
| license | MIT |
| compatibility | Claude Code 2.1.183+. Optional: 21st-dev-magic MCP server. |
| description | Search 21st.dev component registry for production-ready React components. Finds components by natural language description, filters by framework and style system, returns ranked results with install instructions. Use when looking for UI components, finding alternatives to existing components, or sourcing design system building blocks. |
| argument-hint | [component description] |
| tags | ["components","21st-dev","react","ui","search","registry","tailwind","shadcn"] |
| context | fork |
| version | 1.1.0 |
| author | OrchestKit |
| user-invocable | true |
| complexity | simple |
| persuasion-type | collaborative |
| effort | low |
| model | sonnet |
| allowed-tools | ["Read","Glob","Grep","WebFetch","WebSearch","AskUserQuestion","TaskCreate","TaskUpdate","TaskList"] |
| metadata | {"category":"workflow-automation","mcp-server":"21st-dev-magic"} |
| triggers | {"keywords":["component search","find component","search components","ui component","react component","21st.dev"],"examples":["search for a date picker component","find a modal component for React","are there any good table components on 21st.dev"],"anti-triggers":["implement","build","design","explore","brainstorm"]} |
Component Search
Search 21st.dev's registry of production-ready React components. Returns ranked results with code, previews, and install instructions.
/ork:component-search animated pricing table
/ork:component-search sidebar with collapsible sections
/ork:component-search dark mode toggle switch
How It Works
Query: "animated pricing table with monthly/annual toggle"
│
▼
┌──────────────────────────────┐
│ 21st.dev Magic MCP │ Search the 21st.dev developer registry
│ @21st-dev/magic │ Filter: React, Tailwind, shadcn
└──────────┬───────────────────┘
│
▼
┌──────────────────────────────┐
│ Results (ranked by relevance)│
│ │
│ 1. PricingToggle (98% match) │ ★ 2.3K views · shadcn/ui
│ 2. PricingCards (87% match) │ ★ 1.8K views · Radix
│ 3. AnimatedPricing (82%) │ ★ 950 views · Motion
└──────────────────────────────┘
Step 0: Parse Query
QUERY = ""
TaskCreate(subject="Component search: {QUERY}", description="Search 21st.dev registry", activeForm="Searching for {QUERY}")
TaskCreate(subject="Parse query and detect project context", activeForm="Detecting project context")
TaskCreate(subject="Search component registry", activeForm="Searching registry")
TaskCreate(subject="Present and deliver results", activeForm="Presenting results")
TaskUpdate(taskId="3", addBlockedBy=["2"])
TaskUpdate(taskId="4", addBlockedBy=["3"])
task = TaskGet(taskId="2")
TaskUpdate(taskId="2", status="in_progress")
TaskUpdate(taskId="2", status="completed")
Glob("**/package.json")
Glob("**/components.json")
Step 1: Search Registry
If 21st-dev-magic MCP is available:
If 21st-dev-magic is NOT available (fallback):
WebSearch("site:21st.dev {QUERY} React component")
WebFetch("https://21st.dev", "Search for: {QUERY}")
Alternative generation path — v0.app MCP (2026):
When the registry doesn't have a matching component, fall back to AI
generation via the v0.app MCP server rather than WebFetch scraping:
This is a generation path, not a registry search — results will not
have view counts or stars. Prefer registry search when possible so you
get battle-tested components; use v0.app only when the registry misses.
Step 2: Present Results
Show top 3 matches with:
- Component name and description
- Match relevance score
- Popularity (views/bookmarks)
- Framework compatibility
- Preview (if available)
- Install command
AskUserQuestion(questions=[{
"question": "Which component to use?",
"header": "Component",
"options": [
{"label": "{name_1} (Recommended)", "description": "{desc_1} — {views_1} views"},
{"label": "{name_2}", "description": "{desc_2} — {views_2} views"},
{"label": "{name_3}", "description": "{desc_3} — {views_3} views"},
{"label": "None — generate from scratch", "description": "Build a custom component instead"}
],
"multiSelect": false
}])
Step 3: Deliver Component
For the selected component:
- Show the full source code
- List dependencies (
npm install commands)
- Note any required peer dependencies (Radix, Motion, etc.)
- Highlight customization points (props, tokens, slots)
Framework Compatibility
| Project Stack | Search Filter | Notes |
|---|
| React + Tailwind | Default — best coverage | Most 21st.dev components |
| React + CSS Modules | Filter non-Tailwind | Fewer results |
| Next.js App Router | Prefer RSC-compatible | Check "use client" directives |
| Vue / Svelte | Not supported | 21st.dev is React-only |
| shadcn/ui style | Match visual language | Luma→rounded/pill, Nova→compact, Lyra→sharp |
shadcn v4 style awareness: When components.json has a style (e.g., "radix-luma"), prefer components whose visual language matches — rounded pill shapes for Luma, dense layouts for Nova/Mira, sharp edges for Lyra. Components can be adapted post-install, but a closer match reduces customization work.
Related Skills
ork:design-to-code — Full mockup-to-component pipeline (uses this skill)
ork:design-system-tokens — Adapt components to project tokens
ork:ui-components — Component library patterns