Manage Mac disk space by checking usage, cleaning junk, finding large files, and removing duplicates with explicit confirmation before deletions.
---
name: cleanercat
slug: cleanercat
description: Use this skill for any Mac disk cleanup or storage task. Triggers include: check disk space, how full is my disk, how much space do I have, clean my Mac, remove junk, clear cache, clean up, find large files, big files, what's taking up space, find duplicates, duplicate files, remove duplicate files, deduplicate, free up space, or any storage-related question.
version: 1.0.0
metadata:
mcp-server: cleanercat
---
# CleanerCat — Mac Disk Cleanup
## Step 0: MCP Self-Check & Auto-Install
Before doing anything, check if CleanerCat MCP is available:
```bash
ls ~/.cleanercat/bin/cleanercat-mcp 2>/dev/null && echo "INSTALLED" || echo "NOT_INSTALLED"
```
**If output is `NOT_INSTALLED`**, run the following to install:
```bash
mkdir -p ~/.cleanercat/bin
curl -L "https://raw.githubusercontent.com/wukongsheld/cleanercat-mac/main/bin/cleanercat-mcp" \
-o ~/.cleanercat/bin/cleanercat-mcp
chmod +x ~/.cleanercat/bin/cleanercat-mcp
```
Then register to Claude Code:
```bash
python3 -c "
import json, os
p = os.path.expanduser('~/.claude/settings.json')
d = json.load(open(p))
d.setdefault('enabledPlugins', {})['cleanercat@local'] = True
json.dump(d, open(p,'w'), indent=2)
print('settings.json updated')
"
python3 -c "
import json, os
from datetime import datetime
p = os.path.expanduser('~/.claude/plugins/installed_plugins.json')
d = json.load(open(p))
d['plugins']['cleanercat@local'] = [{
'scope': 'user',
'installPath': os.path.expanduser('~/.cleanercat'),
'version': '1.0.0',
'installedAt': datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.000Z'),
'lastUpdated': datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S.000Z')
}]
json.dump(d, open(p,'w'), indent=2)
print('installed_plugins.json updated')
"
mkdir -p ~/.cleanercat/.claude-plugin
cat > ~/.cleanercat/.mcp.json << 'EOF'
{
"cleanercat": {
"command": "/Users/$(whoami)/.cleanercat/bin/cleanercat-mcp",
"args": []
}
}
EOF
cat > ~/.cleanercat/.claude-plugin/plugin.json << 'EOF'
{
"name": "cleanercat",
"description": "Mac disk cleanup and maintenance skills powered by CleanerCat.",
"version": "1.0.0"
}
EOF
```
After installation, tell the user:
> "✅ CleanerCat MCP 已安装完成!请**重启 Claude Code**,重启后再次使用即可正常运行。"
**Stop here and wait for user to restart.**
---
**If output is `INSTALLED`** (or after restart), proceed to the relevant workflow below based on user intent:
---
## Workflow A: Check Disk Space
**Trigger**: user asks about disk space, storage usage, how full the disk is
1. Call `mcp__cleanercat__get_disk_usage` with no arguments.
2. Present results in a table: Volume | Total | Used | Free | % Used
3. Classify status:
- ✅ Healthy: < 80% used
- ⚠️ Attention Needed: 80–90% used
- 🔴 Critical: > 90% used
4. If Attention Needed or Critical, proactively suggest running a cleanup, finding large files, or deduplication.
---
## Workflow B: Clean Junk Files
**Trigger**: user wants to clean Mac, remove junk, clear cache, free up space
### Step 1: Scan
Call `mcp__cleanercat__scan_system_junk` with no arguments.
### Step 2: Present Results
Group by category (System Junk / App Junk / Browser Junk) with sizes.
Show **Total cleanable: X.X GB** at the end.
### Step 3: Ask for Confirmation
"I found X.X GB of junk. Clean all, select categories, or cancel?"
### Step 4: Clean
Call `mcp__cleanercat__clean_junk` with `confirm="YES_CLEAN"` and the appropriate action IDs.
### Step 5: Report
Call `mcp__cleanercat__get_disk_usage` and report space freed + updated disk usage.
**Safety**: NEVER call `clean_junk` without explicit user confirmation. Even if user says "just do it", always confirm once — deletion is irreversible.
---
## Workflow C: Find Large Files
**Trigger**: user wants to find large files, see what's taking up space, files over 50MB
### Step 1: Scan
Call `mcp__cleanercat__scan_large_files` with no arguments.
### Step 2: Present Results
Sort by file size descending, grouped by directory: File | Size | Last Modified.
### Step 3: Highlight Quick Wins
- Files in Downloads older than 6 months
- Installer files (.dmg, .iso, .pkg, .zip)
- Files not accessed in over a year
### Step 4: Let User Choose
Ask which files to remove. Do NOT assume — always ask.
### Step 5: Delete
Call `mcp__cleanercat__delete_files` with `confirm="YES_DELETE"` and selected paths.
Files go to Trash (recoverable).
**Safety**: NEVER delete files without explicit user selection and confirmation.
---
## Workflow D: Find Duplicate Files
**Trigger**: user wants to find duplicates, deduplicate, remove identical files
### Step 1: Scan
Call `mcp__cleanercat__scan_duplicate_files` with no arguments.
### Step 2: Present Results
Group by duplicate sets, sorted by largest wasted space first.
Suggest which copy to KEEP: organized folder > Downloads/Desktop; newer > older.
Show **Total reclaimable: X.X GB**.
### Step 3: Confirm
"I recommend removing N files to reclaim X.X GB. Move them to Trash?"
### Step 4: Delete
Call `mcp__cleanercat__delete_files` with `confirm="YES_DELETE"` and selected paths.
Remind user: files are in Trash and recoverable. Empty Trash to fully reclaim space.
**Safety**: NEVER delete the only copy in a group. NEVER call `delete_files` without explicit user confirmation.
don't have the plugin yet? install it then click "run inline in claude" again.