git-branch-consolidatelisted
Install: claude install-skill austinmao/feature-fix-swarm
# Git Branch Consolidate
## Host dispatch contract
- Codex: `$skill`, Codex collaboration roles, and GPT-5.6 tiers.
- Claude: `/skill`, Agent/Skill tools, and Claude aliases.
- A bare `/skill` in this shared source denotes the Claude form; Codex dispatches the same named skill as `$skill`.
Answers two questions with evidence, never recall:
1. **What is actually unfinished?** Per branch: does its content already live in
the base branch, what does it still owe, does it have tests, and is its
spec/plan/tasks trail complete.
2. **What is the shortest ordered path to one `origin/main`?** Merge set, cleanup
set, and the testing gaps that must close first.
Read-only toward every branch. Never checks out, fetches, merges, or deletes —
it emits the commands and stops. Execution of the deletion set belongs to
`/git-branch-cleanup`, which owns the approval flow.
## Step 1 — Collect (deterministic, ~30s)
```bash
python3 skills/git-branch-consolidate/scripts/collect-estate.py \
--repo "$(git rev-parse --show-toplevel)" --base main \
> "${TMPDIR:-/tmp}/estate-$(date -u +%Y%m%d-%H%M).json"
```
Per branch: `landed` · `residual_files` / `residual_code` · `src_files` /
`test_files` / `test_gap` · `spec` artifacts + `tasks.md` counts · `.planning`
ROADMAP+STATE · worktree dirt · PR state · `disposition`.
**`landed` is the load-bearing field.** `git merge-base --is-ancestor` alone
reports every squash-merged branch as unmerged — on a repo with a squash-merge
convention this