agentsclimarketplace

Cleanup git

Skill alexei-led/cc-thingz/dist/pi/skills/cleanup-git

Portable skills, agents, hooks, and Pi extensions for Claude Code, Codex CLI, Copilot, Cursor, Grok, and Pi.From the repository description

Install
npx -y skills add alexei-led/cc-thingz --skill cleanup-git

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.0 KB, 888 tokens by cl100k_base, as published. Nobody here has run it

<!-- Pi platform guidance --> <!-- Use installed Pi tool names exactly. Installed extensions may add toolsets such as Task*, Monitor*, and Loop*; use the visible tool names exactly and do not translate them to Claude syntax. --> <!-- Prefer Task* over `todo` when task-tracking tools are available; `todo` is the cc-thingz fallback. Prefer MonitorCreate for long-running or background commands and LoopCreate for scheduled or event-driven follow-up instead of Bash sleep/poll loops. --> <!-- Use subagent for delegated work. Use wait to block on async subagent runs only when no independent work remains. --> <!-- Use ctx7 or npx ctx7@latest through bash when Context7 documentation lookup is required. -->

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:

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, trunk, develop, dev.
  • Keep worktrees with uncommitted changes.

Soft guard:

  • Keep items with commits ahead of the base branch. --force overrides only this guard.
  • For merged PRs, treat only commits added after the PR head as "ahead". A squash/rebase-merged branch with no new local commits is still removable.

Workflow

  1. Run scripts/cleanup-git.sh and show the preview.
  2. Read reasons literally: remove ... (PR merged), remove ... (upstream gone), KEEP ... (dirty), KEEP ... (PR merged, N ahead — use --force).
  3. Surface every KEEP line as a human decision.
  4. Ask before running scripts/cleanup-git.sh --apply.
  5. Use --force only when the user confirms ahead commits are throwaway.

Output

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

Conditional References

  • gh-cli.md — read when gh is available and PR-state detection is needed: squash/rebase merge detection, rate-limit batching, offline fallback.

Failure Handling

  • Not a git repo: say so and stop.
  • Base branch not found: ask for --base <ref>.
  • Fetch fails during preview: report that refs may be stale.
  • Fetch fails during apply: stop; do not delete with stale refs.
  • Dirty worktree: keep it and ask the user what to do.
  • Ahead commits: keep unless the user explicitly approves --force.

What ships with it: 2 files

10.6 KB alongside SKILL.md, 1 of them executable

references/

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.