Claude Code Git-Branch-Mod: Branch und Änderungen über dem Prompt
Zeigt Git-Branch, geänderte Dateien und Ahead/Behind-Status in einer Zeile über dem Prompt von Claude Code.
Berechtigungen
- Führt Befehle ausKann Shell-Programme auf deinem Rechner ausführen ($.process.run / spawn). Im Quellcode siehst du, welche genau.
- Fängt Tool-Aufrufe abSieht jeden Tool-Aufruf von Claude (tool.call / tool.check) und könnte ihn blockieren oder verändern.
- Verändert die OberflächeZeichnet in die Oberfläche von Claude Code: Leisten, Bereiche, Statustext, Toasts (ui.render / $.ui.*).
- getestet mit
- v2.1.291
- zuletzt getestet
- erfordert
- Claude Code ≥ 2.1.287
- Oberflächen
- über dem Prompt
- Quelle
- ClaudeMods (MIT)
In Claude Code installieren:
/plugin install cm-git-branch --marketplace rotbit/claudemods-marketplaceWas macht diese Mod?
Die Claude Code Git-Branch-Mod setzt eine Zeile über das Eingabefeld, die dir zeigt, wo du in Git gerade stehst: ⎇ main · 3 changed · ↑1 ↓0. Du siehst den Namen des Branches, wie viele Pfade git status als geändert meldet und wie weit der Branch seinem Upstream voraus ist oder hinterherhinkt. Ist HEAD losgelöst (detached), zeigt sie stattdessen den kurzen Commit-Hash. Außerhalb eines Git-Repositorys erscheint die Zeile einfach nicht.
Am meisten hilft sie, wenn Claude in deinem Auftrag Dateien bearbeitet. Du merkst sofort, wenn eine Sitzung auf main statt auf einem Feature-Branch gestartet ist, und die Zahl der Änderungen steigt mit jeder Bearbeitung durch Claude – so weißt du, wann es Zeit zum Prüfen und Committen ist. Benötigt Claude Code 2.1.287 oder neuer.
Demo
Die Aufnahme startet Claude Code mit geladener Mod in einem kleinen Demo-Projekt. Schon vor dem ersten Prompt zeigt die Leiste über der Eingabe den Branch und die Zahl der geänderten Dateien. Dann wird Claude gebeten, die Dateien in src aufzulisten; die Leiste bleibt stehen, während der Turn läuft, und wird aktualisiert, sobald der Turn abgeschlossen ist.
Installation
Nutze eine der drei Methoden im Installationsblock. Die Einzeiler-Methode funktioniert innerhalb einer laufenden Sitzung; die Shell-Methode braucht in bereits offenen Sitzungen /reload-plugins.
$ install cm-git-branch
Erfordert Claude Code ≥ 2.1.287
1.Eine Zeile, direkt in Claude Code
/plugin install cm-git-branch --marketplace rotbit/claudemods-marketplaceIn eine laufende Sitzung einfügen (v2.1.275+). Claude Code fragt zuerst, ob der Marketplace hinzugefügt werden soll.
2.Aus deiner Shell
claude plugin marketplace add rotbit/claudemods-marketplace claude plugin install cm-git-branch@claudemodsFühre danach in jeder bereits geöffneten Sitzung /reload-plugins aus.
3.Ohne Installation ausprobieren
git clone https://github.com/rotbit/claudemods-marketplace claude --plugin-dir ./claudemods-marketplace/cm-git-branchLädt die Mod nur für eine Sitzung. An deinen Einstellungen wird nichts geändert.
So funktioniert es
Die Mod hält den jeweils neuesten Git-Status in einem $.state-Atom und zeichnet ihn an der Render-Stelle AbovePrompt. Hier die Hooks aus hooks/register.tsx:
on('session.start', async ($, e, next) => {
const started = await next(e)
await refresh($)
$.clock.every(intervalMs, () => {
refresh($).catch(() => undefined)
})
return started
})
on('turn.complete', async ($, e, next) => {
const result = await next(e)
if (e.agentId === undefined) await refresh($)
return result
})
on('tool.call', { tool: 'Bash' }, async ($, e, next) => {
const ran = await next(e)
if (mentionsGit(e.command)) await refresh($)
return ran
}).catch(($, e, next) => next(e))Es gibt drei Aktualisierungspunkte. session.start nimmt die erste Messung vor und startet einen Timer für Änderungen, die außerhalb von Claude Code passieren. turn.complete aktualisiert nach jedem Turn der Hauptschleife; Subagent-Turns (mit einer agentId) werden übersprungen. Der tool.call-Hook für Bash lässt den Befehl mit await next(e) zuerst laufen und aktualisiert danach nur, wenn der Befehl git oder gh pr checkout/merge erwähnt. Sein .catch reicht den Aufruf durch, sodass ein Fehler in der Mod deinen Befehl nie blockiert.
refresh führt ein einziges git status --porcelain=v1 -b in $.session.cwd() aus. Dieser eine Befehl liefert Branch, Upstream, Ahead/Behind und die Liste der Änderungen, separate Aufrufe von rev-parse und rev-list sind also nicht nötig. Eine reine Funktion parseStatus in hooks/git.ts behandelt neue Repositorys ohne Commits und losgelösten HEAD. Fehlt Git oder ist es zu langsam, wird die Leiste ausgeblendet, statt veraltete Daten zu zeigen.
Anpassen
Diese Optionen änderst du in /config unter dem Namen der Mod; die Mod lädt sich mit den neuen Werten neu. Der Standardwert für den Timer wird oben in register gesetzt, Math.max(2_000, ... 15_000), was auch die Untergrenze von 2 Sekunden erzwingt. Um das Aussehen der Leiste zu ändern, bearbeite die Text-Elemente im ui.render-Hook: Der Branch wird bold in cyan gezeichnet, die Details mit dimColor.
| Einstellung | Typ | Standard | Funktion |
|---|---|---|---|
| intervalMs | number | 15000 | Refresh interval (ms). How often to re-read git status between turns, in milliseconds (at least 2000). |
| showAheadBehind | boolean | true | Show ahead/behind. Show commits ahead of and behind the upstream branch (↑1 ↓0). |
| hideWhenClean | boolean | false | Hide when clean. Hide the band while the work tree is clean and in sync with its upstream. |
Ändere diese Werte in Claude Code mit /config – die Mod lädt sich automatisch neu.
Berechtigungen & Sicherheit
Führt Befehle aus erscheint, weil die Mod $.process.run aufruft. Sie startet genau zwei Programme: git status --porcelain=v1 -b und, nur bei losgelöstem HEAD, git rev-parse --short HEAD. Beide sind rein lesend, nutzen ein argv-Array ohne Shell und haben ein Timeout von 10 Sekunden.
Fängt Tool-Aufrufe ab erscheint, weil sie sich in tool.call für Bash einhängt. Sie beobachtet nur: Sie ändert oder verweigert nie einen Befehl und aktualisiert erst, nachdem der Befehl beendet ist. Verändert die Oberfläche betrifft die Leiste.
Sie liest keine Dateiinhalte, nutzt kein Netzwerk und ruft das Modell nicht auf. Um sie dauerhaft abzuschalten, führe /plugin disable cm-git-branch aus; um eine einzelne Sitzung ganz ohne Mods zu starten, nutze claude --safe-mode.
- Führt Befehle aus
- Kann Shell-Programme auf deinem Rechner ausführen ($.process.run / spawn). Im Quellcode siehst du, welche genau.
- Fängt Tool-Aufrufe ab
- Sieht jeden Tool-Aufruf von Claude (tool.call / tool.check) und könnte ihn blockieren oder verändern.
- Verändert die Oberfläche
- Zeichnet in die Oberfläche von Claude Code: Leisten, Bereiche, Statustext, Toasts (ui.render / $.ui.*).
Kompatibilität & Fehlerbehebung
Getestet mit Claude Code 2.1.291 unter macOS im Terminal. Wenn die Leiste nicht erscheint, prüfe Folgendes der Reihe nach:
claude --versionmeldet 2.1.287 oder neuer.- Die Sitzung wurde in einem Git-Repository gestartet;
git statussollte im selben Ordner funktionieren. - Die Mod ist aktiviert: Das Menü
/pluginzeigt sie im Tab „Installed“ mit einer Zeile „mod active“. - Du hast über die Shell in eine offene Sitzung installiert: Führe
/reload-pluginsaus. - Über der Eingabe ist eine Umfrage oder eine andere Abfrage geöffnet. Die Leiste macht Platz, solange sie sichtbar ist, und kehrt danach zurück.
Erhöhe bei sehr großen Repositorys intervalMs, damit git status seltener läuft.
FAQ
- Verändert die Claude Code Git-Branch-Mod mein Repository?
- Nein. Sie führt nur git status --porcelain=v1 -b aus, plus git rev-parse --short HEAD, wenn HEAD losgelöst ist. Beide Befehle sind rein lesend, laufen ohne Shell und brechen nach 10 Sekunden ab.
- Warum erscheint die Leiste nicht?
- Die häufigsten Gründe: Der Ordner der Sitzung ist kein Git-Repository, Claude Code ist älter als 2.1.287, die Mod ist in /plugin deaktiviert, oder eine Umfrage belegt den Platz über dem Prompt. Führe nach einer Installation über die Shell /reload-plugins aus.
- Bemerkt sie einen Checkout, den ich in einem anderen Terminal mache?
- Ja, innerhalb eines Aktualisierungsintervalls (standardmäßig 15 Sekunden). Senke intervalMs in /config, wenn es schneller gehen soll, bis hinunter auf 2 Sekunden.
- Funktioniert sie in der Desktop-App?
- Ja. Die AbovePrompt-Leiste wird im Terminal und im Code-Tab der Desktop-App gezeichnet. In claude -p und im Chat-Panel der VS-Code-Erweiterung laufen Mods zwar, zeichnen aber nichts, daher ist die Leiste dort nicht zu sehen.
- Kann ich die Leiste ausblenden, wenn es nichts zu melden gibt?
- Schalte hideWhenClean ein. Die Leiste verschwindet dann, solange der Arbeitsbaum sauber und mit seinem Upstream synchron ist.
# Ähnliche Mods

Kontext-Meter
Kontextfüllstand, 5-Stunden- und 7-Tage-Plannutzung und Sitzungskosten in der Statuszeile, plus Warnung vor dem Limit.
- Statuszeile
- Toast
- Verändert die Oberfläche
getestet mit v2.1.291

Gefährliche Befehle blockieren
Verweigert rm -rf /, Force-Push auf main, DROP TABLE, curl | sh und andere destruktive Bash-Befehle vor der Ausführung.
- Toast
- Fängt Tool-Aufrufe ab
- Verändert die Oberfläche
getestet mit v2.1.291

Tool-Call-Zähler
Zählt Claudes Tool-Aufrufe pro Turn und Sitzung, zeigt sie neben dem Spinner und ergänzt /tally als Übersicht.
- Spinner
- Verlauf
- Statuszeile
- Fängt Tool-Aufrufe ab
- Verändert die Oberfläche
- Fügt Befehle/Tools hinzu
getestet mit v2.1.291
Mehr in Git & GitHub, Statuszeile & Prompt-Leiste.