disk-cleanup — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited disk-cleanup (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Free up disk space in three phases — Identify → Propose → Execute — without losing anything that matters. The whole point of this skill is to be aggressive about regenerable junk and careful about real data. Never delete in bulk; categorize first, confirm anything that isn't pure cache, and finish by realizing the space (snapshots — see Phase 3).
$ARGUMENTS selects what to clean. With no argument, run the full all flow. If the argument is help, list, scopes, ?, or --help, print this table and stop — do not scan:
| Scope | Cleans |
|---|---|
all (default) | everything below — full identify → propose → execute |
caches | ~/Library/Caches, ~/.cache, package-manager caches |
docker | unused images, build cache, dangling volumes |
node | nvm Node versions + npm / yarn / bun caches |
xcode | DerivedData, iOS DeviceSupport, simulators, old runtimes |
android | SDK (NDK / system-images / build-tools), AVDs, Gradle caches |
ollama | local LLM models |
jetbrains | old per-version IDE config + caches |
vms | Parallels / VirtualBox / Vagrant |
apps | biggest apps, orphaned app data, full uninstalls |
snapshots | thin Time Machine local snapshots (realize freed space) |
For a named scope, run the identify pass for just that area, then propose and execute scoped to it. For an unrecognized argument, show this table and ask which they meant rather than guessing.
/ is the sealed read-only system volume and always looks~full/empty. The number that matters is the Data volume: df -h /System/Volumes/Data.
snapshot, macOS keeps the bytes until the snapshot is purged. So you can delete 100 GB and watch free space not move — or even drop, if something else downloaded in the meantime. Always thin snapshots LAST (scripts/thin-snapshots.sh) and re-measure. This is usually the single biggest win.
was described — "leftover Parallels folder" turns out to be a 36 GB Windows VM with the user's files inside — stop and surface it instead of proceeding. You didn't create it; treat it as theirs.
cache can go freely. Data is irreversible — get explicit buy-in.
brew cleanup, docker system prune, npm cache clean,uv cache clean, xcrun simctl delete, ollama rm — they remove the right things and keep their own bookkeeping consistent. Raw rm is the fallback, not the default.
background download?) rather than claiming success.
Run the scan scripts. They make no changes.
bash scripts/scan.sh # real free space, snapshot count, home + known targets, big apps
bash scripts/find-orphan-app-data.sh # ~/Library data for apps that are no longer installedThen drill into whatever's big and ambiguous with du -shx <dir> / du -hx -d 1 <dir> | sort -rh. For multi-GB items you don't recognize, look inside before proposing deletion (principle 3).
Reach for references/cleanup-targets.md — a catalog of every common target with its location, safety tier, the exact cleaner command, and what re-downloading/rebuilding costs. Use it to interpret the scan and to copy the right command in Phase 3.
Group findings into safety tiers and present a compact table (size · what it is · tier · recovery cost).
versions, dangling Docker images/build cache, stale snapshots. Delete freely; you may batch these.
volumes (dev databases), Ollama models, full app uninstalls. Recreatable, but the user should choose scope. Use AskUserQuestion with clear options (orphaned-only / latest-kept / everything).
whose disk may hold files, crypto-wallet data, messaging history (Signal/WhatsApp), Postman collections, screenshots/recordings, user media, anything irreplaceable. Surface what's inside; if in doubt, recommend keeping.
Rules for proposing:
versions check .nvmrc files; before pruning NDK/build-tools check what projects pin; keep the default and the newest of each major line.
but verify with mdfind -name "<App>.app" before deleting — names don't always map cleanly.
Run the approved deletions, preferring the native cleaner for each target (full command list in references/cleanup-targets.md). A few that matter:
brew cleanup -s # Homebrew downloads
npm cache clean --force && rm -rf ~/.npm/_npx # npm cache + npx installs
uv cache clean; yarn cache clean # uv / Yarn
docker system prune -a -f && docker volume prune -a -f # images+cache, THEN named volumes (Tier 2 — confirm)
xcrun simctl delete unavailable # simulators for runtimes you no longer have
xcrun simctl runtime delete <id> # old iOS runtimes (keep the current one)
ollama rm <model> # specific local LLM modelsThen the parts with walls and the finale:
current + latest you confirmed keeping.
/Applications → the user runs sudo rm -rf "/Applications/<App>.app"(suggest they paste it with a leading ! so it runs in-session).
** are TCC-protected → even sudo` fails without Full Disk Access onthe terminal. Offer Finder (drag to Trash — has the entitlement) or granting FDA then re-running (FDA only applies after the terminal is fully quit and reopened).
bash scripts/thin-snapshots.shReport before/after free space on the Data volume. If it didn't move as expected, investigate (lingering snapshots, a background download like a media/cloud sync) — don't claim a win you can't see.
For a complete, end-to-end app uninstall (e.g. Microsoft Office) including system daemons/helpers and the FDA-gated containers, see the "Full app uninstall" section of references/cleanup-targets.md.
com.apple.* system folders, the Office shared containers while other MS apps remain,or ~/Library/Containers/com.microsoft.VSCode-style data for apps the user is keeping.
bash (the bundled scripts already do).commit.gpgsign-style settings to "make deletion easier."~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.