Registry
Own the code without forking the design system
The registry turns package source into copyable component files, preserving dependencies and local aliases for every app.
Flow
Generate
The registry is generated from real @cooud-ui/ui component sources, keeping docs, packages, and copy-paste output aligned.
Resolve
When you add a component, registry dependencies are expanded so required primitives come with it.
Rewrite
Imports are rewritten to your configured aliases, such as @/components/ui and @/lib/cn.
Diff
The diff command exposes local drift before teams upgrade copied components.
Local registry
Use a local registry path when developing or testing component changes before publishing.
bun run -F cooud-ui registrypnpm dlx cooud-ui@latest list --registry ./registrypnpm dlx cooud-ui@latest add button card --registry ./registry
Use with the shadcn CLI
The registry also speaks the shadcn registry spec, so any shadcn-compatible tool can install Cooud UI without the cooud-ui CLI.
npx shadcn@latest add https://ui.testcooud.cloud/r/button.json
Every item is served at /r/<name>.json, with the full index at /r/registry.json. Registry dependencies resolve back to this registry automatically, and imports are rewritten to your components.json aliases.
Registry item shape
Each item records files, npm dependencies, and other registry items required by the component.
{"name": "button","type": "registry:ui","files": ["components/ui/button.tsx"],"dependencies": ["@radix-ui/react-slot", "class-variance-authority"],"registryDependencies": []}
The CLI reads cooud-ui.json before writing files, so copied components follow the receiving app's folder structure.