Problem
tree-batch exists, but caches/build/git/all are single-repo only. Invoking /repo-hygiene:clean ALL from a non-repo cwd over an 82-repo ghq fleet yields "Current branch: unknown" precomputed context and no fleet path; the session had to hand-roll batch dry-run/apply scripts around the per-repo scripts.
Auto-mode classifier reinforces this: it blocked a hand-rolled bulk rm pipeline even after explicit user confirmation, while the sanctioned skill-script apply passed — batch modes must live IN the skill as sanctioned scripts, not ad-hoc session scripts.
Requirements observed in the field
- Reuse tree-batch plumbing:
--repos-from (ghq output), skip list, per-repo outcome/summary.
- Path normalization:
ghq list -p emits backslash paths that break xargs (eaten escapes); git check-ignore rejects MSYS /d/… forms — batch layer must normalize once, centrally.
- Fleet snapshot races live sessions: 3 repos/worktrees appeared mid-sweep. Batch apply must target the dry-run-gated set exactly, tolerating appeared/vanished repos.
- Dedupe shared object stores: linked worktrees share the main clone's objects;
git gc/prune should run once per unique --git-common-dir, not per worktree.
Problem
tree-batchexists, butcaches/build/git/allare single-repo only. Invoking/repo-hygiene:clean ALLfrom a non-repo cwd over an 82-repo ghq fleet yields "Current branch: unknown" precomputed context and no fleet path; the session had to hand-roll batch dry-run/apply scripts around the per-repo scripts.Auto-mode classifier reinforces this: it blocked a hand-rolled bulk
rmpipeline even after explicit user confirmation, while the sanctioned skill-script apply passed — batch modes must live IN the skill as sanctioned scripts, not ad-hoc session scripts.Requirements observed in the field
--repos-from(ghq output), skip list, per-repo outcome/summary.ghq list -pemits backslash paths that breakxargs(eaten escapes);git check-ignorerejects MSYS/d/…forms — batch layer must normalize once, centrally.git gc/prune should run once per unique--git-common-dir, not per worktree.