Skip to content
Agent Orchestration
Skill

/fix-merge-conflicts

Resolve merge conflicts non-interactively: start the integration, read both sides' intent from their commits, preserve both intents, validate on the resolved tree. Never force-pushes shared branches.

From plugin
oh-my-claudecode
41k84 skills21 agents21 commands11 hooks
+1

Claude Code

$ npx -y skills add Yeachan-Heo/oh-my-claudecode --skill fix-merge-conflicts --agent claude-code

SKILL.md

fix-merge-conflicts.SKILL.md
name: fix-merge-conflicts
description: "Resolve merge conflicts non-interactively: start the integration, read both sides' intent from their commits, preserve both intents, validate on the resolved tree. Never force-pushes shared branches."
aliases: []
metadata:
  credits:
    conflict-resolution: pstack
    author: Lauren Tan
    url: "https://github.com/cursor/plugins/tree/main/pstack"
    port: pstack-claude
    port-author: Michael Denyer
    port-url: "https://github.com/michael-denyer/pstack-claude"

Fix Merge Conflicts

A conflict is two intents meeting in one file. Resolution that flattens either intent is a bug with a clean git status.

Workflow

1. **Establish ownership**: you resolve conflicts on a branch you own, against a base others own. Conflicts on a shared branch get reported to the owner, not resolved unilaterally. 2. **Start the approved integration first**: fetch the remote base (`git fetch origin <base>`) and merge the fetched SHA — `git merge FETCH_HEAD` (or the project's rebase convention, when the caller has not constrained it) — so the conflicts you inspect match what GitHub reported; a local base ref can be absent or behind `origin/<base>`, and `git merge` never refreshes it implicitly. A `mergeable: conflicting` answer from the remote, or a clean local branch, has no `MERGE_HEAD` — `git log --merge` before integrating exits 128. 3. **Read both intents**: `git log --merge -p -- <file>` for each conflicted file once the merge is in progress — what did each side change and why (commit messages are evidence). Conflict markers show the what; the commits show the why. On the rebase path there is no `MERGE_HEAD` — `git log --merge` reads nothing there; read the topic side with `git show REBASE_HEAD -- <file>` (the dotted range `REBASE_HEAD..HEAD` excludes the topic commit itself, so it shows only the base side) and the base side with `git log -p HEAD -- <file>` until the rebase continues. When the caller forbids starting an integration at all (e.g. read-only inspection), compare explicit ranges instead: `git log -p <base>...HEAD -- <file>`. 4. **Resolve**: the default is both-intent-preserving — base side's change and branch side's change both survive, composed. When the intents are genuinely incompatible, the base (upstream) intent wins on shared surfaces and the branch adapts, and the override is reported with its reason. 5. **Validate**: run the project's checks (build/test/lint at minimum) on the resolved tree. A resolution that compiles but breaks a test took the wrong side somewhere. If intent analysis, resolution, or validation cannot complete after a merge starts, run `git merge --abort`; after a rebase starts, run `git rebase --abort`. If abort is unsafe or unavailable, stop and hand off the repository with the active `MERGE_HEAD`/`REBASE_HEAD` and conflict list explicitly reported. 6. **Finalize**: for a rebase, stage each resolved file and run `git rebase --continue` repeatedly until `git status` shows no active rebase. Validate that final tree before pushing. Then commit the resolution with a message naming what each side wanted. No force-push to shared branches, ever; a rebased own-branch uses `--force-with-lease` — unless a caller (e.g. `babysit`) forbids rebase and force-push entirely, in which case merge-commit resolution is the only path.

Rules

  • Never resolve by "take ours/theirs" wholesale; that is choosing a winner,

not resolving.

  • Generated files (lockfiles, snapshots) regenerate rather than

hand-merge.

  • The resolution commit's message states the two intents it composed —

the next archaeologist (`why`) will need it.

Read more
@yeachan-heo
Ships withoh-my-claudecode

For Codex users: Check out oh-my-codex — the same orchestration experience for OpenAI Codex CLI. Liked OmC but found it a bit overkill? Try gajae-code.

41k84 skills21 agents1 MCP
Get the whole plugin

Stars on GitHub

Momentum

stars in total
40.7k
Star history of Yeachan-Heo/oh-my-claudecode on GitHub, a chart by star-history.com

Other skills on oh-my-claudecode.

architect

architect

Settle types and module shape before cross-boundary code — competing designs explored in parallel, compared on API surface and…

arena

arena

Run N parallel candidates at one brief and synthesize: rubric-first framing, isolated fan-out, a cross-judge on a different…

More skills from other plugins.

1password

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

clawdis11d393k
@steipete@steipeteInstall Skill
computer-use

computer-use

Drives the GUI of a visible local app window through `orca computer`: accessibility tree, clicks, typing, menus, dialogs, and…

orca10d111k
@stablyai@stablyaiInstall Skill
agentmail

agentmail

Use your assigned AgentMail inbox to read email tasks, explicitly send or reply, and check delivery. Provided automatically by…

paperclip10d109k
@paperclipai@paperclipaiInstall Skill
adr-create

adr-create

Create a new Architecture Decision Record with sequential numbering and AgentDB registration

@ruvnet@ruvnetInstall Skill

Questions about fix-merge-conflicts.

Which coding agents can use fix-merge-conflicts?
fix-merge-conflicts installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.