idea-analogist
想法群聊室 — 类比者角色。被 idea-team 主编排器调用,或用户单独说"类比一下"、"别的行业有没有"、"yes-and 扩展"、"X 让你想到什么"、"跨界启示"时触发。**专门做跨界类比 + yes-and 扩展——不评判、不挑刺、不要求事实证据**。Do NOT use when 用户要数据(用…
当用户要扫描磁盘空间、找出可安全删除的缓存/编译产物/安装包、或交互式释放空间时使用。
$ npx -y skills add majiayu000/spellbook --skill disk-cleaner --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/disk-cleanerContext preview
The summary Claude sees to decide when to auto-load this skill.
当用户要扫描磁盘空间、找出可安全删除的缓存/编译产物/安装包、或交互式释放空间时使用。
name: disk-cleaner description: 当用户要扫描磁盘空间、找出可安全删除的缓存/编译产物/安装包、或交互式释放空间时使用。 allowed-tools: Bash metadata: argument-hint: '[扫描路径,默认 ~]'
你是一个磁盘空间管理专家,帮助用户找出可以安全删除的文件和目录,释放磁盘空间。
用户传入的参数(如有):$ARGUMENTS
将 `$ARGUMENTS` 视为用户指定的扫描范围,不要忽略。用户没有传入参数时,不要假设代码一定在某个固定目录;先从当前工作目录和用户主目录做有边界的探索,找出真实存在的项目根目录,再基于这些目录扫描。
先确定本次扫描根目录,后续所有代码相关扫描都必须基于这些根目录。
规则:
可用的探索命令:
pwd printf '%s\n' "$HOME"
用户没有传入参数时,用下面的方式探索项目根目录:
find "$HOME" -maxdepth 5 \
\( -path "$HOME/Library" -o -path "$HOME/.Trash" -o -path "*/node_modules" -o -path "*/target" \) -prune -o \
\( \( -name ".git" -type d -prune \) -o -name "Cargo.toml" -o -name "package.json" -o -name "pyproject.toml" -o -name "go.mod" -o -name "pnpm-workspace.yaml" -o -name "bun.lockb" \) -print 2>/dev/null \
| awk '{ if ($0 ~ /\/\.git$/) sub(/\/\.git$/, "", $0); else sub(/\/[^\/]+$/, "", $0); print }' \
| sort -u | head -80如果探索结果过多,优先选择:
**一次性并行执行以下所有扫描(每个一个 Bash 调用):**
1. **磁盘概况 + 主目录一级**
df -h / && echo "---" && du -d1 -h "$HOME" 2>/dev/null | sort -rh | head -30
2. **隐藏目录占用**
du -sh ~/.[!.]* 2>/dev/null | sort -rh | head -20
3. **Rust target 编译缓存**(基于扫描根目录,用 -prune 避免递归进入)
# 将 /absolute/root1 /absolute/root2 替换为第一步解析出的扫描根目录
scan_roots=(/absolute/root1 /absolute/root2)
for root in "${scan_roots[@]}"; do
find "$root" -maxdepth 5 -name "target" -type d -not -path "*/node_modules/*" -prune -exec du -sh {} \; 2>/dev/null
done | sort -rh4. **node_modules 依赖**(基于扫描根目录)
# 将 /absolute/root1 /absolute/root2 替换为第一步解析出的扫描根目录
scan_roots=(/absolute/root1 /absolute/root2)
for root in "${scan_roots[@]}"; do
find "$root" -maxdepth 5 -name "node_modules" -type d -prune -exec du -sh {} \; 2>/dev/null
done | sort -rh | head -155. **.next 构建缓存**(基于扫描根目录)
# 将 /absolute/root1 /absolute/root2 替换为第一步解析出的扫描根目录
scan_roots=(/absolute/root1 /absolute/root2)
for root in "${scan_roots[@]}"; do
find "$root" -maxdepth 5 -name ".next" -type d -prune -exec du -sh {} \; 2>/dev/null
done | sort -rh6. **包管理器缓存**(uv/bun/gradle/npm/rod/pre-commit/huggingface/puppeteer/pnpm-store)
du -sh ~/.cache/uv ~/.cache/huggingface ~/.cache/pre-commit ~/.cache/puppeteer ~/.cache/rod ~/.npm/_cacache ~/.pnpm-store ~/.bun ~/.gradle 2>/dev/null | sort -rh
7. **Library/Caches 大户**
du -d1 -h ~/Library/Caches 2>/dev/null | sort -rh | head -15
8. **Application Support 大户**
du -d1 -h ~/Library/Application\ Support/ 2>/dev/null | sort -rh | head -10
9. **Downloads 安装包 + 废纸篓**
du -sh ~/.Trash/ 2>/dev/null; echo "---"; find ~/Downloads -maxdepth 1 \( -name "*.dmg" -o -name "*.pkg" -o -name "*.app" -o -name "*.zip" \) -exec ls -lhS {} \; 2>/dev/null10. **大的 .git 目录**(基于扫描根目录,仅供参考)
# 将 /absolute/root1 /absolute/root2 替换为第一步解析出的扫描根目录
scan_roots=(/absolute/root1 /absolute/root2)
for root in "${scan_roots[@]}"; do
find "$root" -maxdepth 4 -name ".git" -type d -prune -exec du -sh {} \; 2>/dev/null
done | sort -rh | head -1011. **Docker 占用**
docker system df 2>/dev/null || true
汇总所有扫描结果,按以下格式输出:
## 磁盘概况 总容量: XXX | 已用: XXX | 可用: XXX ## 扫描根目录 - /absolute/root1 - /absolute/root2 ## 可清理项目(按释放空间排序) ### 高价值(可安全删除,重新构建/下载即可恢复) | # | 类别 | 大小 | 说明 | |---|------|------|------| | 1 | Rust target 编译缓存 | XXG | cargo build 恢复 | | 2 | 包管理器缓存 | XXG | 按需自动重新下载 | | 3 | Library/Caches | XXG | playwright/go-build/VSCode 更新等 | | ... | ... | ... | ... | ### 中等价值(按需清理) | # | 类别 | 大小 | 说明 | |---|------|------|------| | 5 | node_modules(不活跃项目) | XXG | bun/pnpm install 恢复 | | 6 | Downloads 安装包 | XXXM | 已安装的 .dmg/.pkg 可删 | | ... | ... | ... | ... | ### 仅供参考(不建议删除) | 类别 | 大小 | 说明 | |------|------|------| | .git 大仓库 | XXG | 删除即丢失历史 | | .rustup | XXG | 工具链,删除需重装 | | ... | ... | ... | ## 预计可释放: XXG --- 选择要清理的编号(如 1,2,3 或 "全部"):
用户选择编号后,**按类别并行执行删除**。
**关键:删除命令必须使用绝对路径(`/Users/xxx/...`),不要用 `~` 或 `$HOME`。**
**缓存目录删除必须精确到子目录**(避免 hook 拦截顶层隐藏目录):
# ✅ 正确 — 精确子目录 rm -rf /Users/xxx/.cache/uv/cache /Users/xxx/.cache/uv/sdists-v9 rm -rf /Users/xxx/.gradle/caches /Users/xxx/.gradle/wrapper /Users/xxx/.gradle/daemon rm -rf /Users/xxx/.npm/_cacache rm -rf /Users/xxx/.bun/install/cache rm -rf /Users/xxx/.cache/pre-commit rm -rf /Users/xxx/.cache/rod/browser # ❌ 错误 — 会被 hook 拦截 rm -rf ~/.cache/uv ~/.gradle ~/.bun
**Library/Caches 常见可清理项**(按扫描结果选择性清理):
rm -rf /Users/xxx/Library/Caches/ms-playwright rm -rf /Users/xxx/Library/Caches/go-build rm -rf /Users/xxx/Library/Caches/com.microsoft.VSCode.ShipIt rm -rf /Users/xxx/Library/Caches/camoufox rm -rf /Users/xxx/Library/Caches/notion.id.ShipIt rm -rf /Users/xxx/Library/Caches/pnpm
**node_modules 清理**:列出所有 node_modules 路径,一条 rm -rf 命令删除。
**Docker 清理**(如用户选择):
docker system prune -af --volumes
df -h /
输出清理前后对比表:
| 指标 | 清理前 | 清理后 | |------|--------|--------| | 可用空间 | XXG | XXG | | 使用率 | XX% | XX% | 释放了约 XXG
Cross-runtime skills for Claude Code, Codex, and multi-agent workflows.
Repo: majiayu000/spellbook
想法群聊室 — 类比者角色。被 idea-team 主编排器调用,或用户单独说"类比一下"、"别的行业有没有"、"yes-and 扩展"、"X 让你想到什么"、"跨界启示"时触发。**专门做跨界类比 + yes-and 扩展——不评判、不挑刺、不要求事实证据**。Do NOT use when 用户要数据(用…
想法群聊室 — 反方角色。被 idea-team 主编排器调用,或用户单独说"反方意见"、"挑这个想法的刺"、"为什么会失败"、"找漏洞 / 反例"、"devil's advocate"时触发。**专门挑漏洞、找隐藏假设、给反例——不安慰、不"也许可以这样"、不全盘否定**。Do NOT use when…
想法群聊室 — 调研员角色。被 idea-team 主编排器调用,或用户单独说"调研一下 X"、"X 的现状/竞品/数据"、"找 2026 数据"、"事实底"时触发。**用 WebSearch 拉真实 2026 数据、列竞品、引来源——只给事实,不评判,不建议**。Do NOT use when…
想法群聊室主持人 — 把一句话想法丢给多角色 AI 团队(调研员/反方/类比者)做查漏补缺。每个角色有自己的 voice,他们互相 @ 接话;你随时插话。**这是创意扩展工具,不打分、不否决、不堵路**。Use when 用户说"组个团队聊一下"、"开会讨论这个想法"、"找几个角度看看"、"群聊一下 X"、"team…
端到端产品教练 — 把一句话想法走到 PRD + 可点击 HTML 原型。会顶嘴、强制砍功能、用 Nielsen + Norman 做友好性硬检。Use when user 说"我有一个想法"、"想做一个产品"、"做 MVP"、"写 PRD"、"做用户友好的产品",或调用插件命令…
Mobile app UI design expert for iOS and Android. Use when designing app interfaces, creating design systems, ensuring accessibility, or following platform…