Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/axeldelafosse/loop/clean-vmnpx skills add axeldelafosse/loop --skill clean-vmgit clone --depth 1 https://github.com/axeldelafosse/loopWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00045 | $0.00905 |
| Opus 5 | $0.00023 | $0.00452 |
| Sonnet 5 | $0.00009 | $0.00181 |
| Haiku 4.5 | $0.00005 | $0.00090 |
Grade A, and why
clean-vm scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- clean-vm — 100% identical, 0 lines differ
How it starts
The opening of the file, as written. The whole thing — 90 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Clean VM
Use this skill when repeated loop, Claude, or Codex runs leave the machine in a bad state.
Start with the bundled script. It does a dry run by default and only mutates the machine with --apply.
Default Workflow
- Run a dry run first:
python3 .agents/skills/clean-vm/scripts/clean_vm.py
- Review the report. The script only targets:
- loop manifests under
~/.loop/runs/<repoId> - direct
loop __bridge-mcp <runDir> <claude|codex>processes for stale runs - loop helper processes tied to stale run dirs
- Next.js and Storybook servers running inside stale loop worktrees
- loop-created worktrees from
git worktree list --porcelain
- Apply the cleanup once the plan looks safe:
python3 .agents/skills/clean-vm/scripts/clean_vm.py --apply
- Only close browser windows when the user explicitly wants browser cleanup:
python3 .agents/skills/clean-vm/scripts/clean_vm.py --apply --browsers
Safety Rules
- Always inspect the dry run before using
--apply. - Treat loop manifests in
~/.loop/runsas the source of truth for paired runs. - Keep any run whose manifest state is
submitted,working,reviewing, orinput-requiredand whosepidortmuxSessionis still live. - Never mass-kill
claude,codex, ornode. Kill only per PID after the script proves the process belongs to stale loop state. - Never remove the main worktree, the worktree containing the current
pwd, or a dirty worktree. - The script does not auto-force worktree removal. If a plain
git worktree removefails, it reports the failure and leaves escalation to a manual follow-up. - Treat any live tmux session as in use even if the manifest looks stale.
- Browser cleanup is opt-in and macOS-only.
What the Script Checks
- repo identity via
git rev-parse --git-common-dir, using the same repo id scheme as loop - run manifests under
~/.loop/runs - tmux liveness with exact session targets like
tmux has-session -t =<name>plus a live-pane check fromtmux list-panes - helper processes whose command line references a stale run dir
- direct loop bridge MCP server processes whose run dir is stale or orphaned
- dev servers matching
next dev,next-server,storybook, orstart-storybook - worktrees from
git worktree list --porcelain
What ships with it
2 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 90 lines · 45 tokens per session scan A 6b0bb4161aa6
clean-vm is a skill published in the GitHub repository axeldelafosse/loop (277 stars, last pushed 5mo ago), licensed MIT. It adds 45 tokens to every session and 905 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
sprite-atlas-builder
Sprite atlas pipeline. Use for sprites, tilesets, textures, asset sheets, extraction, curation, and QA.
codex-studio-setup
Set up a local Codex Studio checkout end to end from the welcome-screen handoff prompt.
trce-share
Share the current Claude Code session with trce after an explicit user request.
imagegen
Generate or edit raster images when the task benefits from AI-created bitmap visuals such as photos, illustrations, textures, sprites, mockups, or transparent-background cutouts. Use when Codex should create a brand-new image, transform an existing image, or derive visual variants from references, and the output…
react-doctor
Use when finishing a feature, fixing a bug, before committing React code, or when the user types /doctor, asks to scan, triage, or clean up React diagnostics. Covers lint, accessibility, bundle size, architecture. Includes a regression check and a full local-triage workflow that fetches the canonical playbook.
challenge
Use before a root-cause, done/verified claim, irreversible action, or 2nd-time fix reaches the owner (APEX or plain conversation); also fires at every eLicit/Verify gate. Not for code correctness (use sniper).