gh-batch-merge-by-labels

Batch merge multiple PRs by label (e.g., all 'ready-to-merge' PRs). Use when you have multiple approved PRs to merge.

$ Instalar

git clone https://github.com/mvillmow/ml-odyssey /tmp/ml-odyssey && cp -r /tmp/ml-odyssey/.claude/skills/gh-batch-merge-by-labels ~/.claude/skills/ml-odyssey

// tip: Run this command in your terminal to install the skill


name: gh-batch-merge-by-labels description: "Batch merge multiple PRs by label (e.g., all 'ready-to-merge' PRs). Use when you have multiple approved PRs to merge." category: github agent: pr-cleanup-specialist

Batch Merge PRs by Label

Merge multiple PRs at once based on label matching.

When to Use

  • Multiple PRs are ready for merge with same status label
  • Automating merge of dependent chain of PRs
  • Merging all "ready-to-merge" or "approved" PRs
  • Batch processing end-of-sprint or release merges
  • Reducing manual merge overhead

Quick Reference

# List PRs with specific label
gh pr list --label "ready-to-merge" --state open

# Merge single PR
gh pr merge <pr> --squash --delete-branch

# Get PR numbers for batch merge
gh pr list --label "ready-to-merge" --json number --jq '.[].number'

# Merge all PRs with label (requires loop)
for pr in $(gh pr list --label "ready-to-merge" --json number --jq '.[].number'); do
  gh pr merge "$pr" --squash --delete-branch
done

Workflow

  1. Query PRs: Find all PRs with target label
  2. Verify each: Check CI status and approvals for each PR
  3. Check dependencies: Ensure no conflicts between PRs to merge
  4. Sort by order: Merge in dependency order if applicable
  5. Execute merges: Merge each PR in sequence
  6. Verify success: Confirm all PRs merged successfully
  7. Report results: Summary of merged PRs

Merge Options

Squash Merge (recommended):

  • Combines all commits into single commit
  • Clean git history
  • --squash flag enables this

Create Merge Commit:

  • Preserves all commits
  • Clear merge history
  • Default behavior without --squash

Rebase and Merge:

  • Linear history
  • --rebase flag enables this
  • Good for feature branches

Safety Checks

Before batch merging:

  1. CI Status: All checks passing
  2. Approvals: Required number of approvals met
  3. Conflicts: No merge conflicts detected
  4. Dependencies: No blocked dependencies
  5. Protected rules: All branch protection rules satisfied

Output Format

Report batch merge results with:

  1. Total PRs - Count of PRs to merge
  2. Merge Summary - PR number, title, status
  3. Success Count - Number successfully merged
  4. Failed Count - Number that failed to merge
  5. Errors - Why any PRs failed

Error Handling

ProblemSolution
CI failingSkip that PR, check analyze-ci-failure-logs
Merge conflictResolve manually, cannot batch merge
No permissionsCheck gh auth status and repo access
Branch protectionVerify all required rules met
Network errorRetry with exponential backoff

References

  • See gh-review-pr for PR review checklist
  • See verify-pr-ready skill for pre-merge validation
  • See CLAUDE.md for PR linking requirements