SuperAPI AI Directory

claude-code-statusline-development

Agents & models

View repository

Updated 10-15 21:36

About this skill

Claude Code Statusline Development

Create custom status lines that display contextual information at the bottom of Claude Code.

Quick Reference

You MUST read the reference files for detailed schemas and examples:

Configuration

Add to .claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 0
  }
}

How It Works

  • Status line updates when conversation messages change
  • Updates run at most every 300ms
  • First line of stdout becomes the status line text
  • ANSI color codes supported
  • JSON context passed via stdin

JSON Input (Quick Reference)

Field Description
model.display_name Model name (e.g., "Opus")
workspace.current_dir Current working directory
workspace.project_dir Original project directory
cost.total_cost_usd Session cost in USD
cost.total_lines_added Lines added this session
cost.total_lines_removed Lines removed this session
context_window.context_window_size Max context tokens
context_window.current_usage Current token usage object

See JSON Schema for complete structure.

Script Template

#!/bin/bash
input=$(cat)

# Extract values using jq
model=$(echo "$input" | jq -r '.model.display_name')
dir=$(echo "$input" | jq -r '.workspace.current_dir')

# Colors via tput
blue=$(tput setaf 4)
reset=$(tput sgr0)

echo "${blue}[$model]${reset} ${dir##*/}"

Make executable:

chmod +x ~/.claude/statusline.sh

Tips

  • Keep output concise - single line only
  • Use tput for portable ANSI colors
  • Test with mock JSON: echo '{"model":{"display_name":"Test"}}' | ./statusline.sh
  • Cache expensive operations (git status) if needed

Important

After creating or modifying statuslines, inform the user:

No restart needed. Statusline changes take effect immediately - Claude Code reads settings fresh on each update.

Attribution

Based on Claude Code Status Line Configuration.