Back to Skills

github-pr-merge

verified

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 GitHub

Marketplace

dev-agent-skills

fvadicamo/dev-agent-skills

Plugin

skill-authoring

Repository

fvadicamo/dev-agent-skills
28stars

skills/github-pr-merge/SKILL.md

Last Verified

January 22, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/fvadicamo/dev-agent-skills/blob/main/skills/github-pr-merge/SKILL.md -a claude-code --skill github-pr-merge

Installation paths:

Claude
.claude/skills/github-pr-merge/
Powered by add-skill CLI

Instructions

# 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

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
5376 chars