resolve
Skill3 starsChanged 30 days agoMITView on GitHub
Guided merge conflict resolution with verification. Shows each conflict with context from both branches, suggests resolution based on understanding both changes, verifies tests pass after resolution, and checks that no functionality was lost. Use when user says "resolve conflicts", "merge conflict", "fix conflicts", "rebase failed", "conflict resolution", or has merge conflicts to resolve. Use only when a merge or rebase has stopped on conflicts; for general debugging, use /investigate; for code review, use /review.
9 other projects use a version of this.
Adopted by
Most recently taken up by
- mlflow/mlflowtheir own version, first seen Nov 8, 2026
- grainulation/grainulatortheir own version, first seen Nov 3, 2026
- pauljasperdev/skillstheir own version, first seen Nov 1, 2026
- pluk-inc/md-preview.apptheir own version, first seen Oct 17, 2026
- pluk-inc/markdown-previewtheir own version, first seen Oct 17, 2026
- AndriiShramko/360-video-editing-playbooktheir own version, first seen Sep 14, 2026
Other versions9 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 9
- mlflow/mlflow★ 29ksame name
- pluk-inc/markdown-preview★ 2.8ksame name
- pluk-inc/md-preview.app★ 2.8ksame name
- optave/ops-codegraph-tool★ 94same name
- grainulation/grainulator★ 86same name
- AndriiShramko/360-video-editing-playbook★ 0same name
- chanhyeok-made/ccx★ 0same name
- pauljasperdev/skills★ 0same name
- System-Error-Worldwide/the-loop★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository42 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- asideSkill
- assessmentSkill
- auditSkill
- benchmarkSkill
- brainSkill
- checkpointSkill
- cleanupSkill
- concise-modeSkill
- cross-modelSkill
- deploySkill
- designSkill
- explainSkill
- fix-issueSkill
- ganSkill
- guardSkill
- hotfixSkill
- incidentSkill
- infraSkill
- interview-meSkill
- investigateSkill
- migrateSkill
- module-auditSkill
- morningSkill
- onboardSkill
- planSkill
- profileSkill
- pr-summarySkill
- readmeSkill
- refactorSkill
- researchSkill
- respondSkill
- retroSkill
- reviewSkill
- session-logSkill
- setupSkill
- shipSkill
- skill-newSkill
- spikeSkill
- tddSkill
- testSkill
- zoom-outSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
28 rules. 0 are common, 25 are distinctive, and 3 are very specific to this project.
0
Common
Most of the 8 edited versions we read keep these.
25
Distinctive
This author's own choices. Worth a look.
3
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 22
No arguments: detect and resolve conflicts in the current working tree.
- Distinctive: line 28
Run git status to find all conflicted files.
- Very specific: line 37
Ask git for these paths instead of reading .git/ directly.
- Distinctive: line 39
If no conflicts and no in-progress operation, inform the user and exit.
- Very specific: line 57
Read the full file. Identify each conflict block marked by <<<<<<<, =======, >>>>>>>.
- Distinctive: line 63
Read the "ours" section: the changes from the current branch.
- Distinctive: line 64
Read the "theirs" section: the changes from the incoming branch.
- Distinctive: line 65
Check the git log for both branches to understand what each change was trying to accomplish:
- Very specific: line 72
If this is a rebase, use REBASE_HEAD instead of MERGE_HEAD.
- Distinctive: line 88
Remove the conflict markers.
- Distinctive: line 92
After all conflicts in a file are resolved:
- Distinctive: line 102
Run the full test suite. This catches resolutions that compile but break behavior.
- Distinctive: line 119
If more conflicts appear after continuing a rebase, return to Step 1.
- Distinctive: line 123
After the operation completes with no remaining conflicts:
- Distinctive: line 125
Run the formatter check.
- Distinctive: line 127
Run the type checker.
- Distinctive: line 128
Run the full test suite.
- Distinctive: line 129
Verify the branch builds cleanly.
- Distinctive: line 133
Never lose functionality from either side of a conflict.
- Distinctive: line 134
Always explain what each side intended before resolving.
- Distinctive: line 135
Always test after resolution.
- Distinctive: line 136
Never use git checkout --ours or git checkout --theirs on an entire file without reading every conflict in that file first.
- Distinctive: line 138
If a conflict is too complex to resolve confidently, present both versions to the user with your analysis and ask for a decision.
- Distinctive: line 149
Stop and read the commit history for both sides when you cannot state in one sentence what each side intended.
- Distinctive: line 150
Stop and ask the user, with both versions and your analysis, when two conflict blocks pull the same logic in incompatible directions.
- Distinctive: line 151
Stop and re-resolve the specific conflict the failure points at when the suite fails after resolution.
- Distinctive: line 152
Stop and return to Step 1 when git rebase --continue reports new conflicts.
- Distinctive: line 158
Every resolved block has a one-line statement of what was kept from each side.
“Common” is measured: kept by at least 6 in 10 of the 8 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Overview
Interactive conflict resolution that understands the intent behind each side of a conflict. Resolves conflicts one at a time with test verification after all conflicts are resolved.
When to Use
- A merge, rebase, or cherry-pick stopped on conflicts and
git statuslists unmerged paths. - The user says "resolve conflicts", "merge conflict", "fix conflicts", "rebase failed", or "conflict resolution".
For test failures with no conflict in progress, use /investigate; for reviewing the merged result, use /review.
Arguments
- No arguments: detect and resolve conflicts in the current working tree.
Process
Step 1: Detect conflict state
Run git status to find all conflicted files. If no conflicts exist, check whether a rebase or merge is in progress:
git status
git rev-parse -q --verify MERGE_HEAD
git rev-parse -q --verify CHERRY_PICK_HEAD
test -d "$(git rev-parse --git-path rebase-merge)" || test -d "$(git rev-parse --git-path rebase-apply)"Ask git for these paths instead of reading .git/ directly. In a linked worktree .git is a file, not a directory, so .git/MERGE_HEAD never exists there and an in-progress merge reads as absent.
If no conflicts and no in-progress operation, inform the user and exit.
Step 2: List all conflicted files
Present the full list of conflicted files with their conflict type:
| File | Type |
| src/auth/login.ts | Both modified |
| src/api/routes.ts | Both modified |
| src/config/db.ts | Deleted by theirs, modified by ours |
Step 3: Resolve each file
For each conflicted file, in order:
3a. Read the conflict
Read the full file. Identify each conflict block marked by <<<<<<<, =======, >>>>>>>.
3b. Understand both sides
For each conflict block:
- Read the "ours" section: the changes from the current branch.
- Read the "theirs" section: the changes from the incoming branch.
- Check the git log for both branches to understand what each change was trying to accomplish:
git log --oneline -5 HEAD -- <file>
git log --oneline -5 MERGE_HEAD -- <file>If this is a rebase, use REBASE_HEAD instead of MERGE_HEAD.
State what each side intended: "Our branch added input validation to the login handler. Their branch refactored the handler to use a service layer."
3c. Choose a resolution strategy
| Situation | Strategy |
| Changes are in different logical areas that happen to touch the same lines | Combine both changes |
| One side is a superset of the other | Take the more complete version |
| Both sides changed the same logic differently | Merge both intents into a single implementation |
| One side deleted code the other modified | Understand why it was deleted. If the deletion was intentional, keep the deletion. If the modification is important, keep the modification |
| Formatting-only conflict | Take whichever matches the project's formatter output |
3d. Apply the resolution
Remove the conflict markers. Write the resolved content. Explain what was kept and what was discarded.
Step 4: Stage resolved files
After all conflicts in a file are resolved:
git add <file>Repeat Steps 3-4 for every conflicted file.
Step 5: Verify with tests
Run the full test suite. This catches resolutions that compile but break behavior.
If tests fail:
- Identify which resolution likely caused the failure by examining the test error and the resolved files.
- Re-read the conflicting change.
- Re-resolve that specific conflict with a different approach.
- Run tests again.
Step 6: Complete the operation
Continue the interrupted git operation:
- For merge:
git committo finalize the merge commit. - For rebase:
git rebase --continueto apply the next commit. - For cherry-pick:
git cherry-pick --continue.
If more conflicts appear after continuing a rebase, return to Step 1.
Step 7: Final verification
After the operation completes with no remaining conflicts:
- Run the formatter check.
- Run the linter.
- Run the type checker.
- Run the full test suite.
- Verify the branch builds cleanly.
Rules
- Never lose functionality from either side of a conflict. If both sides added features, the resolution must include both features.
- Always explain what each side intended before resolving. A resolution without understanding is a guess.
- Always test after resolution. A conflict that resolves cleanly at the text level can still break behavior.
- Never use
git checkout --oursorgit checkout --theirson an entire file without reading every conflict in that file first. Blanket ours/theirs discards changes without review. - When a conflict involves a generated file such as a lockfile,
package-lock.json, orpnpm-lock.yaml, regenerate it from the resolved manifest instead of hand-merging it: resolve the manifest first, then run the package manager's install, which rewrites a lockfile holding conflict markers from the resolved manifest while keeping every unchanged pin, and stage the result. When the tool refuses the conflicted file, restore the base side withgit checkout --ours -- <lockfile>and install again. Never delete the lockfile: a fresh resolve moves every dependency to its newest allowed version, which is an unreviewed upgrade hidden inside a merge. - If a conflict is too complex to resolve confidently, present both versions to the user with your analysis and ask for a decision. Do not guess.
Common Rationalizations
- "Our side is newer, so take ours for the whole file": newer is not more complete. Read every block, since a blanket
--oursdrops the other branch's feature with no trace. - "The file has no markers left, so it is resolved": text-level cleanliness says nothing about behavior. Step 5 runs the suite for that reason.
- "Hand-merging the lockfile is faster than regenerating it": a hand-merged lockfile passes review and fails a frozen install. Regenerate it with the package manager.
- "The intent is obvious from the diff": state each side's intent from
git logbefore choosing a strategy. The log names what the diff hides.
Red Flags
- Stop and read the commit history for both sides when you cannot state in one sentence what each side intended.
- Stop and ask the user, with both versions and your analysis, when two conflict blocks pull the same logic in incompatible directions.
- Stop and re-resolve the specific conflict the failure points at when the suite fails after resolution.
- Stop and return to Step 1 when
git rebase --continuereports new conflicts.
Verification
git diff --name-only --diff-filter=Uprints nothing.grep -rn '^<<<<<<<\|^>>>>>>>' <resolved files>prints nothing.- Every resolved block has a one-line statement of what was kept from each side.
- The formatter check, linter, type checker, full test suite, and build pass after the operation completes.
- No
git merge,git rebase, orgit cherry-pickis still in progress:git rev-parse -q --verify MERGE_HEADandgit rev-parse -q --verify CHERRY_PICK_HEADexit non-zero, and neithergit rev-parse --git-path rebase-mergenorgit rev-parse --git-path rebase-applynames an existing directory.
Related skills
/investigate-- Debug test failures caused by a bad resolution./review-- Review the merged result before pushing./ship commit-- Commit after successful resolution.
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
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.

