Merges GitHub Pull Requests after validating pre-merge checklist. Use when user wants to merge PR, close PR, finalize PR, complete merge, approve and merge, or execute merge. Runs pre-merge validation (tests, lint, CI, comments), confirms with user, merges with proper format, handles post-merge cleanup.
View on GitHubfvadicamo/dev-agent-skills
skill-authoring
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/fvadicamo/dev-agent-skills/blob/main/skills/github-pr-merge/SKILL.md -a claude-code --skill github-pr-mergeInstallation paths:
.claude/skills/github-pr-merge/# GitHub PR Merge Merges Pull Requests after validating pre-merge checklist and handling post-merge cleanup. ## Quick Start ```bash # 1. Get PR info PR=$(gh pr view --json number -q '.number') REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner') # 2. Run pre-merge checklist make test && make lint && gh pr checks $PR # 3. Verify all comments replied gh api repos/$REPO/pulls/$PR/comments --jq '[.[] | select(.in_reply_to_id == null)] | length' # 4. Merge with concise message (--delete-branch auto-deletes remote) gh pr merge $PR --merge --delete-branch --body "- Change 1 - Change 2 Reviews: N/N addressed Tests: X passed (Y% cov) Refs: Task N" # 5. Post-merge cleanup (local only, remote already deleted) git checkout develop && git pull && git branch -d feature/<name> ``` ## Pre-Merge Checklist **ALWAYS verify before merging:** | Check | Command | Required | |-------|---------|----------| | Tests passing | `make test` | Yes | | Linting passing | `make lint` or `make check` | Yes | | CI checks green | `gh pr checks $PR` | Yes | | All comments replied | Verify only, don't reply | Yes | | No unresolved threads | Review PR page | Yes | ## Core Workflow ### 1. Identify PR ```bash PR=$(gh pr view --json number -q '.number') REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner') echo "PR #$PR in $REPO" ``` ### 2. Check Comments Status ```bash # Count original comments (not replies) ORIGINALS=$(gh api repos/$REPO/pulls/$PR/comments --jq '[.[] | select(.in_reply_to_id == null)] | length') # Count comments that have at least one reply REPLIED=$(gh api repos/$REPO/pulls/$PR/comments --jq ' [.[] | select(.in_reply_to_id)] | [.[].in_reply_to_id] | unique | length ') echo "Original comments: $ORIGINALS, With replies: $REPLIED" # Find unreplied comment IDs UNREPLIED=$(gh api repos/$REPO/pulls/$PR/comments --jq ' [.[] | select(.in_reply_to_id) | .in_reply_to_id] as $replied_ids | [.[] | select(.in_reply_to_id == null) | select(.id | IN($replied_id