Claude Code Statuszeile: die günstigste Feedbackschleife, die du noch nicht nutzt

Die Statuszeile ist der einzige Ort in Claude Code, an dem Zustand sichtbar wird, nach dem du sonst extra fragen müsstest. Fast alle lassen sie leer. Hier ist der Mechanismus, und wir nehmen eine echte Statuszeile Zeile für Zeile auseinander.

Der kitstarter-Roboter zeigt auf eine Statuszeile unter einem Terminal-Prompt

Standardmäßig ist die Statuszeile in Claude Code leer. Das ist ein verschwendeter Kanal. Es ist der eine Streifen Bildschirm, den der Agent in jeder Runde kostenlos aktualisiert, und die meisten richten ihn nie ein. Dieser Beitrag erklärt genau, wie der Mechanismus funktioniert. Danach nehmen wir die echte Claude Code Statuszeile auseinander, die wir ausliefern, damit du siehst, was dorthin gehört und was nur Rauschen ist.

Was eine Claude Code Statuszeile wirklich ist

Eine Claude Code Statuszeile ist ein Skript, das Claude Code ausführt und unter deinem Prompt ausgibt. Claude Code übergibt dem Skript ein JSON-Payload über stdin (das Modell, den Workspace samt aktuellem Verzeichnis, die Kosten, das Kontextfenster) und rendert alles, was das Skript nach stdout schreibt, eins zu eins in der Statuszeile. Das ist der ganze Vertrag. Jede Sprache funktioniert, denn die Schnittstelle ist nur: stdin rein, eine Zeile Text raus.

Weil das Payload den laufenden Zustand der Sitzung trägt, ist die Statuszeile der billigste Weg, diesen Zustand auf dem Bildschirm zu halten. Ohne sie unterbrichst du den Agenten, um zu fragen: „Welches Modell ist das?“ oder „Was hat das bisher gekostet?“ Mit ihr steht die Antwort schon unter deinem Prompt, aktualisiert bei denselben Ereignissen, die die Sitzung ohnehin auslöst.

Wie Claude Code das Skript aufruft

Claude Code startet den Statuszeilen-Prozess bei ereignisgesteuerten Updates: nach jeder Antwort des Assistenten, bei /compact und bei Wechseln des Berechtigungsmodus, entprellt auf 300 ms. Es pollt nicht auf einem Timer, es sei denn, du setzt refreshInterval. Das stdout des Skripts ist eine Pipe, kein TTY, es muss die Farbe also aus der Umgebung ableiten statt aus isTTY.

Diese beiden Fakten treiben echte Entscheidungen in unserem Skript. Wir setzen refreshInterval bewusst nicht, denn alles, was die Zeile zeigt, ändert sich genau bei den Ereignissen, bei denen Claude Code ohnehin neu zeichnet. Ein Timer würde nur einen Node-Prozess starten, um eine identische Zeile neu zu zeichnen. Hier ist die Verdrahtung, die bei der Installation in die settings.json geschrieben wird:

typecommand
commandein absoluter Node-Pfad, dann der absolute Pfad zu statusline.mjs
padding0
refreshIntervalabsichtlich nicht gesetzt: Ein Timer würde Node starten, um nichts neu zu zeichnen
Der statusLine-Block, den unser Installer schreibt. Der Node-Pfad ist explizit und absolut, denn ein bloßes „node“ scheitert lautlos, wenn die Shell von Claude Code einen anderen PATH hat.

Das Detail mit dem absoluten Pfad ist keine Pedanterie. Wir verdrahten jedes Engine-Skript mit einem expliziten Node-Pfad, weil ein bloßer node-Befehl lautlos scheitert, wenn die von Claude Code gestartete Shell einen anderen PATH hat. Und eine Statuszeile, die lautlos ausfällt, ist schlimmer als gar keine. Wenn du noch bei der Einrichtung bist: Unsere Installationsanleitung beschreibt die Umgebung, von der das abhängt.

Unsere echte Claude Code Statuszeile, gelesen

Unsere Statuszeile ist 74 Zeilen lang, und ihre Aufgabe ist es, Navigator zu sein: immer auf dem Bildschirm, nie im Weg. Sie liest das JSON von stdin, holt sich das aktuelle Verzeichnis, lädt die Konfiguration des Kits und den Projektverlauf und rendert eine Zeile. Das Grundgerüst sieht so aus:

liestworkspace.current_dir von stdin, dann Konfiguration und den gespeicherten Verlauf für dieses Verzeichnis
gibt ausein violettes Zeichen, „kitstarter“ und einen Rumpf, der entweder ein Hinweis oder dein Fortschritt ist
Beispiel⬢ kitstarter · my-app · ▓▓▓░░ step 3 of 5 · wire the checkout
Eine Zeile, drei Zustände: noch kein Plan, mitten im Plan mit Fortschrittsbalken, oder alle Schritte erledigt.

Die Designentscheidungen stehen im Code. Wenn es keinen Plan gibt, gibt sie ready · /start to plan aus: eine Statuszeile, die Anfängern gleich den nächsten Schritt verrät. Gibt es einen Plan, zeigt sie den Projektnamen, einen Fortschrittsbalken, step N of M und den Titel des aktuellen Schritts, gekürzt auf 24 Zeichen. Sind alle Schritte erledigt, steht dort all N steps done · time to /ship. Die Zeile zeigt immer auf die nächste Aktion, nie nur auf den Zustand.

Zwei Dinge hängt sie nur an, wenn sie zutreffen. Ist die Clarity Engine scharf, ergänzt sie · asking first in Korallenrot, damit du auf einen Blick siehst, dass der Agent fragt, bevor er baut. Ist der Tutor aus, blendet sie gedimmt · tutor off ein. Nichts Statisches wird je gerendert. Das ist die Regel für eine Statuszeile: Jedes Zeichen muss sich seinen Platz verdienen, denn es kostet in jeder einzelnen Runde Aufmerksamkeit.

Der kitstarter-Roboter tippt weiter, während unter seinen Händen ein kleiner Statusstreifen leuchtet
Bewusst am Rand. Die Zeile meldet den Zustand dort, wo du ohnehin hinschaust, sodass du nie die Arbeit unterbrichst, um danach zu fragen.

Immer fail open

Eine Statuszeile darf das Terminal niemals zerschießen. Unsere ist so gekapselt, dass eine fehlende Konfiguration, ein fehlender Verlauf oder jeder geworfene Fehler in einer leeren Zeile enden, statt in einem Stacktrace unter deinem Prompt. Das ganze Rendern steckt in einem try, der Fehler schluckt:

Konfiguration ausgibt einen leeren String zurück
jeder Fehlerabfangen, nichts schreiben
Ergebnisschlimmstenfalls eine leere Zeile, nie eine kaputte
Fail open ist die nicht verhandelbare Regel für alles, was in jeder Runde gerendert wird.

Die Statuszeile ist nur ein Teil der Engine

Die Statuszeile ist die sichtbare Spitze eines größeren Systems. Das Kit verdrahtet acht Hook-Skripte über acht Lifecycle-Ereignisse: Sitzungsstart, Prompt-Absenden, Pre-Compact, Subagenten-Start, Pre-Tool-Use, Post-Tool-Use, Stop und Sitzungsende. Die Clarity-Sperre, die den Agenten zwingt, zuerst zu fragen, die Slop-Prüfung nach Änderungen, der Tutor, der im richtigen Moment anspringt: All das steckt in den Hooks. In der Statuszeile wird ihr Zustand zu etwas, das du sehen kannst.

Genau diese Integration macht die Zeile die Mühe wert. asking first ist keine Deko. Es ist der Clarity-Hook, der meldet, dass er scharf ist. Der Fortschrittsbalken ist der Verlauf, den der Hook beim Sitzungsstart geladen hat. Die Statuszeile ist ein schreibgeschütztes Fenster auf die Engine, und das ist der ehrliche Umgang mit dieser Fläche: Zustand zeigen, nicht erfinden.

Was es kostet, gemessen

Wir haben das Kit in einem Benchmark unter Laborbedingungen gegen Claude Code ohne Kit antreten lassen, und wir verschweigen die Niederlagen nicht. Beim Zuerst-Fragen kam das Kit auf 5 von 5 gegenüber 2 von 5 ohne Kit und erzeugte rund 40 Prozent weniger Code für dasselbe Ergebnis. Aber die Hooks, die die Statuszeile speisen, sind nicht umsonst. Bei einer einfachen To-do-App war das Kit etwa doppelt so langsam und rund 75 Prozent teurer bei fast identischem Ergebnis, und über die ganze Suite hinweg schlugen die Kontext-Token der Hooks mit durchschnittlich etwa 25 Prozent Mehrkosten zu Buche. Dieser Aufpreis ist real und offengelegt. Er kauft dir die Leitplanken und den Navigator, den du in der Zeile siehst.

Die Lehre ist nicht, dass Instrumentierung teuer ist. Sie ist, dass Instrumentierung, auf die du nie schaust, reine Kosten sind. Eine Statuszeile ist das eine Stück, das sich in jeder Runde bezahlt macht, weil sie Zustand, für den du sonst unterbrochen und gefragt hättest, einfach schon auf den Bildschirm bringt. Verdrahte sie. Zeig das Modell, das Verzeichnis, die Kosten, den Schritt. Lass alles andere weg.

Häufige Fragen

Was ist eine Claude Code Statuszeile? Es ist ein Skript, das du in der settings.json registrierst. Claude Code führt es aus, übergibt über stdin ein JSON-Payload mit Modell, Workspace, Kosten und Kontextfenster und gibt alles, was das Skript nach stdout schreibt, in der Zeile unter deinem Prompt aus. Sie aktualisiert sich bei Ereignissen wie jeder Antwort des Assistenten.

Wie richte ich eine Claude Code Statuszeile ein? Füge in der settings.json einen statusLine-Schlüssel hinzu, mit dem Typ command und einem command, der auf dein Skript zeigt. Lies dann das JSON von stdin und schreib eine einzige Zeile nach stdout. Nimm einen expliziten, absoluten Node-Pfad, damit das Skript nicht lautlos stirbt, wenn die Shell von Claude Code einen anderen PATH hat.

Was sollte eine Claude Code Statuszeile anzeigen? Zustand, nach dem du sonst fragen müsstest und der sich beim Arbeiten ändert: das Modell, das Arbeitsverzeichnis, die bisherigen Kosten und den Plan oder Schritt, bei dem du gerade bist. Lass alles Statische weg und alles, was du schon im Prompt siehst. Eine Statuszeile ist teure Aufmerksamkeit, gib sie also für Signal aus.

Die Statuszeile, für dich verdrahtet

kitstarter liefert die Navigator-Statuszeile, die Clarity-Sperre und acht Lifecycle-Hooks, für Claude Code, Codex und Antigravity.

Get the kit · $20 $29Dokumentation lesen