From sentinel
Delete local branches whose PRs have been merged upstream. Checks GitHub PR status for each branch. Triggers on: clean branches, delete merged branches, prune branches, branch cleanup.
How this skill is triggered — by the user, by Claude, or both
Slash command
/sentinel:clean-branchesThis 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 up local branches by checking their GitHub PR status and deleting those
Clean up local branches by checking their GitHub PR status and deleting those that have been merged.
main, master, develop, etc.):DEFAULT_BRANCH=$(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')
git fetch origin "$DEFAULT_BRANCH"
git branch --format='%(refname:short)' | grep -v "^${DEFAULT_BRANCH}$"
Show the list to the user. If no branches exist besides the default branch, report that and stop.
Method 1: Direct ancestry -- Catches regular merges and fast-forwards:
git branch --merged "origin/$DEFAULT_BRANCH" --format='%(refname:short)'
Method 2: Squash merge detection via git cherry -- For branches not caught
by method 1, check if all commits have equivalent patches in the default branch.
A - prefix means the patch already exists upstream:
git cherry -v "origin/$DEFAULT_BRANCH" <branch>
If ALL lines start with - (or output is empty), the branch has been
squash-merged.
Method 3: GitHub PR status (if gh is authenticated) -- For remaining
branches:
# Check for merged PRs
gh pr list --head <branch> --state merged --json number,title,url
# Check for closed (not merged) PRs
gh pr list --head <branch> --state closed --json number,title,url,mergedAt
A PR is "closed without merge" when it appears in the closed list but has an
empty/null mergedAt field. If gh is not authenticated, skip this method.
Important: Always compare against origin/$DEFAULT_BRANCH (not the local
default branch) to detect merges even when the local branch is stale.
Categorize branches into these groups:
Display categorized list -- Show the user a summary table with:
Confirm with user -- Ask the user which branches to delete:
Delete confirmed branches -- If currently on a branch being deleted, switch to the default branch first and fast-forward it:
git checkout "$DEFAULT_BRANCH" && git merge --ff-only "origin/$DEFAULT_BRANCH"
git branch -D <branch1> <branch2> ...
After deleting, prune stale remote tracking references:
git remote prune origin
npx claudepluginhub luciferdono/sentinelGuides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.