Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add saski/arnesto --skill writing-statuslinesgit clone --depth 1 https://github.com/saski/arnestoWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/saski/arnesto/writing-statuslines)<a href="https://agentmods.dev/skills/saski/arnesto/writing-statuslines"><img src="https://agentmods.dev/badge/skills/saski/arnesto/writing-statuslines/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/saski/arnesto/writing-statuslines"><img src="https://agentmods.dev/badge/skills/saski/arnesto/writing-statuslines.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00023 | $0.00902 |
| Opus 5.5 | $0.00009 | $0.00361 |
| Sonnet 5.5 | $0.00005 | $0.00180 |
| Haiku 4.5 | $0.00002 | $0.00090 |
Grade B, and why
writing-statuslines scanned grade B with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
Add to `~/.claude/settings.json` (user-level) or `.claude/settings.json` (project-level): This is a copy
100% identical to writing-statuslines — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 124 lines — stays where its author put it; the contents beside it link to each section on GitHub.
STARTER_CHARACTER = 📊
Setup
Update the reference docs to get the latest from Anthropic:
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):
{
"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:
{
"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.
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 124 lines · 23 tokens per session scan B 10a0b12ee86d
writing-statuslines is a skill published in the GitHub repository saski/arnesto (6 stars, last pushed 5d ago), licensed Unlicense. It adds 23 tokens to every session and 902 once invoked, about $0.0001 per session on Opus 5.5. A static security scan graded it B with 1 finding (reads agent configuration directories). It is 100% identical to writing-statuslines, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
mailbox
A guide for performing email and mailbox tasks through the QwenPaw mailbox system. It covers supported personal email providers, credentials, configuration, and the required mailbox workflow.
channel_message
Use this skill to proactively send a one-way message to a user/session/channel, usually only when the user explicitly asks to send to a channel/session or when proactive notification is needed. First query sessions with qwenpaw chats list, then push with qwenpaw channels send.
mission-slice-sop
Use when starting, building, handing off, restoring, or closing a mission or slice under the default lightweight SDLC.
oma-recap
Summarize AI conversation histories for a specified date or period. Use for daily work recaps and cross-tool activity summaries.
daily-briefing
One short morning message: today's calendar, mail that needs a reply, open tasks and promises, the weather where you live, and one thing to watch today. Can be set to arrive by itself every morning.
persistent-reminders
Reminders that keep coming back until you say they are done: bills, refills, chores and one-off tasks. You choose how often to be nudged, can snooze, and get one weekly line on what is still open.