Fleet Audit — Incan Worktrees
SkillDev toolsReport which local git worktrees under tmp/ are safe to close, need a human look, or are explicitly protected. Use when the user says /fleet-audit, asks what worktrees can be cleaned up, or wants a status check across all Ralph-loop/spike worktrees before running closeout on any of them.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Fleet Audit — Incan Worktrees skill
What this skill tells your AI
The instructions your AI receives, as published by encero-systems/incan in .agents/skills/fleet-audit/SKILL.md and read by ahel’s review.
Purpose
/fleet-audit gives a read-only, fleet-wide status report across every worktree under the shared tmp/ root — something closeout deliberately does not do, since closeout only acts on one PR/branch at a time. This skill never removes, moves, or modifies anything. It exists to tell you (or an orchestrator deciding what to hand to closeout) what's actually going on before anyone touches a worktree.
When to use this vs closeout
- Use
fleet-auditfirst, to see the whole picture. - Use
closeoutsecond, worktree by worktree, only on thingsfleet-auditreported assafe-to-close— and still verify PR-merged status yourself percloseout's own rules before removing anything. - Never use
fleet-audit's output as authorization to force-remove anything. It classifies; it does not approve deletion.
How it works
Runs ~/Development/encero/.agents-state/scripts/fleet_audit.py, which:
- Lists every worktree via
git worktree list --porcelain. - Skips (reports as
protected) any worktree with a.agents/state/KEEPmarker file — that marker means a human already decided this one is not up for evaluation, full stop. - For everything else, checks: branch ancestry against
origin/main, matching GitHub PR state viagh pr list(catches squash/rebase merges the ancestor check alone would miss), uncommitted tracked file edits specifically (not just untracked build junk), and Ralph-loop slice status via the same parsing Codex's session hook already uses (~/.codex/hooks/ralph_state_impl.py'ssummarize_state). - Classifies each as
protected,safe-to-close, orneeds-review, with a one-line reason.
Workflow
-
Run:
python3 ~/Development/encero/.agents-state/scripts/fleet_audit.py --repo-root . --repo-slug encero-systems/incanIf that script or the private workspace state root (
~/Development/encero/.agents-state/) doesn't exist on this machine, say so plainly and stop — do not attempt to reimplement the logic inline. -
Present the report grouped by status, exactly as the script outputs it. Do not editorialize the
protectedgroup — those are closed questions. -
For
safe-to-closeentries, note that the next step is a human-approvedcloseoutrun per worktree, not automatic removal. -
For
needs-reviewentries, summarize the reason field per worktree so the user can decide quickly (tracked edits vs. non-terminal loop state vs. no signal at all) rather than re-reading the whole report. -
If asked to mark something as protected on the spot, write a one-line reason to
<worktree>/.agents/state/KEEP(create.agents/state/first if it doesn't exist) — do not mark something protected without a reason.
Output format
## Fleet Audit — <date>
### Protected (N)
- <worktree>: <reason>
### Safe to close (N)
- <worktree> (branch): <reason> — run /closeout to remove
### Needs review (N)
- <worktree> (branch): <reason>
Signals
- GitHub stars
- 228
- Forks
- 70
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
fleet-audit- Source
- github.com/encero-systems/incan