statuskit
Modular statusline for Claude Code.
Statuskit displays contextual information below Claude's responses: current model, git status, API usage limits, and more. It reads JSON from Claude Code's statusline hook and renders formatted, colored output.
Features
- Modular architecture — enable only the modules you need
- Configurable — customize each module's behavior via TOML config
- Built-in modules:
model— current Claude model namegit— branch, remote status, changes, last commit, project/worktree locationusage_limits— API quota tracking (5h session, 7d weekly) with color-coded warnings
- Coming soon:
beads— display active beads tasks- External modules support — load custom modules from separate packages
Installation
# Using uv (recommended)
uv tool install claude-statuskit
# Using pipx
pipx install claude-statuskit
# Using pip
pip install claude-statuskit
Quick Start
Run the setup command to configure Claude Code:
# User-level setup (recommended for personal use)
statuskit setup
# Project-level setup (shared config for team)
statuskit setup --scope project
# Local setup (personal overrides, gitignored)
statuskit setup --scope local
Setup will:
- Add the statusline hook to Claude Code settings
- Create configuration file at the appropriate level
- Update gitignore for local configs (if applicable)
After setup, restart Claude Code to see the statusline.
Example Output
Opus 4.5 · 47m · 120k free (60%)
claude-tools master ↑1 +2 ~1 ?3 · a1b2c3d 2h
Session: 45% (2h 30m) · Weekly: 12%
This shows:
- Line 1 (model): Model name, session duration, context window
- Line 2 (git): Project, branch, remote status, changes, last commit
- Line 3 (usage_limits): API quota for session and weekly limits
Configuration
Configuration files are loaded in priority order (first found wins):
| Level | Path | Use case |
|---|---|---|
| Local | .claude/statuskit.local.toml |
Personal overrides, gitignored |
| Project | .claude/statuskit.toml |
Shared team configuration |
| User | ~/.claude/statuskit.toml |
Global personal defaults |
Basic Configuration
# Modules to display (in order)
modules = ["model", "git", "usage_limits"]
# Enable debug output
debug = false
Module Configuration
Each module can be configured in its own section:
[git]
show_branch = true
commit_age_format = "compact"
[usage_limits]
show_session = true
show_weekly = true
multiline = false
Module Reference
model Module
Displays model name, session duration, and context window usage.
| Parameter | Type | Default | Description |
|---|---|---|---|
show_duration |
bool | true |
Show session duration |
show_context |
bool | true |
Show context window usage |
context_format |
string | "free" |
Context display format (see below) |
context_compact |
bool | false |
Use compact numbers (e.g., 150k instead of 150,000) |
context_threshold_green |
int | 50 |
Percentage of free context to show green |
context_threshold_yellow |
int | 25 |
Percentage of free context to show yellow (below = red) |
context_format values:
| Value | Output example |
|---|---|
"free" |
150,000 free (75.0%) |
"used" |
50,000 used (25.0%) |
"ratio" |
50,000/200,000 (25.0%) |
"bar" |
[███████░░░] 70% |
git Module
Displays git branch, remote status, changes, last commit, and project/worktree location.
| Parameter | Type | Default | Description |
|---|---|---|---|
show_project |
bool | true |
Show project (repository) name |
show_worktree |
bool | true |
Show worktree name with 🌲 indicator |
show_folder |
bool | true |
Show current subfolder relative to repo root |
show_branch |
bool | true |
Show current branch name |
show_remote_status |
bool | true |
Show ahead/behind/diverged status |
show_changes |
bool | true |
Show staged/modified/untracked counts |
show_commit |
bool | true |
Show last commit hash and age |
commit_age_format |
string | "relative" |
Commit age format (see below) |
show_pr |
bool | true |
Show the current branch's PR (GitHub) / MR (GitLab) |
pr_provider |
string | "auto" |
Provider detection: "auto", "github", "gitlab" |
pr_link |
bool | true |
Wrap the PR/MR token in a clickable OSC 8 hyperlink |
pr_cache_ttl |
int | 300 |
Minimum seconds between PR/MR network lookups |
commit_age_format values:
| Value | Output example |
|---|---|
"relative" |
2 hours ago |
"compact" |
2h |
PR / MR display:
The git module can show the current branch's pull request (GitHub) or merge request
(GitLab), rendered between the branch name and the sync indicator as a state-colored
token — PR #42 ● (GitHub) or MR !7 ○ (GitLab):
| State | Glyph | Color |
|---|---|---|
| open | ● |
green |
| draft | ○ |
yellow |
| merged | ✓ |
magenta |
| closed | ✗ |
red |
Optional dependencies: this feature shells out to the official CLIs —
gh for GitHub and glab
for GitLab — reusing their authentication and host configuration (so self-hosted /
Enterprise instances work with no extra setup). Neither CLI is required to install
statuskit; when the relevant CLI is missing or unauthenticated the PR/MR segment is
simply omitted. Lookups are cached (pr_cache_ttl, default 300s) so the status line
never hits the network on every render. Set pr_provider to force a provider, or
show_pr = false to disable the segment entirely. When pr_link is on, supporting
terminals (iTerm2, Kitty, WezTerm) make the token Cmd/Ctrl-clickable; others show it
as plain text.
usage_limits Module
Displays API usage limits with color-coded warnings based on consumption rate.
| Parameter | Type | Default | Description |
|---|---|---|---|
show_session |
bool | true |
Show 5-hour session limit |
show_weekly |
bool | true |
Show 7-day weekly limit |
models_always_show |
list | [] |
Model display names to always show, even at 0% |
models_never_show |
list | [] |
Model display names to never show |
show_reset_time |
bool | true |
Show time until reset |
multiline |
bool | true |
Display each limit on separate line |
show_progress_bar |
bool | false |
Show visual progress bar |
bar_width |
int | 10 |
Progress bar width in characters |
session_time_format |
string | "remaining" |
Time format for session limit |
weekly_time_format |
string | "reset_at" |
Time format for weekly limit |
model_time_format |
string | "reset_at" |
Time format for per-model limits |
cache_ttl |
int | 60 |
Cache lifetime in seconds |
Time format values:
| Value | Output example |
|---|---|
"remaining" |
2h 30m |
"reset_at" |
Thu 17:00 |
Color coding: Usage is colored based on consumption rate vs elapsed time:
- 🟢 Green — on track or under
- 🟡 Yellow — approaching the limit trajectory
- 🔴 Red — ahead of pace, may hit limit
License
MIT — see LICENSE for details.
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file claude_statuskit-0.5.1.tar.gz.
File metadata
- Download URL: claude_statuskit-0.5.1.tar.gz
- Upload date:
- Size: 80.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0c94357afa366ab35849d8341cf1db689d6a4825b1cd92ac09b373b9149b5364
|
|
| MD5 |
8b4e865814e1d5bc47cdd45fca6a361a
|
|
| BLAKE2b-256 |
c8dcdbc6210bf39595017d41cfada7df6c92eaecd9baf9f0e8e7e4190839c028
|
Provenance
The following attestation bundles were made for claude_statuskit-0.5.1.tar.gz:
Publisher:
publish.yml on NoNameItem/claude-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_statuskit-0.5.1.tar.gz -
Subject digest:
0c94357afa366ab35849d8341cf1db689d6a4825b1cd92ac09b373b9149b5364 - Sigstore transparency entry: 2301483938
- Sigstore integration time:
-
Permalink:
NoNameItem/claude-tools@dab4b1f00b091b8c2bd1f7fa402500a42e77d059 -
Branch / Tag:
refs/tags/statuskit-0.5.1 - Owner: https://github.com/NoNameItem
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dab4b1f00b091b8c2bd1f7fa402500a42e77d059 -
Trigger Event:
release
-
Statement type:
File details
Details for the file claude_statuskit-0.5.1-py3-none-any.whl.
File metadata
- Download URL: claude_statuskit-0.5.1-py3-none-any.whl
- Upload date:
- Size: 47.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
667614fd37eed434eb0972994498443eff40506e4975ae9b2f3cb31b01dc8a3e
|
|
| MD5 |
980956836cbb1092f0c4ebe72ba74853
|
|
| BLAKE2b-256 |
11b8778067ee5bff06cc4100ff5b230b6bc0b8305392b252cfb1305c835398a7
|
Provenance
The following attestation bundles were made for claude_statuskit-0.5.1-py3-none-any.whl:
Publisher:
publish.yml on NoNameItem/claude-tools
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
claude_statuskit-0.5.1-py3-none-any.whl -
Subject digest:
667614fd37eed434eb0972994498443eff40506e4975ae9b2f3cb31b01dc8a3e - Sigstore transparency entry: 2301484162
- Sigstore integration time:
-
Permalink:
NoNameItem/claude-tools@dab4b1f00b091b8c2bd1f7fa402500a42e77d059 -
Branch / Tag:
refs/tags/statuskit-0.5.1 - Owner: https://github.com/NoNameItem
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@dab4b1f00b091b8c2bd1f7fa402500a42e77d059 -
Trigger Event:
release
-
Statement type: