# PR Merge

Should be used when the user asks to "merge a PR", "review and merge pull requests"...

- Repository: https://github.com/HKUDS/OpenHarness (16150 stars)
- Category: Git and review
- License: MIT
- Last updated: 2026-06-04
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add HKUDS/OpenHarness --skill pr-merge -g -a claude-code -y`
Codex: `npx skills add HKUDS/OpenHarness --skill pr-merge -g -a codex -y`
Cursor: `npx skills add HKUDS/OpenHarness --skill pr-merge -g -a cursor -y`
Gemini CLI: `npx skills add HKUDS/OpenHarness --skill pr-merge -g -a gemini-cli -y`

## Description

This skill should be used when the user asks to "merge a PR", "review and merge pull requests", "integrate external contributions", "handle PR conflicts", "cherry-pick from a PR", or needs to merge GitHub PRs while maximizing contributor attribution.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# PR Merge, Contributor-First Pull Request Integration

Merge external pull requests while maximizing original author attribution. Core principle: **merge first, resolve conflicts after**, never rewrite a contributor's work from scratch.

## Core Principles

1. **Preserve authorship**, use `gh pr merge --squash` for clean PRs. For manual merges, use `--author="Name <email>"`.
2. **Merge first, fix after**, accept the PR's approach even if it differs from local style. Fix conflicts in a separate commit.
3. **Selective merge is OK**, exclude files with `--exclude` when a PR contains features already implemented locally. Document what was excluded.
4. **Never `git apply` + self-commit**, this loses author attribution entirely.

## Workflow

### 1. Triage Open PRs

```bash
gh pr list --repo OWNER/REPO --state open \
  --json number,title,author,additions,deletions,mergeable
```

Classify each PR: merge directly, merge with conflict resolution, selective merge, or close.

### 2. Merge Clean PRs via GitHub

Prefer `gh pr merge`, preserves author automatically:

```bash
gh pr merge NUMBER --repo OWNER/REPO --squash \
  --subject "feat: description (#NUMBER)"
```

### 3. Handle Conflicting PRs Locally

```bash
git fetch origin pull/NUMBER/head:pr-NUMBER
git merge pr-NUMBER --no-edit
# Resolve conflicts keeping both sides where possible
git add -A && git commit --no-edit
```

### 4. Selective Merge (Skip Some Files)

When a PR contains features already implemented locally:

```bash
gh pr diff NUMBER --repo OWNER/REPO | \
  git apply --exclude='path/to/skip.py' --exclude='CHANGELOG.md'
git commit --author="Author Name <author@email>" \
  -m "feat: description (#NUMBER)

Cherry-picked from PR #NUMBER. Excluded: file.py (already implemented)."
```

### 5. Close Duplicate/Superseded PRs

```bash
gh pr close NUMBER --repo OWNER/REPO \
  --comment "Fixed via PR #OTHER. Thank you for the contribution!"
```

### 6. Post-Merge Verification

The rest: https://github.com/HKUDS/OpenHarness/blob/HEAD/.claude/skills/pr-merge/SKILL.md
