From git-flow
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.
How this skill is triggered — by the user, by Claude, or both
Slash command
/git-flow:cleanup-gitThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Clean local git branches and worktrees after work has merged. Dry-run first. Destructive commands require user approval.
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.
Run from anywhere inside a repository:
scripts/cleanup-git.sh
scripts/cleanup-git.sh --apply
scripts/cleanup-git.sh --apply --force
scripts/cleanup-git.sh --base <ref>
The script fetches/prunes remotes, then chooses the comparison branch:
refs/remotes/<remote>/HEAD.main, master, trunk, develop, or dev.<remote>/{main,master,trunk,develop,dev}.Use --base <ref> only for unusual repositories.
MERGED state, is merged into the detected base branch, or whose upstream is gone.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.
Hard guards:
main, master, trunk, develop, dev.Soft guard:
--force overrides only this guard.scripts/cleanup-git.sh and show the preview.remove ... (PR merged), remove ... (upstream gone), KEEP ... (dirty), KEEP ... (PR merged, N ahead — use --force).KEEP line as a human decision.scripts/cleanup-git.sh --apply.--force only when the user confirms ahead commits are throwaway.GIT CLEANUP
===========
Status: PREVIEW | APPLIED | BLOCKED
Base: <ref>
Remove:
- <branch/worktree> — <reason>
Keep:
- <branch/worktree> — <reason and user decision needed>
Verification:
- <command> — pass/fail/not run
gh is available and PR-state detection is needed: squash/rebase merge detection, rate-limit batching, offline fallback.--base <ref>.--force.npx claudepluginhub alexei-led/cc-thingz --plugin git-flowClean up local branches whose remote tracking branch is gone. Use when the user says "clean up branches", "delete gone branches", "prune local branches", "clean gone", or wants to remove stale local branches that no longer exist on the remote. Also handles removing associated worktrees for branches that have them.
Safely analyzes and cleans up local git branches and worktrees by categorizing them as merged, squash-merged, superseded, or active work, with user confirmation gates.
Refreshes a local git repo to a clean default branch: fetch/prune, fast-forward, delete merged branches, and report gated cleanup candidates for upstream-gone, squash-merged, or stale branches.