A single-pass, model-agnostic status line for Claude Code, with three switchable themes.
- Single
jqpass — reads the whole status-line JSON once per render, not once per segment - Model-agnostic — every segment renders regardless of which model is active
- 3 switchable themes —
minimal,full,power; swap with one command - Merge-safe install — patches
settings.jsonwith ajqmerge, never overwrites your other keys
Run these three commands separately in Claude Code — enter each one, let it finish, then run the next.
- Add the marketplace:
/plugin marketplace add tarunlnmiit/statusline-plus
- Install the plugin:
/plugin install statusline-plus@statusline-plus
- Wire the status line into your settings:
/statusline-install
Start a new session (or restart) to see the new status line.
${CLAUDE_PLUGIN_ROOT} isn't available at status-line render time and the
plugin cache directory is versioned, so /statusline-install copies the
engine to a stable path — ~/.claude/statusline-plus/ — and points
settings.json at that copy. Re-running the plugin's own update/install flow
never touches your other settings.json keys; the patch is a merge.
Switch with /statusline <minimal|full|power>. Run /statusline with no
argument to see the current theme and the list of available ones.
| Theme | Segments (in order) |
|---|---|
minimal |
model · context-bar · folder |
full (default) |
model · effort · context-bar · git-branch · cost · 5h · reset · folder |
power |
model · effort · thinking · context-bar · tokens · cost · git-branch · 5h · 7d · reset · duration · pr · output-style · folder |
minimal — just enough to orient:
full — the daily-driver default:
power — everything:
Segment reference
| Segment | Shows |
|---|---|
model |
Active model display name |
effort |
Reasoning effort level (low/medium/high), color-coded |
thinking |
think indicator when extended thinking is enabled |
context-bar |
10-block usage bar + percentage, color-coded by threshold |
tokens |
Input/output token counts for the current context (↑/↓, in thousands) |
cost |
Session cost in USD |
git-branch |
Current git branch (or short SHA in detached HEAD), if inside a repo |
5h |
5-hour rate-limit usage percentage, color-coded |
7d |
7-day rate-limit usage percentage, color-coded |
reset |
Time until the 5-hour rate limit resets |
duration |
Session duration, from the transcript file's creation time |
pr |
PR number and review state, when set |
output-style |
Active output style, when not default |
folder |
Current working directory's folder name |
A segment silently omits itself when its underlying JSON field is absent — themes never show a broken or empty slot.
The engine does one jq pass over stdin per render. These are the fields it
reads:
| Field | Used by |
|---|---|
.model.display_name |
model |
.effort.level |
effort |
.thinking.enabled |
thinking |
.context_window.used_percentage |
context-bar |
.context_window.current_usage.input_tokens |
tokens |
.context_window.current_usage.output_tokens |
tokens |
.cost.total_cost_usd |
cost |
.workspace.current_dir (falls back to .cwd) |
git-branch, folder |
.rate_limits.five_hour.used_percentage |
5h |
.rate_limits.seven_day.used_percentage |
7d |
.rate_limits.five_hour.resets_at |
reset |
.transcript_path |
duration |
.pr.number, .pr.review_state |
pr |
.output_style.name |
output-style |
If jq isn't on PATH, the engine falls back to a minimal model · folder
line parsed with grep/sed, so the status line never breaks.
/statusline-uninstall
Removes the statusLine key from settings.json (a merge-safe jq del,
validated before writing). Every other setting is left untouched. The copied
engine at ~/.claude/statusline-plus/ is left in place — to remove it
completely:
rm -rf ~/.claude/statusline-plus/statusline-install re-enables the status line at any time.
.claude-plugin/ plugin.json + marketplace.json
bin/statusline.sh the engine (single jq pass, model-agnostic segments)
themes/{minimal,full,power}.sh
commands/
statusline-install.md /statusline-install — wires settings.json
statusline.md /statusline <theme> — switch or show theme
statusline-uninstall.md /statusline-uninstall — removes the wiring
Issues and PRs welcome — see tests/run.sh for the fixture-driven test harness before submitting a change.
MIT




