dispatch-conflictlisted
Install: claude install-skill natb1/commons.systems
# Dispatch Conflict
The `dispatch-conflict` skill runs the `fix-conflicts` phase of the issue workflow,
dispatched by `/dispatch-propagate` when a draft PR's GitHub `mergeable` field
reports `CONFLICTING`. This skill is
**single-pass — it has no internal loop**. It reproduces one `origin/main` merge
conflict, resolves it (or escalates an ambiguous conflict), records the outcome via
the standard phase marker, and stops. The `/dispatch-propagate` background-job chain
drives iteration: each recurring conflict is a fresh `/dispatch-propagate` →
`/dispatch-conflict` invocation, counted by the `dispatch:fix-conflicts-attempt-<n>`
label (cap 3) so the phase cannot spin — at the cap the chain escalates to
`dispatch:office-hours`.
This skill runs in the **caller's thread** — it has no `context:` key — so it can
launch the resolver subagent directly.
This is a normal in-place phase skill: it derives the target from the current
worktree's branch (or an explicit node id in `ARGUMENTS`) and writes the
**standard** phase-completion marker. The Stop hook
(`.claude/hooks/dispatch-stop.sh`) reads that marker to decide propagate vs. park —
there are no sentinels and no `<N> <worktree>` handoff.
The skill has **three lanes**, chosen by a shared preamble (see "## Steps"):
**Lane 1** resolves an `origin/main` git merge conflict on an issue-branch draft
PR (the original behavior); **Lane 2** resolves a graph-native intention-node
*content* conflict parked by `graph-commit`; **Lane 3** resolves