Shark UI is a component registry built on Ark UI with a shadcn-like developer experience.
What this skill is for
Use this skill to:
- pick the right Shark primitive(s) for a UI task
- write correct usage code (imports, composition, props) aligned to Ark UI patterns wrapped by Shark
- avoid assuming Radix/shadcn APIs without checking Shark docs and examples
- use registry examples as the primary “how it fits together” reference
Source of truth
- Component docs:
content/docs/components/*.mdx(andcontent/docs/utilities/*.mdxwhere applicable) - Registry examples:
registry/react/examples/<component>/example-*.tsx - Implementations:
registry/react/components/<component>.tsx - Registry manifest:
registry.json(authoritative list of published registry items) - LLM-oriented routes:
app/(llms)/andlib/llms.ts,lib/llms-registry-examples.ts - Repository conventions:
AGENTS.md
Public site (install URLs and browsing): see config/site.ts (SITE_CONFIG.url).
Extended catalog (not necessarily in registry.json)
Additional components may exist under registry/react/components/ and content/docs/components/ before they appear in registry.json. Prefer the registry list in references/component-registry.md for CLI install names; if a doc exists without a registry row yet, still follow that component’s MDX and local registry/react/examples/ folder.
Out of scope
- Next.js app routing, marketing pages, and non-registry app code unless the user explicitly asks.
- Editing
registry.jsongenerated payloads unless explicitly requested.
Principles for agent output
- Use existing Shark primitives and examples before inventing custom markup.
- Prefer composition patterns shown in MDX and
registry/react/examples/. - Follow Shark naming and exports from docs exactly; verify Ark prop names via the Ark doc link at the bottom of each component MDX when present.
- Keep examples accessible and production-realistic.
- Prefer concise code that matches docs and examples.
- Assume Tailwind CSS v4 conventions used across Shark docs.
Critical usage rules
Always apply before returning Shark code:
- Do not invent Shark or Ark APIs. Confirm exports and structure from
content/docs/components/<name>.mdxand/orregistry/react/components/<name>.tsx. - For combobox (and similar list primitives): use
useFilter+useListCollectionfrom@ark-ui/react, pass acollection(not a rawitemsarray where the docs use collection), callfilter(inputValue)fromonInputValueChange, and rendercollection.items.map(...)inside the list (seeAGENTS.mdand combobox examples). - For select/listbox patterns that use collections: prefer
createListCollection/useListCollectionas shown in component examples. - Preserve accessibility labels, roles, and invalid/error semantics (
Field,aria-invalid, etc.). - For charts: wire
ChartTooltipwithcontent={(props) => <ChartTooltipContent {...props} />}; do not stub tooltip state onChartTooltipContent; for static previews useaccessibilityLayer={false}on the chart root when appropriate (AGENTS.md). - For sidebar previews in docs style: use
absolute inset-0 overflow-hidden,className="absolute"onSidebar,h-fullonSidebarProvider, and nativeoverflow-y-autoinstead ofScrollAreawhen layout issues appear (AGENTS.md).
Rule references (read when the task touches these areas):
./references/rules/styling.md— Tailwind tokens, icons,data-slot, layout./references/rules/forms.md—Fieldcomposition and validation signaling./references/rules/composition.md— Ark-based trigger/content hierarchies and documentedasChildusage./references/rules/migration.md— shadcn/Radix assumptions vs Shark/Ark./references/portal.md— ArkPortalusage in Shark wrappers
Component discovery
Consult references/component-registry.md for the full list and links to per-component guides under ./references/primitives/<name>.md.
Usage workflow
- Identify user intent (single primitive, overlay, form, collection control, etc.).
- Open
references/component-registry.mdand locate the component row. - Read the component MDX for installation, anatomy, and API tables.
- Open at least one
registry/react/examples/<component>/example-*.tsxfor a working composition. - When behavior is unclear, read
registry/react/components/<component>.tsxfor Ark imports and prop passthrough. - Self-check accessibility, controlled vs uncontrolled state, and SSR/lazy-mount defaults.
Installation reference
See references/cli.md.
Quick CLI pattern:
npx shadcn@latest add @shark/<component>
Alternative URL pattern (see manual installation docs):
pnpm dlx shadcn@latest add https://shark.vini.one/r/<component>.json
Import paths
- Inside the shark-ui repository:
@/registry/react/components/<component-name>(never relative../../components/). - Consumer apps after CLI/manual install: typically
@/components/ui/...per installation docs.
High-composition primitives
Read these guides first when touching overlays, collections, or app chrome:
./references/primitives/dialog.md./references/primitives/sheet.md./references/primitives/menu.md./references/primitives/context-menu.md./references/primitives/popover.md./references/primitives/select.md./references/primitives/combobox.md./references/primitives/field.md./references/primitives/sidebar.md
Output checklist
Before returning code:
- imports and props match Shark docs and/or source
- composition matches Ark patterns used in Shark (triggers, portals, collection objects)
- explicit
typeon buttons in forms; labels wired for controls - combobox/select examples use collection + filter patterns when applicable