بنقرة واحدة
oh-conflict
Resolve merge conflicts on a PR by merging base into head
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Resolve merge conflicts on a PR by merging base into head
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Diagnose and fix CI failures on a PR, push fixes
Resolve multi-dependency fan-in by merging dependency PRs into a common base and updating issue dependencies
Review a PR against its linked issue requirements, post structured feedback
Work a GitHub issue to completion in a branch, including review follow-ups, then PR for human review
Create Jira subtasks from task descriptions or session context. Investigates when needed, skips when context exists.
Review and merge open PRs for GitHub issues as a cohesive batch
| name | oh-conflict |
| description | Resolve merge conflicts on a PR by merging base into head |
Resolve merge conflicts on a pull request. Work in an isolated worktree, merge the base branch into the PR head, resolve conflicts with understanding of both sides' intent, verify, and push.
/oh-conflict <pr-number>
<pr-number> - the pull request number with merge conflictsissue/<number>)Read dive context (if available) for project background:
cat .wm/dive_context.md 2>/dev/null || echo "No dive context"
Get PR branch info:
# Save original directory for cleanup
ORIGINAL_DIR=$(pwd)
# Get head and base branch names
PR_INFO=$(gh pr view <pr-number> --json headRefName,baseRefName)
BRANCH=$(echo "$PR_INFO" | jq -r .headRefName)
BASE=$(echo "$PR_INFO" | jq -r .baseRefName)
Create worktree and set up:
git fetch origin
git worktree add .worktrees/conflict-<pr-number> -B $BRANCH origin/$BRANCH
cd .worktrees/conflict-<pr-number>
sg init
Understand the PR's intent before merging:
# Read the linked issue to understand what this PR is trying to do
PARENT_ISSUE=${BRANCH#issue/}
gh issue view $PARENT_ISSUE
# See the PR's own changes (what this branch introduced)
git log --oneline origin/$BASE..$BRANCH
git diff origin/$BASE...$BRANCH --stat
Attempt the merge:
git merge origin/$BASE --no-edit
This will fail with conflict markers in affected files.
Resolve conflicts file by file:
git diff --name-only --diff-filter=U # List conflicted files
git add <file>After all conflicts resolved, verify:
# Ensure no remaining conflict markers
grep -rn '<<<<<<< ' --include='*.ts' --include='*.js' --include='*.rs' . || echo "No conflict markers"
# Run project checks
# For TypeScript projects:
pnpm typecheck 2>&1 || true
pnpm test 2>&1 || true
# For Rust projects:
cargo check 2>&1 || true
cargo test 2>&1 || true
Adapt commands to the project's build system.
If verification fails (e.g., type errors from merged code):
sg review on staged changesComplete the merge commit:
git commit --no-edit # Uses the auto-generated merge commit message
Push:
git push
Cleanup worktree:
cd $ORIGINAL_DIR
git worktree remove .worktrees/conflict-<pr-number>
Exit and report:
# Accept theirs for lockfiles
git checkout --theirs pnpm-lock.yaml
pnpm install
git add pnpm-lock.yaml
If sg review finds non-trivial issues during resolution:
PARENT_ISSUE=${BRANCH#issue/}
NEW_ISSUE=$(gh issue create \
--title "Fix: <brief description>" \
--body "Spawned from #${PARENT_ISSUE} during conflict resolution on PR #<pr-number>.
## Context
<what was found>
## Acceptance
- [ ] Fix applied
- [ ] Tests pass" \
--assignee @me | grep -oE '[0-9]+$')
Complete ALL descendant issues before the final push.
CRITICAL: You MUST signal completion when done. Call the signal_completion tool as your FINAL action.
Signal based on outcome:
| Outcome | Call |
|---|---|
| Conflicts resolved, pushed | signal_completion(status: "success", pr: "<pr-url>") |
| Needs human decision | signal_completion(status: "blocked", blocker: "<reason>") |
| Unrecoverable failure | signal_completion(status: "error", error: "<reason>") |
| If you do not signal, the orchestrator will not know you are done and the session becomes orphaned. |
Fallback: If the signal_completion tool is not available, output your completion status as your final message in the format: COMPLETION: status=<status> pr=<url> or COMPLETION: status=<status> error=<reason>.