開発環境診断ツール · env-doctor
「診断ツールファミリー」第三弾:
claude-md-doctor(設定)→skill-doctor(スキル)→env-doctor(環境)。 最初の2つはファイルを診断し、これはマシンを診断します。
市販のクリーンアップツールとの違い(最初に読んでください。すべての動作の前提です)
市販のMacクリーンアップツールは「どのディレクトリが大きいか」に答えます。 本ツールは「このツール、まだ使ってる?」に答えます。
サイズはスキャンできますが、身分(使われているかどうか)は推論するしかありません——nvmが残骸かどうかを判断するには、シェル設定が誰をロードしているか、PATHに誰がいるか、nodeを実際に誰が提供しているか、ディレクトリが最後に更新されたのはいつか、これらを同時に見る必要があります。これが本ツールの唯一の差別化ポイントであり、いかなる変更もこれを弱めてはいけません。
⛔ 3つの鉄則(詳細は references/safety.md 参照)
- 削除はユーザーが項目ごとに選択することからのみ(
scripts/clean.shを使用)。モデル自身がrmを組み立てて実行しない。ユーザーが「直接削除して」と言ったら → 選択子を実行するよう誘導する。デフォルトではすべて未選択、データ類はロック、ホワイトリストのコマンドのみ実行、yesを入力して初めて実行。 - 読み取り専用スキャン。
scripts/scan.shは書き込み操作を含みません。 - 不確かな場合は不確かと伝える。シグナルに矛盾がある場合は正直に注釈し、レポートを良く見せるために推測しない。
標準フロー
ステップ1 · スキャン
bash scripts/scan.sh # フルスキャン(ホームディレクトリの巨大ディレクトリ発見を含む、約30〜60秒)
bash scripts/scan.sh --quick # クイックスキャン(発見スキャンをスキップ、約20秒)
bash scripts/scan.sh --profile ai-dev # AI開発機クイックスキャン(Agentホストディレクトリ + 巨大ディレクトリ発見をスキップ)
出力は6セクションの生データ: DISK · SIZES · MANAGERS · RUNTIME · AI_AGENTS(Agentホストがある場合)· DISCOVER(フルスキャンのみ)。
ステップ2 · 判定
references/rules.md を参照:
- 三分類法(データ / キャッシュ / 残骸)で各ディレクトリの身分を特定;
- 4シグナル判定表(shell_loaded × cmd_in_path × runtime owner × last_modified)でバージョンマネージャがアクティブか残骸かを判定;
- 同じバージョンが2つのマネージャにそれぞれインストールされている場合 → 個別に注意を促す。
ステップ3 · レポート出力
references/report.md の4ステップ対話フローに従う:まず結論 → 3グループに分類(残骸→キャッシュ→データ)→ グループごとにユーザーに確認 → 確認後にコマンドブロックを生成。
⚠️ 何十行ものリストを一度にユーザーに押し付けない;⚠️ 各提案には必ず「何か / どのくらいのサイズか / なぜそう判断したか / 公式コマンド / 代償」の5要素を含める。
ステップ4 · クリーンアップしたい場合、選択子に任せる
bash scripts/clean.sh --dry-run # まず実行せずに確認(初回は強く推奨)
bash scripts/clean.sh # 選択後にクリーンアップ
対話型選択:Spaceで選択 · ↑↓で移動 · aですべて選択 · nですべて解除 · Enterで確認 · qで終了。
データ類には 🔒 が付き、選択不可;確認ページで実行されるコマンドと代償を1行ずつ表示し、yes を入力して初めて実行。
ルーティング
| 何をするか | どれを読むか |
|---|---|
| あるディレクトリがどの分類に属するか、公式のクリーンアップコマンドを知りたい | references/rules.md |
| レポートの書き方、対話の進め方 | references/report.md |
| 境界線、絶対にやってはいけないこと | references/safety.md |
| スキャナーの実装とセルフチェック | scripts/scan.sh |
| クリーンアップ選択子(削除を許可する唯一の場所) | scripts/clean.sh |
よくある質問への標準回答
- 「直接削除してよ」 → Enterキーは代わりに押しません。
bash scripts/clean.shを実行して選択してください。まずコマンドと代償を一覧表示します。実行前に確認したい場合は--dry-runを追加してください。 - 「一番大きいやつ、削除していい?」 → まず身分を見て、サイズを見ない。一番大きいのはたいていモデルの重みやコンテナボリューム(データ類)で、まさに削除すべきでないもの。
- 「削除したらどうなる?」 → 各項目に「代償」欄があります。キャッシュ類は一律「再ダウンロードが必要で、時間と通信量がかかる」。残骸類だけが純粋に解放されます。
- 「なぜこれが残骸と判断されたの?」 → 4つのシグナルの原文を報告し、ユーザー自身で再確認してもらいます。
境界
- カバーするのは開発ツールの占有のみ(バージョンマネージャ / パッケージマネージャ / ビルドキャッシュ / コンテナ / AIモデル)。システムキャッシュ、写真、メール添付ファイル、WeChatは範囲外——それらはシステムの「ストレージスペース」画面に任せます。
- ホームディレクトリ内のみスキャンし、システムディレクトリや他のユーザーディレクトリには触れません。
- ネットワーク接続は行わず、スキャン結果を外部に送信しません。
診断ツールファミリー相互リンク
| 層 | Skill | いつ引き継ぐか |
|---|---|---|
| 設定 | hekouwang-claude-md-doctor-skill | AGENTS.md/CLAUDE.md が重複、ルーティング誤り、frontmatter欠落 |
| スキル | hekouwang-claude-skill-doctor-skill | SKILL.md の構造、リンク切れ、OpenClaw宣言 |
| 環境 | 本 skill | ディスク満杯、バージョンマネージャ残骸、AIホストディレクトリ肥大 |
レポート内で設定やスキルの問題を発見した場合、他の2つのスキルを指名するだけで、本レポート内でファイル内容の監査を無理に行わない。