imoonwander

moon-clean-skill

Clean up disk space and uninstall macOS apps safely — disk usage checkup, app bundle and leftover review, system/app caches, dev junk (node_modules/Xcode/Docker/package-manager caches), large-file discovery, and dedup/leftover cleanup of agent skills directories; always checks and confirms before deleting. Use when the user says "disk full", "clean my mac", "free up space", "clear cache", "uninstall/remove an app", "my computer is slow, clean it up", or in Chinese "磁盘满了""清理电脑/Mac""释放空间""清理缓存""卸载/删除应用或软件""skills 太乱了清理一下", or when the system warns about low storage.

imoonwander 2 Updated 1w ago

Resources

6
GitHub

Install

npx skillscat add imoonwander/moon-clean-skill

Install via the SkillsCat registry.

SKILL.md

Moon Clean

像 CleanMyMac 一样清理电脑,但每一步可见、可控、只删确认过的东西。

moon-clean-skill public GitHub repository

截图来自公开 GitHub 仓库页面,用于展示开源发布状态;不要使用合成终端图来冒充真实运行结果。若要展示清理数据,必须来自真实命令或真实报告,并先脱敏。

当前版本以 macOS 为主;Windows 支持后续按平台分节扩展(铁律和工作流骨架通用)。

铁律(先读)

  1. 先体检、后报告、经确认再删。任何删除前,必须列出将删路径 + 各自大小 + 总释放量,等用户确认。用户明确说"直接清"的例外,但仍要在删后报告清了什么。
  2. 绝不碰用户数据~/Documents ~/Desktop ~/Pictures、任何项目源码、.git 目录、浏览器书签/密码。Downloads 只报告不主动删。
  3. 不用 sudo 删系统路径/System /Library 顶层等);rm -rf 只作用于逐条列出并确认过的绝对路径,禁止带通配符的整目录盲删。
  4. 卸载残留、旧备份这类"看起来没用"的东西,宁可标记为"建议人工确认"也不要自作主张。

工作流

第 1 步:体检

优先跑自带脚本(只读,不删任何东西):

scripts/checkup.sh --save    # --save 把报告存档到 ~/.moon-clean/reports/(可用 MOON_CLEAN_REPORT_DIR 覆盖)
                             # --no-scan 跳过较慢的 $HOME 大目录扫描
                             # --redact 隐去文件名与自定义目录名,适合分享;同时跳过大目录扫描

报告自带分类标签(safe after confirm · review by tool · human confirm only)。存档权限固定为仅当前用户可读;即便如此,原始报告仍可能含本机路径和 Downloads 文件名,公开前必须使用 --redact 或人工脱敏。存档的报告是历史基线——下次体检可对比增量。脚本不可用时退回手动命令:

df -h /System/Volumes/Data                           # 总体空间(macOS 数据卷)
du -xsh ~/Library/Caches ~/Library/Logs ~/Downloads 2>/dev/null
du -xsh ~/Library/Developer 2>/dev/null              # Xcode 相关
du -xsh ~/.npm ~/.pnpm-store ~/Library/pnpm ~/.cache ~/Library/Caches/pip 2>/dev/null
docker system df 2>/dev/null                         # Docker 占用
brew cleanup -n 2>/dev/null | tail -1                # brew 可回收量(-n 只预览)
du -xh -d 2 ~ 2>/dev/null | sort -rh | head -25      # 大目录排查(按需下钻)

在报告基础上输出"占用体检表":路径 / 当前占用 / 类别(低风险可重建 · 建议清 · 需人工确认),结合上下文修正脚本给的静态标签。当前占用不等于可释放量;只有实际清理并复测后才能报告估算释放量。

第 2 步:分类清理(按安全度排序)

低风险可重建(仍有下载、索引或编译成本)

  • 包管理器缓存:brew cleanup --prune=allnpm cache clean --forcepnpm store pruneyarn cache cleanpip cache purgeuv cache clean
  • Xcode 垃圾:~/Library/Developer/Xcode/DerivedData~/Library/Developer/CoreSimulator/Caches
  • 应用缓存:先退出对应应用,优先使用应用自己的清理入口;手工处理 ~/Library/Caches/<app> 时逐个列大小,不做全目录清空
  • 旧日志:~/Library/Logs 下超过 90 天的文件

建议清(会有一次性重建成本)

  • 僵尸 node_modules / .venv:目录 mtime 只能生成候选清单,删除前还要核对项目近期活动、git 状态和重新安装成本;活跃项目不删
  • Docker:docker system prune(保留在用的);加 -a 前必须单独确认
  • 模拟器旧设备:xcrun simctl delete unavailable

需人工确认

  • ~/Downloads 大文件(只列 top 20,让用户勾选)
  • ~/Library/Application Support 下已卸载应用的残留(对照 /Applications 找孤儿,列出来让用户认领)
  • iOS 设备备份:~/Library/Application Support/MobileSync/Backup

第 3 步:卸载单个应用

应用卸载和系统体检是两条独立路径。用户点名应用时:

  1. /Applications~/Applications 定位精确 .app,显示实际路径和大小;名称相近时先让用户确认,不靠猜测选应用。
  2. mdls -name kMDItemCFBundleIdentifier -raw <app-path> 读取真实 bundle id,并检查应用是否正在运行;先正常退出,不强杀。
  3. 分两组列候选:主程序;由真实名称或 bundle id 对应的缓存、日志、偏好设置、Saved Application State。Application Support、容器目录和云同步目录可能含用户数据,只列为“需人工确认”。
  4. 主程序和每一项残留分别列路径、大小、风险,得到确认后优先移入废纸篓;不要直接永久删除。需要管理员权限的应用只报告,不绕过权限。
  5. 移动后验证原路径不存在、废纸篓中存在目标,并把实际结果写入清理日志。未找到的路径记为“未发现”,不能记为“已删除”。

不得只按应用显示名做全盘模糊删除,也不得因为文件名含同一个单词就判定为残留。

第 4 步:Agent skills 清理

skills 会越积越多,专门检查:

ls ~/.claude/skills/                                  # 个人 skills
du -sh ~/.claude/skills/* 2>/dev/null | sort -rh
  • 重复功能:读各 SKILL.md 的 description,找功能重叠的 skill(如新旧两版域名查询),列出建议保留哪个、删哪个。
  • 残留工作区*-workspacecache、临时产物目录,确认后清。
  • 失效 skill:指向已删除路径的符号链接、引用了不存在脚本的 skill。
  • 若用户通过源码仓统一管理 skills,本机 ~/.claude/skills/~/.codex/skills/ 中的对应目录应指向用户自己的唯一源码目录;发现是拷贝而非链接时,提示改回链接,避免两份漂移。

第 5 步:收尾报告

清理完成后重新运行 scripts/checkup.sh --save --no-scan,报告:清理前可用空间 → 清理后可用空间、估算释放量、各类别明细、执行过的命令、失败项、跳过项及原因。

把清理记录保存到 ~/.moon-clean/history/cleanup-<timestamp>.md,权限设为 600。记录只写真实执行结果;若命令失败,不得按计划值计入释放量。日志可能包含本机路径,公开前必须脱敏。