skills/nguyendinhquocx/code-ai/statusline-generator

statusline-generator

SKILL.md

Statusline Generator

Overview

This skill provides tools and guidance for creating and customizing Claude Code statuslines. It generates multi-line statuslines optimized for portrait screens, integrates with ccusage for session/daily cost tracking, displays git branch status, and supports color customization.

When to Use This Skill

This skill activates for:

  • Statusline configuration requests for Claude Code
  • Cost information display (session/daily costs)
  • Multi-line layouts for portrait or narrow screens
  • Statusline color or format customization
  • Statusline display or cost tracking issues
  • Git status or path shortening features

Quick Start

Basic Installation

Install the default multi-line statusline:

  1. Run the installation script:

    bash scripts/install_statusline.sh
    
  2. Restart Claude Code to see the statusline

The default statusline displays:

  • Line 1: username (model) [session_cost/daily_cost]
  • Line 2: current_path
  • Line 3: [git:branch*+]

Manual Installation

Alternatively, manually install by:

  1. Copy scripts/generate_statusline.sh to ~/.claude/statusline.sh
  2. Make it executable: chmod +x ~/.claude/statusline.sh
  3. Update ~/.claude/settings.json:
    {
      "statusLine": {
        "type": "command",
        "command": "bash /home/username/.claude/statusline.sh",
        "padding": 0
      }
    }
    

Statusline Features

Multi-Line Layout

The statusline uses a 3-line layout optimized for portrait screens:

username (Sonnet 4.5 [1M]) [$0.26/$25.93]
~/workspace/java/ready-together-svc
[git:feature/branch-name*+]

Benefits:

  • Shorter lines fit narrow screens
  • Clear visual separation of information types
  • No horizontal scrolling needed

Cost Tracking Integration

Cost tracking via ccusage:

  • Session Cost: Current conversation cost
  • Daily Cost: Total cost for today
  • Format: [$session/$daily] in magenta
  • Caching: 2-minute cache to avoid performance impact
  • Background Fetch: First run loads costs asynchronously

Requirements: ccusage must be installed and in PATH. See references/ccusage_integration.md for installation and troubleshooting.

Model Name Shortening

Model names are automatically shortened:

  • "Sonnet 4.5 (with 1M token context)""Sonnet 4.5 [1M]"
  • "Opus 4.1 (with 500K token context)""Opus 4.1 [500K]"

This saves horizontal space while preserving key information.

Git Status Indicators

Git branch status shows:

  • Yellow: Clean branch (no changes)
  • Red: Dirty branch (uncommitted changes)
  • Indicators:
    • * - Modified or staged files
    • + - Untracked files
    • Example: [git:main*+] - Modified files and untracked files

Path Shortening

Paths are shortened:

  • Home directory replaced with ~
  • Example: /home/username/workspace/project~/workspace/project

Color Scheme

Default colors optimized for visibility:

  • Username: Bright Green (\033[01;32m)
  • Model: Bright Cyan (\033[01;36m)
  • Costs: Bright Magenta (\033[01;35m)
  • Path: Bright White (\033[01;37m)
  • Git (clean): Bright Yellow (\033[01;33m)
  • Git (dirty): Bright Red (\033[01;31m)

Customization

Changing Colors

Customize colors by editing ~/.claude/statusline.sh and modifying the ANSI color codes in the final printf statement. See references/color_codes.md for available colors.

Example: Change username to blue

# Find this line:
printf '\033[01;32m%s\033[00m \033[01;36m(%s)\033[00m%s\n\033[01;37m%s\033[00m\n%s' \

# Change \033[01;32m (green) to \033[01;34m (blue):
printf '\033[01;34m%s\033[00m \033[01;36m(%s)\033[00m%s\n\033[01;37m%s\033[00m\n%s' \

Single-Line Layout

Convert to single-line layout by modifying the final printf:

# Replace:
printf '\033[01;32m%s\033[00m \033[01;36m(%s)\033[00m%s\n\033[01;37m%s\033[00m\n%s' \
    "$username" "$model" "$cost_info" "$short_path" "$git_info"

# With:
printf '\033[01;32m%s\033[00m \033[01;36m(%s)\033[00m:\033[01;37m%s\033[00m%s%s' \
    "$username" "$model" "$short_path" "$git_info" "$cost_info"

Disabling Cost Tracking

If ccusage is unavailable or not desired:

  1. Comment out the cost section in the script (lines ~47-73)
  2. Remove %s for $cost_info from the final printf

See references/ccusage_integration.md for details.

Adding Custom Elements

Add custom information (e.g., hostname, time):

# Add variable before final printf:
hostname=$(hostname -s)
current_time=$(date +%H:%M)

# Update printf to include new elements:
printf '\033[01;32m%s@%s\033[00m \033[01;36m(%s)\033[00m%s [%s]\n...' \
    "$username" "$hostname" "$model" "$cost_info" "$current_time" ...

Troubleshooting

Costs Not Showing

Check:

  1. Is ccusage installed? Run which ccusage
  2. Test ccusage manually: ccusage session --json --offline -o desc
  3. Wait 5-10 seconds after first display (background fetch)
  4. Check cache: ls -lh /tmp/claude_cost_cache_*.txt

Solution: See references/ccusage_integration.md for detailed troubleshooting.

Colors Hard to Read

Solution: Adjust colors for your terminal background using references/color_codes.md. Bright colors (01;3X) are generally more visible than regular (00;3X).

Statusline Not Updating

Check:

  1. Verify settings.json points to correct script path
  2. Ensure script is executable: chmod +x ~/.claude/statusline.sh
  3. Restart Claude Code

Git Status Not Showing

Check:

  1. Are you in a git repository?
  2. Test git commands: git branch --show-current
  3. Check git permissions in the directory

Resources

scripts/generate_statusline.sh

Main statusline script with all features (multi-line, ccusage, git, colors). Copy this to ~/.claude/statusline.sh for use.

scripts/install_statusline.sh

Automated installation script that copies the statusline script and updates settings.json.

references/color_codes.md

Complete ANSI color code reference for customizing statusline colors. Load when users request color customization.

references/ccusage_integration.md

Detailed explanation of ccusage integration, caching strategy, JSON structure, and troubleshooting. Load when users experience cost tracking issues or want to understand how it works.

Weekly Installs
2
GitHub Stars
2
First Seen
Feb 23, 2026
Installed on
opencode2
antigravity2
claude-code2
github-copilot2
codex2
kimi-cli2