merge
/hub:merge — Merge Winner
Merge the best agent's branch into the base branch, archive losing branches via git tags, and clean up worktrees.
Usage
code
/hub:merge # Merge winner of latest session
/hub:merge 20260317-143022 # Merge winner of specific session
/hub:merge 20260317-143022 --agent agent-2 # Explicitly choose winnerWhat It Does
1. Identify Winner
If --agent specified, use that. Otherwise, use the #1 ranked agent from the most recent /hub:eval.
2. Merge Winner
bash
git checkout {base_branch}
git merge --no-ff hub/{session-id}/{winner}/attempt-1 \
-m "hub: merge {winner} from session {session-id}
Task: {task}
Winner: {winner}
Session: {session-id}"
3. Archive Losers
For each non-winning agent:
bash
# Create archive tag (preserves commits forever)
git tag hub/archive/{session-id}/{agent-id} hub/{session-id}/{agent-id}/attempt-1
Delete branch ref (commits preserved via tag)
git branch -D hub/{session-id}/{agent-id}/attempt-14. Clean Up Worktrees
bash
python {skill_path}/scripts/session_manager.py --cleanup {session-id}5. Post Merge Summary
Write .agenthub/board/results/merge-summary.md:
markdown
---
author: coordinator
timestamp: {now}
channel: results
---
Merge Summary
- Session: {session-id}
- Winner: {winner}
- Merged into: {base_branch}
- Archived: {loser-1}, {loser-2}, ...
- Worktrees cleaned: {count}
6. Update State
bash
python {skill_path}/scripts/session_manager.py --update {session-id} --state mergedSafety
- Confirm with user before merging — show the diff summary first
- Never force-push — merge is always
--no-fffor clear history
- Archive, don't delete — losing agents' commits are preserved via tags
- Clean worktrees — don't leave orphan directories on disk
After Merge
Tell the user:
- Winner merged into
{base_branch}
- Losers archived with tags
hub/archive/{session-id}/agent-{N}
- Worktrees cleaned up
- Session state:
merged