ui-cli 0.3.9

A CLI to add components to your app.
Documentation
# Missing Features vs shadcn CLI

Features that shadcn CLI has that our `ui-cli` currently lacks.


  ---
  shadcn CLI vs rust-ui CLI — Feature Comparison

  ┌─────────────────────────────────────────────────────────────────────────────┐
  │                         COMMAND COMPARISON                                  │
  ├─────────────────────┬───────────────────────┬────────────────────────────── │
  │  Feature            │  shadcn (TS)          │  rust-ui (Rust)               │
  ├─────────────────────┼───────────────────────┼───────────────────────────────┤
  │  init               │  ✅ Full              │  ✅ Basic                      │
  │  add                │  ✅ Full              │  ✅ Full + TUI                 │
  │  starters           │  ❌                   │  ✅ (tauri, tauri-fullstack)   │
  │  diff               │  ✅ (deprecated)      │  ✅                            │
  │  search             │  ✅                   │  ✅                            │
  │  list               │  ❌                   │  ✅ (rust-ui exclusive)        │
  │  update             │  ❌                   │  ✅ (rust-ui exclusive)        │
  │  info               │  ✅                   │  ✅                            │
  │  docs               │  ✅                   │  ✅                            │
  │  view               │  ✅                   │  ✅                            │
  │  mcp                │  ✅                   │  🚧 planned (see __FEATURES_MCP.md) │
  │  migrate            │  ✅                   │  ❌ (not needed)               │
  │  build              │  ✅                   │  ❌ (not needed)               │
  │  registry add       │  ✅                   │  ❌ (not needed)               │
  └─────────────────────┴───────────────────────┴───────────────────────────────┘

  ---
  init — Both have it, shadcn's is far richer

  ┌─────────────────────────────────────────────┬────────────────────────────────────────────────┬───────────────────────┐
  │                 Capability                  │                     shadcn                     │        rust-ui        │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Framework auto-detection                    │ ✅ (Next, Vite, Astro, Laravel, React Router…) │ ❌                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Monorepo / workspace support                │ ✅                                             │ ✅ (workspace_utils)  │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Multiple templates                          │ ✅ 7 templates                                 │ ❌                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Theme presets / color base selection        │ ✅ interactive                                 │ ⚠️ auto-selects Default│
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ CSS variables toggle                        │ ✅                                             │ ❌                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ RTL support                                 │ ✅                                             │ ❌                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Overwrite config prompt                     │ ✅                                             │ ✅                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ --yes / --force / --defaults flags          │ ✅                                             │ ❌                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Re-install existing components              │ ✅                                             │ ❌                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Backup/restore on failure                   │ ✅                                             │ ❌                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Leptos dep check                            │ ❌                                             │ ✅                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ Tailwind CSS file detection from Cargo.toml │ ❌                                             │ ✅                    │
  ├─────────────────────────────────────────────┼────────────────────────────────────────────────┼───────────────────────┤
  │ merge package.json (preserves user deps)    │ ❌                                             │ ✅                    │
  └─────────────────────────────────────────────┴────────────────────────────────────────────────┴───────────────────────┘

  ---
  add — rust-ui has a unique interactive TUI (ratatui)

  ┌───────────────────────────────────┬────────────────────────────────┬──────────────────────────────────────────────────────────────────────────┐
  │            Capability             │             shadcn             │                                 rust-ui                                  │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ Add by name                       │ ✅                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ Dependency resolution             │ ✅                             │ ✅ (via tree_parser)                                                     │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ Interactive TUI picker            │ ❌ (simple multiselect prompt) │ ✅ Ratatui with tabs (components, hooks, blocks, icons, demos, settings) │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ Overwrite prompt (interactive)    │ ✅                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ --yes / --overwrite flag          │ ✅                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ --all flag                        │ ✅                             │ ❌ (not planned)                                                         │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ --dry-run                         │ ✅                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ --diff / --view                   │ ✅                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ --path override                   │ ✅                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ --json output                     │ ✅                             │ ✅ (list, search, diff, update, view, info)                              │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ JS file dependency download       │ ❌                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ Cargo dep injection               │ ❌                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ Register module in lib.rs/main.rs │ ❌                             │ ✅                                                                       │
  ├───────────────────────────────────┼────────────────────────────────┼──────────────────────────────────────────────────────────────────────────┤
  │ Deprecated component warnings     │ ✅                             │ ❌                                                                       │
  └───────────────────────────────────┴────────────────────────────────┴──────────────────────────────────────────────────────────────────────────┘

  ---
  Commands only in shadcn (not needed / not planned for rust-ui)

  ┌──────────────┬───────────────────────────────────────────────────────────────────────────────────────────────────┐
  │   Command    │                                           What it does                                            │
  ├──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ migrate      │ Run migrations: icons, radix, rtl — auto-refactors source files (not needed)                      │
  ├──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ build        │ Build registry items from local source (for publishing custom registries) (not needed)            │
  ├──────────────┼───────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ registry add │ Add a registry source to the project config (not needed)                                          │
  └──────────────┴───────────────────────────────────────────────────────────────────────────────────────────────────┘



---

## Features Still Missing

### `mcp` command
Start the CLI as an MCP server so AI coding tools (Claude Code, Cursor, VS Code) can call it programmatically.
See `__FEATURES_MCP.md` for the full design.

### `add` — deprecated component warnings
Warn when a requested component is deprecated in the registry.

### `init --yes` / `--force` / `--defaults` flags
Skip all prompts and use defaults. Needed for scripted/CI environments.

### `init` — backup/restore on failure
Back up existing config before writing; restore if the process exits unexpectedly.

### `init` — re-install existing components
After re-running `ui init`, offer to re-download and overwrite already installed components.

### `init` — interactive theme/color picker
Currently auto-selects the Default style. Should let the user pick a base color
(neutral, zinc, slate, stone…) interactively during init.

---

## Quality-of-Life Improvements

- **Custom registry support** — allow users to point `add`/`search` at a non-default registry URL
- **`--silent` flag** — suppress all output (for scripting)