Getting started
CLI reference
The commands you will actually use.
Add a component
bunx --bun shadcn@latest add @woohl/buttonResolves the whole chain: npm packages, internal registry dependencies, and the
token layer. Files land at the paths your components.json aliases define.
Add several at once
bunx --bun shadcn@latest add @woohl/dialog @woohl/dropdown @woohl/selectShared dependencies are resolved once, not per item.
Where things land
| Item type | Installs to |
|---|---|
registry:ui | components/ui/<name>.tsx |
registry:block | components/blocks/<name>.tsx |
registry:lib | lib/<name>.ts |
registry:theme | design-system/** |
Updating
There is no update command. Re-running add overwrites the file, which is the
honest model for source you own: your local edits are yours, and taking a new
version means deciding what to do with them.
bunx --bun shadcn@latest add @woohl/button --overwriteDiff before you accept it if you have edited the file — the CLI will not merge for you.
Building the registry
From inside design-system:
bun run registry:build # compile registry/ into public/r/*.json
bun run build # registry + MDX + next build
bun run start -p 3003 # serve it for @woohl-local installsregistry:build derives every dependency from the source imports, so adding an
import to a component is enough — the manifest updates itself.