Skip to content
Development
Command

/statusline

Wire codeArbiter's statusline into ~/.claude/settings.json, or remove it.

From plugin
codearbiter
14542 skills19 agents42 commands
Install
> /plugin marketplace add arbiterForge/codeArbiter

How it fires

How this command gets triggered: by you, by Claude, or both.

  • Fires itselfClaude auto-loads it when your prompt matches the work.
  • You can call itInvoke it directly when you want it.
  • Slash command/statusline

Context preview

What this command does when you run it.

Wire codeArbiter's statusline into ~/.claude/settings.json, or remove it.

Command definition

statusline.md
description: Wire codeArbiter's statusline into ~/.claude/settings.json, or remove it.
argument-hint: "install | uninstall | status"

{{CMD:statusline}} — wire-up

A plugin cannot own a `statusLine`, and `{{PLUGIN_ROOT}}` is not expanded inside `settings.json`. So the renderer at `{{PLUGIN_ROOT}}/hooks/statusline.py` is wired in by resolving its absolute path at install time and writing it to the user's `statusLine.command`. The backing script `{{PLUGIN_ROOT}}/hooks/wire-statusline.py` performs the surgery deterministically and never clobbers a settings file it cannot parse.

The renderer is global — its usage box (folder, git, model, rate limits, context, cumulative tokens, API-equivalent cost, per-call token burn) renders in every repo. The arbiter segments (`stage · tasks · q · over`) light up only where `.codearbiter/CONTEXT.md` sets `arbiter: enabled`.

Token and cost figures come from the session transcript: real per-model token usage is accumulated, and the cost is the estimated pay-as-you-go **API-equivalent** (labelled `api≈`) — what the same tokens would have cost at list API rates — not a bill.

Each visible subagent row reports its recorded model. Claude IDs retain a compact family/version label such as `model:sonnet-4-6`; multiple models report `model:mixed`, while absent or malformed metadata reports `model:?`. The tag uses the active theme's bright accent, with no model-specific colors.

Argument

`$ARGUMENTS` is one of `install` (default), `uninstall`, or `status`.

Procedure

1. Run the backing script with the requested action, passing the resolved plugin root so the absolute path is written correctly:

   python "{{PLUGIN_ROOT}}/hooks/wire-statusline.py" <action> --plugin-root "{{PLUGIN_ROOT}}"

On non-Windows hosts the interpreter token defaults to `python3`; override with `--interp` only if neither `python` nor `python3` is the wanted interpreter.

2. **install** — back up any existing `statusLine` to `_codearbiterStatuslineBackup`, then set `statusLine.command` to `<python> "<abs>/hooks/statusline.py"`. Re-running install after a plugin upgrade just refreshes the path; it does not overwrite the backup. **Before running install, show the user the resolved command and the prior line it will back up, and confirm.** Editing the user's global settings is their call, not yours.

The script REFUSES to wire a plugin root that will not outlive the session — a git worktree, for instance. `settings.json` is global and the pin is absolute, so a worktree path breaks the statusline the moment that checkout is pruned. On a refusal, report it verbatim and re-run from the real install (the plugin cache, or the main checkout) rather than working around it.

3. **uninstall** — restore the backed-up line, or remove `statusLine` entirely if none existed. Never blocked, wherever it is run from — a user stuck with a dead pin must be able to clear it.

4. **status** — report the current `statusLine.command`, whether it is codeArbiter's, and any backup on file. Changes nothing.

5. Report the script's output verbatim, then state what changed. If install succeeded, tell the user the statusline takes effect on the next render (a new prompt or session). Tip: `CODEARBITER_COMPACT=1` drops the subagent rows; `CODEARBITER_STATUSLINE=off` disables it; `CODEARBITER_WIDTH` sets the box width.

Hard gate

MUST NOT edit `~/.claude/settings.json` by hand for this — the backing script is the only sanctioned path, so the backup/restore contract holds. MUST NOT proceed with `install` without first surfacing the resolved command to the user and getting a go-ahead.

Read more
Ships withcodearbiter

When you can't trust yourself with your code base, trust Arbiter.

Get the whole plugin

Other commands on codearbiter.