Eine eigene Statuszeile für Claude Code erstellen
Wie man eine informative Statuszeile mit Model-Info, Kontext-Nutzung und Git-Status in Claude Code CLI erstellt.
Claude Code unterstützt eigene Statuszeilen via Bash-Skripte. Hier zeige ich, wie man eine baut, die Model, Kontext-Nutzung und Git-Status auf einen Blick anzeigt.
Schnellstart
Der schnellste Weg — einfach in Claude Code ausführen:
/statusline show model name and context percentage with a progress barClaude Code generiert das Skript und aktualisiert die Einstellungen automatisch. Für volle Kontrolle, weiterlesen.
Ergebnis
Manuelle Einrichtung
1. In ~/.claude/settings.json hinzufügen:
{
"statusLine": {
"type": "command",
"command": "bash ~/.claude/statusline.sh"
}
}2. ~/.claude/statusline.sh erstellen und ausführbar machen (chmod +x):
Verfügbare Daten
Claude Code übergibt JSON via stdin an dein Skript. Wichtige Felder:
| Feld | Beschreibung |
|---|---|
model.id, model.display_name | Aktuelles Model-ID und Name |
context_window.used_percentage | Vorberechneter % des genutzten Kontexts |
context_window.total_input_tokens | Kumulative Input-Token-Anzahl |
context_window.total_output_tokens | Kumulative Output-Token-Anzahl |
context_window.context_window_size | Maximale Kontextfenstergröße |
cost.total_cost_usd | Gesamte Sitzungskosten in USD |
cost.total_duration_ms | Gesamtzeit seit Sitzungsstart |
cost.total_lines_added / removed | Geänderte Codezeilen |
workspace.current_dir | Aktuelles Arbeitsverzeichnis |
workspace.project_dir | Verzeichnis, in dem Claude Code gestartet wurde |
vim.mode | Aktueller Vim-Modus (NORMAL / INSERT) |
session_id | Eindeutige Sitzungs-ID |
Das Skript läuft nach jeder Assistenten-Nachricht, gedrosselt auf 300ms. Schnell halten — keine Netzwerk-Aufrufe.
Rate-Limits nicht verfügbar. Stündliche Nutzungslimits werden nicht an Statuszeilen-Skripte übergeben. Feature-Request.
Anpassungen
Alternative Fortschrittsbalken:
# Blöcke: [▓▓▓░░░░░░░]
for ((i=0; i<filled; i++)); do progress_bar+="▓"; done
for ((i=0; i<empty; i++)); do progress_bar+="░"; done
# Punkte: [●●●○○○○○○○]
for ((i=0; i<filled; i++)); do progress_bar+="●"; done
for ((i=0; i<empty; i++)); do progress_bar+="○"; doneFarbcodierter Prozentsatz:
[ "$used_pct" -lt 50 ] && pct_color=$'\033[32m' || \
[ "$used_pct" -lt 80 ] && pct_color=$'\033[33m' || pct_color=$'\033[31m'Sitzungskosten anzeigen:
cost=$(echo "$input" | jq -r '.cost.total_cost_usd // 0')
# Zur Ausgabe hinzufügen: | \$${cost}Zum Entfernen: /statusline delete ausführen oder das statusLine-Feld aus settings.json entfernen.