Agent skill

Contributor-First PR Merge

by HKUDS in HKUDS/OpenHarness

Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

MITAuto-check passedDevelopment

Install Contributor-First PR Merge

skills CLI
$ npx skills add HKUDS/OpenHarness --skill pr-merge -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install HKUDS/OpenHarness pr-merge --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/HKUDS/OpenHarness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/pr-merge .claude/skills/pr-merge && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
pr-merge
GitHub stars
16k
Used in
1 other repo
Token cost
~847 tokens
SKILL.md length
274 words
Files
2 (incl. references)
Skills in repo
2
Repo updated
First seen
Licence
MIT

At a glance

Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution.

  • Works in 6 steps: Triage Open PRs → Merge Clean PRs via GitHub → Handle Conflicting PRs Locally → …
  • Reviewing and merging a batch of open pull requests from outside contributors
  • SKILL.md covers Core Principles, Workflow, Attribution Checklist and Common Pitfalls, plus 1 more section
  • Calls git, gh and python

What it does

The agent starts by listing open pull requests with gh pr list and sorting each into one of four outcomes: merge directly, merge after resolving conflicts, merge selectively, or close. Clean PRs go through gh pr merge with squash so GitHub keeps the contributor on the commit. Conflicting ones are fetched into a local branch, merged first, and repaired in a separate commit.

When a PR overlaps work that already exists locally, the skill excludes chosen files, applies the rest and commits with an --author flag, explaining the exclusions in the commit body. Duplicate or superseded PRs are closed with a comment thanking the contributor. Afterwards the agent runs ruff and pytest, pushes, and suggests harness-eval for an end-to-end check.

A checklist before pushing confirms the author shows up in git log, the commit message cites the PR number, and any exclusions are explained. The skill forbids applying a diff and committing it under your own name, since that loses attribution. A merge-scenarios reference file sits alongside.

When your agent uses it

  • Reviewing and merging a batch of open pull requests from outside contributors
  • Merging a contributor's PR that conflicts with main without rewriting their work
  • Taking only part of a PR because some of its features already exist
  • Closing duplicate or superseded PRs with a thank-you comment

Example prompts

  • “Go through the open PRs on our repo and squash-merge the clean ones so the authors stay credited.”
  • “The retry-option PR conflicts with main. Merge it locally and fix the conflicts in a separate commit.”
  • “Merge this PR but leave out the CHANGELOG change, since we already shipped that feature.”
  • “Close the duplicate PR with a thank-you note that points to the one we merged.”

Requirements

  • GitHub CLI (gh), authenticated for the repository
  • Git

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Triage Open PRs
  2. Merge Clean PRs via GitHub
  3. Handle Conflicting PRs Locally
  4. Selective Merge (Skip Some Files)
  5. Close Duplicate/Superseded PRs
  6. Post-Merge Verification

What it can do on your machine

Read from SKILL.md and the folder at commit 9b2efd7. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • git
    • gh
    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git and gh, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Contributor-First PR Merge loads about 847 tokens when it runs, and up to ~1.8k if it reads all its reference files. Until then it costs about 65 tokens; SKILL.md has 274 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~65
When it runs · the whole SKILL.md, loaded when a task matches
~847
With references · SKILL.md plus every file in references/, read only if the agent opens them
~1.8k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from HKUDS/OpenHarness at commit 9b2efd7, republished under its MIT licence (© HKUDS). 274 words, ~847 tokens.

Download SKILL.mdSave it as .claude/skills/pr-merge/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
pr-merge
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.
version
0.1.0

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
bash
python -m ruff check src/ tests/    # lint
python -m pytest tests/ -q          # unit tests
git push origin main                # push

Then run harness-eval for end-to-end verification on an unfamiliar codebase.

Attribution Checklist

Before pushing a merged PR:

  • Original author appears in git log (via --author or GitHub squash merge)
  • Commit message references PR number (#NUMBER)
  • If selectively merged, commit body explains exclusions
  • Closed PRs have a comment thanking the contributor
  • Duplicate PRs acknowledge the contributor's investigation

Common Pitfalls

  • git apply + self-commit loses author
  • Rewriting from scratch instead of merging — merge their code, fix style after
  • Force-pushing main after merge — may remove contributor commits
  • Forgetting CHANGELOG conflicts — always exclude and handle manually
  • Not testing after merge — clean merge doesn't mean working code

Additional Resources

Reference Files
  • references/merge-scenarios.md — Detailed examples for each merge scenario (clean, conflicting, selective, duplicate)

© HKUDS, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .claude/skills/pr-merge of HKUDS/OpenHarness.

  • SKILL.md
  • references/merge-scenarios.md

Open the folder on GitHubat commit 9b2efd7

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in HKUDS/OpenHarness, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Contributor-First PR Merge next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Contributor-First PR Merge compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Contributor-First PR Merge this skillHKUDS/OpenHarness16k1 repos~847Automated safety check: PassMIT
Ansible Backport Creatoransible/ansible71k—~1.2kAutomated safety check: PassGPL-3.0
Create Pull Requestcline/cline70k1 repos~1.6kAutomated safety check: PassApache-2.0
Create Pull Request with Work Item IDmakeplane/plane61k—~824Automated safety check: PassAGPL-3.0
Creating Description For Gh PRredis/jedis12k—~838Automated safety check: PassMIT
Pascal Editor PR Openerpascalorg/editor25k—~619Automated safety check: PassMIT

Similar skills

  • Creates backports of a merged Ansible devel pull request onto the right stable branches by cherry-picking its merge commit onto new backport branches.

    71k GitHub stars~1.2k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Opens a GitHub pull request from your current branch with the gh CLI, after reviewing the commits and diff and gathering the details the PR needs.

    70k GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed
  • Opens a pull request for the current branch using the repo's template, a work item ID in the title and a description filled in from the actual diff.

    61k GitHub stars~824 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Official

    Generate a clear, concise GitHub PR title and description from the diff between two local git branches, and save it to prDescription.md in the repo root.

    12k GitHub stars~838 tokensUpdated today
    DevelopmentAuto-check passed
  • Pascal Editor PR Opener

    pascalorg/editor

    Opens or refreshes a pull request on pascalorg/editor from the current branch, describing only what the branch's commits and diff actually contain.

    25k GitHub stars~619 tokensUpdated today
    DevelopmentAuto-check passed
  • React Router Pull Request Creator

    remix-run/react-router

    Packages finished React Router work into a draft pull request: branch, commit, push, a written PR body and the right GitHub labels.

    57k GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed

More from HKUDS/OpenHarness

  • Validates OpenHarness features by running real multi-turn agent loops with live LLM calls against an unfamiliar codebase, checking actual tool execution.

    16k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check: notes

Works with

Categories

Questions about Contributor-First PR Merge

What does Contributor-First PR Merge do?

Merges external GitHub pull requests while keeping the original author credited, and fixes conflicts after the merge instead of rewriting the contribution. The agent starts by listing open pull requests with gh pr list and sorting each into one of four outcomes: merge directly, merge after resolving conflicts, merge selectively, or close. Clean PRs go through gh pr merge with squash so GitHub keeps the contributor on the commit.

When should I use Contributor-First PR Merge?

Contributor-First PR Merge fits situations like: reviewing and merging a batch of open pull requests from outside contributors; merging a contributor's PR that conflicts with main without rewriting their work; taking only part of a PR because some of its features already exist; closing duplicate or superseded PRs with a thank-you comment.

How do I install Contributor-First PR Merge in Claude Code?

Run `npx skills add HKUDS/OpenHarness --skill pr-merge -a claude-code`. Or copy the skill folder (.claude/skills/pr-merge in HKUDS/OpenHarness) into .claude/skills/pr-merge in your project. Claude Code loads it when a task matches its description.

How do I install Contributor-First PR Merge in Codex?

Run `npx skills add HKUDS/OpenHarness --skill pr-merge -a codex`. Or copy the skill folder (.claude/skills/pr-merge in HKUDS/OpenHarness) into .agents/skills/pr-merge in your project. Codex loads it when a task matches its description.

Can I use Contributor-First PR Merge in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add HKUDS/OpenHarness --skill pr-merge -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/pr-merge, .gemini/skills/pr-merge, .github/skills/pr-merge and .opencode/skills/pr-merge in your project.

What does Contributor-First PR Merge need to run?

Going by SKILL.md and its folder, Contributor-First PR Merge needs the command-line tools its instructions call (git, gh and python). Our summary lists: GitHub CLI (gh), authenticated for the repository; Git.

Does Contributor-First PR Merge access the network?

SKILL.md contains no URLs. Its commands use git and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Contributor-First PR Merge safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Contributor-First PR Merge use?

Contributor-First PR Merge is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Contributor-First PR Merge use?

About 847 tokens (SKILL.md is roughly 3.4k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 940 tokens, read only when the agent opens those files.

What are the alternatives to Contributor-First PR Merge?

Skills that share tags, products or a category with Contributor-First PR Merge: Ansible Backport Creator (ansible/ansible, 71k stars), Create Pull Request (cline/cline, 70k stars), Create Pull Request with Work Item ID (makeplane/plane, 61k stars) and Creating Description For Gh PR (redis/jedis, 12k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Contributor-First PR Merge?

HKUDS (a GitHub organization) maintains it in HKUDS/OpenHarness, which has 15,955 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on June 4, 2026.

Source: HKUDS/OpenHarness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.