Back to Skills

claude-code-statusline-development

verified

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.

View on GitHub

Marketplace

claude-toolkit

dwmkerr/claude-toolkit

Plugin

toolkit

Repository

dwmkerr/claude-toolkit
4stars

plugins/toolkit/skills/claude-code-statusline-development/SKILL.md

Last Verified

January 20, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/dwmkerr/claude-toolkit/blob/main/plugins/toolkit/skills/claude-code-statusline-development/SKILL.md -a claude-code --skill claude-code-statusline-development

Installation paths:

Claude
.claude/skills/claude-code-statusline-development/
Powered by add-skill CLI

Instructions

# 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](./references/json-schema.md) - Complete input structure documentation
- [Example: Simple](./references/example-simple.md) - Basic bash statusline
- [Example: Git-Aware](./references/example-git-aware.md) - Git branch and status
- [Example: Context Usage](./references/example-context-usage.md) - Context window percentage
- [Example: Cost Tracking](./references/example-cost-tracking.md) - Session costs and tokens

## Configuration

Add to `.claude/settings.json`:

```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](./references/json-schema.md) for complete structure.

## Script Template

```bash
#!/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:

```bash
chmod +x ~/.claude/stat

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
2500 chars