- AgentHub: 13 files updated with non-engineering examples (content drafts, research, strategy) — engineering stays primary, cross-domain secondary - AgentHub: 7 slash commands, 5 Python scripts, 3 references, 1 agent, dry_run.py validation (57 checks) - Marketplace: agenthub entry added with cross-domain keywords, engineering POWERFUL updated (25→30), product (12→13), counts synced across all configs - SEO: generate-docs.py now produces keyword-rich <title> tags and meta descriptions using SKILL.md frontmatter — "Claude Code Skills" in site_name propagates to all 276 HTML pages - SEO: per-domain title suffixes (Agent Skill for Codex & OpenClaw, etc.), slug-as-title cleanup, domain label stripping from titles - Broken links: 141→0 warnings — new rewrite_skill_internal_links() converts references/, scripts/, assets/ links to GitHub source URLs; skills/index.md phantom slugs fixed (6 marketing, 7 RA/QM) - Counts synced: 204 skills, 266 tools, 382 refs, 16 agents, 17 commands, 21 plugins — consistent across CLAUDE.md, README.md, docs/index.md, marketplace.json, getting-started.md, mkdocs.yml - Platform sync: Codex 163 skills, Gemini 246 items, OpenClaw compatible Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
105 lines
2.8 KiB
Markdown
105 lines
2.8 KiB
Markdown
---
|
|
title: "/hub:merge — Merge Winner — Agent Skill for Codex & OpenClaw"
|
|
description: "Merge the winning agent's branch into base, archive losers, and clean up worktrees. Agent skill for Claude Code, Codex CLI, Gemini CLI, OpenClaw."
|
|
---
|
|
|
|
# /hub:merge — Merge Winner
|
|
|
|
<div class="page-meta" markdown>
|
|
<span class="meta-badge">:material-rocket-launch: Engineering - POWERFUL</span>
|
|
<span class="meta-badge">:material-identifier: `merge`</span>
|
|
<span class="meta-badge">:material-github: <a href="https://github.com/alirezarezvani/claude-skills/tree/main/engineering/agenthub/skills/merge/SKILL.md">Source</a></span>
|
|
</div>
|
|
|
|
<div class="install-banner" markdown>
|
|
<span class="install-label">Install:</span> <code>claude /plugin install engineering-advanced-skills</code>
|
|
</div>
|
|
|
|
|
|
Merge the best agent's branch into the base branch, archive losing branches via git tags, and clean up worktrees.
|
|
|
|
## Usage
|
|
|
|
```
|
|
/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 winner
|
|
```
|
|
|
|
## What 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-1
|
|
```
|
|
|
|
### 4. 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 merged
|
|
```
|
|
|
|
## Safety
|
|
|
|
- **Confirm with user** before merging — show the diff summary first
|
|
- **Never force-push** — merge is always `--no-ff` for 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`
|