Communitygithub.com

haotianteng/FreeSpace

キャッシュや古いインストールファイルを削除してディスク容量を解放するエージェントスキル。削除内容と容量を完全に可視化し、制御できます。

FreeSpace とは?

FreeSpace スキルは、Linux マシン上で安全にディスク容量を解放するための AI エージェントスキルです。このスキルは、ユーザーが削除前に「何が」「どのくらいの容量を」解放するのかを常に確認できるように設計されています。主な対応ディストリビューションは Ubuntu/Debian 系および Fedora/RHEL 系で、apt や dnf/yum パッケージマネージャのキャッシュ、pip/npm キャッシュ、ゴミ箱、Docker ビルダーキャッシュ、ジャーナルログ、古いログファイル、CUDA 関連ファイルなどをターゲットにします。デフォルトではドライラン(--dry-run)が必須で、ユーザーの明示的な許可なく実際の削除は行いません。タスクごとに実行可能で、sudo が必要なシステムタスクはユーザー自身が実行するよう促します。このスキルにより、高度な Linux 知識がなくても、安全かつ効率的にディスク容量を管理できます。

対応✓Claude Code~Codex CLI~Cursor
npx skills add haotianteng/FreeSpace

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

FreeSpace スキル

Linux マシンのディスク容量を安全に解放できるようにユーザーを支援します。ユーザーは、何かが削除される前に、何がクリーンアップされ、どのくらいの容量が解放されるかを常に確認できなければなりません。

厳格なルール

  1. デフォルトはドライラン。 会話における最初の呼び出しは必ず --dry-run でなければなりません。ドライランのレポートをユーザーに表示する前に、破壊的なクリーンアップを決して実行しないでください。
  2. ユーザーの明示的な要求なしに --yes を使用しない。 ユーザーが明確に同意しない限り(「全部クリーンして」「全部やって」「確認をスキップして」など)、--yes / -y を渡さないでください。デフォルトでは --task <名前> によるタスクごとの確認を行ってください。
  3. サイズを表示し、それから尋ねる。 ドライランの後、ユーザーに要約を表示します。各タスク名、対象、および解放されるサイズを含めます。ユーザーが実際に実行するものを選択するのを待ちます。
  4. タスクごとの実行。 すべてを一度に実行するよりも、--task <名前> を優先します。ユーザーが選択します。
  5. sudo について勝手に推測しない。 タスクに root 権限が必要な場合は、ユーザーに sudo が必要であることを伝え、その特定のタスクを再実行させてください。
  6. 出力を隠すツールにパイプで渡さない。 ユーザーはスクリプトの出力を見ることができなければなりません。フォアグラウンドで実行してください。

ディストリビューションの検出

実行するスクリプトを見つけます:

. /etc/os-release 2>/dev/null
case "${ID:-unknown}:${ID_LIKE:-}" in
    ubuntu*|debian*|*ubuntu*|*debian*) echo ubuntu.sh ;;
    fedora*|rhel*|centos*|*fedora*|*rhel*) echo fedora.sh ;;
    *) echo "サポート外: ID=$ID ID_LIKE=$ID_LIKE" >&2 ;;
esac

スクリプトはこの SKILL.md と同じ場所にあります:

  • ubuntu.sh — Ubuntu、Debian、Pop!_OS、Mint、Elementary (apt ベース)
  • fedora.sh — Fedora、RHEL、CentOS、Rocky、AlmaLinux (dnf/yum ベース)

ディストリビューションがサポートされていない場合は、サポートされているディストリビューションをユーザーに伝え、停止してください。その場でスクリプトを適応させようとしないでください。

デフォルトのワークフロー

1. ディストリビューションを検出 → スクリプトを選択
2. 実行: bash <スクリプト> --dry-run
3. 出力を解析し、ユーザーにわかりやすい要約テーブルを表示:
     - タスク名
     - 対象パス
     - 解放されるサイズ
     - sudo が必要かどうか
4. 質問: 「実際に実行してほしいタスクはどれですか?」
5. ユーザーが選択した各タスクについて:
     - ユーザーレベルの場合: bash <スクリプト> --task <名前>
     - sudo が必要な場合: 正確なコマンドをユーザーに伝え、自分で実行させます
6. 選択されたすべてのタスクが完了したら、`df -h /` を実行し、解放された容量を報告します。

引数のチートシート

スクリプトは同じフラグを受け付けます:

フラグ効果
--dry-runプレビューのみ、変更は行いません。これを最初に使用してください。
--list利用可能なタスク名を一覧表示します
--task <名前>1つのタスクのみ実行します
--yes / -yタスクごとの確認をスキップします。ユーザーが明示的に要求した場合以外は使用しないでください。
--helpスクリプトのヘルプを表示します

利用可能なタスク名はスクリプト間で共通です: pip、npm、trash、docker_builder、journal、oldlogs、cuda_repos、cuda_old、crash。ディストリビューション固有のタスク: apt (Ubuntu/Debian)、dnf (Fedora/RHEL)、abrt (Fedora/RHEL)。

bash <スクリプト> --list を実行して、ホストの正式なリストを取得してください。

sudo の処理

ユーザーレベルのタスク (pip、npm、trash、docker_builder) はユーザーとして実行されます。

システムレベルのタスクには sudo が必要です。許可なくユーザーに代わって sudo を呼び出さないでください。 代わりに、次のように伝えてください:

タスク journal には sudo が必要です。これを自分で実行してください: sudo bash <パス>/<スクリプト> --task journal

ユーザーがすでに sudo bash セッション内におり、sudo が必要なすべてのタスクを実行するよう明示的に依頼した場合は、各タスクに対して --task を指定して連鎖実行できます。

結果の報告

クリーンアップ実行後、毎回ユーザーに以下を表示してください:

  • 正常に実行されたタスク
  • スキップされたタスクとその理由
  • 前後の df -h / の結果。実際に解放された容量がわかります。

問題が発生した場合

  • ドライランでタスクの サイズ: 0 が報告された場合、そのことを伝えますが、それについてしつこく尋ねないでください。
  • du がパスでエラーになった場合(許可がない)、そのことをユーザーに伝えてください。通常は sudo が必要であることを意味します。
  • タスクが実行中に失敗した場合、バッチを停止し、どのタスクが失敗したかを報告してから続行します。

やってはいけないこと

  • ユーザーの状況に基づいて、rm -rf /something/else を追加するためにスクリプトを編集しないでください。スクリプトがユーザーのユースケースをカバーしていない場合は、そのことを伝え、ユーザーに判断させてください。
  • スクリプトで定義されたターゲット以外のディレクトリのクリーンアップを実行しないでください。
  • より積極的なクリーンアップ(/tmp、snap キャッシュ、カーネルなどの削除)を、ユーザーから明示的に要求されない限り提案しないでください。また、その場合でも、より安全な代替手段(カーネルには apt autoremove --purge など)を指し示すことを優先してください。
  • スクリプトの出力を抑制しないでください。可視性がすべてです。

関連スキル