{"slug": "the-resolving-merge-conflicts-skill", "title": "The /resolving-merge-conflicts Skill", "summary": "Matt Pocock's /resolving-merge-conflicts skill, available via npx skills@latest add mattpocock/skills, resolves git merge or rebase conflicts hunk by hunk by tracing each side to its primary source (commit, PR, issue) and preserving both intents where compatible, never aborting the merge. The skill runs the project's checks (typecheck, tests, format) before committing and is intended for mid-merge or mid-rebase conflicts, not for post-merge debugging.", "body_md": "# The /resolving-merge-conflicts Skill\n\nFinish a merge or rebase conflict, hunk by hunk.\n\nInstall this skill\n\n`npx skills@latest add mattpocock/skills --skill=resolving-merge-conflicts`\n\nThen type `/resolving-merge-conflicts`\n\nin your coding agent.\n\n- Source\n[mattpocock/skills](https://github.com/mattpocock/skills)\n\n## On this page\n\n[What it does](#what-it-does)\n\n`resolving-merge-conflicts`\n\nworks through an in-progress git merge or rebase conflict, hunk by hunk, and finishes the operation — resolved, checked, and committed.\n\nIt resolves by **intent**, not by text. Before touching a hunk it traces each side back to its **primary source** — the commit message, the PR, the original issue — to understand why the change was made, then preserves both intents where they're compatible. It never invents new behaviour to paper over a clash, and it never reaches for `--abort`\n\n: the merge always gets finished.\n\n[When to reach for it](#when-to-reach-for-it)\n\nType `/resolving-merge-conflicts`\n\n, or the agent reaches for it automatically when a task fits.\n\nReach for this when you're mid-merge or mid-rebase and git has stopped on conflicts it can't resolve itself. It's for the conflict in front of you — not for planning the merge or for debugging behaviour that broke afterwards. If the merge is done but something's now failing for reasons you can't see, use [diagnosing-bugs](https://aihero.dev/skills-diagnosing-bugs) instead.\n\n[Resolving by intent](#resolving-by-intent)\n\nThe trap in a conflict is treating it as a text problem — picking \"ours\" or \"theirs\" to make the markers go away. This skill treats it as an **intent** problem. Each side of a hunk exists because someone wanted something; the resolution has to honour both wants where it can, and where they're genuinely incompatible, pick the one that matches the merge's stated goal and note the trade-off out loud.\n\nThat's why the primary sources matter. You can't preserve an intent you haven't read, so the work starts in the history — commits, PRs, tickets — not in the diff.\n\n[It's working if](#its-working-if)\n\n- Each resolved hunk keeps both sides' behaviour, or names the trade-off where it couldn't.\n- No new behaviour appears that wasn't on either branch.\n- The project's own checks — typecheck, tests, format — are found and run green before the commit.\n- The merge or rebase is carried all the way to a finished commit, never aborted.\n\n[Where it fits](#where-it-fits)\n\nA reach-for-it-anytime standalone: you invoke it at the moment a merge or rebase stalls, and it hands you back a clean, committed tree. Its natural neighbour is [diagnosing-bugs](https://aihero.dev/skills-diagnosing-bugs), because a merge that resolves cleanly but misbehaves afterwards is a diagnosis problem, not a conflict one. When you're unsure which skill fits, [ask-matt](https://aihero.dev/skills-ask-matt) routes you.\n\nSkill actions\n\n`npx skills@latest add mattpocock/skills`\n\nInstalls the whole set. Then type `/resolving-merge-conflicts`\n\nin your coding agent.\n\n[Skills.sh](https://www.skills.sh/mattpocock/skills)", "url": "https://wpnews.pro/news/the-resolving-merge-conflicts-skill", "canonical_source": "https://www.aihero.dev/skills-resolving-merge-conflicts", "published_at": "2026-07-07 13:56:09+00:00", "updated_at": "2026-08-05 11:35:02.405612+00:00", "lang": "en", "topics": ["developer-tools"], "entities": ["Matt Pocock", "mattpocock/skills", "diagnosing-bugs", "ask-matt"], "alternates": {"html": "https://wpnews.pro/news/the-resolving-merge-conflicts-skill", "markdown": "https://wpnews.pro/news/the-resolving-merge-conflicts-skill.md", "text": "https://wpnews.pro/news/the-resolving-merge-conflicts-skill.txt", "jsonld": "https://wpnews.pro/news/the-resolving-merge-conflicts-skill.jsonld"}}