| applies_to | all-agents |
| name | just-ship-status |
| description | /just-ship-status — Lokalen Repo-Zustand anzeigen (Branches, PRs, Board, Worktrees) |
/status — Lokalen Repo-Zustand anzeigen
Read-only Uebersicht ueber den lokalen Zustand des Repos. Keine Aktionen, nur Anzeige.
WICHTIGSTE REGEL
Dieser Command zeigt den Zustand und bietet Aufräumen an. Kein Commit, kein Push, kein Status-Update, kein Branch-Wechsel — ausser der User stimmt dem Aufräumen zu.
Konfiguration
Lies project.json fuer Projekt-Name und Pipeline-Config.
Pipeline (optional): Falls pipeline.workspace_id gesetzt → board-api.sh verwenden:
bash .claude/scripts/board-api.sh get "tickets/{N}"
Credentials werden intern aufgelöst.
Falls pipeline.workspace_id NICHT gesetzt: Board-Abfrage komplett ueberspringen, nur lokale Daten anzeigen.
Ausfuehrung
1. Daten sammeln
Fuehre folgende Abfragen parallel aus:
1a. Lokale Branches mit Tracking-Status:
git fetch origin --prune 2>/dev/null
git for-each-ref --format='%(refname:short) %(upstream:track) %(upstream:short)' refs/heads/ | grep -v '^main$'
Fuer jeden Feature/Fix/Chore-Branch: Behind/Ahead gegenueber main ermitteln:
git rev-list --left-right --count main...{branch}
1b. Offene PRs:
gh pr list --json number,headRefName,url,state --limit 50
1c. Board-Ticket-Status (nur wenn Pipeline konfiguriert):
Ticket-Nummern aus Branch-Namen extrahieren (Pattern: T-{N} oder {N}- am Anfang nach dem Prefix).
Fuer jede gefundene Ticket-Nummer:
bash .claude/scripts/board-api.sh get "tickets/{N}"
Status-Feld (status) aus der Response extrahieren.
1d. Aktive Worktrees:
git worktree list --porcelain
2. Ausgabe formatieren
Projekt-Name aus project.json lesen (name Feld) oder aus dem Verzeichnisnamen ableiten.
Lokaler Zustand — {project-name}
----------------------------------------------
Branch PR Board
feature/T-287-universal-event-streaming - -
fix/T-385-members-unknown-display - in_review
fix/worktree-stale-cleanup gone -
Spalten:
- Branch: Alle lokalen Branches ausser
main (Feature-, Fix-, Chore-, Docs-Branches)
- PR: PR-Nummer (
#N) falls ein offener PR fuer diesen Branch existiert, - falls keiner, gone falls der Remote-Branch geloescht wurde
- Board: Ticket-Status aus dem Board (z.B.
in_progress, in_review, done), - falls kein Ticket zugeordnet oder Pipeline nicht konfiguriert
3. Worktrees anzeigen
Falls aktive Worktrees vorhanden (ausser dem Haupt-Worktree):
Worktrees:
.worktrees/T-287 feature/T-287-universal-event-streaming
.worktrees/T-385 fix/T-385-members-unknown-display
Falls keine aktiven Worktrees:
Worktrees: keine aktiven
4. Empfehlungen generieren
Analysiere die gesammelten Daten und generiere Empfehlungen fuer:
- Stale Branches: Remote-Tracking zeigt
[gone] → Branch kann geloescht werden
- Veraltete Branches: Branch ist >50 Commits hinter main → sollte rebased oder geloescht werden
- Verwaiste Worktrees: Worktree existiert, aber kein offenes Ticket/PR dafuer
Nur anzeigen wenn es Empfehlungen gibt:
Empfehlungen:
fix/worktree-stale-cleanup — Remote geloescht, Branch kann weg
fix/T-385-members-unknown-display — 41 Commits hinter main
.worktrees/T-290 — kein offenes Ticket, Worktree kann aufgeraeumt werden
Falls keine Empfehlungen: Abschnitt weglassen.
5. Aufräumen anbieten
Falls Empfehlungen vorhanden sind, frage den User:
Soll ich aufräumen? (Stale Branches löschen, verwaiste Worktrees entfernen)
Falls der User zustimmt ("ja", "passt", "mach", "aufräumen", "clean up"):
[gone]-Branches loeschen: git branch -D {branch}
- Verwaiste Worktrees entfernen:
git worktree remove {path} --force
- Branches die >50 Commits hinter main sind: loeschen falls kein offener PR existiert
- Ausgabe pro Aktion:
✓ {branch} gelöscht / ✓ {worktree} aufgeräumt
- Am Ende:
Aufgeräumt. {N} Branches gelöscht, {M} Worktrees entfernt.
Falls der User ablehnt ("nein", "nö", "lass"):
- Nichts tun, Session beenden.
WICHTIG: Branches mit offenen PRs oder mit Board-Status in_progress/in_review werden NIEMALS automatisch gelöscht — auch nicht wenn >50 Commits behind.
6. Sonderfall: Keine Branches
Falls keine Feature/Fix/Chore-Branches existieren (nur main):
Lokaler Zustand — {project-name}
----------------------------------------------
Keine offenen Branches.
Worktrees: keine aktiven
Hinweise
- Dieser Command ist informativ mit optionalem Aufräumen — er aendert nur etwas wenn der User explizit zustimmt
- Board-Abfrage nur wenn
pipeline.workspace_id in project.json existiert
- Ticket-Nummern immer mit
T- Prefix anzeigen, NIEMALS mit #
- Falls Board-API nicht erreichbar: Board-Spalte mit
? fuellen und Hinweis ausgeben
- Falls
gh nicht verfuegbar: PR-Spalte mit ? fuellen