Adom Statusline for Claude Code
Public Made by Adomby adom
The Adom team's Claude Code status line: model name, a 20-segment context-usage bar, and 5-hour session usage in Adom brand truecolor (teal → yellow → red as usage climbs). Pure POSIX sh, no dependencies; one-command install/uninstall that merges settings.json safely.
name: adom-statusline description: Install the Adom-branded status line for Claude Code — model name, a 20-segment context-usage bar, and 5-hour session usage, colored with Adom brand truecolor (teal → yellow → red as usage climbs). Use when the user says "set up the adom statusline", "install the status line", "add the context bar to claude code", or asks for a Claude Code status line showing context/session usage.
Adom Statusline for Claude Code
A single POSIX-sh status line for Claude Code that shows, left to right:
- Model name in Adom purple (e.g.
Fable 5) - Context bar — 20 segments (
━filled /╌empty), one per 5% of context used, with the percentage. Teal below 50%, yellow at 50–79%, red at 80%+. - 5h session usage —
5h: N%from the five-hour rate-limit window, blue → yellow → red on the same thresholds.
No dependencies beyond sed/grep/printf (no jq). Colors are 24-bit ANSI truecolor
(supported by every modern terminal: Terminal.app, iTerm2, VS Code, Ghostty, Windows Terminal).
Install
Run the packaged installer from the package root:
./install.sh
It does exactly two things, both idempotent:
Copies
statusline.shto~/.claude/statusline.shand marks it executable. An existing different file is backed up to~/.claude/statusline.sh.bakfirst.Merges into
~/.claude/settings.json(creating it if absent, preserving every other key):{ "statusLine": { "type": "command", "command": "~/.claude/statusline.sh" } }
Then restart Claude Code (or start a new session) — the status line renders under the input box on the next status update.
Manual install (no installer)
- Save this package's
statusline.shas~/.claude/statusline.sh;chmod +xit. - Add the
statusLineblock above to~/.claude/settings.json.
How it works
Claude Code pipes a JSON status payload to the command on stdin. The script pulls three fields without a JSON parser:
model.display_name— viased- the first
used_percentage(context window) — viagrep -o five_hour.used_percentage(session window) — viagrep -oon the"five_hour":{...}object
Each field renders only if present, so the line degrades gracefully on older Claude Code versions that omit a field.
Customizing
Edit ~/.claude/statusline.sh:
- Colors — the
C_*variables at the top are\033[38;2;R;G;Bmtruecolor escapes. Defaults are the Adom brand palette: teal0,184,177, blue100,171,255, purple140,107,247. - Thresholds — the
-ge 80/-ge 50tests set where the bar turns red/yellow. - Bar width —
filled=$(( ctx_int / 5 ))andempty=$(( 20 - filled )); change both5and20together (width = 100 / divisor).
Uninstall
./uninstall.sh
Removes ~/.claude/statusline.sh and deletes the statusLine key from
~/.claude/settings.json (other settings untouched).
Troubleshooting
- No status line at all — check
statusLineis present in~/.claude/settings.jsonand the script is executable. Test by hand:echo '{"model":{"display_name":"Test"},"context":{"used_percentage":42}}' | ~/.claude/statusline.sh - Garbled color codes — the terminal lacks truecolor; swap the
C_*escapes for basic 16-color ones (e.g.\033[35mfor purple). - No
5h:segment — the payload only includes rate-limit data on plans with the 5-hour window; the script correctly omits it otherwise.
---
name: adom-statusline
description: Install the Adom-branded status line for Claude Code — model name, a 20-segment context-usage bar, and 5-hour session usage, colored with Adom brand truecolor (teal → yellow → red as usage climbs). Use when the user says "set up the adom statusline", "install the status line", "add the context bar to claude code", or asks for a Claude Code status line showing context/session usage.
---
# Adom Statusline for Claude Code
A single POSIX-sh status line for Claude Code that shows, left to right:
- **Model name** in Adom purple (e.g. `Fable 5`)
- **Context bar** — 20 segments (`━` filled / `╌` empty), one per 5% of context used,
with the percentage. Teal below 50%, yellow at 50–79%, red at 80%+.
- **5h session usage** — `5h: N%` from the five-hour rate-limit window, blue → yellow → red
on the same thresholds.
No dependencies beyond `sed`/`grep`/`printf` (no jq). Colors are 24-bit ANSI truecolor
(supported by every modern terminal: Terminal.app, iTerm2, VS Code, Ghostty, Windows Terminal).
## Install
Run the packaged installer from the package root:
```sh
./install.sh
```
It does exactly two things, both idempotent:
1. Copies `statusline.sh` to `~/.claude/statusline.sh` and marks it executable.
An existing different file is backed up to `~/.claude/statusline.sh.bak` first.
2. Merges into `~/.claude/settings.json` (creating it if absent, preserving every
other key):
```json
{ "statusLine": { "type": "command", "command": "~/.claude/statusline.sh" } }
```
Then restart Claude Code (or start a new session) — the status line renders under the
input box on the next status update.
## Manual install (no installer)
1. Save this package's `statusline.sh` as `~/.claude/statusline.sh`; `chmod +x` it.
2. Add the `statusLine` block above to `~/.claude/settings.json`.
## How it works
Claude Code pipes a JSON status payload to the command on stdin. The script pulls
three fields without a JSON parser:
- `model.display_name` — via `sed`
- the first `used_percentage` (context window) — via `grep -o`
- `five_hour.used_percentage` (session window) — via `grep -o` on the `"five_hour":{...}` object
Each field renders only if present, so the line degrades gracefully on older
Claude Code versions that omit a field.
## Customizing
Edit `~/.claude/statusline.sh`:
- **Colors** — the `C_*` variables at the top are `\033[38;2;R;G;Bm` truecolor
escapes. Defaults are the Adom brand palette: teal `0,184,177`, blue `100,171,255`,
purple `140,107,247`.
- **Thresholds** — the `-ge 80` / `-ge 50` tests set where the bar turns red/yellow.
- **Bar width** — `filled=$(( ctx_int / 5 ))` and `empty=$(( 20 - filled ))`; change
both `5` and `20` together (width = 100 / divisor).
## Uninstall
```sh
./uninstall.sh
```
Removes `~/.claude/statusline.sh` and deletes the `statusLine` key from
`~/.claude/settings.json` (other settings untouched).
## Troubleshooting
- **No status line at all** — check `statusLine` is present in `~/.claude/settings.json`
and the script is executable. Test by hand:
`echo '{"model":{"display_name":"Test"},"context":{"used_percentage":42}}' | ~/.claude/statusline.sh`
- **Garbled color codes** — the terminal lacks truecolor; swap the `C_*` escapes for
basic 16-color ones (e.g. `\033[35m` for purple).
- **No `5h:` segment** — the payload only includes rate-limit data on plans with the
5-hour window; the script correctly omits it otherwise.