Cortadel Doctor は何をしますか?
エンドツーエンドのインストール診断。以下のすべてのチェックを実行し、最初の失敗で停止しないでください。
この診断では cortadel-plugin/scripts/lib.mjs の api() ヘルパーを絶対に使用しないでください: このヘルパーはすべての失敗(非2xx、タイムアウト、ネットワークエラー)を null に飲み込みます。これは、401エラーとゼロ結果を区別することが診断のすべての役割である場合、まったく間違った動作です。生の curl(またはMCPツールを直接)を使用して、実際のステータスコードとエラーボディが表示されるようにしてください。
実行
チェック1 — 設定解決
プラグイン自身のフックが解決するのと同じ必須値(base_url、user_id、api_key)を解決します。最初に CLAUDE_PLUGIN_OPTION_<KEY> 階層、次に CORTADEL_* 環境変数階層の優先順位で — これは cortadel-plugin/scripts/lib.mjs の cfg()/readOption() の優先順位を反映しています:
for pair in "CLAUDE_PLUGIN_OPTION_BASE_URL:CORTADEL_URL" \
"CLAUDE_PLUGIN_OPTION_USER_ID:CORTADEL_USER_ID" \
"CLAUDE_PLUGIN_OPTION_API_KEY:CORTADEL_API_KEY"; do
opt="${pair%%:*}"; fallback="${pair##*:}"
val="${!opt:-${!fallback:-}}"
if [ -n "$val" ]; then echo "$fallback: resolved"; else echo "$fallback: NOT SET"; fi
done
3つすべてが空でない値に解決された場合はPASS、いずれかが空の場合はFAIL — 残りのチェックは「設定なしのためスキップ」として報告します。APIキーの実際の値は決して出力せず、解決されたかどうかのみを出力します。
注意事項(関連する場合、ユーザーに明確に伝えてください): CLAUDE_PLUGIN_OPTION_* はフックサブプロセスに注入されることが文書化されています。スキル自身のシェル実行内で可視であるかどうかは、このリポジトリでは確認されていません — 両方の階層をチェックし、どの階層が実際に各値を解決したかを報告してください。マーケットプレイス階層がここで到達可能であると仮定しないでください。
チェック2 — サーバーヘルス(認証なし)
GET /api/health はまったく認証情報を必要としません — これは最初のネットワークプローブとして適切であり、自身のAPIキーが有効かどうかに依存しません:
curl -s "$CORTADEL_URL/api/health"
トップレベルの status(ok または degraded)と、存在する場合は checks マップ(例:checks.memgraph.ok、checks.embeddings.ok)を報告します。degraded/503応答は、報告すべき正常で例外的でない結果です — 残りのチェックを停止する理由にはなりません。
チェック3 — 認証
curl -s -o /tmp/cortadel-doctor-auth.json -w "HTTP %{http_code}\n" \
-H "Authorization: Bearer $CORTADEL_API_KEY" \
"$CORTADEL_URL/api/v1/memories?user_id=$CORTADEL_USER_ID&size=1"
200→ PASS。401→ FAIL — APIキーが欠落または無効。403→ FAIL — キーは有効だがuser_idと一致しない。- その他 → FAIL — ステータスコードと応答ボディを報告。
チェック4 — ライブ読み取り
チェック3が 200 を返した場合、/tmp/cortadel-doctor-auth.json を読み戻します:JSONとしてパースでき、items 配列と total カウント(MemoryListPagedResponse の形状)を持つことを確認します。total をインストールのメモリカウントとして報告します — これはサーバーが公開する唯一の集計値です;別の統計エンドポイントは存在しないため、これが「統計」のすべてです。
このセッションで cortadel MCPサーバーも接続されている場合は、さらに mcp__cortadel__search_memory({ topK: 1 })(query なし — ブラウズモード)を呼び出し、RESTではなくMCPサーフェスを通じた独立した2つ目のライブ読み取りパスとして機能させます。RESTパスとMCPの失敗(またはその逆)は、インストールのどの半分が実際に壊れているかを絞り込みます。現在のセッションでMCPツールが利用できない場合、このサブチェックはスキップします — 失敗させないでください。
表示
4つのチェックすべてを、チェックごとに PASS/FAIL/WARN で報告します。例:
設定解決 PASS base_url, user_id, api_key すべて解決 (CORTADEL_* 階層)
サーバーヘルス PASS status=ok
認証 PASS HTTP 200
ライブ読み取り PASS total=142 memories; MCP search_memory: PASS
いずれかのチェックが失敗した場合、docs/plugin.md のトラブルシューティングセクションを反映した具体的な次の手順を追加します:401 → CORTADEL_API_KEY を確認;403 → CORTADEL_USER_ID がキーのユーザーと一致するか確認;ヘルス低下 → 失敗した checks.* エントリを指摘。