skills/disk-cleanup/SKILL.md
--- name: disk-cleanup description: Scan and clean macOS system caches, package manager caches, and app data to reclaim disk space. Surveys ~/Library/Caches, ~/.cache, Docker, npm/pip/uv/pnpm, Homebrew, browser caches, app updater caches, Claude Desktop, Xcode DerivedData, Playwright browsers, system logs, and ML model caches. Presents a size-sorted inventory table, offers four preset cleanup levels (safe / safe+docker / full / pick-individually), executes cleanup using `trash` (never rm), and r
npx skillsauth add glebis/claude-skills skills/disk-cleanupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Clean macOS caches and temporary files to reclaim disk space. Uses trash (never rm) so files can be recovered from Trash if needed.
The user may specify these inline or you can ask:
safe | docker | full | pick (default: ask the user)
safe — app updater caches, browser caches, package manager caches, logs, Playwright, old Claude bundles. No risk of breaking anythingdocker — everything in safe + docker system prune -afull — everything in docker + ML model caches (HuggingFace, Kokoro, etc.)pick — present each item individually for the user to accept/rejectskip: huggingface, docker)Run these in parallel to establish baseline:
# Overall disk usage
df -h / | tail -1 | awk '{print "Disk: "$2" total, "$4" available, "$5" used"}'
# Trash size
du -sh ~/.Trash 2>/dev/null
Measure all known cache locations. Run the size checks in parallel where possible. The categories below are organized by cleanup preset — safe includes the first group, docker adds Docker, full adds ML models.
These are always safe to clear — they're download caches, updater artifacts, or regenerable data.
| Category | Paths to check |
|---|---|
| App updater caches | ~/Library/Caches/ms-playwright, ~/Library/Caches/pencil-updater, ~/Library/Caches/superpowers, ~/Library/Caches/com.electron.wispr-flow.ShipIt, ~/Library/Caches/timebuzzer-updater, ~/Library/Caches/notion.id.ShipIt, ~/Library/Caches/@granolaelectron-updater |
| Browser caches | ~/Library/Caches/Google, ~/Library/Caches/company.thebrowser.Browser, ~/Library/Application Support/Google/Chrome/Default/Service Worker/CacheStorage, ~/Library/Application Support/Google/Chrome Beta/Default/Service Worker/CacheStorage |
| Package managers | npm: ~/.npm/_cacache; pip: ~/Library/Caches/pip; uv: ~/Library/Caches/uv, ~/.cache/uv; pnpm: ~/Library/pnpm; Homebrew: $(brew --cache) |
| Claude Desktop | ~/Library/Application Support/Claude/Cache, ~/Library/Application Support/Claude/Code Cache |
| System caches | ~/Library/Caches/SiriTTS, ~/Library/Caches/CloudKit, ~/Library/Caches/com.googlecode.iterm2, ~/Library/Caches/com.raycast.macos, ~/Library/Caches/com.raycast-x.macos, ~/Library/Caches/com.obsproject.obs-studio |
| Dev tool caches | ~/.cache/codex-runtimes, ~/Library/Caches/node-chromium, ~/Library/Developer/Xcode/DerivedData |
| Logs | ~/Library/Logs/* |
| Misc app caches | ~/Library/Caches/imageview, ~/Library/Caches/ort.pyke.io |
| Category | Action |
|---|---|
| Docker prune | docker system prune -a -f (removes unused images, containers, networks) |
| Docker logs | ~/Library/Containers/com.docker.docker/Data/log/* |
Docker prune can take a while — run it in the background.
| Category | Paths |
|---|---|
| HuggingFace | ~/.cache/huggingface |
| Kokoro ONNX | ~/.cache/kokoro-onnx |
| qmd embeddings | ~/.cache/qmd |
Warn the user before clearing ML models: "These models will need to be re-downloaded if you use them again."
Build a markdown table sorted by size (largest first), showing:
| Location | Size | Preset | Safe to clear? |
|---|---|---|---|
| Docker VM disk | 7.6 GB | docker | Yes (prune) |
| ~/.cache/huggingface | 2.2 GB | full | Re-download needed |
| ~/Library/Caches/Google | 1.4 GB | safe | Yes |
| ... | ... | ... | ... |
Also show:
Only show items that actually exist and are non-trivially sized (>10 MB).
If no preset was specified, ask the user which level they want using AskUserQuestion with these options:
Fill in the actual GB estimates from the survey.
For each item in the chosen preset (respecting skip list):
Package managers use their own clean commands:
npm cache clean --forcepip cache purgeuv cache cleanbrew cleanup -sDocker uses docker system prune -a -f (run in background — it can be slow)
Everything else uses trash <path> (never rm)
Claude Desktop VM bundles (~/Library/Application Support/Claude/vm_bundles): list contents first. Only trash bundles that aren't the currently active one. If there's only one bundle, skip it.
If dry-run is true, skip this phase and just report what would be cleaned.
After cleanup, measure Trash size. If auto-empty-trash is true, empty it via AppleScript:
osascript -e 'tell application "Finder" to empty the trash'
If false, remind the user: "X GB is now in Trash. Empty it to actually free the space."
Show before/after comparison:
## Cleanup Summary
- Before: X GB available (Y% used)
- After: X GB available (Y% used)
- Freed: X GB
If Docker prune ran in background, note that additional space may be freed once it completes.
Telegram's media cache (often 1-3 GB) can't be safely cleared from the terminal — the postbox directory contains the message database. Tell the user: "Telegram media cache can be cleared from Telegram Settings > Data and Storage > Storage Usage."
The categories above are based on a real macOS workstation as of mid-2026. Cache locations change as apps are installed/removed. At the start of Phase 2, also run a broad sweep to catch unlisted large items:
du -sh ~/Library/Caches/* 2>/dev/null | sort -rh | head -25
du -sh ~/.cache/* 2>/dev/null | sort -rh | head -15
If any item over 100 MB appears that isn't in the known categories, include it in the inventory with a note that it's an "uncategorized cache" and let the user decide.
development
This skill should be used when designing, running, validating, or auditing statistical experiments on personal or observational time-series data (health metrics, speech/text corpora, behavioral logs, diaries, n-of-1 self-tracking). It enforces pre-registration, exact permutation tests, FDR discipline, data-validation gates, adversarial code review, and cross-validation with external models. Triggers on "design an experiment", "test this hypothesis on my data", "is this correlation real", "audit these findings", "pre-register", "validate this dataset", or any n-of-1 / quantified-self analysis request.
development
Create Tufte-inspired data reports and infographic dashboards as standalone HTML files. Uses EB Garamond for text, Monaspace Argon for numbers, Chart.js for interactive charts, and inline SVG sparklines. Produces publication-quality reports with 2-column narrative+data layouts, status dashboards, scroll animations, and responsive mobile support. Use this skill whenever the user wants to create a data report, activity dashboard, infographic, personal analytics page, health tracker visualization, or any document that combines narrative text with interactive charts and tables. Also triggers for "make a report like Tufte", "create an infographic", "build a dashboard", "visualize my data", or requests for beautiful data-driven documents.
documentation
Cut a software release and maintain a tiered compatibility policy. Use when the user wants to release, ship a version, bump the version, tag a release, write a changelog, or update COMPATIBILITY. Config-driven via release.config.json; bumps version files, runs a readiness gate, updates COMPATIBILITY.md tiers and deprecations, tags (→ release workflow), and reports closed issues. Teaches the underlying standards as it runs.
development
Sync and manage bilingual (EN/RU) library content for agency-docs. Use when adding, updating, or reviewing library articles. Handles translation, sync checks, and Russian stylistic review.