agentleFS
paultyngpaultyng/skill-issue/skills/fix-pr-conflict/SKILL.md

fix-pr-conflict

Skill8 starsChanged 3 months agoMITView on GitHub

Resolve merge conflicts on a pull request by rebasing onto the base branch. Use when a PR is not mergeable, has merge conflicts, or the user asks to fix conflicts on a PR.

  • Deletes or force-pushes
  • Commits and pushes

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 12 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    If the PR is already mergeable, report that and stop.

    line 26
  2. Distinctive:

    Verify the working tree is clean before proceeding.

    line 35
  3. Distinctive:

    If the rebase completes with no conflicts, skip to step 5.

    line 43
  4. Distinctive:

    When the rebase stops on a conflict:

    line 47
  5. Distinctive:

    Check for generated files first: if a conflicting file is code-generated (look for

    line 50
  6. Very specific:

    After the rebase completes, regenerate the file from its source (buf generate, go generate, sqlc generate, etc.) and amend or add a …

    line 52
  7. Distinctive:

    Read the file to see the conflict markers.

    line 54
  8. Very specific:

    Check what the base branch changed: git log --oneline origin/<baseRefName> -- <file> and read the relevant commits.

    line 55
  9. Distinctive:

    Check what the PR branch changed: review the current commit being applied (git log --oneline -1 REBASE_HEAD).

    line 56
  10. Distinctive:

    Run verification per verify-when-complete.

    line 68
  11. Distinctive:

    If any conflict resolutions were semantic (changed logic, adapted APIs, reconciled incompatible changes) rather than purely mechanical:

    line 86
  12. Distinctive:

    Ask the user whether a summary of the conflict resolutions should be added as a comment on the PR.

    line 88
  13. Distinctive:

    If yes, post a concise comment:

    line 89
  14. Distinctive:

    If all resolutions were mechanical (adjacent-line merges, independent additions), skip this step.

    line 95

≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Fix PR Conflict

Resolve merge conflicts on a pull request so it becomes mergeable.

1. Identify the PR

Determine the PR number using these sources, in order of priority:

  1. Explicit number from the user's request.
  2. A PR created earlier in this conversation (check chat history for gh pr create output or PR URLs).
  3. The current branch via gh pr view.
# Try the current branch first
gh pr view --json number,headRefName,baseRefName,mergeable,mergeStateStatus 2>/dev/null

# Or by explicit number
gh pr view <number> --json headRefName,baseRefName,mergeable,mergeStateStatus

If the PR is already mergeable, report that and stop.

2. Prepare

git fetch origin <baseRefName> <headRefName>
git checkout <headRefName>

Verify the working tree is clean before proceeding.

3. Rebase onto Base Branch

git rebase origin/<baseRefName>

If the rebase completes with no conflicts, skip to step 5.

4. Resolve Conflicts

When the rebase stops on a conflict:

  1. List conflicting files: git diff --name-only --diff-filter=U
  2. Check for generated files first: if a conflicting file is code-generated (look for // Code generated ... DO NOT EDIT. headers, or paths matching known generator outputs like *.pb.go, *_gen.go, sqlc/openapi output dirs), do not attempt to merge the conflict markers. Instead:
    • Accept either side to unblock the rebase (e.g. git checkout --theirs <file> or git checkout --ours <file>), git add <file>, and continue.
    • After the rebase completes, regenerate the file from its source (buf generate, go generate, sqlc generate, etc.) and amend or add a follow-up commit with the regenerated output.
  3. For each remaining conflicting file, understand both sides:
    • Read the file to see the conflict markers.
    • Check what the base branch changed: git log --oneline origin/<baseRefName> -- <file> and read the relevant commits.
    • Check what the PR branch changed: review the current commit being applied (git log --oneline -1 REBASE_HEAD).
    • For >5 conflicting files, fan out the per-file analysis to Explore subagents (model: sonnet, per subagent-model-routing — semantic intent matters; classification requires understanding both sides' design) per parallelize-subagents and delegate-investigation. Each subagent reads one file's conflict markers + the relevant base/PR commits, returns a classification (mechanical / semantic / ambiguous) plus a resolution proposal in ≤80 words, prefixed with Status: ... per subagent-prompt-contract. Main agent applies resolutions sequentially via Edit (Explore is read-only; it analyzes, you apply).
  4. Classify the conflict:
    • Mechanical: both sides changed nearby lines but the intent is independent (e.g. adjacent import additions, unrelated function changes). Resolve by keeping both changes with correct formatting.
    • Semantic: both sides changed the same logic or API in incompatible ways. Attempt to resolve if the correct outcome is clear from context.
    • Ambiguous: the conflict involves a design decision, requirement tradeoff, or unclear intent. Stop, abort the rebase (git rebase --abort), and escalate to the user with a description of the conflict and what options exist.
  5. After resolving each file: git add <file>
  6. Continue the rebase: git rebase --continue
  7. Repeat until the rebase completes or an ambiguous conflict requires escalation.

5. Verify

Run verification per verify-when-complete. If failures stem from a bad conflict resolution, fix and amend the relevant commit. If errors are unrelated, report them.

6. Force Push

git push --force-with-lease

Then verify the PR is now mergeable:

gh pr view <number> --json mergeable,mergeStateStatus

Report the result. If GitHub still reports conflicts (can take a few seconds to recompute), wait and re-check once.

7. Summarize Semantic Resolutions

If any conflict resolutions were semantic (changed logic, adapted APIs, reconciled incompatible changes) rather than purely mechanical:

  1. Ask the user whether a summary of the conflict resolutions should be added as a comment on the PR.
  2. If yes, post a concise comment:
    gh pr comment <number> --body "..."
    The comment should summarize what was resolved and any decisions made during resolution. Keep it brief: focus on what a reviewer needs to know.

If all resolutions were mechanical (adjacent-line merges, independent additions), skip this step.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.