roo-conflict-resolution

Roo Code Conflict Resolution Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "roo-conflict-resolution" with this command: npx skills add roocodeinc/roo-code/roocodeinc-roo-code-roo-conflict-resolution

Roo Code Conflict Resolution Skill

When to Use This Skill

Use this skill when the task involves:

  • Resolving merge conflicts for a specific pull request

  • Rebasing a branch that has conflicts with the target branch

  • Understanding and analyzing conflicting code changes

  • Making intelligent decisions about which changes to keep, merge, or discard

  • Using git history to inform conflict resolution decisions

When NOT to Use This Skill

Do NOT use this skill when:

  • There are no merge conflicts to resolve

  • The task is about general code review without conflicts

  • You're working on fresh code without any merge scenarios

Workflow Overview

This skill resolves merge conflicts by analyzing git history, commit messages, and code changes to make intelligent resolution decisions. Given a PR number (e.g., "#123"), it handles the entire conflict resolution process.

Initialization Steps

Step 1: Parse PR Number

Extract the PR number from input like "#123" or "PR #123". Validate that a PR number was provided.

Step 2: Fetch PR Information

gh pr view [PR_NUMBER] --json title,body,headRefName,baseRefName

Get PR title and description to understand the intent and identify the source and target branches.

Step 3: Checkout PR Branch and Prepare for Rebase

gh pr checkout [PR_NUMBER] --force git fetch origin main GIT_EDITOR=true git rebase origin/main

  • Force checkout the PR branch to ensure clean state

  • Fetch the latest main branch

  • Attempt to rebase onto main to reveal conflicts

  • Use GIT_EDITOR=true to ensure non-interactive rebase

Step 4: Check for Merge Conflicts

git status --porcelain git diff --name-only --diff-filter=U

Identify files with merge conflicts (marked with 'UU') and create a list of files that need resolution.

Main Workflow Phases

Phase 1: Conflict Analysis

Analyze each conflicted file to understand the changes:

  • Read the conflicted file to identify conflict markers

  • Extract the conflicting sections between <<<<<<< and >>>>>>>

  • Run git blame on both sides of the conflict

  • Fetch commit messages and diffs for relevant commits

  • Analyze the intent behind each change

Phase 2: Resolution Strategy

Determine the best resolution strategy for each conflict:

  • Categorize changes by intent (bugfix, feature, refactor, etc.)

  • Evaluate recency and relevance of changes

  • Check for structural overlap vs formatting differences

  • Identify if changes can be combined or if one should override

  • Consider test updates and related changes

Phase 3: Conflict Resolution

Apply the resolution strategy to resolve conflicts:

  • For each conflict, apply the chosen resolution

  • Ensure proper escaping of conflict markers in diffs

  • Validate that resolved code is syntactically correct

  • Stage resolved files with git add

Phase 4: Validation

Verify the resolution and prepare for commit:

  • Run git status to confirm all conflicts are resolved

  • Check for any compilation or syntax errors

  • Review the final diff to ensure sensible resolutions

  • Prepare a summary of resolution decisions

Git Commands Reference

Command Purpose

gh pr checkout [PR_NUMBER] --force

Force checkout the PR branch

git fetch origin main

Get the latest main branch

GIT_EDITOR=true git rebase origin/main

Rebase current branch onto main (non-interactive)

git blame -L [start],[end] [commit] -- [file]

Get commit information for specific lines

git show --format="%H%n%an%n%ae%n%ad%n%s%n%b" --no-patch [sha]

Get commit metadata

git show [sha] -- [file]

Get the actual changes made in a commit

git ls-files -u

List unmerged files with stage information

GIT_EDITOR=true git rebase --continue

Continue rebase after resolving conflicts

Best Practices

Intent-Based Resolution (High Priority)

Always prioritize understanding the intent behind changes rather than just looking at the code differences. Commit messages, PR descriptions, and issue references provide crucial context.

Example: When there's a conflict between a bugfix and a refactor, apply the bugfix logic within the refactored structure rather than simply choosing one side.

Preserve All Valuable Changes (High Priority)

When possible, combine non-conflicting changes from both sides rather than discarding one side entirely. Both sides of a conflict often contain valuable changes that can coexist if properly integrated.

Escape Conflict Markers (High Priority)

When using apply_diff , always escape merge conflict markers with backslashes to prevent parsing errors:

  • Correct: &#x3C;<<<<<< HEAD

  • Wrong: <<<<<<< HEAD

Consider Related Changes (Medium Priority)

Look beyond the immediate conflict to understand related changes in tests, documentation, or dependent code. A change might seem isolated but could be part of a larger feature or fix.

Resolution Heuristics

Category Rule Exception

Bugfix vs Feature Bugfixes generally take precedence When features include the fix

Recent vs Old More recent changes are often more relevant When older changes are security patches

Test Updates Changes with test updates are likely more complete

Formatting vs Logic Logic changes take precedence over formatting

Common Pitfalls

Blindly Choosing One Side

Problem: You might lose important changes or introduce regressions. Solution: Always analyze both sides using git blame and commit history.

Ignoring PR Context

Problem: The PR description often explains the why behind changes. Solution: Always fetch and read the PR information before resolving.

Not Validating Resolved Code

Problem: Merged code might be syntactically incorrect or introduce logical errors. Solution: Always check for syntax errors and review the final diff.

Unescaped Conflict Markers in Diffs

Problem: Unescaped conflict markers (<<<<<< , ======= , >>>>>> ) will be interpreted as diff syntax. Solution: Always escape with backslash (
) when they appear in content.

Apply Diff Example

When resolving conflicts with apply_diff , use this pattern:

<<<<<<< SEARCH :start_line:45

&#x3C;<<<<<< HEAD function oldImplementation() { return "old"; } ======= function newImplementation() { return "new"; } >>>>>>> feature-branch

function mergedImplementation() { // Combining both approaches return "merged"; }

REPLACE

Quality Checklist

Before Resolution

  • Fetch PR title and description for context

  • Identify all files with conflicts

  • Understand the overall change being merged

During Resolution

  • Run git blame on conflicting sections

  • Read commit messages for intent

  • Consider if changes can be combined

  • Escape conflict markers in diffs

After Resolution

  • Verify no conflict markers remain

  • Check for syntax/compilation errors

  • Review the complete diff

  • Document resolution decisions

Completion Criteria

  • All merge conflicts have been resolved

  • Resolved files have been staged

  • No syntax errors in resolved code

  • Resolution decisions are documented

Communication Guidelines

When reporting resolution progress:

  • Be direct and technical when explaining resolution decisions

  • Focus on the rationale behind each conflict resolution

  • Provide clear summaries of what was merged and why

Progress Update Format

Conflict in [file]:

  • HEAD: [brief description of changes]
  • Incoming: [brief description of changes]
  • Resolution: [what was decided and why]

Completion Message Format

Successfully resolved merge conflicts for PR #[number] "[title]".

Resolution Summary:

  • [file1]: [brief description of resolution]
  • [file2]: [brief description of resolution]

[Key decision explanation if applicable]

All conflicts have been resolved and files have been staged for commit.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

roo-translation

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

evals-context

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

openclaw-version-monitor

监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明

Archived SourceRecently Updated
Coding

ask-claude

Delegate a task to Claude Code CLI and immediately report the result back in chat. Supports persistent sessions with full context memory. Safe execution: no data exfiltration, no external calls, file operations confined to workspace. Use when the user asks to run Claude, delegate a coding task, continue a previous Claude session, or any task benefiting from Claude Code's tools (file editing, code analysis, bash, etc.).

Archived SourceRecently Updated