You can hand-write a Claude Code statusline script — here's how the plumbing works — but you shouldn't have to. The statusline builder lets you design the line visually, preview it at real terminal widths, and export a zero-dependency local runtime. Five minutes, start to finish.
Minute 1: pick your segments
Open the builder's Design tab. Seventeen segments are available across four groups — Claude (model, effort), Usage (context, 5h/7d limits, cost, duration, lines), Device (disk, RAM, CPU, network, battery), and Workspace (directory, repo, git branch, worktree). Click to toggle, use the arrows to reorder.
Restraint wins. The default — model, effort, context, 5h and 7d limits — covers the questions you actually ask mid-session: what model am I on, how much context is left, am I about to hit a limit?
Minute 2: theme and style
Pick one of four themes (Midnight, Graphite, Catppuccin, Mono) and one of three styles — Balanced, Compact, or Powerline. The live preview re-renders on every change, and the 64 / 88 / 120 width buttons show exactly how the line degrades on narrower terminals. What you see is the real renderer output, not a mockup.
Minute 3: export
The Export tab gives you three artifacts:
- MCP command — registers the promenow-tools server with Claude Code:
claude mcp add --transport http promenow-tools https://promenow.app/api/mcp- Prompt — what to tell Claude Code so it pulls and installs your design via the
terminal_statusline_pulltool. - Config JSON — your full design as portable JSON, for manual installs or version control.
Minutes 4–5: install and verify
The MCP pull returns a file manifest that Claude Code writes locally with your normal approval — the server never touches your machine:
~/.claude/terminal-pro/terminal-pro-statusline.mjs # the runtime
~/.claude/terminal-pro/statusline.config.json # your design
~/.claude/terminal-pro/apply-claude-settings.cjs # settings patcherThe resulting settings entry:
{
"statusLine": {
"type": "command",
"command": "node ~/.claude/terminal-pro/terminal-pro-statusline.mjs",
"padding": 0,
"refreshInterval": 10
}
}Restart your Claude Code session and the line appears. To verify the runtime independently first, pipe any JSON at it:
echo '{"model":{"display_name":"Opus 4.8"}}' | node ~/.claude/terminal-pro/terminal-pro-statusline.mjsIterating later
Your design lives in statusline.config.json— plain JSON you can edit by hand or re-open in the builder's Expert JSON tab, which validates strictly and tells you exactly which field is wrong. Tweak, re-export, done. No account required for any of this; the builder and export work anonymously.
If something doesn't render, the troubleshooting guide covers the usual suspects in order of likelihood.