← ClaudeAtlas

cleanup-gitlisted

Remove merged local branches and stale git worktrees. Use when the user says "cleanup branches", "prune worktrees", "tidy git", "remove merged branches", "delete merged branches", "gone branches", or wants to clean local git state. NOT for creating commits, creating worktrees, or configuring git hooks.
alexei-led/cc-thingz · ★ 33 · Code & Development · score 81
Install: claude install-skill alexei-led/cc-thingz
# Cleanup Git Clean local git branches and worktrees after work has merged. Dry-run first. Destructive commands require user approval. Prefer a repo-local `scripts/cleanup-git.sh` when the target repo ships one. If it does not, use the bundled skill script from this skill's `scripts/` directory. Do not improvise destructive cleanup commands outside the script workflow. ## Command Run from anywhere inside a repository: ```bash scripts/cleanup-git.sh scripts/cleanup-git.sh --apply scripts/cleanup-git.sh --apply --force scripts/cleanup-git.sh --base <ref> ``` ## Branch Detection The script fetches/prunes remotes, then chooses the comparison branch: 1. Remote default branch from `refs/remotes/<remote>/HEAD`. 2. Local `main`, `master`, `trunk`, `develop`, or `dev`. 3. Remote `<remote>/{main,master,trunk,develop,dev}`. Use `--base <ref>` only for unusual repositories. ## What It Removes - Worktrees whose branch has a GitHub PR in `MERGED` state, is merged into the detected base branch, or whose upstream is gone. - Local branches with the same criteria. When `gh` is available, PR `MERGED` state is the source of truth for squash/rebase merges. Do not miss those just because `git merge-base --is-ancestor` fails after history rewrite. If no PR is found, or `gh` is unavailable, fall back to the git-based checks. ## Guards Hard guards: - Skip the current worktree. - Skip the current branch. - Skip the detected base branch and common long-lived branches: `main`, `master`, `