By zyx1121
A Claude-native, modular status line for Claude Code — composable components (tickers, widgets, segments) and templates, installable and tunable from inside Claude Code.
Configure a statusline component's tunable knobs and write them to the user-layer config (never into the component dir or repo). Use when the user runs /statusline:configure <component>, or asks to "set up", "tune", "change the config / symbols / options of" a statusline component, or "add my API key / token" to one.
Health-check the statusline install end to end — verifies the stable shim is present and executable, that settings.json points at it, that the shim resolves an installed plugin version, that the loader runs cleanly on a mock stdin, that the active profile is valid JSON with every component resolving on the search path, that each render entry is runnable, and that fetch caches are fresh. Reports a pass/fail checklist with suggested fixes. Run when the status line is blank, stale, or misbehaving.
Install a status-line component into the user layer after vetting it. Use when the user runs /statusline:install <component>, asks to "add a component", "install a widget/segment", or names a third-party component source (git repo / path / URL). Reads the component's manifest + source, summarises what it shows / hosts it contacts / secrets it needs / its render cost, asks to confirm, then copies it into ~/.claude/statusline/components/ and adds it to the active profile.
Render a single statusline component or a whole profile to the terminal as a dry-run — feed mock (or real) stdin, run via the loader / the component's render entry with STATUSLINE_PLUGIN_ROOT set, show the ANSI output, refresh a few ticks for scrollers, then confirm nothing was committed. Use when the user runs /statusline:preview, asks to "preview", "試跑", "預覽" a component or profile, or wants to see what a component/profile looks like before enabling it.
Install and wire up the statusline plugin — copy the stable shim to ~/.claude/plugins/, point settings.json statusLine at it, create the user layer, drop in a starter profile, and preview. Use when the user runs /statusline:setup or asks to install / enable / wire up / activate the status line.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
A Claude-native, modular status line for Claude Code. Compose it from small, self-contained components — and let Claude read, vet, and tune them for you.
claude-statusline is a Claude Code plugin that replaces the single-line status bar with a
multi-line, component-based one. Each piece — a context bar, a rate-limit countdown, a news ticker,
a little ASCII creature — is an independent component. A profile is a template that picks
which components run and where they sit. Swap the profile, drop in a new component, and the line
re-composes itself.
📰 Breaking ……… latest headlines scrolling across the top …………………………
────────────────────────────────────────────────────────────────────
▟▙ ▗▄▖
▟██▙ ▟███▙ ← a little creature pacing the strip
▝▀██▀▘ ▝███▘
▁▂▃▄▅▆▇█▇▆▅▄▃▂▁▂▃▄▅▆▇█▇▆▅▄▃▂▁▂▃▄▅▆▇█ (time-of-day grass)
opus-4.8 · ctx 38% · 5h 22% ↻1h47m · 7d 61% ↻3d · $0.42
⎇ main ✓ · PR #128 ✓ · $0.18/hr · ♪ Nujabes — Aruarian Dance
0050 ▲131.05 2353 ▼ 78.40 2382 ▲142.00 3231 ▲ 24.95 TAIEX ▲
That's the full profile: a news widget on top, a rule, the creatures stage in middle, a
session row (row1) and a repo/usage row (row2), and a stock ticker at the bottom.
/plugin marketplace add zyx1121/claude-statusline
/plugin install statusline@claude-statusline
/statusline:setup
/statusline:setup installs a stable shim, points settings.json's statusLine.command at it,
creates your user layer, and previews the result. (Claude Code can't expand a plugin path inside
statusLine.command, and the plugin cache path is version-numbered and churns on every update — so
the shim resolves the latest installed version at runtime, and you only wire it once.)
components/<id>/ with a
component.json manifest and a renderer (render.sh or render.py). It reads a fixed set of
CC_* inputs and emits its own piece of the line.ratelimit segment, distinguished by order + config). Profiles are
JSON; full and minimal ship as examples.~/.claude/statusline/components/<id>), which is
searched first and overrides a built-in of the same id.The line is built top to bottom from named slots:
| Slot | Type | Behaviour |
|---|---|---|
top / middle / bottom | line widgets | each may emit one or more full lines |
row1 / row2 | segments | joined together with · |
| id | type | what it shows |
|---|---|---|
model | segment | model display name (short) |
ctx | segment | context-window usage %, red at ≥80% |
ratelimit | segment | 5h / 7d usage-limit % + reset countdown (multi-instance) |
cost | segment | session cost in USD |
burn | segment | cost burn rate ($/hr over the session) |
git | segment | branch + dirty / ahead / behind state |
pr | segment | open PR number + CI / review state |
nowplaying | segment | now-playing track (macOS) |
news | line | scrolling headlines ticker |
creatures | line | a tiny ASCII creature world that paces the line |
stock-ticker | line | left-scrolling TWSE stock ticker (keyless) |
A component is a directory with a component.json manifest and a renderer. The interface is spec'd
in plugin/spec/CONTRACT.md, with JSON schemas at
plugin/spec/; the short version of the manifest:
{
"$schema": "statusline/component@1",
"id": "ctx",
"name": "Context Usage",
"version": "0.1.0",
"author": { "github": "you" },
"description": "Context-window usage percentage, turning red at ≥80%.",
"type": "segment", // "segment" | "line"
"runtime": "bash", // "bash" | "python3" | ...
"render": { "entry": "render.sh" }, // line widgets may add a "ttl"
"inputs": ["context_window.used_percentage"], // stdin fields the host projects
"requires": {}, // { bin, network, macos }
"config": {}, // { schema, file } for tunable knobs
"placement": { "slot": "row1", "order": 20 },
"capabilities": { "stdin_fields": ["context_window.used_percentage"] }
}
Two types:
npx claudepluginhub zyx1121/claude-statusline --plugin statuslineSelf-maintained LLM wiki for teams. Plugin connects to a Scriptorium server (HTTPS + PostgreSQL) so a group of humans and Claude Code sessions can build, query, and lint a compounding knowledge base together.
Ultra-compressed communication mode. Cuts ~75% of tokens while keeping full technical accuracy by speaking like a caveman.
Frontend design skill for UI/UX implementation
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Memory compression system for Claude Code - persist context across sessions
Marketing skills for AI agents — conversion optimization, copywriting, SEO, paid ads, ad creative, and growth
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.