CtrlK
BlogDocsLog inGet started
Tessl Logo

claude-code-statusline-development

This skill should be used when the user asks to "create a statusline", "customize the status line", "add a custom prompt", or mentions Claude Code statusline. Also suggest when the user wants to display git branch, context usage, model name, or session costs at the bottom of Claude Code.

Invalid
This skill can't be scored yet
Validation errors are blocking scoring. Review and fix them to unlock Quality, Impact and Security scores. See what needs fixing →
SKILL.md
Quality
Evals
Security

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:

  • JSON Schema - Complete input structure documentation
  • Example: Simple - Basic bash statusline
  • Example: Git-Aware - Git branch and status
  • Example: Context Usage - Context window percentage
  • Example: Cost Tracking - Session costs and tokens

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)

FieldDescription
model.display_nameModel name (e.g., "Opus")
workspace.current_dirCurrent working directory
workspace.project_dirOriginal project directory
cost.total_cost_usdSession cost in USD
cost.total_lines_addedLines added this session
cost.total_lines_removedLines removed this session
context_window.context_window_sizeMax context tokens
context_window.current_usageCurrent 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.

Repository
dwmkerr/claude-toolkit
Last updated
Created

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.