Search Registry Items
Look up indexed shadcn registry catalog entries via full-text search on item name and description. Returns the registry namespace and addCommandArgument for npx shadcn@latest add.
Default tool call:
CallMcpTool({ "server": "user-shoogle", "toolName": "search_registry_items", "arguments": { "query": "button" } })
Workflow
Progress:
- Call
search_registry_itemsonuser-shooglewith a short keyword or name fragment (not a full sentence) - Present matches as the output table below — never dump raw JSON
- If multiple registries share the same name, ask which registry to use
- Install with
npx shadcn@latest add {addCommandArgument}(or the project's package runner) - Paginate only when needed (
offset+=limitwhilepagination.hasMore)
Skip search when the user already gave the exact add target (e.g. @cult-ui/gradient-button) — go straight to view / add.
For install and composition rules after search, use the shadcn skill.
Gotchas
- One MCP tool only.
user-shoogleexposessearch_registry_items. Block and semantic MCP tools (search,search_vectors) are not available — use shoogle.dev/search instead. Do not usenpx shadcn@latest searchfor this workflow. - Full-text on
nameanddescription. Matching uses full-text search across both fields — not item titles, and not semantic/vector search. A query likecarouselcan match items namedcarouselor whose description mentions carousels. - Keywords, not intent. Multi-concept natural-language queries like "login page with dark mode" won't work well. For semantic block discovery, send the user to shoogle.dev/search.
- Query the item name, not the registry prefix. Use
button, not@acme/button. Filter byregistryin results. - Short fragments beat sentences. Prefer
button,hero,data-table. Empty or whitespace queries return nothing. - No results? Try shorter fragments or synonyms (
dialogvsmodal). addCommandArgumentis the install target. Use it verbatim:npx shadcn@latest add cult-ui/gradient-button. Do not reconstruct from@registry/name.- Pagination cap is 100. Default page size is 100; mention
pagination.totalwhen results span pages.
If MCP is unavailable, point to shoogle.dev/mcp-install. For parameter or response details, read references/TOOL-REFERENCE.md.
Output format
Always respond with a markdown table:
| name | registry | add command | type | description |
|---|
- add command:
npx shadcn@latest add {addCommandArgument}when present - Use
—for empty descriptions - End with match count and page info when relevant
Example — user asks for button components across registries:
| name | registry | add command | type | description |
|---|---|---|---|---|
| button | shadcn | npx shadcn@latest add shadcn/button |
registry:ui | A clickable button component |
| button | cult-ui | npx shadcn@latest add cult-ui/button |
registry:ui | Animated button variants |
Found 2 matches (showing 1–2 of 2). Which registry should I add from?
Out of scope
| Need | Use instead |
|---|---|
| Registry item by name or description | search_registry_items (this skill) |
| Block keyword search | shoogle.dev/search |
| Semantic / layout discovery | shoogle.dev/search |
| Install a known item | shadcn CLI add / view |
| Browse one registry | npx shadcn@latest search @registry -q "…" |