resolve-conflictslisted
Install: claude install-skill ohyesgocool/feature-loop
# Resolve Conflicts
The target branch moved and the MR won't merge. Integrate the target into the feature branch,
resolve what conflicts, and **prove** the result — then let the caller merge.
`/ship-feature` calls this unconditionally from its merge gate, so **the no-conflict path must be
free**: probe, find nothing, exit without creating a commit.
> **Forge note.** Written for GitLab (`glab`). On GitHub: `gh pr view <n> --json
> mergeable,mergeStateStatus,baseRefName` for the conflict state, `gh pr view <n> --json url` for
> the link. The git work is identical.
---
## Strategy: merge the target in. Not rebase.
This matters enough to state the reasoning, so nobody "optimizes" it back:
1. **Review threads are anchored to commits.** GitLab positions diff notes against
`(base_sha, start_sha, head_sha)`. A rebase rewrites every commit, so after the force-push
GitLab re-maps what it can and marks the rest **outdated** — those threads fall out of the
diff view. In this loop that means `/address-review`'s own replies detach from the code they
cite, and `/ship-feature`'s convergence check ("every thread replied to") starts reading a
mangled thread set.
2. **`/mr-review`'s delta mode depends on sha ancestry.** It reads the `Reviewed: <sha>` footer
and diffs from there. After a rebase that sha is no longer an ancestor of head, so the round
silently falls back to a full review — correct, but it doubles reviewer cost for the rest of
the loop.
3. **A bad mer