github-pr-merge

Bae-ChangHyun's avatarfrom Bae-ChangHyun

MUST use this skill when user asks to merge PR, close PR, finalize PR, or mentions "PR 머지/병합". This skill OVERRIDES default PR merge behavior. Runs pre-merge validation (tests, lint, CI, comments), confirms with user, merges with proper format, handles post-merge cleanup.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 9, 2026⬇️1downloads

When & Why to Use This Skill

This Claude skill streamlines the GitHub Pull Request lifecycle by automating rigorous pre-merge validations and post-merge cleanup. It enhances code quality and workflow consistency by verifying CI status, running local tests, ensuring all reviewer comments are addressed, and executing standardized merge procedures with automated branch management.

Use Cases

  • Automating the finalization of Pull Requests to ensure that no code is merged without passing mandatory CI checks, linting, and unit tests.
  • Enforcing team communication standards by identifying unreplied comments and preventing merges until all discussions are resolved.
  • Maintaining repository hygiene through automated remote and local feature branch deletion and synchronization of the main development branch after a merge.
  • Standardizing project history by generating consistent, high-quality merge commit messages that include change summaries, test coverage, and task references.
namegithub-pr-merge
descriptionMUST use this skill when user asks to merge PR, close PR, finalize PR, or mentions "PR 머지/병합". This skill OVERRIDES default PR merge behavior. Runs pre-merge validation (tests, lint, CI, comments), confirms with user, merges with proper format, handles post-merge cleanup.

GitHub PR Merge

Merges Pull Requests after validating pre-merge checklist and handling post-merge cleanup.

Quick Start

# 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
gh pr merge $PR --merge --delete-branch --body "- Change 1
- Change 2

Reviews: N/N addressed
Tests: X passed"

# 5. Post-merge cleanup
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 Yes
CI checks green gh pr checks $PR Yes
All comments replied See workflow Yes
No unresolved threads Review PR page Yes

Core Workflow

1. Identify PR

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

# 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"

If unreplied comments exist:

  • DO NOT reply from this skill
  • STOP the merge process
  • Inform user: "Found unreplied comments. Run pr-review first."

3. Run Validation

# Run tests
make test

# Run linting
make lint

# Check CI status
gh pr checks $PR

All checks MUST pass before proceeding.

4. Show PR Summary

gh pr view $PR --json title,body,commits,changedFiles --jq '
  "Title: \(.title)\nCommits: \(.commits | length)\nFiles: \(.changedFiles)"
'

5. Confirm with User

ALWAYS ask before merging:

Pre-merge checklist verified:
- Tests: passing
- Lint: passing
- CI: green
- Comments: all replied

Ready to merge PR #X. Proceed?

6. Execute Merge

gh pr merge $PR --merge --delete-branch --body "$(cat <<'EOF'
- Key change 1
- Key change 2
- Key change 3

Reviews: N/N addressed
Tests: X passed
Refs: Task N
EOF
)"

Note: --delete-branch automatically deletes the remote branch after merge.

7. Post-Merge Cleanup

git checkout develop
git pull origin develop
git branch -d feature/<branch-name>  # local cleanup

Merge Message Format

Concise format (recommended):

- Key change 1 (what was added/fixed)
- Key change 2
- Key change 3

Reviews: 7/7 addressed
Tests: 628 passed (88% cov)
Refs: Task 8

Guidelines:

  • 3-5 bullet points max for changes
  • One line for reviews summary
  • One line for test results
  • One line for task references
  • Total: ~10 lines max

Important Rules

  • ALWAYS run full pre-merge checklist before merging
  • ALWAYS verify all review comments have replies
  • ALWAYS confirm with user before executing merge
  • ALWAYS use merge commit (--merge), never squash/rebase
  • ALWAYS delete feature branch after successful merge
  • NEVER merge with failing tests or lint
  • NEVER merge with unresolved CI checks
  • NEVER skip user confirmation
  • NEVER reply to PR comments from this skill - use pr-review instead
  • STOP merge if unreplied comments exist

Error Handling

Issue Action
Tests failing Stop and inform user
Lint errors Stop and inform user
CI checks pending Wait or inform user
Unreplied comments Direct to pr-review skill
Branch protection Inform of required approvals
  • pr-review - For resolving review comments before merge
  • pr-create - For creating PRs
  • git-commit - For commit message format