agentleFS
sachingulatisachingulati/claude-statusline/skills/config/SKILL.md

config

Skill2 starsChanged 12 days agoMITView on GitHub

Show or change SLine settings - accounts, what each line shows and in what order, the turn line under each response (on/off and its fields), colours and when they change, clock, work-week pace, refresh timing, hidden marker.

24 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use resume.

Other files people use alongside this one.

Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
  • genomewalkerSkill

    resume

    Resume a thread by loading its ~800-token context capsule

    Also in 3 projects that use this

The file

We split this skill into the rules it gives an agent

5 rules. 0 are common, 1 is distinctive, and 4 are very specific to this project.

  • 0

    Common

    Most of the 19 edited versions we read keep these.

  • 1

    Distinctive

    This author's own choices. Worth a look.

  • 4

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run config show --json. Show the settings as a short table (setting, value, where it comes from), the accounts list, and result.sample (how …

    line 22
  2. Very specific:

    Before a template change, show the current template and result.sample from config show.

    line 66
  3. Very specific:

    If a call returns "ok": false, tell the user the error and the fix and do not retry with guessed values.

    line 72
  4. Distinctive:

    If the request is ambiguous (e.g.

    line 73
  5. Very specific:

    If config set returns warnings, tell the user the name isn't a documented Claude Code field and will show nothing unless Claude Code sends …

    line 81

“Common” is measured: kept by at least 6 in 10 of the 19 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Show or change SLine settings. Only change settings through the CLI below. Never edit config.json or settings.json yourself.

The CLI is node "${CLAUDE_PLUGIN_ROOT}/cli/sl.js". Add --json to every call and read ok, result, error and fix from the output. Most values take one argument in single quotes, e.g. config set display.thresholds.ctx '30,75'.

For templates, the separator and the hidden marker, pass the value through stdin with a quoted heredoc instead — on Windows, Git Bash rewrites an argument that starts with / into a Windows path before node ever sees it, and a quoted heredoc passes ', brackets and spaces exactly (backslashes: see the check below):

node "${CLAUDE_PLUGIN_ROOT}/cli/sl.js" config set display.line1 --stdin --json <<'EOF'
{model}{sep}{dir}[ ({branch})]
EOF

After every config set, compare result.value with the value you meant, character for character (spaces and backslashes included). On some setups the shell tool turns \\ into \ before bash runs, even inside a quoted heredoc. If backslashes are missing, set it again with every backslash in the heredoc doubled (\\ → \\\\, \[ → \\[) and compare again. If it still differs, tell the user exactly what was stored.

No arguments

Run config show --json. Show the settings as a short table (setting, value, where it comes from), the accounts list, and result.sample (how the status line looks with these settings), then ask what the user wants to change.

With arguments: $ARGUMENTS

Map the request to one or more of these calls, run them, then show the result:

RequestCall
rename an accountconfig account rename <label> <new label>
remove / forget an accountconfig account forget <label>
add a login folder that hasn't had a session yetconfig account add <label> <credsDir>
show only the active account / hide other accountstell the user /sline:usage active does this; or config set display.otherAccounts false
show all accounts again/sline:usage all; or config set display.otherAccounts true
what line 1 shows, or its orderconfig set display.line1 --stdin (heredoc)
what each account line shows, or its orderconfig set display.account --stdin (heredoc)
how the account label looksconfig set display.label --stdin (heredoc)
what each subagent row shows, or its orderconfig set display.subagent --stdin (heredoc)
turn line under each response on / off (hide it)config set turnLine on / config set turnLine off
what the turn line shows, or its orderconfig set display.turn --stdin (heredoc)
the separator between partsconfig set display.separator --stdin (heredoc)
when a figure turns yellow / orangeconfig set display.thresholds.<ctx|5h|7d|spend> <low>,<high> (0-100)
7d orange when ahead of pace, on/offconfig set display.thresholds.7dPace true|false
5h orange when ahead of the 5-hour window's pace, on/off (default off)config set display.thresholds.5hPace true|false
5h reset time green in its last N minutesconfig set display.thresholds.5hResetSoon <minutes> (0 = off)
7d reset time orange in its last N hoursconfig set display.thresholds.7dResetSoon <hours> (0 = off)
coloursconfig set display.colors.<ok|warn|high|dim> <name|0-255|#rrggbb|none> — ok green, warn yellow, high orange, dim faint text
fit lines to the terminal width (auto uses COLUMNS minus 2; off; or a whole number of at least 20)config set display.width auto|off|<columns>
12- or 24-hour clockconfig set display.clock 12h|24h
the default look backconfig reset display
work week, e.g. Mon-Friconfig set pace.workingDays mon-fri (also takes names like mon,wed,fri, or numbers 0 = Sunday … 6 = Saturday)
all seven daysconfig set pace.workingDays 0,1,2,3,4,5,6
how often idle sessions refreshconfig set refreshInterval <seconds> (minimum 5)
stop or allow background checks of other accounts (also the per-model check of the active one)config set fetch.otherAccounts false / true
text shown while usage is hiddenconfig set hidden.marker --stdin (heredoc)

Templates

  • {field} is a value; only the value is coloured. [ … ] is dropped when any field inside it is empty. {sep} prints the separator when something was printed before it and the part right after it is non-empty (not allowed inside [ ]); a {sep} whose next part is empty is dropped, so put each {sep} directly before a [ … ] group. \[ \] \{ \} \\ print the character.
  • Line 1 fields: dir (~/projects/app), dir.full, dir.name (app), branch, model (claude-opus-5-5), model.name (Opus 5.5), effort, ctx, session, cost (this session's cost, $4.12), turn.cost and turn.ctx (the last turn's cost and context added, while the turn line is on).
  • Label field: label (the whole label template is left out when only one account line shows).
  • Account fields: 5h, 5h.reset, 5h.pace, 7d, 7d.pace, 7d.reset, 7d.model (per-model weekly rows such as Fable 42%, from background checks; empty on plans without them), 7d.model.reset (the earliest of their resets), spend, spend.reset, age, status.
  • Subagent row fields (the rows under the prompt while subagents run): type (general-purpose), activity (the live text, e.g. Reading fsutil.js), model (claude-haiku-4-5-20251001), model.name (Haiku 4.5), effort (only when the subagent sets its own), ctx, tokens, elapsed (only while running). The sample's line starting ○ is a subagent row.
  • Turn line fields (the line under each response while the turn line is on; the sample's last line): duration (1m 43s; not in the default, since Claude Code shows how long the turn took), ctx (context added and its share of the window, +12.4k (6%)), ctx.total (86k), ctx.pct (43%), in, out, cacheRead, cacheWrite, hit (cache hit ratio), thinking, calls (9 calls), tools (Read 4, Bash 3), lines.added, lines.removed, cost ($0.41; a trailing + means part of it is not known yet), note (interrupted).
  • Change the current template minimally: read it from config show, then e.g. to drop effort remove {sep}[effort:{effort}]; to put the model first move [model:{model.name}]{sep} to the front.
  • Before a template change, show the current template and result.sample from config show; after config set, show the new template and the new result.sample.

Rules:

  • Accounts add themselves. Starting a session with a new login folder (e.g. through a CLAUDE_SECURESTORAGE_CONFIG_DIR alias) adds it under the next letter. If the user asks to "add" an account they have already used here, tell them it's added automatically and show the list. Use account add only for a folder that hasn't had a session yet.
  • Forget, not delete. A forgotten account's folder is remembered so it doesn't come back next session; adding it again with account add undoes that.
  • A warning in the result of account add means that folder has no login yet. Tell the user how to log in, using the command in the warning.
  • If a call returns "ok": false, tell the user the error and the fix and do not retry with guessed values.
  • If the request is ambiguous (e.g. a label or folder is missing), ask before running anything.

Claude Code fields on line 1

Line 1 can also show any field of Claude Code's status line JSON, by Claude Code's own name, e.g. {session_name}, {output_style.name}, {vim.mode}, {prompt_cache.expires_at}, {rate_limits.spend_limit.used_usd}. Run node "${CLAUDE_PLUGIN_ROOT}/cli/sl.js" fields --json for the list, and map the user's words onto a name from it. SLine's own fields win a name clash.

The name's ending sets the format: _at → a clock time (14:32, or Mon 17:29 on another day), _ms → a duration (1m42s), _usd → dollars ($12.40), _percentage → a whole percent (rounded, capped at 100%; nonsense values show nothing). Other text shows as is; true shows on and false nothing. Empty or missing values drop their [ … ] group, so wrap each Claude Code field in its own [ … ] group together with its label, and put {sep} directly before the group, e.g. {sep}[{session_name}] or {sep}[cache until {prompt_cache.expires_at}]. ({sep} is not allowed inside [ ]; to use literal separator text inside a group, write it as plain text, e.g. [ · {session_name}].)

If config set returns warnings, tell the user the name isn't a documented Claude Code field and will show nothing unless Claude Code sends it.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.