woz
WOZCODE utilities. Subcommands — login, logout, status, settings, update, share, review (deep multi-persona code review), benchmark (WOZCODE vs vanilla comparison). Invoke as `/woz <subcommand>`, e.g. `/woz login` or `/woz review`.
git clone --depth 1 https://github.com/WithWoz/wozcode-plugin /tmp/woz && cp -r /tmp/woz/skills/woz ~/.claude/skills/wozSKILL.md
# /woz — WOZCODE utilities
One skill, eight subcommands. The first word of the arguments selects the subcommand:
| Subcommand | Purpose |
|---|---|
| `login` | Authenticate with the Woz service (browser, API key, or token) |
| `logout` | Clear stored credentials and log out |
| `status` | Show authentication and subscription status |
| `settings` | Show or update WOZCODE plugin settings |
| `update` | Update the WOZCODE plugin to the latest version |
| `share` | Print the referral share message |
| `review` | Deep multi-persona code review of the current branch (requires KnowledgeBase access) |
| `benchmark` | Side-by-side WOZCODE vs vanilla Claude Code comparison on the user's repo |
TRIGGER when: the user runs `/woz <subcommand>`, or says "log in to woz", "woz status", "woz settings", "configure woz", "toggle attribution", "update woz", "refer a friend", "deep review", "final check before pushing", "review my branch", "is this ready to ship", "compare woz", "how much does woz save", "benchmark woz", or similar.
If no subcommand is given, ask the user which one they want (list them briefly).
Only the frequent, low-risk subcommands are auto-approved (`allowed-tools` is just `Bash(node *), Read`). The rare, heavier paths run through a normal permission prompt on purpose — least privilege on the common account/auth paths: `update` will prompt for `claude`/`rm`, and `benchmark` for `git`/`Write`/`mkdir`/etc. Approve those when the user runs them.
## login
Dispatch on the arguments after the subcommand:
- Any argument that starts with `woz_sk_` (regardless of surrounding flags) → API Key Login below.
- `--token <token>` → Token Login below.
- Otherwise → Browser Login.
### Browser Login (Preferred)
Run the Woz authentication flow. This opens a browser for the user to log in:
```bash
node --no-warnings=ExperimentalWarning ${CLAUDE_PLUGIN_ROOT}/scripts/wozcode-cli.cjs login
```
If the command exits with code 0, login succeeded — confirm to the user.
### API Key Login
Use this when the user provides a WozCode API key (a `woz_sk_…` value) — from
`/woz login woz_sk_…`, from a CI setup question, or when they paste one after a
browser-login failure.
The key is password-equivalent, and any command you build with it inline lands
in your transcript — so when the user can set an env var, prefer
`WOZCODE_API_KEY` (see below). For a direct login, NEVER pass the key as an
argument to the login command (it would show in `ps` for that process) — pipe
it on stdin:
```bash
printf %s '<api-key>' | node --no-warnings=ExperimentalWarning ${CLAUDE_PLUGIN_ROOT}/scripts/wozcode-cli.cjs login --api-key-stdin
```
Replace `<api-key>` with the actual key, single-quoted. Do not echo the key
back to the user in your response.
On Windows `cmd`/PowerShell there is no `printf`, so don't pipe the key there —
tell the user to set the `WOZCODE_API_KEY` environment variable instead (see
the CI/headless note below).
On success the CLI prints `Authenticated as <email> (organization: <id>)` —
confirm to the user. On `API key invalid or revoked`, tell the user to check
the key on their WozCode token page (or with their org admin) — existing keys
are shown by preview only, so a new one may need to be issued.
For CI or headless use, the user doesn't need this skill at all: setting the
`WOZCODE_API_KEY` environment variable makes the plugin bootstrap and re-mint
sessions automatically.
### Token Login
Use this when:
- The user passed `--token <token>` as arguments to this skill
- The browser login above timed out or failed and the user provides a token
If the browser login failed:
1. The auth URL is visible in the output above
2. Tell the user to open that URL in their browser and complete the login
3. Ask the user to copy the token shown on the auth page after login
Once you have the token (from args or from the user), run:
```bash
node --no-warnings=ExperimentalWarning ${CLAUDE_PLUGIN_ROOT}/scripts/wozcode-cli.cjs login --token '<token>'
```
Replace `<token>` with the actual token.
Confirm success or relay any error to the user.
## logout
Log out of Woz by clearing stored credentials:
```bash
node --no-warnings=ExperimentalWarning ${CLAUDE_PLUGIN_ROOT}/scripts/wozcode-cli.cjs logout
```
Confirm that the user has been logged out.
## status
Check the current Woz authentication status:
```bash
node --no-warnings=ExperimentalWarning ${CLAUDE_PLUGIN_ROOT}/scripts/wozcode-cli.cjs status
```
Relay the output to the user. Do not call out or warn about the `Token expires` value — the token is refreshed automatically, so framing the expiry as something the user needs to act on is misleading.
## settings
Manage WOZCODE plugin settings. The user-facing knobs (attribution, status line, spinner verbs, the live-reviewer toggles, …) live in `~/.claude/settings.json` under the `wozcode` key. Prefer the `--show` / `--set` helper below over hand-editing — it applies the right side effects.
### Show current settings
```bash
node --no-warnings=ExperimentalWarning ${CLAUDE_PLUGIN_ROOT}/scripts/settings-helper.cjs --show
```
Display the JSON output as a readable table for the user.
### Update a setting
```bash
node --no-warnings=ExperimentalWarning ${CLAUDE_PLUGIN_ROOT}/scripts/settings-helper.cjs --set <key> <value>
```
Where `<key>` is a setting name and `<value>` is `true` or `false` (or, for `sql`, a JSON policy object — see [The `sql` connection policy](#the-sql-connection-policy) below).
**Available settings:**
| Key | Default | Description |
|-----|---------|-------------|
| `attribution` | `true` | Co-Authored-By on commits + PR badge |
| `statusLine` | `true` | Master toggle for the WOZCODE status line |
| `statusLineSession` | `true` | Show session savings in status line |
| `statusLineLifetime` | `true` | Show lifetime savings in status line |
| `statusLineTips` | `true` | Show quick tips in status line |
| `statusLineShare` | `true` | Show /woz share referral hint in status line |
| `spinnerVerbs` |WOZCODE free-plan fallback agent — active when the monthly free-plan cap is exhausted. Claude Code's built-in Read, Edit, Write, Grep, Glob, and NotebookEdit are available; WOZCODE MCP tools are disallowed until the cap resets or the user upgrades.
WozCode enhanced coding agent with smart search, batch editing, and SQL introspection. Use as the default main thread agent.
Fast read-only agent for file searches, symbol lookups, and codebase questions like "where is X defined?", "where is X called?", or "how does X flow through the system?". Prefer over shell-based exploration when answering would take 3+ Search/Sql calls. Cheaper model (haiku) so delegation pays for itself on any real scan.
Deprecated alias — use `/woz benchmark`.
Deprecated alias — use `/woz login`.
Deprecated alias — use `/woz logout`.
Search past Claude Code sessions to recall commands, solutions, and context from prior conversations. TRIGGER on 'remember when', 'last time', 'we did this before', 'how did we', or /woz-recall.
Show the WOZCODE savings report — calls saved, time saved, tokens saved, and lifetime totals.