Skip to content
Development
Command

/statusline

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

From plugin
codearbiter
13944 skills28 agents44 commands
Install
$ npx -y skills add arbiterForge/codeArbiter --agent claude-code

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, auto-invoked
Stats
139
Stars
1
Views
7
Forks
Active
Maintenance
Python
Language
AGPL-3.0
License
just now
Last commit
3mo ago
Created

Repo: arbiterForge/codeArbiter