Merge
Skill RockyHong/super-bootstrap/plugins/super-bootstrap/skills/merge
Claude Code plugin: one command scaffolds CLAUDE.md, picks skills/MCPs for your stack, and adds a route-aware workflow with doc-sync commit gate.
npx -y skills add RockyHong/super-bootstrap --skill mergeAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Absorb one or more feature branches into the base branch. Recommends merge vs rebase per branch. On conflict, aborts that branch + surfaces the file list + stops. Resolution out of scope; routes to the harness-named conflict-resolution agent or the user.
SKILL.md
5.9 KB, as published. Nobody here has run it
merge — Branch Absorption
Absorb feature branches into the base branch. Per-branch rebase-vs-merge recommendation, mechanical execution. Conflict resolution is NOT this skill's job — abort, surface, stop.
Branch Absorption Lane (load-bearing)
Branch integration is a topology operation on the commit graph. Route through the merge tool — git merge, this skill, or worker-direct-merge. File extension is not a routing signal; a docs-only branch is still branch integration.
Pre-flight when integration is in scope
Triggers: branch named for absorption, current branch behind base, worker returned with branch unmerged.
git branch --no-merged <base>— list unmerged tips.- For any file slated for edit:
git log <base>..<branch> -- <path>. Non-empty → merge lane. - To inspect merge state, materialize it:
git merge --no-commit --no-ff <branch>, thengit merge --abort. Readgit diff <base>..<branch>for review only, never as input to a hand-applied edit across base.
Conflict Doctrine (load-bearing)
When git merge or git rebase produces conflicts:
- Abort immediately —
git merge --abort(for merge) orgit rebase --abort(for rebase). Restore the working tree. - Surface, don't resolve. Output the branch name, the conflict file list (
git diff --name-only --diff-filter=Ucaptured BEFORE abort), and which strategy hit the conflict. - Stop the run. Do not attempt resolution — resolution never runs inside this skill. The step-2 surface is the conflict scope. Route it: if the consuming repo's harness names a conflict-resolution agent (its CLAUDE.md or agent roster — e.g. a builder/implementer agent), offer dispatching that agent with the conflict scope as the recommended next step; otherwise the user resolves manually or re-dispatches with a different strategy.
This rule applies to every branch in the queue. If branch A conflicts, abort A, surface, then continue with branches B, C — they're independent attempts. Don't skip them silently.
Protocol
1. Gather state (parallel)
git branch --show-current— identify current branchgit status— ensure working tree is clean (if dirty, abort the run, tell user to commit or stash)git branch -v— list all local branches with last commitgit log --oneline --graph --all --decorate -20— visual overview
2. Identify target branches
- If user specified branches: use those
- If on a feature branch with no args: absorb current branch into base
- If on base branch with no args: list all feature branches with divergence info; ask user to clarify which to absorb
3. For each candidate branch, gather intel (parallel per branch)
git log --oneline {base}..{branch}— commits aheadgit log --oneline {branch}..{base}— commits behind (base moved since branch)git diff --stat {base}...{branch}— files changed- Commit count
4. Recommend strategy per branch
| Condition | Strategy |
|---|---|
| 1 commit, clean apply | Rebase + fast-forward |
| 2-3 commits, single logical change | Rebase + fast-forward |
| Multi-commit, preserving context matters | Merge --no-ff |
| Branch has been pushed/shared | Merge --no-ff — don't rewrite shared history |
Conflict probability is NOT a reason to pick merge over rebase — both surface and abort identically per the conflict doctrine.
Present recommendations as a table. Wait for user confirmation before executing.
5. Execute sequentially
Order matters — earlier merges can shift the base for later ones.
For each branch in confirmed order:
Rebase strategy:
git rebase {base} {branch}
git checkout {base}
git merge {branch} --ff-only
Merge strategy:
git checkout {base}
git merge {branch} --no-ff
On conflict (either strategy): apply the Conflict Doctrine above. Capture conflict files, abort, surface, continue with the next branch.
6. Per-branch post-absorption
For successfully absorbed branches:
git log --oneline -3to confirm- Note: do NOT delete the branch. Branch deletion is the user's call after testing.
7. Final summary
Report to user:
- Branches absorbed cleanly (with strategy used per branch)
- Branches that hit conflicts (with file lists — the conflict scope for resolution)
- Branches skipped and why
- Final
git log --oneline --graph -10
8. Push (on confirmation)
After absorption, offer to push the updated base — never run it unannounced. Present:
- base branch → remote, commits ahead of remote
- which branches were folded in
Ask: "Push {base} now? (y / skip)" Push only on explicit yes. Skip by default if the user is silent. Never force push. Branches that hit conflicts are not pushed.
Rules
- Run inline — no subagent dispatch.
- Working directory is already correct;
cdis unnecessary. - Push the base only on explicit confirmation — present what will push, never force, never unannounced. (See §8.)
- Never resolve conflicts inline. Surface and stop. (See Conflict Doctrine above.)
- Never force-merge.
- Never delete branches.
- Dirty working tree: surface to user; staging or stashing is the user's call.
- If on a detached HEAD: stop, surface to user.
- Process branches one at a time within a queue — independence not assumed across the queue.