Process merge queue items as a Loom merge worker - claim, merge, mark done, handle no-op merges, and resolve compound block conflicts correctly.
Process merge queue items for a Loom team's merge worker role.
loom team wait wakes you with queue itemsloom team spawn-merge <TEAM> --forceloom team merge commands for deterministic queue operationsloom team merge <TEAM> next --claim-by merge
git fetch origin
git merge origin/main --ff-only
If git status shows unstaged changes, stash them first:
git stash push -m "Merge preparation for <ticket_id>"
git merge <branch> --no-ff -m "Merge <branch> into merge-queue (ticket: <ticket_id>)"
If merge fails with conflicts:
git checkout --theirs AGENTS.md LOOM_ROADMAP.md
git add AGENTS.md LOOM_ROADMAP.md
Rationale: Compound blocks are auto-generated; accept incoming version.
git checkout --theirs pyproject.toml uv.lock
git checkout --theirs src/vibe_piper.egg-info/PKG-INFO
git checkout --theirs src/vibe_piper.egg-info/requires.txt
git add -f pyproject.toml uv.lock src/vibe_piper.egg-info/
Rationale: Accept incoming dependencies; newer branches add new optional deps.
git commit -m "Merge <branch> into merge-queue (ticket: <ticket_id>)"
loom team merge <TEAM> done <ITEM_ID> --result merged|blocked --note "..."
Use one of:
--result merged for successful merges--result blocked for unresolvable merge conflictsgit merge returns "Already up to date"This means commits are already in merge-queue history, even if Loom reports them as "NOT in merge-queue".
git log --oneline --first-parent team/merge-queue | grep <commit_hash>
If not in the first-parent chain, it's a no-op due to a prior main → merge-queue sync.
loom team merge <TEAM> done <ITEM_ID> --result merged --note "Branch already merged (commits already in merge-queue). Merge was a no-op as expected."
loom team merge <TEAM> next --claim-by <worker>loom team merge <TEAM> done <ITEM_ID> --result merged|blocked --note "..."loom team ship <TEAM> --pushloom team merge <TEAM> listIf no work, run loom team wait 10m and stop output.
This section is preserved when the skill is updated. Put human notes, caveats, and exceptions here.