Getting started

CLI reference

The commands you will actually use.

Add a component

bunx --bun shadcn@latest add @woohl/button

Resolves 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/select

Shared dependencies are resolved once, not per item.

Where things land

Item typeInstalls to
registry:uicomponents/ui/<name>.tsx
registry:blockcomponents/blocks/<name>.tsx
registry:liblib/<name>.ts
registry:themedesign-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 --overwrite

Diff 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 installs

registry:build derives every dependency from the source imports, so adding an import to a component is enough — the manifest updates itself.

On this page