A minimal statusline for Claude Code
npx claudepluginhub postmodum37/simple-claude-code-statuslineA simple, hackable two-line statusline for Claude Code showing model, git status, context usage, and rate limits
A minimal, hackable two-line statusline for Claude Code.

Line 1: Model [agent] | Directory | Git branch + status | Session lines changed Line 2: Context bar | 5h rate limit | 7d rate limit | Cost | Duration
[wt:name] indicator--agent flag>200k token threshold indicator (fast mode pricing doubles past 200k)| Usage | Color | Meaning |
|---|---|---|
| 0-50% | Green | Plenty of context remaining |
| 51-75% | Yellow | Getting full |
| 76-90% | Orange | Consider summarizing |
| 91%+ | Red | Near limit |

↑2 commits ahead, ↓1 behind upstream[wt:feature-name] when in a linked worktree+44/-14 cumulative lines added/removed this session
Shows abbreviated model names: Opus 4.6, Sonnet 4.5, Haiku, etc.
git — Repository status (optional)The plugin ships as pre-compiled Go binaries with no runtime dependencies.
Add the marketplace:
/plugin marketplace add Postmodum37/simple-claude-code-statusline
Install the plugin:
/plugin install simple-statusline
Restart Claude Code, then configure:
/simple-statusline:setup
The statusline appears immediately after setup (no second restart needed).
Clone the repo and build:
git clone https://github.com/Postmodum37/simple-claude-code-statusline.git
cd simple-claude-code-statusline
make build
Copy the shim and your platform's binary:
cp bin/statusline.sh ~/.claude/statusline.sh
chmod +x ~/.claude/statusline.sh
mkdir -p ~/.claude/bin
cp bin/$(uname -s | tr '[:upper:]' '[:lower:]')-$(uname -m | sed 's/x86_64/amd64/;s/aarch64/arm64/')/statusline ~/.claude/bin/statusline
Add to ~/.claude/settings.json:
{
"statusLine": {
"type": "command",
"command": "~/.claude/bin/statusline"
}
}
Restart Claude Code.
Fork the repo and edit the Go source. Colors are defined as constants in src/render.go, and the two-row layout is built in buildRow1/buildRow2. Run make build to compile after changes.
Claude Code pipes JSON to statusline commands via stdin. Here's the complete schema (as of Claude Code v2.1.85):
{
"session_id": "abc123...",
"cwd": "/current/working/directory",
"version": "2.1.85",
"transcript_path": "/path/to/transcript.jsonl",
"model": {
"id": "claude-opus-4-6",
"display_name": "Opus"
},
"workspace": {
"current_dir": "/current/working/directory",
"project_dir": "/original/project/directory"
},
"cost": {
"total_cost_usd": 0.05,
"total_duration_ms": 120000,
"total_api_duration_ms": 95000,
"total_lines_added": 156,
"total_lines_removed": 23
},
"context_window": {
"context_window_size": 200000,
"used_percentage": 45,
"remaining_percentage": 55,
"total_input_tokens": 15234,
"total_output_tokens": 4521,
"current_usage": {
"input_tokens": 50000,
"output_tokens": 20000,
"cache_creation_input_tokens": 10000,
"cache_read_input_tokens": 10000
}
},
"exceeds_200k_tokens": false,
"rate_limits": {
"five_hour": {
"used_percentage": 23.5,
"resets_at": 1738425600
},
"seven_day": {
"used_percentage": 41.2,
"resets_at": 1738857600
}
},
"vim": {
"mode": "NORMAL"
},
"output_style": {
"name": "default"
},
"agent": {
"name": "my-agent"
},
"worktree": {
"name": "my-feature",
"path": "/path/to/.claude/worktrees/my-feature",
"branch": "worktree-my-feature",
"original_cwd": "/path/to/project",
"original_branch": "main"
}
}