Claude Codeはループです。ファイルを編集し、ターミナルでコマンドを実行し、出力を読み取り、次に何をすべきかを決定します。では、なぜAPIテストがそのループに入っていないのでしょうか?APIテストはApidogのGUIの背後にあり、誰かがクリックするのを思い出したときに実行されます。エージェントがそれらに触れることはありません。
解決策は1つの設定ブロックです。Apidog CLIはnpmパッケージapidog-cliで、Apidogで作成したテストシナリオをターミナルから直接実行します。CLIがインストールされ、Claude Codeがその存在を認識すると、エージェントはユニットテストを実行するのと同じ方法でApidogシナリオを実行します。コマンドを実行し、終了コードを読み取り、赤色であればコードを修正します。
このガイドでは、一般的なインストールガイドがスキップするClaude Code固有の部分について説明します。具体的には、CLAUDE.mdに記述する正確な行、Claude Codeがその権限モデルの下でapidog runをどのように実行するか、そして独自の編集-テスト-修正ループ内で結果を読み取る方法です。
まだCLIをインストールしていない場合は、まずそれを実行してください。AIコーディングエージェントによるApidog CLIのインストール方法では、エージェントが入力を行いながらnpmインストールと初回実行の手順を説明しています。この記事では、apidog --versionが数値を出力し、Apidogアカウントが認証済みであることを前提としています。
button
どのClaude Codeについてか
これはClaude Code CLI、Anthropicのコーディングエージェントで、ターミナル(またはデスクトップアプリ)で実行されます。リポジトリを読み込み、ファイルを編集し、シェルコマンドを実行し、許可モードに基づいて承認を求めます。これはClaudeチャットアプリでも、単なるAPI呼び出しでもありません。リポジトリでclaudeを実行し、編集やコマンドの実行を提案するインタラクティブなエージェントが表示される場合、あなたは正しい場所にいます。ターミナル用に記述するコマンドは、Claude Codeスラッシュコマンドとそのルールファイルに格納され、そのルールファイルにApidog CLIが属します。
この区別は重要です。なぜなら、Claude Codeはプロジェクトのルールを学習するための独自の方法を持っており、そのメカニズムによって一度限りの「テストを実行する」という動作が、Claudeが自律的に利用するものに変わるからです。そのメカニズムがCLAUDE.mdです。
ステップ1: ApidogブロックをCLAUDE.mdに追加する
Claude Codeはセッション開始時にCLAUDE.mdファイルを読み取ります。これはCodexのAGENTS.mdに直接対応します。実際、Anthropicのドキュメントでは、Claude CodeはCLAUDE.mdを読み取り、AGENTS.mdではないと指摘されており、他のエージェント用にAGENTS.mdを保持している場合は、@AGENTS.mdで既存のAGENTS.mdをインポートすることを推奨しています。CodexでApidog CLIを既にセットアップしている場合、これはファイル名が異なる同じ考え方です。
リポジトリのルートにCLAUDE.mdを配置します(Claude Codeは./.claude/CLAUDE.mdや、個人設定用のグローバルな~/.claude/CLAUDE.mdも受け入れます)。Claude Codeは起動された場所からディレクトリツリーを遡り、見つけたすべてのCLAUDE.mdを読み込むため、リポジトリルートに1つのファイルを置けば、すべてのセッションに適用されます。以下のような短いブロックを追加してください。
## Apidog CLIによるAPIテスト
このプロジェクトにはApidogテストシナリオがあります。APIをチェックするには、以下を実行します。
`apidog run -t -e -r cli`
- 終了コード0はすべてのアサーションが成功したことを意味します。0以外は何らかの失敗を意味します。レポートを開き、先に進む前に修正してください。
- マシンは`apidog login`を介して既に認証されています。`--access-token`フラグを追加したり、このファイルにトークンを置いたりしないでください。
- フラグが不明な場合は、`apidog run --help`を実行し、そこから正確なフラグを使用してください。
チャットでCLIに言及するのではなく、CLAUDE.mdに記述する理由はここにあります。セッションに入力されたシナリオIDは、セッションが終了すると消えてしまいます。一方、CLAUDE.mdに記述されたものは、これ以降すべてのチームメイトとすべてのClaude Codeの実行で利用されます。ファイルは起動時に完全に読み込まれ、/compact後も残るため、指示はセッション全体で有効です。
ステップ2: Apidogからコマンドを取得する
そのブロックの<scenario_id>と<env_id>は推測する値ではありません。Apidogでテストシナリオを開き、CI/CDタブに移動して、生成されたapidog run ...コマンドをコピーします。そこには既に実際のシナリオID、環境ID、そして-r cliレポーターが入力されています。これらの正確なIDをCLAUDE.mdブロックに貼り付けてください。
-r cliレポーターは、ターミナルにステップバイステップの結果と概要を直接出力します。これは、Claude Codeが次のステップを決定するために読み取る出力そのものです。すべてのフラグの詳細については、Apidog CLI完全ガイドとapidog runコマンドリファレンスを参照してください。
ステップ3: Claude Codeにテストを実行させる
ブロックが配置されたら、リポジトリでClaude Codeを起動します。
claude
Claude Codeは起動時にCLAUDE.mdを読み込むため、CLIの存在を既に知っています。APIに影響を与える変更を加えるか、または単にチェックを実行するように依頼してください。Claude CodeはCLAUDE.mdからapidog runコマンドを発行します。
ここでは権限モデルが重要です。デフォルトモードでは、Claude Codeは承認されていないシェルコマンドを実行する前に確認を求めます。プロンプトが表示されたらapidog runコマンドを承認してください。信頼できるコマンドについて確認されないようにするには、CLIがプロンプトなしで実行されるように権限ルールを追加します。セッション内で/permissionsを実行するか、.claude/settings.jsonにBash(apidog run *)の許可ルールを追加してください。ステージング環境に対する読み取り専用のテストシナリオは、許可リストに追加しても安全なコマンドです。無人実行の場合、プロンプトを完全にスキップする--dangerously-skip-permissionsがありますが、これは日常の作業ではなくCI用に保管してください。
単に成功を主張する文章だけでなく、実行が進行し、Claude Codeが概要と終了コードの両方を報告するのを確認したいはずです。
ステップ4: Claude Code内でレポートを読み取る
実行が赤色になった場合、レポートが答えを持っています。-r cliを使用すると、Claude Codeはターミナルで読みやすい内訳を得ます。各リクエスト、各アサーション、そしてどれが期待値と実際値の違いで失敗したかを確認できます。失敗したアサーションは正確なフィールド名やステータスコードを示しており、これは通常、Claude Codeが修正を見つけるのに十分です。
ブラウザで開いたり、チームメイトに渡したりできるレポートには、HTMLレポーターを追加します。
apidog run -t <scenario_id> -e <env_id> -r cli,html
htmlレポーターは自己完結型のファイルを./apidog-reportsに書き込みます。Claude Codeが次のステップを決定するために読み取るインライン出力を引き続き取得できるよう、リストにcliを残してください。CIダッシュボードが解析するJUnit形式やその他のレポーターについては、Apidog CLIテストレポートを参照してください。
Claude Code自身のループ内でのテスト
重要なのは、あなたが指示するのをやめ、Claude CodeがCLAUDE.mdの指示に従って自律的にシナリオを実行したときに何が起こるかです。
Claude Codeがチェックアウト応答を構築するハンドラーを編集している状況を想像してください。そのループは変化します。コードを編集し、勝利を宣言する代わりに、ステージング環境に対してApidogシナリオを実行し、終了コードを読み取り、それに基づいて行動します。緑色であれば先に進み、赤色であればレポートを開き、どのアサーションが失敗したか(ステータスコード、欠落したフィールド、間違った値)を読み取り、修正を試みて再実行します。APIテストは、Claude Codeが既にユニットテストを実行しているのと同じ編集-テスト-修正ループの一部となります。あなたは1つの指示を記述しただけで、Claudeはそのコマンドを既存の動作に組み込みました。
これは、あらゆるエージェントワークフローを安全にする「委任して検証」モデルです。Claude Codeがコマンドを実行して結果を読み取り、あなたはApidogでシナリオを視覚的に作成し続け、エージェントが終了コードを正確に読み取っているかを確認します。より広範なパターンについては、AIエージェントをAPIテストに利用する方法とApidog AIテストハーネスを参照してください。
Claude Codeが実際にCLIを実行しているか検証する
エージェントは、実際には達成していない成功を報告することがあり、Claude Codeも例外ではありません。問題を発見する頻度が高い順に、3つのチェックがあります。
まず、コマンドがそもそも実行されたかを確認します。Claude Codeは実行したコマンドとその出力をインラインで表示します。文字通りのapidog run ...行とその下の結果を探してください。Claudeがテストを実行したと言っているのにコマンドが表示されない場合、それは実行していないことを要約しただけです。もう一度実行し、生の出力を表示するように依頼してください。
次に、重要な終了コードを確認します。直接尋ねてみてください。「そのapidog runコマンドの終了コードは何でしたか?」apidog runは、すべてのアサーションが成功すると0で終了し、何らかの失敗があると0以外で終了します。この単一の動作により、Claude Codeやパイプラインは実行をクリーンなゲートとして扱うことができます。Claudeが「テストが成功しました」と述べていても、終了コードが0以外の場合、終了コードが正しいです。
第三に、それが実際のシナリオを使用したか確認します。「シナリオが見つかりません」というエラーで実行が失敗した場合、ClaudeがIDをでっち上げたか、間違って記憶した可能性があります。CLAUDE.mdの-tと-eの値、およびApidogがCI/CDタブで生成したコマンドを再確認してください。CLAUDE.mdのIDが真実です。
オプション: Apidog MCPサーバーに接続する
CLAUDE.mdからapidog runを実行すれば、必要なことのほとんどはカバーされます。さらに一歩進んで、MCPサーバーを接続することで、Claude Codeがコードを書いている最中にAPIスペックを読み取れるようになり、事後的にテストするだけでなく済みます。
Claude Codeはモデルコンテキストプロトコル(MCP)をサポートしています。claude mcp add ...でサーバーを追加するか、プロジェクトルートに.mcp.jsonファイルをコミットし、--scope projectを選択することでチーム全体に適用できます。Apidog MCPサーバーは、MCPを介してAPI仕様を公開するため、Claudeはコード作成中にスキーマを読み取ります。これは分業と考えることができます。CLIがテストを実行し、MCPがエージェントに仕様を提供します。
Claude Codeが誤った場合
セットアップ中によく見られるいくつかの失敗があります。
CLAUDE.mdブロックが無視される。Claudeが一般的なコマンドを実行したり、まったくコマンドを実行しなかったりする場合、ブロックが読み込まれていない可能性があります。ファイル名が正確にCLAUDE.mdであり、リポジトリのルートまたは現在のディレクトリの親に配置されていることを確認してください。セッション内で/memoryを実行して、Claudeが実際に読み込んだファイルを一覧表示し、あなたのファイルがそこにない場合、Claudeはそれを見ることができません。セッションを再起動すると、強制的に再読み込みが行われます。
アクセストークンを渡してしまう。Claudeが--access-tokenを追加しようとする場合、それは公開されている例から推測しているだけです。マシンはapidog loginを介して認証済みであるため、ブロックは既に追加しないように指示しています。その行を強調し、実際のトークンをCLAUDE.mdに決して置かないでください。マシンが一度認証する方法については、Apidog CLI認証を参照してください。
存在しないフラグを発明する。「unknown option」エラーは、Claudeがあなたのバージョンには存在しないフラグを推測したことを意味します。apidog run --helpを実行し、そこから正確なフラグをコピーするように指示してください。これはインストールされているバージョンに対して常に正しいです。
失敗した実行を成功と報告する。これは最も代償が大きい失敗であり、終了コードのルールがCLAUDE.mdと検証ステップにある理由です。サマリーと終了コードが一致しない場合、終了コードが優先されます。
日常のエージェントからテスト済みのループへ
これがセットアップです。インストールガイドに従ってapidog-cliを一度インストールし、リポジトリのCLAUDE.mdに短いApidogブロックを追加するだけで、Claude Codeはコード編集に既に利用しているのと同じループ内で、APIテストを実行し結果を読み取る方法を学習します。壊れたエンドポイントは、変更がデプロイされた後ではなく、Claudeがまだ作業中に捕捉されます。
GUIの裏側にあるテストは人間がクリックしたときに実行されますが、一行コマンドはClaudeが決定したらいつでも実行されます。あなたはApidogでシナリオを視覚的に構築し続け、あなたのエージェントはあなたが監視していない場所でそれらを実行します。Apidogをダウンロードし、一つのシナリオを作成し、そのapidog runコマンドをCLAUDE.mdに記述して、次の変更時にClaudeがそれを取り込むのを見てください。Claudeがいないパイプラインで同じコマンドを実行する準備ができたら、GitHub ActionsにおけるApidog CLIがシークレット、レポーター、および終了コードによるゲートについて説明しています。
