by stephenleo
⚡ A beautiful, fully customizable statusline for Claude Code - Starship-style TOML config, themeable colours, Nerd Font glyphs, and tunable cost/context/usage thresholds.
# Add to your Claude Code skills
git clone https://github.com/stephenleo/cshipLast scanned: 5/27/2026
{
"issues": [],
"status": "PASSED",
"scannedAt": "2026-05-27T08:04:12.219Z",
"semgrepRan": false,
"npmAuditRan": true,
"pipAuditRan": true
}cship is an open-source ai agents skill for AI coding assistants such as Claude Code, Codex CLI, and ChatGPT, built by stephenleo. ⚡ A beautiful, fully customizable statusline for Claude Code - Starship-style TOML config, themeable colours, Nerd Font glyphs, and tunable cost/context/usage thresholds. It has 381 GitHub stars.
Yes. cship passed SkillsLLM's automated security scan — a dependency vulnerability audit plus prompt-injection heuristics — with no high-severity issues. You can read the full report in the Security Report section on this page.
Clone the repository with "git clone https://github.com/stephenleo/cship" and add it to your Claude Code skills directory (see the Installation section above).
cship is primarily written in Rust. It is open-source under stephenleo on GitHub, so you can review or fork the full source.
Yes. SkillsLLM lists many other AI Agents skills you can browse and compare side by side. Open the AI Agents category from the badge at the top of this page, or use the Related Skills and comparison links further down to weigh cship against similar tools.
No comments yet. Be the first to share your thoughts!
A beautiful, fully customizable statusline for Claude Code Starship-style TOML config, themeable colours, Nerd Font glyphs, and tunable cost/context/usage thresholds.
cship renders a live statusline for Claude Code sessions, showing session cost, context window usage, model name, API usage limits, and more — all configurable via a simple TOML file.
curl -fsSL https://cship.dev/install.sh | bash
Auto-detects your OS and architecture (macOS arm64/x86_64, Linux x86_64/aarch64), downloads the binary to ~/.local/bin/cship, creates a starter config at ~/.config/cship.toml, and wires the statusLine entry in ~/.claude/settings.json.
Optional dependencies (Starship for passthrough modules, and libsecret-tools on Linux for usage limits) are handled as follows:
--yes / -y — auto-installs all optional deps without prompting:
curl -fsSL https://cship.dev/install.sh | bash -s -- --yes
RUN, CI pipelines, no TTY) — optional deps are skipped automatically; the installer prints instructions for manual installation.Run this one-liner in PowerShell (5.1 or later):
irm https://cship.dev/install.ps1 | iex
Installs to %USERPROFILE%\.local\bin\cship.exe, writes config to %USERPROFILE%\.config\cship.toml, and registers the statusline in %USERPROFILE%\.claude\settings.json.
You can inspect the script before running: install.ps1
Requires the Rust toolchain.
cargo install cship
After installing with cargo on macOS / Linux, wire the statusline manually in ~/.claude/settings.json:
{
"statusLine": { "type": "command", "command": "cship" }
}
After installing with cargo on Windows, wire the statusline manually in %APPDATA%\\Claude\\settings.json:
{
"statusLine": { "type": "command", "command": "cship" }
}
~/.config/cship.toml (on Windows: %USERPROFILE%\.config\cship.toml).cship.toml in your project root for per-project overrides.lines array defines the rows of your statusline.$cship.<module> tokens (native cship modules) with Starship module tokens (e.g. $git_branch).~/.config/cship.toml.Everything in the Claude Code status line documentation is available as a $cship.<module> token for you to mix and match in the lines format strings. Here are the most popular ones:
| Token | Description |
|---|---|
$starship_prompt |
Full rendered Starship prompt (all configured modules in one row) |
$cship.model |
Claude model name |
$cship.cost |
Session cost (configurable currency; default $X.XX) |
$cship.context_bar |
Visual progress bar of context window usage |
$cship.context_window |
Context window tokens (used/total) |
$cship.context_window.used_tokens |
Real token count in context with percentage (e.g. 8%(79k/1000k)) |
$cship.cost.total_lines_added |
Lines added this session |
$cship.cost.total_lines_removed |
Lines removed this session |
$cship.usage_limits |
API usage limits (5hr / 7-day, plus per-model and extra-usage when available) |
$cship.usage_limits.per_model |
7-day per-model breakdown (opus / sonnet / cowork / oauth) |
$cship.usage_limits.extra_usage |
Extra-credits section with {active} indicator |
$cship.account |
Authenticated Anthropic account (work/personal); map org names via labels |
$cship.peak_usage |
Peak-time indicator (US Pacific business hours) |
$cship.agent |
Sub-agent name |
$cship.effort |
Reasoning effort level (low/medium/high/xhigh/max) |
$cship.session |
Session identity info |
$cship.workspace |
Workspace/project directory |
Full configuration reference: https://cship.dev
Run cship explain to inspect what cship sees from Claude Code's context JSON — useful when a module shows nothing or behaves unexpectedly.
cship explain
To check the installed binary version:
cship --version # or: cship -v
Ready-to-use configurations — from the recommended full-featured setup down to a minimal single-line bar. Each can be dropped into ~/.config/cship.toml.
My personal setup, end to end. Top row: $starship_prompt running Starship's Catppuccin Powerline preset. Bottom row: model, effort, cost, context bar, 7-day per-model usage, extra credits, peak-hours indicator — thresholds escalate cool → warn → critical as budgets fill.
~/.config/cship.toml
[cship]
lines = [
"$starship_prompt",
"$cship.model $cship.effort $cship.cost $cship.context_bar $cship.usage_limits $cship.peak_usage",
]
[cship.model]
symbol = " "
style = "bold cyan"
[cship.effort]
symbol = "⚡ "
style = "fg:#7dcfff"
high_style = "fg:#e0af68"
xhigh_style = "bold fg:#e0af68"
max_style = "bold fg:#f7768e"
[cship.context_bar]
symbol = " "
filled_char = "●"
empty_char = "○"
format = "[$symbol$value]($style)"
width = 10
style = "fg:#7dcfff"
warn_threshold = 40.0
warn_style = "fg:#e0af68"
critical_threshold = 70.0
critical_style = "bold fg:#f7768e"
[cship.cost]
symbol = "💰 "
style = "fg:#a9b1d6"
warn_threshold = 10
warn_style = "fg:#e0af68"
critical_threshold = 50
critical_style = "bold fg:#f7768e"
[cship.usage_limits]
five_hour_format = " 5h {pct}% ({reset})"
seven_day_format = " 7d {pct}% ({reset})"
separator = " "
warn_threshold = 50.0
warn_style = "fg:#e0af68"
critical_threshold = 80.0
critical_style = "bold fg:#f7768e"
~/.config/starship.toml — Starship's Catppuccin Powerline preset:
"$schema" = 'https://starship.rs/config-schema.json'
format = """
[](red)\
$os\
$username\
[](bg:peach fg:red)\
$directory\
[](bg:yellow fg:peach)\
$git_branch\
$git_status\
[](fg:yellow bg:green)\
$c\
$rust\
$golang\
$nodejs\
$php\
$java\
$kotlin\
$haskell\
$python\
[](fg:green bg:sapphire)\
$conda\
[](fg:sapphire bg:lavender)\
$time\
[ ](fg:lavender)\
$cmd_duration\
$line_break\
$character"""
palette = 'catppuccin_mocha'
[os]
disabled = false
style = "bg:red fg:crust"
format = "[$symbol ]($style)"
[os.symbols]
Macos = ""
# (full OS symbol list trimmed for brevity — see the preset link above)
[username]
show_always = false
style_user = "bg:red fg:crust"
style_root = "bg:red fg:crust"
format = '[ $user]($style)'
[directory]
style = "bg:peach fg:crust"
format = "[ $path ]($style)"
truncation_length = 3
truncation_symbol = "…/"
[directory.substitutions]
"Documents" = " "
"Downloads" = " "
"Music" = " "
"Pictures" = " "
"Developer" = " "
[git_branch]
symbol = ""
style = "bg:yellow"
format = '[[ $symbol $branch ](fg:crust bg:yellow)]($style)'
[git_status]
style = "bg:yellow"
format = '[[($all_status$ahead_behind )](fg:crust bg:yellow)]($style)'
[nodejs]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[rust]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[golang]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version) ](fg:crust bg:green)]($style)'
[python]
symbol = ""
style = "bg:green"
format = '[[ $symbol( $version)(\(#$virtualenv\)) ](fg:crust bg:green)]($style)'
[conda]
symbol = " "
style = "fg:crust bg:sapphire"
format = '[$symbol$environment ]($style)'
ignore_base = false
[time]
disabled = false
time_format = "%R"
style = "bg:lavender"
format = '[[ $time ]