Skill: /cleanup-branches
Usuwa stale lokalne gałęzie git i osierocone worktree Claude Code. Wykrywa projekt dynamicznie — działa bez konfiguracji w dowolnym repozytorium.
| Pole | Wartość |
|---|---|
| Komenda | /cleanup-branches |
| Plik | .claude/commands/cleanup-branches.md |
| Portable | ✅ tak |
| Status | production (od 2026-05-13) |
| Właściciel | radieu |
Kiedy używać
- Po zakończeniu sprintu / serii PR-ów
- Gdy
git branchpokazuje 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ść | Wymagane | Uwaga |
|---|---|---|
git | ✅ tak | — |
gh (GitHub CLI) | opcjonalne | Bez 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 statusSkill wykrywa automatycznie:
- Domyślna gałąź (
main/master/trunk) — przezgit 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:
| Kategoria | Warunek | Akcja |
|---|---|---|
AGENT | Ścieżka .claude/worktrees/ | Usuń natychmiast |
DETACHED | Detached HEAD | Usuń natychmiast |
GONE | Remote branch usunięty | Usuń natychmiast |
NO_REMOTE | Brak tracking | Sprawdź PR → usuń lub [needs review] |
HAS_REMOTE | Aktywny remote | Sprawdź 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.
| Warunek | Opis | Akcja bez PR |
|---|---|---|
| W1 | [origin/...: gone] | Usuń |
| W2 | Nazwa worktree-agent-* | Usuń (zawsze agent leftover) |
| W3 | Gałąź usuniętego AGENT worktree | Usuń |
| 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
-
Stara konwencja
feature/*— gałęzie z własnym aktywnym remote i niestandardową nazwą (feature/xyzzamiastfeat/xyz) nie są łapane przez żaden warunek W. Wymagają ręcznego usunięcia. -
Chained feature branches —
feat/47śledzącyorigin/feat/46(żywy) jest niewidoczny dla skilla do momentu aż remotefeat/46zostanie usunięty przezprune.
Historia zmian
| Data | Zmiana |
|---|---|
| 2026-05-13 | Wersja produkcyjna. Przetestowano: 23 worktrees + ~55 gałęzi. |
| 2026-05-13 | Dodano wykrywanie projektu (krok 0) — pełna przenaszalność. |
| 2026-05-13 | Naprawiono: $agent_branches jako array, try/catch dla gh, tiebreaker W1–W4. |