fix-conflict

This skill automatically resolves merge conflicts for the current PR by fetching the base branch, performing a test merge, analyzing conflicting files, and applying resolutions.

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 "fix-conflict" with this command: npx skills add s-hiraoku/synapse-a2a/s-hiraoku-synapse-a2a-fix-conflict

Fix Merge Conflicts

This skill automatically resolves merge conflicts for the current PR by fetching the base branch, performing a test merge, analyzing conflicting files, and applying resolutions.

Usage

/fix-conflict # Auto-resolve merge conflicts /fix-conflict --dry-run # Show conflicts without resolving

Workflow

Step 1: Determine PR and Base Branch

Get the current branch and PR details:

git rev-parse --abbrev-ref HEAD

gh pr view --json baseRefName,number,url -q '{base: .baseRefName, number: .number, url: .url}'

If no PR exists, report "No PR found for the current branch. Nothing to resolve." and stop.

Step 2: Fetch Latest Remote State

git fetch origin

Step 3: Attempt Test Merge

Start a non-committing merge to identify conflicts:

git merge --no-commit --no-ff "origin/<base-branch>"

If the merge completes without conflicts:

  • Run git merge --abort to undo the test merge

  • Report "No merge conflicts detected. The PR is mergeable." and stop.

If the merge fails with conflicts, proceed to the next step.

Step 4: Identify Conflicting Files

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

This lists all files with unresolved conflicts.

For each conflicting file, check if it's a binary file:

file <path>

If binary files have conflicts:

  • Abort the merge: git merge --abort

  • Report "Binary file conflicts detected in: . These require manual resolution." and stop.

Step 5: Resolve Conflicts

For each conflicting file:

  • Read the entire file to see the conflict markers (<<<<<<< , ======= , >>>>>>> )

  • Understand the changes from both sides:

  • The current branch's changes (between <<<<<<< and ======= )

  • The base branch's changes (between ======= and >>>>>>> )

  • Determine the correct resolution:

  • If both sides modify different parts of the same function: keep both changes

  • If both sides modify the same lines: analyze the intent and merge logically

  • If one side adds new code and the other modifies existing: keep both

  • If changes are contradictory: prefer the current branch's intent (it's newer work)

  • Remove all conflict markers and write the resolved content

  • Stage the resolved file: git add <file>

Important constraints:

  • Never blindly choose one side — always analyze both changes

  • Preserve formatting and style consistency

  • If a conflict is too complex to resolve confidently (e.g., large architectural changes on both sides), abort and report for manual resolution

If --dry-run flag is provided: show each conflict with both sides and the proposed resolution, but do NOT modify files, commit, or push.

Step 6: Local Verification

After resolving all conflicts, verify the merge is clean:

ruff check synapse/ tests/

ruff format synapse/ tests/ --check

pytest

If any check fails:

  • Attempt one targeted fix for the issue

  • If it still fails, abort the merge and report what went wrong

Step 7: Complete Merge and Push

git commit -m "merge: resolve conflicts with <base-branch>"

git push

Report a summary:

  • Number of files with conflicts resolved

  • List of resolved files

  • Whether all local checks pass

Step 8: Error Handling

  • Abort on failure: If resolution fails at any point, always run git merge --abort to return to a clean state

  • Binary conflicts: Report and stop — do not attempt to resolve binary files

  • Too many conflicts (>10 files): Report and suggest manual resolution

  • Max 1 attempt: This skill attempts resolution once. If it fails, manual intervention is needed

  • Never force-push: Always use git push , never git push --force

Safety

  • The test merge (--no-commit --no-ff ) ensures we can always abort cleanly

  • git merge --abort is the escape hatch at every step

  • Local verification (ruff, pytest) before pushing ensures we don't push broken code

  • Binary files are never auto-resolved

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.

General

synapse-a2a

No summary provided by upstream source.

Repository SourceNeeds Review
General

synapse-reinst

No summary provided by upstream source.

Repository SourceNeeds Review
General

frontend-design

No summary provided by upstream source.

Repository SourceNeeds Review
General

system-design

No summary provided by upstream source.

Repository SourceNeeds Review