conflict-resolution
About
This Claude Skill systematically resolves Git merge conflicts by analyzing differences, preserving code integrity, and verifying resolutions. It handles scenarios like rebasing, merging, and cherry-picking using Git tools and file editing. Developers should invoke it whenever encountering merge conflicts to ensure clean, intentional resolution.
Quick Install
Claude Code
Recommended/plugin add https://github.com/majiayu000/claude-skill-registrygit clone https://github.com/majiayu000/claude-skill-registry.git ~/.claude/skills/conflict-resolutionCopy and paste this command in Claude Code to install this skill
Documentation
Conflict Resolution
Overview
Handle merge conflicts systematically to maintain code integrity.
Core principle: Conflicts require careful resolution, not just picking one side.
Announce at start: "I'm using conflict-resolution to handle these merge conflicts."
When Conflicts Occur
Conflicts happen when:
| Situation | Example |
|---|---|
| Rebasing on updated main | git rebase origin/main |
| Merging main into branch | git merge origin/main |
| Cherry-picking commits | git cherry-pick [sha] |
| Pulling with local changes | git pull |
The Resolution Process
Conflict Detected
│
▼
┌─────────────────┐
│ 1. UNDERSTAND │ ← What's conflicting and why?
└────────┬────────┘
│
▼
┌─────────────────┐
│ 2. ANALYZE │ ← Review both versions
└────────┬────────┘
│
▼
┌─────────────────┐
│ 3. RESOLVE │ ← Make informed decision
└────────┬────────┘
│
▼
┌─────────────────┐
│ 4. VERIFY │ ← Tests pass, code works
└────────┬────────┘
│
▼
┌─────────────────┐
│ 5. CONTINUE │ ← Complete the operation
└─────────────────┘
Step 1: Understand the Conflict
See Conflicting Files
# List files with conflicts
git status
# Output shows:
# Unmerged paths:
# both modified: src/services/user.ts
# both modified: src/utils/validation.ts
View the Conflict
# See the conflict markers
cat src/services/user.ts
<<<<<<< HEAD
// Your changes
function createUser(data: UserData): User {
return { ...data, id: generateId() };
}
=======
// Their changes (main branch)
function createUser(data: UserData): Promise<User> {
return db.create({ ...data, id: generateId() });
}
>>>>>>> main
Understand the History
# See what changed in each branch
git log --oneline --left-right HEAD...main -- src/services/user.ts
# See the actual changes
git diff HEAD...main -- src/services/user.ts
Step 2: Analyze Both Versions
Questions to Answer
| Question | Consider |
|---|---|
| What was the intent of your change? | Your feature/fix |
| What was the intent of their change? | Their feature/fix |
| Are they mutually exclusive? | Can both coexist? |
| Which is more recent/correct? | Check issue references |
| Do both need to be kept? | Merge the logic |
Compare Approaches
## Conflict Analysis: src/services/user.ts
### My Change (feature/issue-123)
- Made createUser synchronous
- Reason: Simplified for local testing
- Issue: #123
### Their Change (main)
- Made createUser async with DB
- Reason: Production database integration
- Issue: #456
### Resolution
Keep their async version (production requirement).
My testing simplification should use mocks instead.
Step 3: Resolve the Conflict
Resolution Strategies
Keep Theirs (Main)
When main's version is correct:
# Use their version
git checkout --theirs src/services/user.ts
git add src/services/user.ts
Keep Ours (Your Branch)
When your version is correct:
# Use your version
git checkout --ours src/services/user.ts
git add src/services/user.ts
Manual Merge (Both)
When both changes are needed:
// Remove conflict markers
// Combine both changes intelligently
// Result: Keep async from main, add your new validation
async function createUser(data: UserData): Promise<User> {
// Your addition: validation
validateUserData(data);
// Their change: async DB call
return db.create({ ...data, id: generateId() });
}
# After editing
git add src/services/user.ts
Conflict Markers
Remove ALL conflict markers:
<<<<<<< HEAD ← Remove
======= ← Remove
>>>>>>> main ← Remove
The final file should have NO conflict markers.
Step 4: Verify Resolution
Syntax Check
# TypeScript: Check types
pnpm typecheck
# Or for specific file
npx tsc --noEmit src/services/user.ts
Run Tests
# Run all tests
pnpm test
# Run tests for affected area
pnpm test --grep "user"
Visual Review
# See final resolved state
git diff --cached
# Ensure no conflict markers remain
grep -r "<<<<<<" src/
grep -r "======" src/
grep -r ">>>>>>" src/
Step 5: Continue the Operation
After Rebase
# Continue the rebase
git rebase --continue
# If more conflicts, repeat resolution
# When complete:
git push --force-with-lease
After Merge
# Complete the merge
git commit -m "Merge main into feature/issue-123"
# Push
git push
Abort if Needed
If resolution goes wrong:
# Abort rebase
git rebase --abort
# Abort merge
git merge --abort
# Start fresh
Complex Conflicts
Multiple Files
Resolve one file at a time:
# See all conflicts
git status
# Resolve each
# 1. Edit file
# 2. git add file
# 3. Next file
# When all resolved
git rebase --continue
Semantic Conflicts
Sometimes code merges cleanly but is semantically broken:
// main: Function signature changed
function process(data: NewFormat): Result
// yours: Called with old format
process(oldFormatData); // No conflict marker, but broken!
Always run tests after resolution.
Conflicting Dependencies
// package.json conflict
<<<<<<< HEAD
"dependencies": {
"library": "^2.0.0"
=======
"dependencies": {
"library": "^1.5.0"
>>>>>>> main
Resolution:
- Choose the appropriate version
- Delete
pnpm-lock.yaml - Run
pnpm install - Commit the new lock file
Best Practices
Before Resolution
- Pull latest main frequently to minimize conflicts
- Keep branches short-lived
- Communicate about shared files
During Resolution
- Take your time
- Understand both changes
- Don't just pick "ours" or "theirs" blindly
- Test after resolution
After Resolution
- Run full test suite
- Review the merged result
- Commit with clear message
Conflict Message
When conflicts occur during PR:
## Merge Conflict Resolution
This PR had conflicts with main that have been resolved.
### Conflicting Files
- `src/services/user.ts`
- `src/utils/validation.ts`
### Resolution Summary
**user.ts:**
Kept async implementation from main, added validation from this PR.
**validation.ts:**
Merged both validation rules (main added email, this PR added phone).
### Verification
- [x] All tests pass
- [x] Build succeeds
- [x] No conflict markers in code
- [x] Functionality verified manually
Checklist
When resolving conflicts:
- All conflicting files identified
- Each conflict analyzed (understood both sides)
- Resolution chosen (ours/theirs/merge)
- Conflict markers removed
- Files staged (
git add) - Tests pass
- Build succeeds
- No remaining conflict markers
- Operation completed (rebase --continue / commit)
Integration
This skill is called when:
git rebaseencounters conflictsgit mergeencounters conflicts- PR shows conflicts
This skill ensures:
- Clean resolution
- No lost changes
- Working code after merge
GitHub Repository
Related Skills
sglang
MetaSGLang is a high-performance LLM serving framework that specializes in fast, structured generation for JSON, regex, and agentic workflows using its RadixAttention prefix caching. It delivers significantly faster inference, especially for tasks with repeated prefixes, making it ideal for complex, structured outputs and multi-turn conversations. Choose SGLang over alternatives like vLLM when you need constrained decoding or are building applications with extensive prefix sharing.
evaluating-llms-harness
TestingThis Claude Skill runs the lm-evaluation-harness to benchmark LLMs across 60+ standardized academic tasks like MMLU and GSM8K. It's designed for developers to compare model quality, track training progress, or report academic results. The tool supports various backends including HuggingFace and vLLM models.
langchain
MetaLangChain is a framework for building LLM applications using agents, chains, and RAG pipelines. It supports multiple LLM providers, offers 500+ integrations, and includes features like tool calling and memory management. Use it for rapid prototyping and deploying production systems like chatbots, autonomous agents, and question-answering services.
llamaguard
OtherLlamaGuard is Meta's 7-8B parameter model for moderating LLM inputs and outputs across six safety categories like violence and hate speech. It offers 94-95% accuracy and can be deployed using vLLM, Hugging Face, or Amazon SageMaker. Use this skill to easily integrate content filtering and safety guardrails into your AI applications.
