with one click
git-delete-branch
Delete local and remote branches with safety checks
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Delete local and remote branches with safety checks
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Local git operations for syncing, branching, merging, and conflict resolution
GitHub interactions for issues, PRs, releases, and repository management
Use this skill when performing hardware security analysis for System-on-Chip components — threat modeling, verification scaffolding, compliance mapping, executive briefing, microarchitectural attack analysis, physical side-channel assessment, kernel security analysis, emerging hardware security, or TLA+ formal specification. Routes to the appropriate specialist. Trigger phrases include "threat model my SoC", "run STRIDE analysis", "generate SVA assertions", "compliance check against FIPS", "executive summary of findings", "Spectre analysis for cache", "DPA attack assessment", "kernel hardening review", "PQC hardware review", "TLA+ spec for access control". Do NOT use for software-only security, network security, or web application security.
Use when working with Terraform or OpenTofu - creating modules, writing tests (native test framework, Terratest), setting up CI/CD pipelines, reviewing configurations, choosing between testing approaches, debugging state issues, implementing security scanning (trivy, checkov), or making infrastructure-as-code architecture decisions
Security audit checklist for web applications. Use when reviewing, auditing, or hardening a web app's security posture. Covers rate limiting, auth headers, IP blocking, CORS, security middleware, input validation, file upload limits, ORM usage, and password hashing. Triggers on requests like "review security", "harden this app", "security audit", "check for vulnerabilities", or when building/reviewing API endpoints.
Use this skill when connecting AI or LLMs to data platforms. Covers MCP servers for warehouses, natural-language-to-SQL, embeddings for data discovery, LLM-powered enrichment, and AI agent data access patterns. Common phrases: "text-to-SQL", "MCP server for Snowflake", "LLM data enrichment", "AI agent access". Do NOT use for general data integration (use data-integration) or dbt modeling (use dbt-transforms).
| name | Git Delete Branch |
| description | Delete local and remote branches with safety checks |
| triggers | ["git delete branch","delete branch","remove branch","cleanup branch","git branch -d"] |
| version | 1.0.0 |
| user_invocable | true |
Delete local and/or remote branches with safety checks.
/git-delete-branch feat/old-feature # Delete local branch
/git-delete-branch feat/old-feature --remote # Also delete remote
/git-delete-branch --merged # Delete all merged branches
/git-delete-branch --stale # Delete branches with gone remotes
/git-delete-branch --force feat/unmerged # Force delete unmerged
BRANCH="$1"
# Cannot delete current branch
CURRENT=$(git branch --show-current)
if [ "$BRANCH" = "$CURRENT" ]; then
echo "Cannot delete current branch. Switch first:"
echo " /git-switch main"
exit 1
fi
# Check if branch exists
if ! git show-ref --verify --quiet "refs/heads/$BRANCH"; then
echo "Branch '$BRANCH' does not exist locally."
exit 1
fi
# Check if branch is merged
if ! git merge-base --is-ancestor "$BRANCH" main 2>/dev/null; then
echo "Warning: Branch is NOT fully merged into main."
echo "Commits that would be lost:"
git log main.."$BRANCH" --oneline
# Require --force for unmerged branches
if [ "$FORCE" != true ]; then
echo "Use --force to delete anyway."
exit 1
fi
fi
# Check for unpushed commits
UPSTREAM=$(git rev-parse --abbrev-ref "$BRANCH@{u}" 2>/dev/null)
if [ -n "$UPSTREAM" ]; then
UNPUSHED=$(git rev-list --count "$UPSTREAM..$BRANCH" 2>/dev/null || echo "0")
if [ "$UNPUSHED" -gt 0 ]; then
echo "Warning: Branch has $UNPUSHED unpushed commits."
fi
fi
# Safe delete (fails if not merged)
git branch -d "$BRANCH"
# Force delete (even if not merged)
git branch -D "$BRANCH"
if [ "$DELETE_REMOTE" = true ]; then
# Check if remote exists
if git show-ref --verify --quiet "refs/remotes/origin/$BRANCH"; then
git push origin --delete "$BRANCH"
echo "Deleted remote branch: origin/$BRANCH"
else
echo "No remote branch to delete."
fi
fi
Deleted branch: feat/old-feature
Branch was merged into main.
Local branch removed.
Remote branch: Not deleted (use --remote to delete)
Deleted branch: feat/old-feature
Local: Deleted
Remote: Deleted (origin/feat/old-feature)
Branch fully cleaned up.
Cannot delete: feat/wip-feature
This branch is NOT merged into main.
You would lose these commits:
abc1234 Work in progress
def5678 More changes
ghi9012 Almost done
Options:
/git-delete-branch --force feat/wip-feature # Delete anyway
/git-switch feat/wip-feature # Continue working
/git-merge-main # Merge main into it first
Finding branches merged into main...
Branches to delete:
fix/login-bug
feat/completed-feature
chore/old-cleanup
Delete these 3 branches? (y/n)
Deleted:
fix/login-bug
feat/completed-feature
chore/old-cleanup
Kept (current or protected):
main
develop
Finding stale branches (remote deleted)...
Stale branches:
feat/abandoned [origin: gone]
fix/obsolete [origin: gone]
Delete these 2 stale local branches? (y/n)
Deleted:
feat/abandoned
fix/obsolete
These branches cannot be deleted without explicit --force:
mainmasterdevelopproductionCannot delete protected branch: main
Use --force if you really mean it (not recommended).
# After PR is merged
/git-switch main
/git-pull
/git-delete-branch feat/merged-pr --remote
# Cleanup old branches
/git-branches --merged
/git-delete-branch --merged
# Clean stale tracking
/git-delete-branch --stale
/git-branches to see all branches and their status/git-switch to change to a different branch first/gh-pr-merge to clean up the merged branch