ln-005-environment-scanner について
Codex と Gemini CLI の利用可否を調べ、結果を `docs/environment_state.json` に記録するユーティリティです。フック設定も確認し、再スキャン時にはユーザー指定の無効化フラグや追加フィールドを保持します。
主な機能
- 01Codex と Gemini CLI の利用可否を確認
- 02結果を JSON ファイルに記録
- 03フック設定と依存関係を確認
- 04無効化フラグと追加フィールドを保持
- 05個別のプローブ失敗後も処理を継続
活用シーン
- 01初期設定時の環境状態ファイル作成
- 02エージェント導入後の利用可否の再確認
- 03フックスクリプトと依存関係の確認
- 04後続のスキル確認で無効化済みエージェントを除外
MCP 対応
MCP ツールの調査や MCP サーバーの公開は行いません。コマンドラインエージェントとフック設定をスキャンします。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ levnikolaevich/ claude-code-skills --skill ln-005-environment-scannerインストール後、Claude Code で/ln-005-environment-scannerを入力して読み込まれたか確認します。
同梱ファイルreferences/environment_state_schema.json
詳細
パス: ファイルパス(
shared/、references/、../ln-*)はスキルリポジトリのルートを基準とします。CWD に見つからない場合は、この SKILL.md のディレクトリを探し、1 つ上の階層をリポジトリのルートとしてください。
環境スキャナー(スタンドアロンユーティリティ)
種類: スタンドアロンユーティリティ カテゴリ: 0XX Shared
CLI エージェント(Codex、Gemini)を検査し、docs/environment_state.json に書き込みます。スキルはこのファイルを読み取り、エージェントをリアルタイムで検査する前に disabled フラグを確認します。
このスキルを使用するタイミング
- プロジェクトの初回セットアップ時(まだ
docs/environment_state.jsonがない場合) - CLI エージェント(Codex、Gemini)のインストール後または削除後
ln-004-agent-config-syncの実行後(同期によってエージェントの利用可否が変わる場合があります)- スキルがエージェントの予期しない利用不可を報告したとき
出力ファイル
docs/environment_state.json — references/environment_state_schema.json に照らして検証されます。
{
"$schema": "environment_state_v1",
"scanned_at": "2026-03-08T14:30:00Z",
"agents": {
"codex": { "available": true, "version": "0.1.2503" },
"gemini": { "available": false, "detail": "Command not found in PATH" }
}
}
ユーザーによる上書き
ユーザーは、検出状態を失わずにオプトアウトできるよう、任意のエージェントのエントリに "disabled": true を追加できます。
"codex": { "available": true, "disabled": true, "version": "0.1.2503" }
スキャナーは再スキャン時に disabled フィールドを保持します。available、detail、version は上書きしますが、disabled には一切触れません。
スキルでの使用方法: --health-check を実行する前に、スキルはこのファイルを読み取ります。disabled: true の場合、エージェントは直ちにスキップされます(検査は行われません)。disabled: false または未設定の場合は、リアルタイムのヘルスチェックが実行されます。
ワークフロー
Probe Agents → Write JSON → Summary
フェーズ 1:CLI エージェントを検査する
agent_runner.mjs --health-check を 1 回呼び出し、登録されているすべてのエージェントを検査します。
node shared/agents/agent_runner.mjs --health-check
パスの解決: shared/agents/agent_runner.mjs はスキルリポジトリのルートを基準とします。この SKILL.md のディレクトリから親ディレクトリをたどって探してください。
出力を解析(エージェントごとのステータスを含む JSON):
| エージェント | レジストリキー | 状態フィールド |
|---|---|---|
| Codex | codex(codex --version を確認) | available、version(バージョン出力の 1 行目) |
| Gemini | gemini(gemini --version を確認) | available、version(バージョン出力の 1 行目) |
agent_runner.mjs が見つからない、またはエラーが発生した場合: 両方のエージェントを available: false、detail: "agent_runner.mjs not available" に設定します。
フェーズ 1.5:フックのヘルスチェック
必ず読み込むこと: shared/references/hook_health_check.md を読み込みます。
フック設定を検証します。JSON の構文、スクリプトの存在、依存関係の利用可否を確認します。結果を hooks キーの下にある docs/environment_state.json に追加します。
"hooks": {
"status": "ok",
"events": 3,
"scripts_found": "3/3",
"dependencies": { "node": "22.0.0" }
}
hooks.json が見つからない場合は、"hooks": { "status": "not_configured" } とします。
フェーズ 2:JSON を書き込む
- 既存の状態を読み取る(
docs/environment_state.jsonが存在する場合):- 既存のエントリから
disabledフィールドを保持します - ユーザーが追加したカスタムフィールドを保持します
- 既存のエントリから
- 新しい状態を作成する:
$schema:"environment_state_v1"scanned_at:現在の ISO 8601 タイムスタンプagents:検査結果(新しいavailable/detail/version)と、保持したdisabledフラグをマージします
docs/ディレクトリが存在することを確認する(なければ作成)- 2 スペースのインデントで
docs/environment_state.jsonを書き込む - 書き込んだファイルを
references/environment_state_schema.jsonの構造に照らして検証する(キーの存在を確認)
フェーズ 3:サマリーレポート
結果を表として表示します。
Environment Scan Complete:
| Agent | Status | Detail |
|--------|-------------|---------------------------|
| Codex | available | 0.1.2503 |
| Gemini | unavailable | Command not found in PATH |
State written to: docs/environment_state.json
いずれかのエージェントに disabled: true が設定されている場合、ステータスは available/unavailable ではなく disabled と表示します。
重要なルール
- すべてのエージェントを検査します。 このスキルは既存の状態にかかわらず、常にすべてのエージェントを検査します。これは完全な再スキャンです。
disabledを保持します。 ユーザーが設定したdisabled: trueフラグを上書きしないでください。検出状態は更新しますが、ユーザー設定は維持します。- 副作用を発生させません。 このスキルが書き込むのは
docs/environment_state.jsonのみです。他のファイルは変更しません。 - 適切にエラーを処理します。 各検査は独立しています。1 つの検査に失敗した場合は、そのエージェントのエントリを
available: falseとし、スキャンを続行します。 - 有効期限はありません。 状態ファイルに有効期限はありません。このスキルを実行したときにのみ更新されます。
アンチパターン
| してはいけないこと | すること |
|---|---|
| 「既知」のエージェントのプローブを省略する | 常にすべてのエージェントをプローブします。これはフルスキャンです |
再スキャン時に disabled フラグを削除する | マージします。検出フィールドは上書きし、disabled は維持します |
| プローブに失敗した場合に再試行する | エージェントごとに1回だけ試行します。失敗した場合は available: false にします |
| MCP ツールやプラットフォームをプローブする | CLI エージェント(Codex、Gemini)のみをプローブします。MCP ツールは別の場所で設定されています |
| TTL やキャッシュの有効期限ロジックを追加する | 状態は手動更新のみです |
完了の定義
- 両方のエージェントをプローブ済み(Codex、Gemini)
- フックのヘルスチェック完了(hooks.json、スクリプト、依存関係)
-
docs/environment_state.jsonに有効な構造(agents + hooks)で書き込み済み - 再スキャン後も既存の
disabledフラグを維持 - ユーザーにサマリーテーブルを表示
バージョン: 2.0.0 最終更新日: 2026-03-08