← ClaudeAtlas

post-merge-cleanuplisted

Finish an already-merged branch. Proves the branch is contained in the fetched default, classifies leftover artifacts as unique / redundant / superseded, returns to a clean --ff-only default checkout, and deletes the merged local branch — every discard confirmed per item. Routed to by $ca-cleanup.
arbiterForge/codeArbiter · ★ 141 · AI & Automation · score 78
Install: claude install-skill arbiterForge/codeArbiter
# post-merge-cleanup The walk back from a merged PR. Routed to by `$ca-cleanup`. The work has landed on the default branch. What is left is local: the branch you are standing on, and whatever the run left in the tree. This skill returns you to a clean, fast-forwarded default checkout without losing anything you have not explicitly agreed to lose. **It is ordinary lifecycle work and never needs `$ca-override`.** When it cannot proceed, it names the gate that stopped it. Issue #308 recorded the alternative: with no owner for this transition, the routing loop reached for `$ca-chore`, then for `$ca-override` — a bypass manufactured to cover a coverage hole. ## Pre-flight Read this, or STOP and surface the gap — never guess the default-branch name: - `<project-root>/.codearbiter/CONTEXT.md` — the default-branch name. If HEAD is already the default branch, there is no transition to make. Report the dirty state read-only and exit; branch pruning across *other* branches belongs to `$ca-standup`. ## Phase 1 — Prove the merge · gate: BLOCK A branch that looks merged is not merged. Establish it against the network, not against a stale local ref. This repo squash-merges by default, so SHA-ancestry alone is the wrong instrument for most landings: it holds for a fast-forward or a merge-commit landing, but a squash merge writes a new commit with no SHA lineage back to the branch, and `--is-ancestor` will report non-zero for a branch that landed cleanly. The gate is **content-contai