Skill: /cleanup-branches

Usuwa stale lokalne gałęzie git i osierocone worktree Claude Code. Wykrywa projekt dynamicznie — działa bez konfiguracji w dowolnym repozytorium.

PoleWartość
Komenda/cleanup-branches
Plik.claude/commands/cleanup-branches.md
Portable✅ tak
Statusproduction (od 2026-05-13)
Właścicielradieu

Kiedy używać

  • Po zakończeniu sprintu / serii PR-ów
  • Gdy git branch pokazuje dziesiątki starych gałęzi
  • Gdy .claude/worktrees/ zapełnia się katalogami po zakończonych sesjach agentów
  • Przed dużym porządkiem lub audit repozytorium

Wymagania

ZależnośćWymaganeUwaga
git✅ tak
gh (GitHub CLI)opcjonalneBez gh skill działa w trybie offline — usuwa tylko gone + worktree-agent-*, resztę daje jako [needs review]
PowerShell 5.1+✅ tak (Windows)Na Linux/macOS działa przez PowerShell 7+

Instalacja w nowym projekcie

# Skopiuj plik skilla do projektu docelowego
cp .claude/commands/cleanup-branches.md /twój-projekt/.claude/commands/
 
# Opcjonalnie: upewnij się że gh jest zalogowane
gh auth status

Skill wykrywa automatycznie:

  • Domyślna gałąź (main / master / trunk) — przez git remote show origin
  • Gałąź dev — chroni automatycznie jeśli istnieje lokalnie
  • Worktree agentów Claude Code — ścieżki .claude/worktrees/agent-*

Nie wymaga żadnej konfiguracji ani zmian w pliku po skopiowaniu.


Jak działa

Krok 0 — Wykrycie projektu

Buduje dynamiczną listę chronionych gałęzi: [$defaultBranch, 'rc/*', 'dependabot/*'] + dev jeśli istnieje.

Krok 1 — Sync

git remote prune origin → aktualizuje status gone dla usuniętych remote branches.

Kroki 2–3 — Worktree

Klasyfikuje każdy worktree (poza głównym katalogiem) i usuwa stale:

KategoriaWarunekAkcja
AGENTŚcieżka .claude/worktrees/Usuń natychmiast
DETACHEDDetached HEADUsuń natychmiast
GONERemote branch usuniętyUsuń natychmiast
NO_REMOTEBrak trackingSprawdź PR → usuń lub [needs review]
HAS_REMOTEAktywny remoteSprawdź PR → usuń lub zachowaj

Używa git worktree remove -f -f (podwójny force — omija locki Claude Code).

Kroki 4–5 — Gałęzie

Zbiera kandydatów do usunięcia według warunków W1–W4, sprawdza PR przez gh pr list, usuwa lub flaguje.

WarunekOpisAkcja bez PR
W1[origin/...: gone]Usuń
W2Nazwa worktree-agent-*Usuń (zawsze agent leftover)
W3Gałąź usuniętego AGENT worktreeUsuń
W4Śledzi origin/main / origin/dev zamiast własnej[needs review]

Chronione bezwarunkowo: gałęzie z Is-Protected() — nigdy nie są usuwane.

Krok 6 — Podsumowanie

Raportuje liczniki, listę pozostałych gałęzi i worktree, ostatni commit dla każdej gałęzi [needs review].


Znane ograniczenia

  1. Stara konwencja feature/* — gałęzie z własnym aktywnym remote i niestandardową nazwą (feature/xyz zamiast feat/xyz) nie są łapane przez żaden warunek W. Wymagają ręcznego usunięcia.

  2. Chained feature branchesfeat/47 śledzący origin/feat/46 (żywy) jest niewidoczny dla skilla do momentu aż remote feat/46 zostanie usunięty przez prune.


Historia zmian

DataZmiana
2026-05-13Wersja produkcyjna. Przetestowano: 23 worktrees + ~55 gałęzi.
2026-05-13Dodano wykrywanie projektu (krok 0) — pełna przenaszalność.
2026-05-13Naprawiono: $agent_branches jako array, try/catch dla gh, tiebreaker W1–W4.