webup-statusline

Generate and install a custom Claude Code status line with selectable columns (model, context, effort level, git, dir, worktree, vim) and a color theme.…

INSTALLATION
npx skills add https://github.com/webup/skills-cc --skill webup-statusline
Run in your project or agent environment. Adjust flags if your CLI version differs.

SKILL.md

Status Line Generator

Generate a custom Claude Code status line script with your choice of columns and a color theme. Installs directly to ~/.claude/settings.json.

How It Works

Claude Code supports custom status lines via a shell script configured in ~/.claude/settings.json. The script receives session JSON on stdin (model, context window, workspace, vim, worktree, etc.) and prints formatted text to stdout.

This skill generates a bash script tailored to your preferences and installs it automatically.

Script Directory

Important: All scripts are located in the scripts/ subdirectory of this skill.

Agent Execution Instructions:

  • Determine this SKILL.md file's directory path as SKILL_DIR
  • Script path = ${SKILL_DIR}/scripts/<script-name>.mjs
  • Replace all ${SKILL_DIR} in this document with the actual path

Script Reference:

Script

Purpose

scripts/generate.mjs

Generate and install status line script from chosen options

Prerequisites

  • jq — required by the generated status line script to parse JSON input from Claude Code. On Windows, the script auto-detects jq installed via WinGet or scoop; if jq is still not found, add its directory to your PATH manually.
  • Bun — required to run the generator. Use npx -y bun if not installed globally.

Usage

# Preview generated script

npx -y bun ${SKILL_DIR}/scripts/generate.mjs --elements model,context,effort,git,dir --theme gruvbox

# Generate and install

npx -y bun ${SKILL_DIR}/scripts/generate.mjs --elements model,context,effort,git,dir --theme dracula --install

Options

Flag

Default

Description

--elements <list>

model,context,cost,effort,style,git,dir

Comma-separated columns to display

--theme <name>

gruvbox

Color theme — see table below

--effort-icon <preset>

arrow () for iconic themes, none otherwise

Override the effort prefix icon. Presets: arrow, bolt, flash, reason, dot, none. A raw character is also accepted.

--install

off

Write script to ~/.claude/scripts/statusline.sh and update settings.json

Columns

Column

Description

Data source

model

Active model name (e.g. "Opus 4.7")

model.display_name

context

Progress bar + percentage — color changes with remaining capacity

context_window.remaining_percentage

cost

Session API spend formatted as $X.XX in gold — hidden when rounds to $0.00

cost.total_cost_usd from input JSON

effort

Reasoning effort level — color changes with level

effortLevel in ~/.claude/settings.local.json~/.claude/settings.json

style

Output style name (e.g. Explanatory, Learning) — hidden when "default"

output_style.name from input JSON

git

Git branch name (yellow when dirty)

worktree.branch → git CLI

dir

Repo basename (original repo when in a worktree)

worktree.original_repo_dirworkspace.current_dir

worktree

Bold worktree:<id> label (hidden outside a worktree)

worktree.name → parent-dir basename via git CLI

vim

Vim mode indicator (hidden when inactive)

vim.mode

Color-changing elements

**context** — bar fill + percentage color scale with remaining capacity:

Remaining

Color

Meaning

50%

green

plenty of context

20–50%

yellow

watch out

< 20%

red

nearly full — compact soon

**effort** — value + optional prefix icon color by level:

Level

Color

max, xhigh, high

bold red

medium

yellow

low, xlow, minimal

green

other / unset

dim (or hidden when completely unset)

Themes

Theme

Vibe

Icons rendered in bar

gruvbox

Warm retro, muted

model · effort · style · dir · worktree · git · vim

dracula

Modern dark, high saturation

model · effort · style · dir · worktree · git · vim

robbyrussell

Classic oh-my-zsh

no prefix icons — colors + labels only

minimal

Default terminal colors

no prefix icons — plain text

The context column intentionally skips a prefix icon — the colored progress bar is already visually rich. The effort prefix () is baked into iconic themes and can be overridden with --effort-icon.

Effort icons

Pass --effort-icon <preset> to swap the glyph in front of the effort value. Presets:

Preset

Glyph

Notes

arrow

Electric arrow — default, narrow

bolt

ϟ

Greek koppa — narrow lightning

flash

Classic lightning — wide in emoji-presentation fonts

reason

Therefore

dot

Filled circle

none

(hidden)

Drop the icon entirely

You can also pass any raw character as --effort-icon <char>.

Worktree behavior: When inside a git worktree (detected via the input JSON's worktree.* fields or via git rev-parse --git-common-dir fallback), the worktree column shows a bold worktree:<id> label using the parent dir name (e.g. ~/.codex/worktrees/46a6/clawmasterworktree:46a6). The git column prefers worktree.branch from the input JSON; the dir column prefers worktree.original_repo_dir so the repo identity stays stable across worktrees.

Invocation

This skill can be invoked with or without arguments:

  • No args (/webup-statusline): Interactive prompt via AskUserQuestion to pick columns and theme.
  • With args (/webup-statusline dracula): NLP parse for theme and column preferences.

Arg parsing (natural language)

The args string is free-form text. Use NLP to extract:

  • theme — match against: gruvbox, robbyrussell, minimal, dracula. Recognize aliases (暗黑=dracula, 极简=minimal, 复古=gruvbox, レトロ=gruvbox).
  • elements — look for mentions of: model, context/进度/コンテキスト, effort/推理强度/努力度, git/分支/ブランチ, dir/目录/ディレクトリ, worktree/工作树/ワークツリー, vim.

Unspecified fields use defaults: model,context,effort,git,dir columns, gruvbox theme.

Workflow

-

If no args provided: Use AskUserQuestion to ask 2 questions in a single prompt. AskUserQuestion caps each question at 4 options, so offer curated presets for columns rather than an exhaustive toggle list. If the user picks "Other", interpret their free text as a comma-separated column list (or a natural-language description that maps to one).

Q1 — Column preset (single): Which columns to display? Offer these 3 curated presets — AskUserQuestion will auto-append an "Other" option that lets the user type a free-text column list or description.

  • "Everything (Recommended)" — model,context,cost,effort,style,git,dir,worktree (all columns that have a useful signal today; vim is excluded because most users don't use vim keybindings)
  • "Default" — model,context,effort,style,git,dir (balanced — drops cost and worktree; matches the skill's default flag value)
  • "Essentials" — model,context,git,dir (lean; no effort, no style, no cost)

If the user picks the auto-added "Other", treat their free text as a comma-separated column list, or as a natural-language description to map to columns. Fall back to Default if parsing is ambiguous.

Q2 — Theme (single): Color theme?

  • "Dracula" — modern dark, purple/pink/cyan (Recommended)
  • "Gruvbox Dark" — warm retro palette, 24-bit true color
  • "Robbyrussell" — classic oh-my-zsh style, no icons
  • "Minimal" — no decoration, dim separators only

If args provided: Parse theme and columns from args. Skip the prompt.

-

Map user selections to script flags:

  • Column preset → expand to the preset's canonical --elements list:
  • Everythingmodel,context,cost,effort,style,git,dir,worktree
  • Defaultmodel,context,effort,style,git,dir
  • Essentialsmodel,context,git,dir
  • Other (auto-added by AskUserQuestion) → parse the user's free text; keep only recognized column names (model,context,cost,effort,style,dir,worktree,git,vim). If parsing is ambiguous, fall back to Default.
  • Theme → --theme value (one of gruvbox, dracula, robbyrussell, minimal)

-

Run the generator with --install:

npx -y bun ${SKILL_DIR}/scripts/generate.mjs --elements <list> --theme <theme> --install

-

Tell user to restart Claude Code to see the new status line.

Output Examples

Dracula (all columns), remaining=49%, cost=$0.42, effort=high, output style=Explanatory, inside a worktree:

◈ Opus 4.7 | [■■■■■■■■■■□□□□□□□□□□] 51% | $0.42 | ↯ high | ❋ Explanatory | ⌂ clawmaster | ⊕ worktree:46a6 | ⎇ feat/xyz

(bar yellow — 49% remaining; $0.42 gold session spend next to the bar; effort "high" bold red; purple ❋ Explanatory sits between effort and dir; context carries no prefix icon — the bar is already visual enough)

Gruvbox Dark (model + context + effort + dir + git), remaining=88%, effort=medium:

✦ Opus 4.7 | [■■□□□□□□□□□□□□□□□□□□] 12% | ↯ medium | ⌂ skills-cc | ⎇ main

(bar green — 88% remaining; effort "medium" yellow)

Minimal (model + effort + dir + git), effort=low:

Claude Opus 4.7 · low · skills-cc · main

(no prefix icons in minimal; effort "low" green)

Notes

  • Generated script is saved to ~/.claude/scripts/statusline.sh
  • Running the skill again overwrites the existing script — just re-run to change theme or columns
  • The script uses jq to parse JSON input — make sure it's installed. On Windows, the script auto-detects WinGet and scoop jq paths; if jq is still not found, add it to PATH manually.
  • Git dirty detection uses --no-optional-locks to avoid interfering with other git operations
BrowserAct

Let your agent run on any real-world website

Bypass CAPTCHA & anti-bot for free. Start local, scale to cloud.

Explore BrowserAct Skills →

Stop writing automation&scrapers

Install the CLI. Run your first Skill in 30 seconds. Scale when you're ready.

Start free
free · no credit card