From citadel
Reviews pending fleet worktree merges before acceptance. Reads merge-check queue, detects file-level conflicts between branches, proposes safe merge order, and surfaces reconciliation plans for overlaps.
npx claudepluginhub sethgammon/citadel --plugin citadelThis skill uses the workspace's default tool permissions.
**Use when:** reviewing pending fleet worktree merges before accepting them into the main branch.
Analyzes source vs target branch pre-merge: commit stats, conflict detection, file impacts. Outputs report + suggested commands (analysis-only, no auto-merge).
Merges multiple PRs into base branch sequentially with topological ordering, intelligent conflict resolution, build validation, and rollback safety. Use for ordered merging of interdependent or conflicting PRs.
Resolves Git merge and rebase conflicts file-by-file using modern tooling. Activates for conflicted merges, rebases, PRs unable to merge, or diverged branches. Supports --ours, --theirs, auto-push.
Share bugs, ideas, or general feedback.
Use when: reviewing pending fleet worktree merges before accepting them into the main branch. Don't use when: reviewing general code quality (use /review); checking CI status before merging (use /pr-watch).
/merge-review # Process the full queue
/merge-review {branch} # Review a specific branch only
Read .planning/telemetry/merge-check-queue.jsonl. Each line is a JSON object:
{"branch": "fleet/task-abc", "worktree": "/path/to/worktree", "queuedAt": "ISO"}
If the file doesn't exist or is empty:
"No pending merge reviews. Fleet agents haven't completed any worktrees recently." Stop here.
If invoked with a specific branch (/merge-review {branch}): filter to that branch only.
Run git diff main..{branch} --name-only, --stat, and git branch --list {branch}.
If the branch no longer exists: mark status: "merged", note "likely already merged. Skipped.", continue.
Compare changed file sets pairwise. For each pair sharing files, read git diff main..{branch} -- {file} for both and classify:
For each branch:
Order branches: fewest conflicts first, most conflicts last.
If circular dependencies exist (A conflicts with B, B conflicts with C, C conflicts with A): escalate to the user — do not propose an impossible order.
## Merge Review: {N} branch(es) pending
### Branch: {name}
Files changed: {N}
Overlap with other branches: {branch-X} ({file-list}) | none
Risk: low | medium | high
Recommendation: merge | review-first | resolve-conflict
---
[repeat for each branch]
---
### Conflicts Detected
{branch-A} and {branch-B} both modified:
- {file}: {brief description — e.g., "A adds export, B removes same export"}
Recommended resolution: {which change to keep, or how to combine them}
[repeat for each conflict pair]
### Proposed Merge Order
1. {branch} — no conflicts, safe to merge first
2. {branch} — depends on #1; review {file} after merging #1
3. {branch} — manual conflict resolution needed in {file} before merging
### Summary
Branches ready to merge: {N}
Branches needing review: {N}
Branches with hard conflicts: {N}
If all branches are conflict-free:
## Merge Review: {N} branch(es) pending — No conflicts detected
All branches can be merged in any order. Recommended order (by change size, smallest first):
1. {branch} — {N} files
2. {branch} — {N} files
After producing the report, mark reviewed items in the queue:
status: "reviewed", add reviewedAt timestampstatus: "merged" (already handled in Step 2)Write the updated queue back to .planning/telemetry/merge-check-queue.jsonl.
Run git worktree list --porcelain. For each non-main worktree: check git branch --merged HEAD. If merged and clean: run git worktree remove "{path}" --force and git branch -d "{branch}". No user confirmation needed. Report count: "Cleaned up {N} merged worktree(s): {branch-names}".
Queue empty: Output "No pending merge reviews." and stop.
Branch no longer exists: Remove from queue, note, continue.
Branch not in queue: Note "not in the merge queue" and suggest /merge-review to see all.
All branches conflict (circular): List all conflicts; do not propose an order; escalate to user.
One branch pending: Skip conflict detection; output single-branch review (files, stat, recommendation).
Large diff (>500 lines): Summarize changed areas; link to git diff command for details.
Worktree path missing but branch exists: Proceed with git diff using branch name; worktree existence not required.
.planning/telemetry/merge-check-queue.jsonl when a fleet worktree completes/merge-review after fleet agents complete, before merging to mainDisclosure: "Reviewing pending fleet worktree merges. Read-only — no changes applied." Reversibility: green — read-only review; no files merged or modified Trust gates:
/merge-review does not produce a HANDOFF block. It outputs the merge report (Step 6) and then waits for the next user command.
After the report, suggest next actions based on what was found:
/merge-review again after resolving."