home / skills / daymade / claude-code-skills / statusline-generator

statusline-generator skill

/statusline-generator

This skill helps you configure Claude Code statuslines with multi-line layouts, cost tracking, git status, and color customization for clearer productivity.

npx playbooks add skill daymade/claude-code-skills --skill statusline-generator

Review the files below or copy the command above to add this skill to your agents.

Files (5)
SKILL.md
6.6 KB
---
name: statusline-generator
description: Configures and customizes Claude Code statuslines with multi-line layouts, cost tracking via ccusage, git status indicators, and customizable colors. Activates for statusline setup, installation, configuration, customization, color changes, cost display, git status integration, or troubleshooting statusline issues.
---

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

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

```bash
# 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.

Overview

This skill configures and customizes Claude Code statuslines with multi-line layouts, cost tracking via ccusage, git status indicators, and customizable colors. It provides installation paths, display formats, and clear defaults optimized for portrait or narrow screens. Use it to get a readable, informative statusline that includes session/daily costs, shortened model names, and git state.

How this skill works

The statusline script generates a three-line display: user and model with cost info, current shortened path, and git branch status with dirty/clean indicators. It integrates with ccusage to fetch session and daily costs (cached for 2 minutes and fetched asynchronously on first run). Colors and layout are controlled by ANSI codes in the final printf, so you can switch to single-line layouts or add custom elements by editing the script.

When to use it

  • Install or set up a Claude Code statusline (automated or manual).
  • Show session and daily cost information inline using ccusage.
  • Create multi-line layouts for portrait or narrow terminals.
  • Add or troubleshoot git branch and dirty/clean indicators.
  • Change colors, shorten model names, or customize displayed fields.

Best practices

  • Install ccusage and ensure it is in PATH to enable cost tracking.
  • Keep the statusline script executable and the settings.json command path accurate.
  • Use the default three-line layout for narrow screens; switch to single-line only when needed.
  • Customize colors using ANSI codes near the final printf rather than scattering changes.
  • Test git and ccusage commands manually when indicators or costs do not appear.

Example use cases

  • Portrait-screen developer who wants concise lines with no horizontal scrolling.
  • Team member tracking daily/ session spending directly in the editor UI.
  • Engineer who needs quick git branch and repo-dirty indicators at a glance.
  • Power user who wants to replace username color or add hostname and clock.
  • Troubleshooting why costs or git status are not appearing after install.

FAQ

What if costs are not showing?

Confirm ccusage is installed and in PATH, test ccusage commands manually, and check the temporary cache files. The first fetch runs asynchronously and may take a few seconds.

How do I change the statusline to a single line?

Edit the final printf in the script to combine fields on one line; an example replacement is provided in the script comments.