
Github Pr Merge
- 266 installs
- 69 repo stars
- Updated August 4, 2026
- fvadicamo/dev-agent-skills
github-pr-merge is an agent skill that merges approved GitHub pull requests via gh CLI after pre-merge checklist validation for developers finalizing reviewed branches.
About
github-pr-merge is a fvadicamo/dev-agent-skills workflow that finalizes GitHub pull requests only after a pre-merge checklist passes. It uses gh CLI commands such as gh pr view to read PR number, title, and state, verifies every review comment has at least one reply, and checks tests, lint, and CI status before asking the user to confirm the merge. The skill supports standard merge execution with proper commit message formatting and handles post-merge cleanup including source branch deletion where configured. Shell command directives embed live repo and PR context via gh repo view and gh pr view JSON queries. Developers reach for it when phrases like merge PR, approve and merge, finalize PR, or complete merge appear after review approval. skills.sh lists 253 installs and the dev-agent-skills repository has 69 GitHub stars. The listing notes the skill contains shell commands requiring careful review before installation.
- Approved PR merging
- Merge strategy handling
- Post-review automation
- Branch lifecycle cleanup
- GitHub workflow completion
Github Pr Merge by the numbers
- 266 all-time installs (skills.sh)
- Ranked #150 of 733 Git & Pull Requests skills by installs in the Skillselion catalog
- Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/fvadicamo/dev-agent-skills --skill github-pr-mergeAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 266 |
|---|---|
| repo stars | ★ 69 |
| Last updated | August 4, 2026 |
| Repository | fvadicamo/dev-agent-skills ↗ |
How do you safely merge a GitHub pull request?
Merge approved GitHub pull requests via agent automation, applying merge strategies, cleaning up source branches, and confirming integrated commits land on the target base branch after review passes.
Who is it for?
Developers using gh CLI who want checklist-gated PR merges with review-comment verification and automated post-merge branch cleanup.
Skip if: Opening new pull requests, writing review feedback, or repositories managed without the GitHub CLI and gh authentication.
When should I use this skill?
The user asks to merge a PR, approve and merge, finalize a pull request, complete merge after review, or run pre-merge validation before merging.
What you get
Merged pull request on the target base branch, resolved review-comment threads, and optional deleted source branch after post-merge cleanup.
- merged pull request
- post-merge cleanup confirmation
By the numbers
- skills.sh reports 253 installs
- dev-agent-skills repository has 69 GitHub stars
Files
GitHub PR merge
Merges Pull Requests after validating pre-merge checklist and handling post-merge cleanup.
Current PR
!gh pr view --json number,title,state -q '"PR #\(.number): \(.title) (\(.state))"' 2>/dev/null
Core workflow
1. Check comments status
Verify all review comments have at least one reply:
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
PR=$(gh pr view --json number -q '.number')
# Find unreplied comment IDs
gh api repos/$REPO/pulls/$PR/comments --jq '
[.[] | select(.in_reply_to_id) | .in_reply_to_id] as $replied |
[.[] | select(.in_reply_to_id == null) | select(.id | IN($replied[]) | not) | .id]
'If unreplied comments exist:
- STOP the merge process
- Inform user: "Found unreplied comments: [IDs]. Run github-pr-review first."
- NEVER reply to comments from this skill
2. Check milestone
gh pr view $PR --json milestone -q '.milestone.title // "none"'- If milestone is assigned: include it in the checklist summary (step 5)
- If no milestone: check for open milestones and warn the user
gh api repos/$REPO/milestones --jq '[.[] | select(.state=="open")] | length'If open milestones exist but the PR has none, surface a warning in the checklist: - Milestone: ⚠ not assigned (open milestones exist)
Do NOT block the merge for a missing milestone. It is a warning only.
3. Run validation
Run tests, linting, and verify CI checks. All MUST pass before proceeding.
gh pr checks $PR4. Verify changelog completeness
Skip if the repo has no CHANGELOG.md. Otherwise make sure every commit this merge will publish is reflected in the changelog, so a release-promotion merge (develop → main) never leaves commits unlogged.
List the commits this PR brings into the base, and the changelog lines it adds:
BASE=$(gh pr view $PR --json baseRefName -q .baseRefName)
HEAD=$(gh pr view $PR --json headRefName -q .headRefName)
git log --oneline origin/$BASE..origin/$HEAD
git diff origin/$BASE...origin/$HEAD -- CHANGELOG.md- Every commit that changes shipped behavior (
feat/fix/perf, behavior-affectingrefactor) MUST have a matching changelog line; purechore/docs/testcommits that do not change shipped behavior may be omitted. - For a release-promotion merge, also confirm the version was bumped (the top
## [x.y.z]entry is new) and matches the manifest version(s). - If any behavior-changing commit is missing from the changelog: STOP. Report the unlogged commits and ask the user to update the changelog and version before merging. NEVER edit the changelog from this skill.
5. Confirm with user
ALWAYS show checklist summary and ask before merging:
Pre-merge checklist:
- Comments: all replied
- Tests: passing
- Lint: passing
- CI: green
- Milestone: v0.1.0 (or ⚠ not assigned)
- Changelog: complete (or n/a)
Ready to merge PR #X. Proceed?6. Execute merge
First determine the merge direction. It decides whether the head branch may be deleted:
gh pr view $PR --json baseRefName,headRefName -q '"\(.headRefName) -> \(.baseRefName)"'Branch deletion rule:
- Topic branch → `develop` (head is a
feature/fix/etc. branch): the branch is spent. Propose deleting it and merge with--delete-branch. - `develop` → `main` (or any long-lived branch as head): NEVER delete the head branch.
developandmainare permanent. Omit--delete-branchand do not propose deletion.
# Add --delete-branch ONLY for a topic branch merging into develop.
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 (Y% cov)
Refs: Task N, Req M
EOF
)"For a develop → main merge, run the same command without --delete-branch.
Merge strategy: always --merge (merge commit), never squash or rebase.
7. Post-merge cleanup
Sync the branch that received the merge (the PR base), not always develop:
BASE=$(gh pr view $PR --json baseRefName -q .baseRefName)
git checkout "$BASE" && git pull origin "$BASE"8. Check milestone completion
If the PR had a milestone, check whether all items are now closed:
MILESTONE=$(gh pr view $PR --json milestone -q '.milestone.number // empty')
if [ -n "$MILESTONE" ]; then
gh api repos/$REPO/milestones/$MILESTONE \
--jq '"Open: \(.open_issues) | Closed: \(.closed_issues) | \(.title)"'
fi- If
open_issues == 0: inform the user and ask whether to close the milestone
gh api repos/$REPO/milestones/$MILESTONE --method PATCH --field state="closed"- If
open_issues > 0: report remaining open items count. No action needed. - NEVER close a milestone automatically without explicit user confirmation.
Merge message format
Concise format for a clean git log:
- Key change 1 (what was added/fixed)
- Key change 2
- Key change 3
Reviews: 7/7 addressed (Gemini 5, Codex 2)
Tests: 628 passed (88% cov)
Refs: Task 8, Req 14-15- 3-5 bullet points max for changes
- One line each for reviews summary, test results, and task references
- No headers (##), no verbose sections
- Total: ~10 lines max
Important rules
- ALWAYS run tests, lint, and CI checks before merging
- ALWAYS verify all review comments have replies
- ALWAYS check milestone assignment before merging (warn if missing, do not block)
- ALWAYS (repos with a CHANGELOG) verify it accounts for every behavior-changing commit this merge publishes; STOP and report any that are missing
- ALWAYS confirm with user before executing merge
- ALWAYS use merge commit (
--merge), never squash/rebase - ALWAYS delete the head branch only when merging a topic branch (
feature/fix/etc.) intodevelop - NEVER delete
developormain. On adevelop→mainmerge, omit--delete-branchand never propose deletion - ALWAYS check milestone completion after merge and report open items count
- NEVER merge with failing tests, lint, or CI checks
- NEVER skip user confirmation
- NEVER close a milestone without explicit user confirmation
- NEVER reply to PR comments from this skill - use github-pr-review instead
- STOP merge if unreplied comments exist and direct user to review skill
Related skills
How it compares
Use github-pr-merge for checklist-gated merges after review; PR creation or diff-review skills handle earlier authoring and feedback stages.
FAQ
What does github-pr-merge validate before merging?
github-pr-merge checks that all review comments have at least one reply and confirms tests, lint, and CI status via gh CLI queries. It asks the user to confirm before executing the merge and handles post-merge cleanup.
Which CLI does github-pr-merge require?
github-pr-merge relies on the GitHub CLI gh with authenticated access to the target repository. It reads PR metadata through gh pr view and repository context through gh repo view JSON output.