arbiterforge/codearbiter-ca-cleanup
Finish an already-merged branch — classify the leftover artifacts, return to a fast-forwarded default checkout, and delete the merged local branch. Every discard confirmed per item; ancestry proven, never assumed.
npx skills add https://github.com/arbiterForge/codeArbiter --skill ca-cleanup
Your PR merged. You are still standing on the branch, with build output, worktree
residue, and scratch files around you. This command owns the ordinary walk back:
prove the branch actually landed, decide what the leftovers are, get to a clean
fast-forwarded default checkout, and drop the merged local branch.
It exists because nothing else owned it. /ca-standup is daily hygiene and
deliberately never touches the current branch or the default one;
/ca-chore takes docs, dependency bumps, and reverts. Issue #308 recorded
what the gap produced: a routine cleanup routed to /ca-chore, which
refused it, and then to /ca-override — a bypass invented to cover missing
coverage. This is that coverage.
The post-merge-cleanup skill (<plugin-root>/routines/post-merge-cleanup/SKILL.md),
which owns the ancestry proof, the artifact classification, and the per-item
confirmations.
/ca-pr (finishing-a-development-branch)owns the terminal decision; come back here after it lands.
/ca-standup.
/ca-status./ca-commit. This command nevercommits for you.
before anything is deleted. An unproven or unfetched ancestry STOPs — a branch
that only *looks* merged is not merged.
or superseded, and MUST NOT discard a unique or unclassifiable one without
explicit per-item confirmation naming it.
with --ff-only only — never a merge commit, never a rebase, never a reset
that discards work.
the default branch.
/ca-override. This is ordinary lifecycle work; if itcannot proceed, the reason is a stated gate, not a bypass.
Take arbiterforge/codearbiter-ca-cleanup from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.