Agent skill

Claude Code Statusline Writer

by lexler in lexler/skill-factory

Guides writing and debugging Claude Code status line scripts that read session JSON from stdin and print one line of text.

Apache-2.0Auto-check passedDevelopment

Install Claude Code Statusline Writer

skills CLI
$ npx skills add lexler/skill-factory --skill writing-statuslines -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install lexler/skill-factory writing-statuslines --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/lexler/skill-factory.git skills-src && mkdir -p .claude/skills && cp -r skills-src/output_skills/ai/claude-code/writing-statuslines .claude/skills/writing-statuslines && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
writing-statuslines
GitHub stars
239
Token cost
~872 tokens
SKILL.md length
254 words
Files
3 (incl. scripts, references)
Skills in repo
25
Repo updated
First seen
Licence
Apache-2.0

At a glance

Guides writing and debugging Claude Code status line scripts that read session JSON from stdin and print one line of text.

  • Creating a custom status line that shows model, cost and context usage
  • SKILL.md covers Setup, What Status Lines Are, Configuration and How It Works, plus 6 more sections
  • Runs Python scripts from its folder; calls python
  • Debugging a status line that prints nothing or the wrong text

What it does

A Claude Code status line is a script that shows context at the bottom of the interface, refreshed when messages change and at most every 300 ms. It is registered under statusLine in the user-level or project-level settings.json, receives session JSON on stdin and prints one line; the first line of stdout is used, ANSI colors work, the script must be executable, and stderr is ignored.

Useful input fields include the model display name, the workspace current and project directories, cumulative session cost, and context window used and remaining percentages, with current usage possibly null before any message. Constraints are one line, a quick exit and caching for anything expensive, and a scannable result with three to four data points at most.

Listed anti-patterns are cramming in too much, not consuming stdin, running git or API calls on every refresh, printing several lines, forgetting chmod +x and writing to stderr. Scripts can be tested by piping mock JSON into them. A bundled update-docs.py refreshes the Anthropic reference, and a reference file has bash, Python and Node examples.

When your agent uses it

  • Creating a custom status line that shows model, cost and context usage
  • Debugging a status line that prints nothing or the wrong text
  • Adding git branch info to a status line without slowing it down

Example prompts

  • “Write a status line script that shows the model name and how much context I have used.”
  • “My statusline script outputs nothing. Help me debug it with mock JSON.”
  • “Add the session cost to my status line, with colors.”

Requirements

  • Claude Code with a statusLine entry in settings.json
  • A shell such as bash, and the ability to make scripts executable

What it can do on your machine

Read from SKILL.md and the folder at commit 8017333. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 1 file in scripts/ (Python), which the agent can run.

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Claude Code Statusline Writer loads about 872 tokens when it runs, and up to ~3k if it reads all its reference files. Until then it costs about 33 tokens; SKILL.md has 254 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~33
When it runs · the whole SKILL.md, loaded when a task matches
~872
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.

SKILL.md

The full file from lexler/skill-factory at commit 8017333, republished under its Apache-2.0 licence (© lexler). 254 words, ~872 tokens.

Download SKILL.mdSave it as .claude/skills/writing-statuslines/SKILL.md (or your agent's skills folder). This skill also uses 2 other files; get the full folder from GitHub.
name
writing-statuslines
description
Writes Claude Code status line scripts. Use when creating, customizing, or debugging statusline configurations.

STARTER_CHARACTER = 📊

Setup

Update the reference docs to get the latest from Anthropic:

bash
python ~/.claude/skills/writing-statuslines/scripts/update-docs.py

What Status Lines Are

Custom scripts that display contextual information at the bottom of Claude Code's interface. Updated when conversation messages change, at most every 300ms.

Configuration

Add to ~/.claude/settings.json (user-level) or .claude/settings.json (project-level):

json
{
  "statusLine": {
    "type": "command",
    "command": "~/.claude/statusline.sh",
    "padding": 0
  }
}

padding is optional. Set to 0 to let the status line reach the terminal edge.

How It Works

  • Claude Code passes session context as JSON via stdin to the script
  • First line of stdout becomes the status line text
  • ANSI color codes supported
  • Script must be executable (chmod +x)
  • Only stdout is used (not stderr)

JSON Input Schema

The script receives this via stdin:

json
{
  "hook_event_name": "Status",
  "session_id": "abc123...",
  "transcript_path": "/path/to/transcript.json",
  "cwd": "/current/working/directory",
  "model": {
    "id": "claude-opus-4-1",
    "display_name": "Opus"
  },
  "workspace": {
    "current_dir": "/current/working/directory",
    "project_dir": "/original/project/directory"
  },
  "version": "1.0.80",
  "output_style": {
    "name": "default"
  },
  "cost": {
    "total_cost_usd": 0.01234,
    "total_duration_ms": 45000,
    "total_api_duration_ms": 2300,
    "total_lines_added": 156,
    "total_lines_removed": 23
  },
  "context_window": {
    "total_input_tokens": 15234,
    "total_output_tokens": 4521,
    "context_window_size": 200000,
    "used_percentage": 42.5,
    "remaining_percentage": 57.5,
    "current_usage": {
      "input_tokens": 8500,
      "output_tokens": 1200,
      "cache_creation_input_tokens": 5000,
      "cache_read_input_tokens": 2000
    }
  }
}

context_window.current_usage may be null if no messages have been sent yet.

Key Fields

  • model.display_name — short model name ("Opus", "Sonnet")
  • workspace.current_dir / workspace.project_dir — may differ when working in subdirectories
  • cost.total_cost_usd — cumulative session cost
  • context_window.used_percentage / remaining_percentage — pre-calculated, ready to display
  • context_window.current_usage — raw token counts from the last API call

Constraints

  • Output exactly one line
  • Runs every 300ms at most — expensive operations must be cached
  • Keep it scannable: glanceable in under a second
  • Script must exit cleanly and quickly

Anti-Patterns

  • Cramming too much info — pick 3-4 data points max
  • Not consuming stdin (script must read it even if it doesn't use all fields)
  • Expensive uncached operations (git commands, API calls) on every invocation
  • Multiple output lines (only first line is used)
  • Forgetting chmod +x
  • Writing to stderr instead of stdout

Testing

Test scripts manually with mock JSON:

bash
echo '{"model":{"display_name":"Sonnet"},"workspace":{"current_dir":"/test"},"cost":{"total_cost_usd":0.05},"context_window":{"used_percentage":42.5}}' | ./statusline.sh

Reference

© lexler, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 2 other files (scripts, references) in output_skills/ai/claude-code/writing-statuslines of lexler/skill-factory.

  • SKILL.md
  • references/anthropic-statusline.md
  • scripts/update-docs.py

Open the folder on GitHubat commit 8017333

Compare with similar skills

Claude Code Statusline Writer next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Claude Code Statusline Writer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Claude Code Statusline Writer this skilllexler/skill-factory239—~872Automated safety check: PassApache-2.0
Hns Moaiadk Dev Referencemodu-ai/moai-adk1.2k—~937Automated safety check: PassApache-2.0
CLI DeveloperJeffallan/claude-skills12k1 repos~1.2kAutomated safety check: PassMIT
Nerd Font Icon Lookupmalob/nix-config463—~697Automated safety check: PassMIT
Hugging Face API Tool Builderhuggingface/skills11k2 repos~1.5kAutomated safety check: PassApache-2.0
New Mac Setupswyxio/skills175—~4.3kAutomated safety check: PassMIT

Similar skills

  • moai-adk-go local dev reference — version management/release process (sec 5), shell-script hook development (sec 7), build & dev commands (sec 10).

    1.2k GitHub stars~937 tokensUpdated today
    DevelopmentAuto-check passed
  • CLI Developer

    Jeffallan/claude-skills

    Walks through designing, building and polishing a command-line tool: user workflow and command hierarchy, implementation in commander, click, typer or cobra, completions and cross-platform testing.

    12k GitHub starsUsed in 1 repo~1.2k tokens
    DevelopmentAuto-check passed
  • Nerd Font Icon Lookup

    malob/nix-config

    Works around Claude Code filtering private-use Unicode so agents can read and write Nerd Font icons in Starship, tmux and prompt configs.

    463 GitHub stars~697 tokensUpdated 5 days ago
    DevelopmentAuto-check passed
  • Official

    Builds reusable command line scripts that fetch, enrich or process data from the Hugging Face API, aimed at chained, repeated or automated tasks.

    11k GitHub starsUsed in 2 repos~1.5k tokens
    AI & LLM EngineeringAuto-check passed
  • New Mac Setup

    swyxio/skills

    Fully automated new Mac setup for fullstack web developers and AI engineers.

    175 GitHub stars~4.3k tokensUpdated 4 days ago
    DevOps & CloudAuto-check passed
  • A catalog of recurring bug shapes in the Mole Mac cleaner, used to review safety-sensitive diffs for deletion safety, unbounded commands, shell traps and weak tests.

    70k GitHub stars~2k tokensUpdated today
    DevelopmentAuto-check passed

More from lexler/skill-factory

All 25 skills in this repo
  • C4 Architecture Diagrams

    lexler/skill-factory

    Creates C4 model diagrams at every zoom level, from system landscape to code, in ASCII, Mermaid or Structurizr, for designing or documenting software architecture.

    239 GitHub stars~2.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Launching Agent Teams

    lexler/skill-factory

    Plans and launches Claude Code agent teams with distinct roles, right-sized tasks and detailed spawn prompts, and says when subagents or worktrees fit better.

    239 GitHub stars~1.3k tokensUpdated 1 mo ago
    Auto-check passed
  • Catalog of obstacles, anti-patterns and patterns for working with AI coding agents, covering context management and reliability, from a published patterns collection.

    239 GitHub stars~1.5k tokensUpdated 1 mo ago
    Auto-check passed
  • Approval Testing Toolkit

    lexler/skill-factory

    Writes snapshot-style approval tests in Python, JavaScript, TypeScript or Java, comparing output against an approved file instead of writing individual assertions.

    239 GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Hotspots

    lexler/skill-factory

    Find where a codebase actually costs time by mining its git history (Tornhill hotspot analysis).

    239 GitHub stars~1.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Nullables Testing Pattern

    lexler/skill-factory

    Teaches the Nullables pattern for testing without mocking libraries: production classes with an off switch, stubbed only at the third-party edge.

    239 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Categories

Questions about Claude Code Statusline Writer

What does Claude Code Statusline Writer do?

Guides writing and debugging Claude Code status line scripts that read session JSON from stdin and print one line of text. A Claude Code status line is a script that shows context at the bottom of the interface, refreshed when messages change and at most every 300 ms.json, receives session JSON on stdin and prints one line; the first line of stdout is used, ANSI colors work, the script must be executable, and stderr is ignored.

When should I use Claude Code Statusline Writer?

Claude Code Statusline Writer fits situations like: creating a custom status line that shows model, cost and context usage; debugging a status line that prints nothing or the wrong text; adding git branch info to a status line without slowing it down.

How do I install Claude Code Statusline Writer in Claude Code?

Run `npx skills add lexler/skill-factory --skill writing-statuslines -a claude-code`. Or copy the skill folder (output_skills/ai/claude-code/writing-statuslines in lexler/skill-factory) into .claude/skills/writing-statuslines in your project. Claude Code loads it when a task matches its description.

How do I install Claude Code Statusline Writer in Codex?

Run `npx skills add lexler/skill-factory --skill writing-statuslines -a codex`. Or copy the skill folder (output_skills/ai/claude-code/writing-statuslines in lexler/skill-factory) into .agents/skills/writing-statuslines in your project. Codex loads it when a task matches its description.

Can I use Claude Code Statusline Writer in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add lexler/skill-factory --skill writing-statuslines -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/writing-statuslines, .gemini/skills/writing-statuslines, .github/skills/writing-statuslines and .opencode/skills/writing-statuslines in your project.

What does Claude Code Statusline Writer need to run?

Going by SKILL.md and its folder, Claude Code Statusline Writer needs Python for the scripts in its folder and the command-line tools its instructions call (python). Our summary lists: Claude Code with a statusLine entry in settings.json; A shell such as bash, and the ability to make scripts executable.

Does Claude Code Statusline Writer access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Claude Code Statusline Writer safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Claude Code Statusline Writer use?

Claude Code Statusline Writer is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Claude Code Statusline Writer use?

About 872 tokens (SKILL.md is roughly 3.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 2.1k tokens, read only when the agent opens those files.

What are the alternatives to Claude Code Statusline Writer?

Skills that share tags, products or a category with Claude Code Statusline Writer: Hns Moaiadk Dev Reference (modu-ai/moai-adk, 1.2k stars), CLI Developer (Jeffallan/claude-skills, 12k stars), Nerd Font Icon Lookup (malob/nix-config, 463 stars) and Hugging Face API Tool Builder (huggingface/skills, 11k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Claude Code Statusline Writer?

lexler (a GitHub user) maintains it in lexler/skill-factory, which has 239 GitHub stars. The repository holds 25 skills in this directory. The repository was last updated on August 26, 2026.

Source: lexler/skill-factory on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.