cleanup-gitlisted
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`, `