leobrival

statusline

Modular status line for Claude Code. Displays path, context tokens, git info, battery, memory, API usage, and session cost. Supports configurable profiles (minimal, standard, developer, full, classic) and individual module toggles. Use when setting up or customizing the Claude Code status line.

leobrival 0 Updated 3mo ago

Resources

1
GitHub

Install

npx skillscat add leobrival/topographic-plugins-official/statusline

Install via the SkillsCat registry.

SKILL.md

Statusline

Modular status line system for Claude Code with configurable profiles and 7 display modules.

Overview

This skill provides a customizable status line that displays real-time information during Claude Code sessions.

Module Information Default
path Current working directory (full/relative/short) On
context Token count and context window usage % On
git Branch name, changed files, additions/deletions Off
battery Battery percentage and charging state (macOS) On
memory RAM usage percentage and pressure level (macOS) On
usage API usage with progress bar (OAuth + Anthropic API) On
cost Session cost in USD and duration Off

Architecture

scripts/statusline/
├── src/
│   ├── index.ts                 # Main entry point (reads stdin HookInput)
│   ├── cli.ts                   # CLI argument parser
│   └── lib/
│       ├── types.ts             # HookInput interface, type definitions
│       ├── config-manager.ts    # Profile loading, deep merge, config resolution
│       ├── context.ts           # Standalone context token counter
│       ├── formatters.ts        # ANSI colors, progress bars, path formatting
│       ├── usage-limits.ts      # OAuth token retrieval, Anthropic API usage
│       └── modules/
│           ├── base.ts          # BaseStatusModule abstract class
│           ├── path.ts          # PathModule
│           ├── context.ts       # ContextModule (transcript parsing)
│           ├── git.ts           # GitModule (branch, changes, diff stats)
│           ├── battery.ts       # BatteryModule (pmset, macOS)
│           ├── memory.ts        # MemoryModule (vm_stat, macOS)
│           ├── usage.ts         # UsageModule (API usage bars)
│           └── cost.ts          # CostModule (session cost + duration)
├── config/
│   ├── default.json             # Default module configuration
│   └── profiles/
│       ├── minimal.json         # Path + context only
│       ├── standard.json        # Balanced with usage
│       ├── developer.json       # All modules including git + cost
│       ├── full.json            # Everything enabled
│       └── classic.json         # Block-style progress bars
├── statusline.config.ts         # Legacy config interface
├── package.json
├── tsconfig.json
└── biome.json

Installation

Step 1: Install dependencies

cd ~/.claude/plugins/marketplaces/topographic-plugins-official/plugins/dev/skills/statusline/scripts/statusline
bun install

Step 2: Configure status line in settings.json

Add or update the statusLine entry in ~/.claude/settings.json:

{
  "statusLine": {
    "type": "command",
    "command": "bun ~/.claude/plugins/marketplaces/topographic-plugins-official/plugins/dev/skills/statusline/scripts/statusline/src/index.ts",
    "padding": 0
  }
}

Step 3: Verify installation

Restart Claude Code. The status line should appear at the bottom of the terminal.

To test manually:

echo '{"session_id":"test","transcript_path":"/tmp/test","cwd":"/tmp","model":"claude-sonnet-4-20250514"}' | bun ~/.claude/plugins/marketplaces/topographic-plugins-official/plugins/dev/skills/statusline/scripts/statusline/src/index.ts

Profiles

Switch profiles via CLI argument or by editing config/default.json.

Profile Modules Enabled Use Case
minimal path, context Low distraction
standard path, context, battery, memory, usage Balanced (default)
developer path, context, git, battery, memory, usage, cost Full dev info
full All modules, all features Maximum information
classic Same as standard, block-style bars Retro look

Using a Profile

Edit the statusLine command in settings.json to pass --profile:

{
  "statusLine": {
    "type": "command",
    "command": "bun ~/.claude/plugins/marketplaces/topographic-plugins-official/plugins/dev/skills/statusline/scripts/statusline/src/index.ts --profile developer",
    "padding": 0
  }
}

CLI Options

Flag Description
--profile <name> Load a profile (minimal, standard, developer, full, classic)
--modules <list> Comma-separated list of modules to enable
--separator <char> Custom separator between modules (default: )
--no-progress-bar Disable progress bars
--debug Enable debug output
--list-profiles List available profiles
--help Show help

Customization

Editing Module Configuration

Edit config/default.json to customize individual modules:

{
  "modules": {
    "path": { "enabled": true, "mode": "full" },
    "git": { "enabled": true, "showBranch": true, "showChanges": true },
    "usage": { "enabled": true, "progressBarStyle": "braille" }
  }
}

Creating a Custom Profile

Add a JSON file in config/profiles/:

{
  "modules": {
    "path": { "enabled": true, "mode": "short" },
    "context": { "enabled": true },
    "git": { "enabled": true }
  },
  "separator": " | "
}

macOS-Specific Modules

The battery and memory modules use macOS-specific commands:

  • Battery: pmset -g batt (power management)
  • Memory: vm_stat (virtual memory statistics)

These modules gracefully degrade on non-macOS systems (disabled or show fallback).

Troubleshooting

Status line not appearing

  1. Verify the command path in settings.json points to the correct location
  2. Ensure bun is in PATH
  3. Test manually with echo + pipe (see Step 3 above)
  4. Check for errors: add --debug flag to the command

Usage module shows empty

The usage module requires OAuth authentication with Anthropic. It reads the token from macOS Keychain (security find-generic-password). If not authenticated, the module shows no data.

Modules not loading

Check config/default.json — modules must have "enabled": true to appear.