@todayworks/undoc-cli
v1.6.0
Published
Deterministic installer for the undoc MCP server, skills, and hooks across Claude Code, Cursor, Codex, and Claude Desktop.
Maintainers
Readme
@todayworks/undoc-cli
Deterministic installer for the undoc MCP server, skills, and hooks across Claude Code, Cursor, Codex, and Claude Desktop.
npx @todayworks/undoc-cli@latest installA browser tab opens. Pick a workspace, click Authorize. The CLI writes a per-folder .mcp.json, plus skills + hooks at the user level (Claude Code only). Re-running is idempotent — same folder + workspace reuses the same API key.
Commands
| Command | What it does |
|---|---|
| install | Detect installed clients, authorize, write configs (default). |
| add <client> | Install for one additional client. |
| status | Show what the manifest claims is installed. |
| rebind | Revoke the current folder's key and re-run install. |
| upgrade | Re-run install at the latest CLI version (npx @todayworks/undoc-cli@latest install). |
| uninstall | Remove everything tracked in the manifest. Revokes keys it created; leaves user-supplied (UNDOC_API_KEY) alone. |
Flags
| Flag | What it does |
|---|---|
| --client=a,b,c | Restrict to a subset. Valid: claude-code, cursor, codex, claude-desktop. |
| --no-browser | Skip the browser flow; require UNDOC_API_KEY in env. Implicit when no TTY. |
| --scope-mcp=project\|user | Override MCP entry scope. Default: project (claude-desktop forced to user). |
| --scope-skills=project\|user | Override skills install scope. Default: user. |
| --scope-hooks=project\|user | Override hooks install scope. Default: user. |
| --no-hooks | Skip the Claude Code hook entries. MCP + skills still install. |
| --yes, -y | Skip the multi-client checklist when 2+ clients are detected. Implicit when no TTY. |
| --help, -h | Print usage. |
| --version, -V | Print the CLI version. |
Environment
| Variable | What it does |
|---|---|
| UNDOC_API_KEY | Required when --no-browser is set (or when there's no TTY). Recorded as user-supplied — uninstall won't auto-revoke. |
| UNDOC_APP_URL | Override https://www.getundoc.ai (dev/staging). |
| CI=true | Force headless mode (same as no TTY). |
Common invocations
# Default — interactive, browser auth
npx @todayworks/undoc-cli@latest install
# CI / scripted
UNDOC_API_KEY=undoc_… npx @todayworks/undoc-cli@latest install --no-browser
# One client only
npx @todayworks/undoc-cli@latest install --client=cursor
# Re-issue the key for this folder
npx @todayworks/undoc-cli@latest rebind
# Tear down everything
npx @todayworks/undoc-cli@latest uninstallWhat gets written
| Scope | Where | Owned |
|---|---|---|
| Per-folder MCP entry | ./.mcp.json, ./.cursor/mcp.json, etc. | undoc-<workspace-slug> key only |
| Per-user skills (Claude Code) | ~/.claude/skills/undoc*/ | The 5 directories the CLI ships |
| Per-user hooks (Claude Code) | ~/.claude/settings.json | The 3 hook entries with __undoc_* ids |
| Manifest | ~/.cache/undoc/installed.json | Source of truth for uninstall |
Re-runs and uninstall touch only what the manifest claims — sibling MCP servers and unrelated skill/hook entries in the same files stay put.
License
MIT.
