# CLI: registry setup, license, non-interactive install ## Registry setup (one-time, per project) Free items (the 22 components and all `c-*` examples) need only the plain string registry in `components.json`: ```json { "registries": { "@reui": "https://reui.io/r/{style}/{name}.json" } } ``` Premium items (blocks; Motion Icons and templates) require a ReUI license at install: 1. Add the key to `.env.local`: ```bash REUI_LICENSE_KEY=your-license-key ``` 2. Switch `components.json` to the authenticated object form: ```json { "registries": { "@reui": { "url": "https://reui.io/r/{style}/{name}.json", "headers": { "Authorization": "Bearer ${REUI_LICENSE_KEY}" } } } } ``` The shadcn CLI expands `${REUI_LICENSE_KEY}` from `.env.local` inside `components.json`. MCP client configs expand environment variables too, but each client has its OWN syntax, so wire the ReUI MCP server with the form that client understands: - Claude Code (`.mcp.json`, `~/.claude.json`): `"Authorization": "Bearer ${REUI_LICENSE_KEY}"` - Cursor (`.cursor/mcp.json`) and VS Code: `"Authorization": "Bearer ${env:REUI_LICENSE_KEY}"` - OpenCode (`opencode.json`): `"Authorization": "Bearer {env:REUI_LICENSE_KEY}"` - Codex (`~/.codex/config.toml`): `bearer_token_env_var = "REUI_LICENSE_KEY"` - Codex reads the variable itself, so there is no header to write Only a client with no interpolation at all needs the raw `reui_pat_...` token, and then only in a file that is never committed. Copying the `components.json` form into a client that does not expand it is the common failure: the literal `${REUI_LICENSE_KEY}` placeholder is sent to the server as the credential and every call comes back 401. The MCP `get_project_context` tool returns the right config. Full guide: https://reui.io/docs/registry?ref=skill ## Installing Use the project's package runner (check `packageManager`): ```bash npx shadcn@latest add @reui/ --yes # npm pnpm dlx shadcn@latest add @reui/ --yes # pnpm bunx --bun shadcn@latest add @reui/ --yes # bun ``` `--yes` skips confirmation prompts. The CLI auto-detects the package manager from the lockfile (there is no `--package-manager` flag). It also resolves the correct base+style variant from `components.json`, so do not pass a style. ## Handling prompts and conflicts - **Always pass `--yes`** so the CLI does not block on confirmation prompts. - **Do NOT pass `--overwrite` by default.** If the CLI reports an existing file, read the output and resolve deliberately: install under a different name, adjust the path, or ask the user. Only use `--overwrite` when the user explicitly wants to replace a file. - **Preview first when touching an existing project**: `npx shadcn@latest add @reui/ --dry-run` shows what would change; `--diff ` shows a specific file's diff. Use these before overwriting. - Run from the **project root** so `components.json` and `.env.local` are found. ## Free vs premium boundary - Public, no key: `c-*` examples and the 22 components (`@reui/data-grid`, `@reui/badge`, ...) that those examples depend on. - Key required at install: blocks (`@reui/-N`) need a Pro or Ultimate license; Motion Icons (`@reui/icons/...`) and templates need Ultimate. If an install 401/403s, the license key is missing, invalid, or the plan does not cover that resource (blocks: Pro or higher; icons and templates: Ultimate). Point the user to https://reui.io/account?ref=skill (their key) or https://reui.io/pricing?ref=skill (upgrade).