macos-cleaner
npx skills add https://github.com/daymade/claude-code-skills --skill macos-cleaner
Agent 安装分布
Skill 文档
macOS Cleaner
Overview
Intelligently analyze macOS disk usage and provide actionable cleanup recommendations to reclaim storage space. This skill follows a safety-first philosophy: analyze thoroughly, present clear findings, and require explicit user confirmation before executing any deletions.
Target users: Users with basic technical knowledge who understand file systems but need guidance on what’s safe to delete on macOS.
Core Principles
- Safety First, Never Bypass: NEVER execute dangerous commands (
rm -rf,mo clean, etc.) without explicit user confirmation. No shortcuts, no workarounds. - Value Over Vanity: Your goal is NOT to maximize cleaned space. Your goal is to identify what is truly useless vs valuable cache. Clearing 50GB of useful cache just to show a big number is harmful.
- Network Environment Awareness: Many users (especially in China) have slow/unreliable internet. Re-downloading caches can take hours. A cache that saves 30 minutes of download time is worth keeping.
- Impact Analysis Required: Every cleanup recommendation MUST include “what happens if deleted” column. Never just list items without explaining consequences.
- Patience Over Speed: Disk scans can take 5-10 minutes. NEVER interrupt or skip slow operations. Report progress to user regularly.
- User Executes Cleanup: After analysis, provide the cleanup command for the user to run themselves. Do NOT auto-execute cleanup.
- Conservative Defaults: When in doubt, don’t delete. Err on the side of caution.
ABSOLUTE PROHIBITIONS:
- â NEVER run
rm -rfon user directories automatically - â NEVER run
mo cleanwithout dry-run preview first - â NEVER use
docker volume prune -fordocker system prune -a --volumes - â NEVER skip analysis steps to save time
- â NEVER append
--helpto Mole commands (exceptmo --help) - â NEVER recommend deleting useful caches just to inflate cleanup numbers
Workflow Decision Tree
User reports disk space issues
â
Quick Diagnosis
â
ââââââââ´âââââââ
â â
Immediate Deep Analysis
Cleanup (continue below)
â â
ââââââââ¬âââââââ
â
Present Findings
â
User Confirms
â
Execute Cleanup
â
Verify Results
Step 1: Quick Diagnosis with Mole
Primary tool: Use Mole for disk analysis. It provides comprehensive, categorized results.
1.1 Pre-flight Checks
# Check Mole installation and version
which mo && mo --version
# If not installed
brew install tw93/tap/mole
# Check for updates (Mole updates frequently)
brew info tw93/tap/mole | head -5
# Upgrade if outdated
brew upgrade tw93/tap/mole
1.2 Choose Analysis Method
IMPORTANT: Use mo analyze as the primary analysis tool, NOT mo clean --dry-run.
| Command | Purpose | Use When |
|---|---|---|
mo analyze |
Interactive disk usage explorer (TUI tree view) | PRIMARY: Understanding what’s consuming space |
mo clean --dry-run |
Preview cleanup categories | SECONDARY: Only after mo analyze to see cleanup preview |
Why prefer mo analyze:
- Dedicated disk analysis tool with interactive tree navigation
- Allows drilling down into specific directories
- Shows actual disk usage breakdown, not just cleanup categories
- More informative for understanding storage consumption
1.3 Run Analysis via tmux
IMPORTANT: Mole requires TTY. Always use tmux from Claude Code.
CRITICAL TIMING NOTE: Home directory scans are SLOW (5-10 minutes or longer for large directories). Inform user upfront and wait patiently.
# Create tmux session
tmux new-session -d -s mole -x 120 -y 40
# Run disk analysis (PRIMARY tool - interactive TUI)
tmux send-keys -t mole 'mo analyze' Enter
# Wait for scan - BE PATIENT!
# Home directory scanning typically takes 5-10 minutes
# Report progress to user regularly
sleep 60 && tmux capture-pane -t mole -p
# Navigate the TUI with arrow keys
tmux send-keys -t mole Down # Move to next item
tmux send-keys -t mole Enter # Expand/select item
tmux send-keys -t mole 'q' # Quit when done
Alternative: Cleanup preview (use AFTER mo analyze)
# Run dry-run preview (SAFE - no deletion)
tmux send-keys -t mole 'mo clean --dry-run' Enter
# Wait for scan (report progress to user every 30 seconds)
# Be patient! Large directories take 5-10 minutes
sleep 30 && tmux capture-pane -t mole -p
1.4 Progress Reporting
Report scan progress to user regularly:
ð Disk Analysis in Progress...
âââââââââââââââââââââââââââââââ
â±ï¸ Elapsed: 2 minutes
Current status:
â
Applications: 49.5 GB (complete)
â
System Library: 10.3 GB (complete)
â³ Home: scanning... (this may take 5-10 minutes)
â³ App Library: pending
I'm waiting patiently for the scan to complete.
Will report again in 30 seconds...
1.5 Present Final Findings
After scan completes, present structured results:
ð Disk Space Analysis (via Mole)
âââââââââââââââââââââââââââââââââ
Free space: 27 GB
ð§¹ Recoverable Space (dry-run preview):
⤠User Essentials
⢠User app cache: 16.67 GB
⢠User app logs: 102.3 MB
⢠Trash: 642.9 MB
⤠Browser Caches
⢠Chrome cache: 1.90 GB
⢠Safari cache: 4 KB
⤠Developer Tools
⢠uv cache: 9.96 GB
⢠npm cache: (detected)
⢠Docker cache: (detected)
⢠Homebrew cache: (detected)
âââââââââââââââââââââââââââââââââ
Total recoverable: ~30 GB
â ï¸ This was a dry-run preview. No files were deleted.
Step 2: Deep Analysis Categories
Scan the following categories systematically. Reference references/cleanup_targets.md for detailed explanations.
Category 1: System & Application Caches
Locations to analyze:
~/Library/Caches/*– User application caches/Library/Caches/*– System-wide caches (requires sudo)~/Library/Logs/*– Application logs/var/log/*– System logs (requires sudo)
Analysis script:
scripts/analyze_caches.py --user-only
Safety level: ð¢ Generally safe to delete (apps regenerate caches)
Exceptions to preserve:
- Browser caches while browser is running
- IDE caches (may slow down next startup)
- Package manager caches (Homebrew, pip, npm)
Category 2: Application Remnants
Locations to analyze:
~/Library/Application Support/*– App data~/Library/Preferences/*– Preference files~/Library/Containers/*– Sandboxed app data
Analysis approach:
- List installed applications in
/Applications - Cross-reference with
~/Library/Application Support - Identify orphaned folders (app uninstalled but data remains)
Analysis script:
scripts/find_app_remnants.py
Safety level: ð¡ Caution required
- â Safe: Folders for clearly uninstalled apps
- â ï¸ Check first: Folders for apps you rarely use
- â Keep: Active application data
Category 3: Large Files & Duplicates
Analysis script:
scripts/analyze_large_files.py --threshold 100MB --path ~
Find duplicates (optional, resource-intensive):
# Use fdupes if installed
if command -v fdupes &> /dev/null; then
fdupes -r ~/Documents ~/Downloads
fi
Present findings:
ð¦ Large Files (>100MB):
ââââââââââââââââââââââââ
1. movie.mp4 4.2 GB ~/Downloads
2. dataset.csv 1.8 GB ~/Documents/data
3. old_backup.zip 1.5 GB ~/Desktop
...
ð Duplicate Files:
- screenshot.png (3 copies) 15 MB each
- document_v1.docx (2 copies) 8 MB each
Safety level: ð¡ User judgment required
Category 4: Development Environment Cleanup
Targets:
- Docker: images, containers, volumes, build cache
- Homebrew: cache, old versions
- Node.js:
node_modules, npm cache - Python: pip cache,
__pycache__, venv - Git:
.gitfolders in archived projects
Analysis script:
scripts/analyze_dev_env.py
Example findings:
ð³ Docker Resources:
- Unused images: 12 GB
- Stopped containers: 2 GB
- Build cache: 8 GB
- Orphaned volumes: 3 GB
Total potential: 25 GB
ð¦ Package Managers:
- Homebrew cache: 5 GB
- npm cache: 3 GB
- pip cache: 1 GB
Total potential: 9 GB
ðï¸ Old Projects:
- archived-project-2022/.git 500 MB
- old-prototype/.git 300 MB
Cleanup commands (require confirmation):
# Homebrew cleanup (safe)
brew cleanup -s
# npm _npx only (safe - temporary packages)
rm -rf ~/.npm/_npx
# pip cache (use with caution)
pip cache purge
Docker cleanup – SPECIAL HANDLING REQUIRED:
â ï¸ NEVER use these commands:
# â DANGEROUS - deletes ALL volumes without confirmation
docker volume prune -f
docker system prune -a --volumes
â Correct approach – per-volume confirmation:
# 1. List all volumes
docker volume ls
# 2. Identify which projects each volume belongs to
docker volume inspect <volume_name>
# 3. Ask user to confirm EACH project they want to delete
# Example: "Do you want to delete all volumes for 'ragflow' project?"
# 4. Delete specific volumes only after confirmation
docker volume rm ragflow_mysql_data ragflow_redis_data
Safety level: ð¢ Homebrew/npm cleanup, ð´ Docker volumes require per-project confirmation
Step 3: Integration with Mole
Mole (https://github.com/tw93/Mole) is a command-line interface (CLI) tool for comprehensive macOS cleanup. It provides interactive terminal-based analysis and cleanup for caches, logs, developer tools, and more.
CRITICAL REQUIREMENTS:
- TTY Environment: Mole requires a TTY for interactive commands. Use
tmuxwhen running from Claude Code or scripts. - Version Check: Always verify Mole is up-to-date before use.
- Safe Help Command: Only
mo --helpis safe. Do NOT append--helpto other commands.
Installation check and upgrade:
# Check if installed and get version
which mo && mo --version
# If not installed
brew install tw93/tap/mole
# Check for updates
brew info tw93/tap/mole | head -5
# Upgrade if needed
brew upgrade tw93/tap/mole
Using Mole with tmux (REQUIRED for Claude Code):
# Create tmux session for TTY environment
tmux new-session -d -s mole -x 120 -y 40
# Run analysis (safe, read-only)
tmux send-keys -t mole 'mo analyze' Enter
# Wait for scan (be patient - can take 5-10 minutes for large directories)
sleep 60
# Capture results
tmux capture-pane -t mole -p
# Cleanup when done
tmux kill-session -t mole
Available commands (from mo --help):
| Command | Safety | Description |
|---|---|---|
mo --help |
â Safe | View all commands (ONLY safe help) |
mo analyze |
â Safe | Disk usage explorer (read-only) |
mo status |
â Safe | System health monitor |
mo clean --dry-run |
â Safe | Preview cleanup (no deletion) |
mo clean |
â ï¸ DANGEROUS | Actually deletes files |
mo purge |
â ï¸ DANGEROUS | Remove project artifacts |
mo uninstall |
â ï¸ DANGEROUS | Remove applications |
Reference guide:
See references/mole_integration.md for detailed tmux workflow and troubleshooting.
Multi-Layer Deep Exploration with Mole
CRITICAL: For comprehensive analysis, you MUST perform multi-layer exploration, not just top-level scans. This section documents the proven workflow for navigating Mole’s TUI.
Navigation Commands
# Create session
tmux new-session -d -s mole -x 120 -y 40
# Start analysis
tmux send-keys -t mole 'mo analyze' Enter
# Wait for initial scan
sleep 8 && tmux capture-pane -t mole -p
# Navigation keys (send via tmux)
tmux send-keys -t mole Enter # Enter/expand selected directory
tmux send-keys -t mole Left # Go back to parent directory
tmux send-keys -t mole Down # Move to next item
tmux send-keys -t mole Up # Move to previous item
tmux send-keys -t mole 'q' # Quit TUI
# Capture current view
tmux capture-pane -t mole -p
Multi-Layer Exploration Workflow
Step 1: Top-level overview
# Start mo analyze, wait for initial menu
tmux send-keys -t mole 'mo analyze' Enter
sleep 8 && tmux capture-pane -t mole -p
# Example output:
# 1. Home 289.4 GB (58.5%)
# 2. App Library 145.2 GB (29.4%)
# 3. Applications 49.5 GB (10.0%)
# 4. System Library 10.3 GB (2.1%)
Step 2: Enter largest directory (Home)
tmux send-keys -t mole Enter
sleep 10 && tmux capture-pane -t mole -p
# Example output:
# 1. Library 144.4 GB (49.9%)
# 2. Workspace 52.0 GB (18.0%)
# 3. .cache 19.3 GB (6.7%)
# 4. Applications 17.0 GB (5.9%)
# ...
Step 3: Drill into specific directories
# Go to .cache (3rd item: Down Down Enter)
tmux send-keys -t mole Down Down Enter
sleep 5 && tmux capture-pane -t mole -p
# Example output:
# 1. uv 10.3 GB (55.6%)
# 2. modelscope 5.5 GB (29.5%)
# 3. huggingface 887.8 MB (4.7%)
Step 4: Navigate back and explore another branch
# Go back to parent
tmux send-keys -t mole Left
sleep 2
# Navigate to different directory
tmux send-keys -t mole Down Down Down Down Enter # Go to .npm
sleep 5 && tmux capture-pane -t mole -p
Step 5: Deep dive into Library
# Back to Home, then into Library
tmux send-keys -t mole Left
tmux send-keys -t mole Up Up Up Up Up Up Enter # Go to Library
sleep 10 && tmux capture-pane -t mole -p
# Example output:
# 1. Application Support 37.1 GB
# 2. Containers 35.4 GB
# 3. Developer 17.8 GB â Xcode is here
# 4. Caches 8.2 GB
Recommended Exploration Path
For comprehensive analysis, follow this exploration tree:
mo analyze
âââ Home (Enter)
â âââ Library (Enter)
â â âââ Developer (Enter) â Xcode/DerivedData, iOS DeviceSupport
â â âââ Caches (Enter) â Playwright, JetBrains, etc.
â â âââ Application Support (Enter) â App data
â âââ .cache (Enter) â uv, modelscope, huggingface
â âââ .npm (Enter) â _cacache, _npx
â âââ Downloads (Enter) â Large files to review
â âââ .Trash (Enter) â Confirm trash contents
â âââ miniconda3/other dev tools (Enter) â Check last used time
âââ App Library â Usually overlaps with ~/Library
âââ Applications â Installed apps
Time Expectations
| Directory | Scan Time | Notes |
|---|---|---|
| Top-level menu | 5-8 seconds | Fast |
| Home directory | 5-10 minutes | Large, be patient |
| ~/Library | 3-5 minutes | Many small files |
| Subdirectories | 2-30 seconds | Varies by size |
Example Complete Session
# 1. Create session
tmux new-session -d -s mole -x 120 -y 40
# 2. Start analysis and get overview
tmux send-keys -t mole 'mo analyze' Enter
sleep 8 && tmux capture-pane -t mole -p
# 3. Enter Home
tmux send-keys -t mole Enter
sleep 10 && tmux capture-pane -t mole -p
# 4. Enter .cache to see dev caches
tmux send-keys -t mole Down Down Enter
sleep 5 && tmux capture-pane -t mole -p
# 5. Back to Home, then to .npm
tmux send-keys -t mole Left
sleep 2
tmux send-keys -t mole Down Down Down Down Enter
sleep 5 && tmux capture-pane -t mole -p
# 6. Back to Home, enter Library
tmux send-keys -t mole Left
sleep 2
tmux send-keys -t mole Up Up Up Up Up Up Enter
sleep 10 && tmux capture-pane -t mole -p
# 7. Enter Developer to see Xcode
tmux send-keys -t mole Down Down Down Enter
sleep 5 && tmux capture-pane -t mole -p
# 8. Enter Xcode
tmux send-keys -t mole Enter
sleep 5 && tmux capture-pane -t mole -p
# 9. Enter DerivedData to see projects
tmux send-keys -t mole Enter
sleep 5 && tmux capture-pane -t mole -p
# 10. Cleanup
tmux kill-session -t mole
Key Insights from Exploration
After multi-layer exploration, you will discover:
- What projects are using DerivedData – specific project names
- Which caches are actually large – uv vs npm vs others
- Age of files – Mole shows “>3mo”, “>7mo”, “>1yr” markers
- Specific volumes and their purposes – Docker project data
- Downloads that can be cleaned – old dmgs, duplicate files
Anti-Patterns: What NOT to Delete
CRITICAL: The following items are often suggested for cleanup but should NOT be deleted in most cases. They provide significant value that outweighs the space they consume.
Items to KEEP (Anti-Patterns)
| Item | Size | Why NOT to Delete | Real Impact of Deletion |
|---|---|---|---|
| Xcode DerivedData | 10+ GB | Build cache saves 10-30 min per full rebuild | Next build takes 10-30 minutes longer |
| npm _cacache | 5+ GB | Downloaded packages cached locally | npm install redownloads everything (30min-2hr in China) |
| ~/.cache/uv | 10+ GB | Python package cache | Every Python project reinstalls deps from PyPI |
| Playwright browsers | 3-4 GB | Browser binaries for automation testing | Redownload 2GB+ each time (30min-1hr) |
| iOS DeviceSupport | 2-3 GB | Required for device debugging | Redownload from Apple when connecting device |
| Docker stopped containers | <500 MB | May restart anytime with docker start |
Lose container state, need to recreate |
| ~/.cache/huggingface | varies | AI model cache | Redownload large models (hours) |
| ~/.cache/modelscope | varies | AI model cache (China) | Same as above |
| JetBrains caches | 1+ GB | IDE indexing and caches | IDE takes 5-10 min to re-index |
Why This Matters
The vanity trap: Showing “Cleaned 50GB!” feels good but:
- User spends next 2 hours redownloading npm packages
- Next Xcode build takes 30 minutes instead of 30 seconds
- AI project fails because models need redownload
The right mindset: “I found 50GB of caches. Here’s why most of them are actually valuable and should be kept…”
What IS Actually Safe to Delete
| Item | Why Safe | Impact |
|---|---|---|
| Trash | User already deleted these files | None – user’s decision |
| Homebrew old versions | Replaced by newer versions | Rare: can’t rollback to old version |
| npm _npx | Temporary npx executions | Minor: npx re-downloads on next use |
| Orphaned app remnants | App already uninstalled | None – app doesn’t exist |
| Specific unused Docker volumes | Projects confirmed abandoned | None – if truly abandoned |
Report Format Requirements
Every cleanup report MUST follow this format with impact analysis:
## Disk Analysis Report
### Classification Legend
| Symbol | Meaning |
|--------|---------|
| ð¢ | **Absolutely Safe** - No negative impact, truly unused |
| ð¡ | **Trade-off Required** - Useful cache, deletion has cost |
| ð´ | **Do Not Delete** - Contains valuable data or actively used |
### Findings
| Item | Size | Classification | What It Is | Impact If Deleted |
|------|------|----------------|------------|-------------------|
| Trash | 643 MB | ð¢ | Files you deleted | None |
| npm _npx | 2.1 GB | ð¢ | Temp npx packages | Minor redownload |
| npm _cacache | 5 GB | ð¡ | Package cache | 30min-2hr redownload |
| DerivedData | 10 GB | ð¡ | Xcode build cache | 10-30min rebuild |
| Docker volumes | 11 GB | ð´ | Project databases | **DATA LOSS** |
### Recommendation
Only items marked ð¢ are recommended for cleanup.
Items marked ð¡ require your judgment based on usage patterns.
Items marked ð´ require explicit confirmation per-item.
High-Quality Report Template
After multi-layer exploration, present findings using this proven template:
## ð ç£çç©ºé´æ·±åº¦åææ¥å
**åææ¥æ**: YYYY-MM-DD
**使ç¨å·¥å
·**: Mole CLI + å¤å±ç®å½æ¢ç´¢
**åæåå**: å®å
¨ç¬¬ä¸ï¼ä»·å¼ä¼äºèè£
---
### æ»è§
| åºå | æ»å ç¨ | å
³é®åç° |
|------|--------|----------|
| **Home** | XXX GB | Libraryå ä¸å(XXX GB) |
| **App Library** | XXX GB | ä¸Home/Libraryéå ç»è®¡ |
| **Applications** | XXX GB | åºç¨æ¬ä½ |
---
### ð¢ ç»å¯¹å®å
¨å¯å é¤ (约 X.X GB)
| é¡¹ç® | å¤§å° | ä½ç½® | å é¤åå½±å | æ¸
çå½ä»¤ |
|------|------|------|-----------|---------|
| **åºçº¸ç¯** | XXX MB | ~/.Trash | æ - ä½ å·²å³å®å é¤çæä»¶ | æ¸
空åºçº¸ç¯ |
| **npm _npx** | X.X GB | ~/.npm/_npx | 䏿¬¡ npx å½ä»¤éæ°ä¸è½½ | `rm -rf ~/.npm/_npx` |
| **Homebrew æ§çæ¬** | XX MB | /opt/homebrew | æ - 已被æ°çæ¬æ¿ä»£ | `brew cleanup --prune=0` |
**åºçº¸ç¯å
容é¢è§**:
- [ååºä¸»è¦æä»¶]
---
### ð¡ éè¦ä½ 确认ç项ç®
#### 1. [项ç®å] (X.X GB) - [ç¶ææè¿°]
| åç®å½ | å¤§å° | æåä½¿ç¨ |
|--------|------|----------|
| [åç®å½1] | X.X GB | >X个æ |
| [åç®å½2] | X.X GB | >X个æ |
**é®é¢**: [éè¦ç¨æ·åççé®é¢]
---
#### 2. Downloads ä¸çæ§æä»¶ (X.X GB)
| æä»¶/ç®å½ | å¤§å° | å¹´é¾ | 建议 |
|-----------|------|------|------|
| [æä»¶1] | X.X GB | - | [建议] |
| [æä»¶2] | XXX MB | >X个æ | [建议] |
**建议**: æå¨æ£æ¥ Downloadsï¼å é¤å·²ä¸éè¦çæä»¶ã
---
#### 3. åç¨ç Docker é¡¹ç® Volumes
| 项ç®åç¼ | å¯è½å
å«çæ°æ® | éè¦ä½ 确认 |
|---------|--------------|-----------|
| `project1_*` | MySQL, Redis | è¿å¨ç¨åï¼ |
| `project2_*` | Postgres | è¿å¨ç¨åï¼ |
**注æ**: æä¸ä¼ä½¿ç¨ `docker volume prune -f`ï¼åªä¼å¨ä½ 确认åå é¤ç¹å®é¡¹ç®ç volumesã
---
### ð´ ä¸å»ºè®®å é¤çé¡¹ç® (æä»·å¼çç¼å)
| é¡¹ç® | å¤§å° | 为ä»ä¹è¦ä¿ç |
|------|------|-------------|
| **Xcode DerivedData** | XX GB | [项ç®å]çç¼è¯ç¼åï¼å é¤å䏿¬¡æå»ºéè¦Xåé |
| **npm _cacache** | X.X GB | ææä¸è½½è¿ç npm å
ï¼å é¤åéè¦éæ°ä¸è½½ |
| **~/.cache/uv** | XX GB | Python å
ç¼åï¼éæ°ä¸è½½å¨ä¸å½ç½ç»ä¸å¾æ
¢ |
| [å
¶ä»æä»·å¼çç¼å] | X.X GB | [ä¿çåå ] |
---
### ð å
¶ä»åç°
| é¡¹ç® | å¤§å° | 说æ |
|------|------|------|
| **OrbStack/Docker** | XX GB | æ£å¸¸ç VM/容å¨å ç¨ |
| [å
¶ä»åç°] | X.X GB | [说æ] |
---
### æ¨èæä½
**ç«å³å¯æ§è¡** (æ é确认):
```bash
# 1. æ¸
空åºçº¸ç¯ (XXX MB)
# æå¨: Finder â æ¸
空åºçº¸ç¯
# 2. npm _npx (X.X GB)
rm -rf ~/.npm/_npx
# 3. Homebrew æ§çæ¬ (XX MB)
brew cleanup --prune=0
é¢è®¡éæ¾: ~X.X GB
éè¦ä½ ç¡®è®¤åæ§è¡:
- [项ç®1] – [确认é®é¢]
- [项ç®2] – [确认é®é¢]
- Docker é¡¹ç® – åè¯æåªäºé¡¹ç®ç¡®å®ä¸ç¨äº
### Report Quality Checklist
Before presenting the report, verify:
- [ ] Every item has "Impact If Deleted" explanation
- [ ] ð¢ items are truly safe (Trash, _npx, old versions)
- [ ] ð¡ items require user decision (age info, usage patterns)
- [ ] ð´ items explain WHY they should be kept
- [ ] Docker volumes listed by project, not blanket prune
- [ ] Network environment considered (China = slow redownload)
- [ ] No recommendations to delete useful caches just to inflate numbers
- [ ] Clear action items with exact commands
## Step 4: Present Recommendations
Format findings into actionable recommendations with risk levels:
```markdown
# macOS Cleanup Recommendations
## Summary
Total space recoverable: ~XX GB
Current usage: XX%
## Recommended Actions
### ð¢ Safe to Execute (Low Risk)
These are safe to delete and will be regenerated as needed:
1. **Empty Trash** (~12 GB)
- Location: ~/.Trash
- Command: `rm -rf ~/.Trash/*`
2. **Clear System Caches** (~45 GB)
- Location: ~/Library/Caches
- Command: `rm -rf ~/Library/Caches/*`
- Note: Apps may be slightly slower on next launch
3. **Remove Homebrew Cache** (~5 GB)
- Command: `brew cleanup -s`
### ð¡ Review Recommended (Medium Risk)
Review these items before deletion:
1. **Large Downloads** (~38 GB)
- Location: ~/Downloads
- Action: Manually review and delete unneeded files
- Files: [list top 10 largest files]
2. **Application Remnants** (~8 GB)
- Apps: [list detected uninstalled apps]
- Locations: [list paths]
- Action: Confirm apps are truly uninstalled before deleting data
### ð´ Keep Unless Certain (High Risk)
Only delete if you know what you're doing:
1. **Docker Volumes** (~3 GB)
- May contain important data
- Review with: `docker volume ls`
2. **Time Machine Local Snapshots** (~XX GB)
- Automatic backups, will be deleted when space needed
- Command to check: `tmutil listlocalsnapshots /`
Step 5: Execute with Confirmation
CRITICAL: Never execute deletions without explicit user confirmation.
Interactive confirmation flow:
# Example from scripts/safe_delete.py
def confirm_delete(path: str, size: str, description: str) -> bool:
"""
Ask user to confirm deletion.
Args:
path: File/directory path
size: Human-readable size
description: What this file/directory is
Returns:
True if user confirms, False otherwise
"""
print(f"\nðï¸ Confirm Deletion")
print(f"ââââââââââââââââââ")
print(f"Path: {path}")
print(f"Size: {size}")
print(f"Description: {description}")
response = input("\nDelete this item? [y/N]: ").strip().lower()
return response == 'y'
For batch operations:
def batch_confirm(items: list) -> list:
"""
Show all items, ask for batch confirmation.
Returns list of items user approved.
"""
print("\nð Items to Delete:")
print("ââââââââââââââââââ")
for i, item in enumerate(items, 1):
print(f"{i}. {item['path']} ({item['size']})")
print("\nOptions:")
print(" 'all' - Delete all items")
print(" '1,3,5' - Delete specific items by number")
print(" 'none' - Cancel")
response = input("\nYour choice: ").strip().lower()
if response == 'none':
return []
elif response == 'all':
return items
else:
# Parse numbers
indices = [int(x.strip()) - 1 for x in response.split(',')]
return [items[i] for i in indices if 0 <= i < len(items)]
Step 6: Verify Results
After cleanup, verify the results and report back:
# Compare before/after
df -h /
# Calculate space recovered
# (handled by scripts/cleanup_report.py)
Report format:
â
Cleanup Complete!
Before: 450 GB used (90%)
After: 385 GB used (77%)
ââââââââââââââââââââââââ
Recovered: 65 GB
Breakdown:
- System caches: 45 GB
- Downloads: 12 GB
- Homebrew cache: 5 GB
- Application remnants: 3 GB
â ï¸ Notes:
- Some applications may take longer to launch on first run
- Deleted items cannot be recovered unless you have Time Machine backup
- Consider running this cleanup monthly
ð¡ Maintenance Tips:
- Set up automatic Homebrew cleanup: `brew cleanup` weekly
- Review Downloads folder monthly
- Enable "Empty Trash Automatically" in Finder preferences
Safety Guidelines
Always Preserve
Never delete these without explicit user instruction:
~/Documents,~/Desktop,~/Picturescontent- Active project directories
- Database files (*.db, *.sqlite)
- Configuration files for active apps
- SSH keys, credentials, certificates
- Time Machine backups
Require Sudo Confirmation
These operations require elevated privileges. Ask user to run commands manually:
- Clearing
/Library/Caches(system-wide) - Clearing
/var/log(system logs) - Clearing
/private/var/folders(system temp)
Example prompt:
â ï¸ This operation requires administrator privileges.
Please run this command manually:
sudo rm -rf /Library/Caches/*
â ï¸ You'll be asked for your password.
Backup Recommendation
Before executing any cleanup >10GB, recommend:
ð¡ Safety Tip:
Before cleaning XX GB, consider creating a Time Machine backup.
Quick backup check:
tmutil latestbackup
If no recent backup, run:
tmutil startbackup
Troubleshooting
“Operation not permitted” errors
macOS may block deletion of certain system files due to SIP (System Integrity Protection).
Solution: Don’t force it. These protections exist for security.
App crashes after cache deletion
Rare but possible. Solution: Restart the app, it will regenerate necessary caches.
Docker cleanup removes important data
Prevention: Always list Docker volumes before cleanup:
docker volume ls
docker volume inspect <volume_name>
Resources
scripts/
analyze_caches.py– Scan and categorize cache directoriesfind_app_remnants.py– Detect orphaned application dataanalyze_large_files.py– Find large files with smart filteringanalyze_dev_env.py– Scan development environment resourcessafe_delete.py– Interactive deletion with confirmationcleanup_report.py– Generate before/after reports
references/
cleanup_targets.md– Detailed explanations of each cleanup targetmole_integration.md– How to use Mole alongside this skillsafety_rules.md– Comprehensive list of what to never delete
Usage Examples
Example 1: Quick Cache Cleanup
User request: “My Mac is running out of space, can you help?”
Workflow:
- Run quick diagnosis
- Identify system caches as quick win
- Present findings: “45 GB in ~/Library/Caches”
- Explain: “These are safe to delete, apps will regenerate them”
- Ask confirmation
- Execute:
rm -rf ~/Library/Caches/* - Report: “Recovered 45 GB”
Example 2: Development Environment Cleanup
User request: “I’m a developer and my disk is full”
Workflow:
- Run
scripts/analyze_dev_env.py - Present Docker + npm + Homebrew findings
- Explain each category
- Provide cleanup commands with explanations
- Let user execute (don’t auto-execute Docker cleanup)
- Verify results
Example 3: Finding Large Files
User request: “What’s taking up so much space?”
Workflow:
- Run
scripts/analyze_large_files.py --threshold 100MB - Present top 20 large files with context
- Categorize: videos, datasets, archives, disk images
- Let user decide what to delete
- Execute confirmed deletions
- Suggest archiving to external drive
Best Practices
- Start Conservative: Begin with obviously safe targets (caches, trash)
- Explain Everything: Users should understand what they’re deleting
- Show Examples: List 3-5 example files from each category
- Respect User Pace: Don’t rush through confirmations
- Document Results: Always show before/after space usage
- Educate: Include maintenance tips in final report
- Integrate Tools: Suggest Mole for users who prefer GUI
When NOT to Use This Skill
- User wants automatic/silent cleanup (against safety-first principle)
- User needs Windows/Linux cleanup (macOS-specific skill)
- User has <10% disk usage (no cleanup needed)
- User wants to clean system files requiring SIP disable (security risk)
In these cases, explain limitations and suggest alternatives.