Statusline
Use this skill to help configure and troubleshoot the statusline plugin.
Workflow
- Inspect the existing statusline config and scripts before changing settings.
- For setup, choose layout, visible sections, context display style, icon theme, and separator.
- Update the user's Claude settings only when requested or clearly part of setup.
- Preview the generated statusline command with representative session input.
- For troubleshooting, check provider detection, rate-limit fields, and empty-section hiding.
Applying a Template
When the user selects a template (via /statusline:setup or /statusline:config), apply it by:
- Read the template JSON from
scripts/templates/<name>.jsonwithin this plugin directory. - Write the template contents to
~/.claude/statusline.config.json. - Preview the result with the test command.
Template apply example (for "minimal" template):
# Find the plugin directory
PLUGIN_DIR="$(find ~/.claude -path '*/statusline/scripts/templates' -type d 2>/dev/null | head -1)"
# If not found via plugin install, check the source repo
if [ -z "$PLUGIN_DIR" ]; then
PLUGIN_DIR="$HOME/project/claude-plugins/statusline/scripts/templates"
fi
# Copy template to config
cp "$PLUGIN_DIR/minimal.json" ~/.claude/statusline.config.json
Or use the Write tool to copy the template contents directly:
// ~/.claude/statusline.config.json — written from minimal.json template
{
"line_format": "1",
"separator": "dot",
"context_style": "compact",
"icon_style": "minimal",
"show_context": true,
"show_rate_limits": true,
"show_git_branch": true,
"show_tools": false,
"show_agents": false,
"show_cache": false,
"show_session": false,
"show_reasoning": true,
"color_style": "colorful"
}
All Template Contents (inline for reference)
detailed.json (default):
{"line_format":"3","separator":"arrow","context_style":"progress_bar","icon_style":"emoji","show_context":true,"show_rate_limits":true,"show_git_branch":true,"show_tools":true,"show_agents":true,"show_cache":true,"show_session":true,"show_reasoning":true,"color_style":"colorful"}
balanced.json:
{"line_format":"2","separator":"arrow","context_style":"tokens","icon_style":"unicode","show_context":true,"show_rate_limits":true,"show_git_branch":true,"show_tools":true,"show_agents":true,"show_cache":true,"show_session":true,"show_reasoning":true,"color_style":"colorful"}
minimal.json:
{"line_format":"1","separator":"dot","context_style":"compact","icon_style":"minimal","show_context":true,"show_rate_limits":true,"show_git_branch":true,"show_tools":false,"show_agents":false,"show_cache":false,"show_session":false,"show_reasoning":true,"color_style":"colorful"}
monitor.json:
{"line_format":"2","separator":"pipe","context_style":"progress_bar","icon_style":"emoji","show_context":true,"show_rate_limits":true,"show_git_branch":true,"show_tools":false,"show_agents":false,"show_cache":true,"show_session":true,"show_reasoning":true,"color_style":"colorful"}
developer.json:
{"line_format":"2","separator":"arrow","context_style":"tokens","icon_style":"unicode","show_context":true,"show_rate_limits":true,"show_git_branch":true,"show_tools":true,"show_agents":true,"show_cache":true,"show_session":true,"show_reasoning":true,"color_style":"colorful"}
performance.json:
{"line_format":"3","separator":"arrow","context_style":"progress_bar","icon_style":"emoji","show_context":true,"show_rate_limits":true,"show_git_branch":true,"show_tools":false,"show_agents":false,"show_cache":true,"show_session":true,"show_reasoning":true,"color_style":"colorful"}
Dual-Provider Support
The statusline automatically adapts to two model providers:
| Feature | Anthropic Claude | z.ai GLM |
|---|---|---|
| Model name | opus-4.8[200k] |
glm-5.1[1m] |
| Rate limits | 5h/7d from JSON payload | May be empty (n/a) |
| Cache stats | ✅ Real prompt caching data | ❌ Hidden (proxy artifacts) |
| Context window | From JSON payload | From JSON payload |
| Effort level | low/medium/high/max | low/medium/high/max |
| Session duration | File-based tracker | File-based tracker |
| Tools/agents | Process detection | Process detection |
Configuration
Config file: ~/.claude/statusline.config.json
Config Fields
| Field | Values | Default | Description |
|---|---|---|---|
line_format |
"1", "2", "3" |
"3" |
Number of output lines |
separator |
"arrow", "pipe", "dot", "slash" |
"arrow" |
Section separator character |
context_style |
"progress_bar", "tokens", "compact" |
"progress_bar" |
How context usage is displayed |
icon_style |
"emoji", "unicode", "minimal" |
"emoji" |
Icon theme for section labels |
show_cache |
true/false |
true |
Cache hit rate + live TTL countdown (Anthropic only, hidden for GLM) |
cache_ttl |
"5m", "1h" |
"5m" |
Prompt-cache TTL window used for the countdown / expired marker |
show_cost |
true/false |
true |
Total session cost in USD (from Claude Code payload) |
show_session |
true/false |
true |
Session duration tracker |
show_reasoning |
true/false |
true |
Effort level next to model name |
show_context |
true/false |
true |
Token count and percentage |
show_rate_limits |
true/false |
true |
API usage metrics |
show_git_branch |
true/false |
true |
Current git branch |
show_tools |
true/false |
true |
Running MCP servers |
show_agents |
true/false |
true |
Running agent count |
Template Presets
Located in scripts/templates/:
| Template | Lines | Icon | Context | Best For |
|---|---|---|---|---|
| detailed | 3 | emoji | progress_bar | Full visibility (default) |
| balanced | 2 | unicode | tokens | Quick overview |
| minimal | 1 | none | compact | Maximum space efficiency |
| monitor | 2 | emoji | progress_bar | Rate-limit tracking |
| developer | 2 | unicode | tokens | Tools + agents + git |
| performance | 3 | emoji | progress_bar | Cache + context optimization |
Files
- Commands live in
commands/. - Hook configuration lives in
hooks/hooks.json. - Runtime scripts live in
scripts/. - Templates live in
scripts/templates/. - Main renderer:
scripts/statusline.py. - Live script:
~/.claude/statusline-command.sh.