agentsclimarketplace

Cleanup branches

Skill thettwe/nyann/skills/cleanup-branches

Nyann (ငြမ်း) is Burmese for scaffolding. Nyann is a Claude Code plugin that sets up and maintains project governance.

Install
npx -y skills add thettwe/nyann --skill cleanup-branches

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

One thing to look at

  • 6 stars6 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Prune local branches whose work is already merged into the base. TRIGGER when the user says "clean up branches", "delete merged branches", "prune local branches", "remove old branches", "I have too many branches", "what branches can I delete", "/nyann:cleanup-branches". Do NOT trigger on "delete THIS branch" (that's a one-off `git branch -D`, not a cleanup pass) or "remove a branch from the remote" (this skill is local-only; remote pruning is `git push --delete origin <branch>` and the user should do that themselves). Do NOT trigger on "merge this branch" (that's the merge step before cleanup).

SKILL.md

3.0 KB, as published. Nobody here has run it

cleanup-branches

Wraps bin/cleanup-branches.sh. Lists local branches whose tip is reachable from the base branch (main / develop / wherever the profile points), then either previews the list or actually deletes them with git branch -d (safe — refuses unmerged work).

Mirrors the same preview-then-mutate contract as undo and migrate-profile: nothing is deleted unless the caller passed --yes AND --dry-run was absent.

1. Run the preview

Always invoke without --yes first:

bin/cleanup-branches.sh --target <cwd>

Output is a CleanupBranchesResult JSON (see schemas/cleanup-branches-result.schema.json). Show the user:

  • The base branch the merge check ran against (base_branch).
  • The list of candidates (candidates[]), one per merged branch, with last-commit timestamp + short SHA so they can sanity-check.
  • The total count from summary.candidates_count.
  • The recovery hint: re-run with --yes to delete.

If summary.candidates_count == 0, tell the user there's nothing to clean up and exit. Don't prompt.

2. Confirm and apply

Ask: "Delete N merged branch(es)?" — list the names if there are 5 or fewer, or summarise if more. On confirmation:

bin/cleanup-branches.sh --target <cwd> --yes

The script uses git branch -d (lowercase d, the safe form) so even if a candidate's merge state changed between the preview and the apply, git will refuse the unsafe delete and the entry lands in errors[] instead of deleted[]. Surface any errors verbatim.

3. After deletion

  • Report summary.deleted_count and any entries in errors[].
  • Suggest the user push the deletions to the remote if they maintain a personal fork branch list:
    git push --delete origin <branch>   # per branch
    
    Don't run this for them — pushing is a high-blast-radius action and the user should pick which deletions to mirror.

When to hand off

  • "Why is X still here?" → it's not reachable from base. Run /nyann:doctor and look at the LOCAL BRANCHES row for stale_unmerged count, or invoke bin/check-stale-branches.sh directly to see the full classification.
  • "Delete a specific branch by name" → just git branch -D <name>. This skill is for the bulk-merged case.
  • "Prune the remote-tracking refs too" → git remote prune origin is what they want; not in scope here.

Keep looking

Skills are one crate of 328,083. 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.