From gitwf
Merges GitHub PRs after validating tests, linting, CI checks, and comment replies. Confirms with user, uses formatted merge message, deletes branch post-merge.
How this skill is triggered — by the user, by Claude, or both
Slash command
/gitwf:github-pr-mergeThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Merges Pull Requests after validating pre-merge checklist and handling post-merge cleanup.
Merges Pull Requests after validating pre-merge checklist and handling post-merge cleanup.
# 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>
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 |
PR=$(gh pr view --json number -q '.number')
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
echo "PR #$PR in $REPO"
# 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:
# Run tests
make test
# Run linting
make lint
# Check CI status
gh pr checks $PR
All checks MUST pass before proceeding.
gh pr view $PR --json title,body,commits,changedFiles --jq '
"Title: \(.title)\nCommits: \(.commits | length)\nFiles: \(.changedFiles)"
'
ALWAYS ask before merging:
Pre-merge checklist verified:
- Tests: passing
- Lint: passing
- CI: green
- Comments: all replied
Ready to merge PR #X. Proceed?
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.
git checkout develop
git pull origin develop
git branch -d feature/<branch-name> # local cleanup
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:
| 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 |
npx claudepluginhub bae-changhyun/cc-plugins-bch --plugin gitwfVerifies CI status, local tests, and repo safety before merging a PR, with post-merge health monitoring. Use when landing a completed implementation.
Merges reviewed PRs when triggered by /pr-merge or merge commands. Handles squash/rebase, worktrees, integration branches, and auto-merge for CI gating.
Drives existing GitHub/GitLab PRs/MRs to merge: monitors CI/CD status, fixes issues in PR scope via sub-skills, handles multi-round code reviews, resolves comments until all requirements met.