mcpField
L
ln-005-environment-scanner

ln-005-environment-scanner

github.com/levnikolaevichエージェントワークフロー58457 回インストール2 日前に更新
リポジトリ

ln-005-environment-scanner について

Codex と Gemini CLI の利用可否を調べ、結果を `docs/environment_state.json` に記録するユーティリティです。フック設定も確認し、再スキャン時にはユーザー指定の無効化フラグや追加フィールドを保持します。

主な機能

  1. 01Codex と Gemini CLI の利用可否を確認
  2. 02結果を JSON ファイルに記録
  3. 03フック設定と依存関係を確認
  4. 04無効化フラグと追加フィールドを保持
  5. 05個別のプローブ失敗後も処理を継続

活用シーン

  1. 01初期設定時の環境状態ファイル作成
  2. 02エージェント導入後の利用可否の再確認
  3. 03フックスクリプトと依存関係の確認
  4. 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):

エージェントレジストリキー状態フィールド
Codexcodex(codex --version を確認)available、version(バージョン出力の 1 行目)
Geminigemini(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 を書き込む
  1. 既存の状態を読み取る(docs/environment_state.json が存在する場合):
    • 既存のエントリから disabled フィールドを保持します
    • ユーザーが追加したカスタムフィールドを保持します
  2. 新しい状態を作成する:
    • $schema:"environment_state_v1"
    • scanned_at:現在の ISO 8601 タイムスタンプ
    • agents:検査結果(新しい available/detail/version)と、保持した disabled フラグをマージします
  3. docs/ ディレクトリが存在することを確認する(なければ作成)
  4. 2 スペースのインデントで docs/environment_state.json を書き込む
  5. 書き込んだファイルを 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 と表示します。


重要なルール

  1. すべてのエージェントを検査します。 このスキルは既存の状態にかかわらず、常にすべてのエージェントを検査します。これは完全な再スキャンです。
  2. disabled を保持します。 ユーザーが設定した disabled: true フラグを上書きしないでください。検出状態は更新しますが、ユーザー設定は維持します。
  3. 副作用を発生させません。 このスキルが書き込むのは docs/environment_state.json のみです。他のファイルは変更しません。
  4. 適切にエラーを処理します。 各検査は独立しています。1 つの検査に失敗した場合は、そのエージェントのエントリを available: false とし、スキャンを続行します。
  5. 有効期限はありません。 状態ファイルに有効期限はありません。このスキルを実行したときにのみ更新されます。

アンチパターン

してはいけないことすること
「既知」のエージェントのプローブを省略する常にすべてのエージェントをプローブします。これはフルスキャンです
再スキャン時に 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

コメント