agentleFS
Marco-SatisMarco-Satis/claude-setup/skills/branch-finish/SKILL.md

branch-finish

Skill0 starsChanged 24 days agoMITView on GitHub

Strukturierter Abschluss eines Feature-Branches — Test-Gate zuerst, dann exaktes Optionen-Menü (lokal mergen / PR nur falls Remote existiert / behalten / verwerfen) mit Verifikation + Cleanup. Solo-Dev-orientiert (kein PR-Zwang), Syncthing-bewusst (git läuft pro Seite, .git wird nicht gesynct). (geerntet aus superpowers:finishing-a-development-branch v6.1.1, 2026-07-21)

  • Commits and pushes

2 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Files
SKILL.md

Branch-Finish — Feature-Branch strukturiert abschließen

Zweck: Wenn die Arbeit auf einem Feature-Branch fertig ist, nicht offen fragen „was nun?", sondern Test-Gate → exakte Optionen → gewählte Option ausführen → verifizieren → aufräumen.

Phase 0 — Pre-Flight

  1. Git-Repo-Check: git rev-parse --git-dir — kein Repo → Abort.
  2. Branch bestimmen: Argument oder git branch --show-current. Auf main/master? → nichts abzuschließen, Exit.
  3. Uncommitted Changes? git status --porcelain — wenn ja: erst committen (oder der Nutzer fragen: committen/stashen/abbrechen).
  4. Syncthing-Kontext merken: Liegt das Repo unter ~/projects (bidirektional gesynct PC↔netcup, .git excluded)? → Hinweis für Phase 4 vormerken.

Phase 1 — Test-Gate (Pflicht, geerntet aus superpowers:finishing-a-development-branch v6.1.1)

Projekt-Testsuite laufen lassen (meist pytest; sonst was das Projekt vorgibt).

  • Tests rot: Failures zeigen, STOP — keine Optionen anbieten, kein „mergen wir trotzdem". Erst fixen (ggf. /investigate).
  • Tests grün / keine Tests vorhanden: weiter (bei „keine Tests" das explizit im Output sagen, nicht verschweigen).

Phase 2 — Kontext ermitteln

  • Base-Branch: git merge-base HEAD main (fallback master); unsicher → der Nutzer fragen („Branch ging von main ab — korrekt?").
  • Remote? git remote -v — bei der Nutzer meist keins/kein GitHub-Remote → PR-Option dann gar nicht anbieten.
  • Arbeit zeigen: git log --oneline <base>..HEAD — die Commits, um die es geht.

Phase 3 — Optionen-Menü (exakt, keine offene Frage)

Ohne Remote genau 3, mit Remote genau 4 Optionen — ohne Erklär-Prosa:

Branch <name> ist fertig (Tests grün, N Commits). Was tun?

1. Lokal in <base> mergen (Solo-Dev-Default)
2. Push + Pull Request        [nur anbieten wenn Remote existiert]
3. Branch behalten (der Nutzer kümmert sich später)
4. Arbeit verwerfen

Phase 4 — Ausführung

Option 1 — Lokal mergen:

git checkout <base>            # git pull nur falls Remote existiert
git merge <feature-branch>
<tests auf dem Merge-Resultat>
git branch -d <feature-branch>  # -d, nicht -D: schlägt fehl wenn nicht gemergt = eingebaute Verifikation

Reihenfolge ist Pflicht: erst Merge + Tests verifizieren, dann Branch löschen.

Syncthing-Hinweis (gesynctes Repo): Der gemergte Working-Tree synct zur anderen Seite, .git nicht — drüben erscheinen die Änderungen als lokale Modifikationen gegenüber der dortigen History. der Nutzer kurz sagen: auf der anderen Seite den Stand als Commit übernehmen (oder dortiges git bewusst ignorieren) und während des Merges nicht zeitgleich beidseitig im selben Ordner arbeiten (.sync-conflict-Gefahr).

Option 2 — Push + PR (nur mit Remote): git push -u origin <feature-branch>, PR via gh pr create. Branch nicht löschen — wird für PR-Iteration gebraucht.

Option 3 — Behalten: Nichts löschen. Report: „Branch <name> bleibt, Stand <sha>."

Option 4 — Verwerfen: Erst zeigen was wegfällt (Commit-Liste aus Phase 2), dann getippte Bestätigung verlangen: der Nutzer muss wörtlich verwerfen antworten — kein „ja" akzeptieren. Danach:

git checkout <base>
git branch -D <feature-branch>

Phase 5 — Verifikation

  • Option 1: git log --oneline -3 zeigt Merge auf <base>, Tests grün, git branch --list <name> leer.
  • Option 2: gh pr view bzw. Push-Output zeigt Branch upstream.
  • Option 4: Branch weg, <base> unverändert (git status clean).

Quick-Reference

OptionMergePushBranch bleibtBranch gelöscht
1. Lokal mergenja––ja (-d)
2. PR–jaja–
3. Behalten––ja–
4. Verwerfen–––ja (-D, nach Confirmation)

Red Flags

  • Nie mit roten Tests mergen oder Optionen anbieten.
  • Nie force-push ohne expliziten Auftrag von der Nutzer.
  • Nie löschen ohne vorher die Commit-Liste gezeigt zu haben; Option 4 nur mit getipptem verwerfen.
  • -D ausschließlich in Option 4 — sonst immer -d (Merge-Beweis).
  • Offene Frage („was soll ich jetzt tun?") statt Menü = Anti-Pattern.

Zukunft: Worktree-Abschluss (geerntet aus superpowers:finishing-a-development-branch v6.1.1)

Sobald der Nutzer mit Git-Worktrees bzw. nativen EnterWorktree/ExitWorktree-Tools arbeitet, gilt zusätzlich: Worktree-Erkennung via git rev-parse --git-dir vs. --git-common-dir (ungleich = Worktree). Cleanup-Regeln: nur selbst angelegte Worktrees (Pfad unter .worktrees/) entfernen — harness-verwaltete via ExitWorktree verlassen, nie manuell löschen; git worktree remove nie von innerhalb des Worktrees (erst cd zum Main-Repo-Root); Reihenfolge Merge verifizieren → git worktree remove → git branch -d → git worktree prune; bei Optionen PR/Behalten den Worktree stehen lassen.

Sonderfall Detached HEAD (kein Branch ausgecheckt, z.B. nach Worktree-Session): Merge-Option entfällt — genau 3 Optionen anbieten: (1) als neuen Branch pushen (git checkout -b <name> + push, PR falls Remote), (2) lokal als Branch sichern (git checkout -b <name>), (3) verwerfen (Typed-Confirmation). Kein Cleanup bei extern verwalteten Checkouts.

Beispiel-Triggers

  • /branch-finish — aktuellen Branch abschließen
  • /branch-finish feature/sse-retry — benannten Branch abschließen
  • „Der Branch ist fertig, wie mach ich weiter?"

Changelog

  • v1.0.0 (2026-07-21): Neuanlage — geerntet aus superpowers:finishing-a-development-branch v6.1.1 (Test-Gate, exaktes Optionen-Menü, Merge-vor-Delete-Reihenfolge, -d-als-Verifikation, Typed-Discard-Confirmation, Worktree-Cleanup als Zukunfts-Absatz), adaptiert an des Nutzers Realität: Solo-Dev, meist kein Remote/PR, Syncthing-Sync mit git pro Seite.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.