mcpField
T
test:triage

test:triage

github.com/antithesishqテスト・品質302370 回インストール1 週間前に更新
リポジトリ

test:triage について

test:triage は antithesis-triage スキルを検証するエンドツーエンドのテストハーネスです。サブエージェントに Antithesis API で実際のトリアージを行わせ、そのセッション記録から不具合、手順違反、非効率な操作を確認します。

主な機能

  1. 01サブエージェントによる実行の発見とトリアージ
  2. 02完了・未完了の実行対象を選択
  3. 03生のセッション記録を監査
  4. 04不具合と手順遵守を確認
  5. 05問題を簡潔に報告

活用シーン

  1. 01失敗プロパティのトリアージを検証
  2. 02未完了実行の診断を確認
  3. 03snouty コマンドの動作を監査

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/antithesishq/antithesis-skills --skill test:triage

インストール後、Claude Code で/test:triageを入力して読み込まれたか確認します。

詳細

テスト:Antithesis トリアージスキル

antithesis-triage スキルのエンドツーエンドテストハーネスです。サブエージェントを起動し、snouty を介して稼働中の Antithesis API に対する実際のトリアージ操作を実行させ、その作業に問題がないか確認します。

トップレベルのエージェントは、antithesis-triage スキルを直接使用してはなりません。 すべてのトリアージ操作はサブエージェント内で実行します。トップレベルのエージェントは、オーケストレーションとレビューのみを行います。

前提条件

開始する前に、トリアージスキルで必要とされるものと同じ前提条件を確認します。

which snouty && which jq && snouty --version

snouty はバージョン 0.8.0 以上である必要があります。次に、標準の確認方法(トリアージスキルの事前確認と同じ方法)で認証情報を確認します。

snouty doctor

前提条件が不足している場合、古い場合、または snouty doctor が失敗した場合は、処理を停止し、利用できないものを報告してください。

フェーズ 1:実行を検出する

Agent ツールを使って、汎用サブエージェントを起動します。以下の指示で、{{TENANT}} を $ANTITHESIS_TENANT 環境変数の実際の値に、{{TRIAGE_SKILL}} をこのリポジトリ内の antithesis-triage/SKILL.md の絶対パスに置き換えてください。現在のシェルで $ANTITHESIS_TENANT が空の場合は、中止せずにユーザーにテナント名を尋ねてください。

Read the skill file at {{TRIAGE_SKILL}} and follow its instructions to list
recent runs for the tenant "{{TENANT}}". Follow the "Summarize recent runs"
workflow.

Return the COMPLETE raw NDJSON of `snouty runs --json list -n 200` along
with a per-run summary that includes, for each run:
  - run_id
  - status
  - launcher
  - created_at / completed_at
  - antithesis.test_name and antithesis.description (from parameters)
  - whether links.triage_report is present (triageable yes/no)

Do NOT filter by status — return the full list so the orchestrator can
select targets across statuses.

次に進む前に、このサブエージェントの処理が完了するまで待ちます。

サブエージェントが NDJSON リストを返さなかった場合は、中止してください。

フェーズ 2:テスト対象を選択する

サブエージェントの出力を読み取ります。実行の一覧から、次の 2 つの対象を選択します。

  1. モーメントを持つ失敗プロパティがある完了済みの実行。
    • status == "completed"
    • links.triage_report が存在する
    • 失敗プロパティのうち、少なくとも 1 つに counterexamples[0].moment.input_hash が存在する(つまり、テレメトリ/メタプロパティではなく、モーメントを指定できる)

snouty runs --json properties --failing $RUN_ID を呼び出し、少なくとも 1 件のエントリに moment フィールドを持つ反例があることを確認します。

  1. failure_moment がある未完了の実行。
    • status == "incomplete"
    • links.triage_report が存在する
    • snouty runs --json show $RUN_ID に failure_moment が存在する
    • 実行時間(completed_at − created_at)が 30 分未満の実行を優先します。通常、これはセットアップ時または実行初期の失敗であり、診断の未完了パスを最も直接的に検証できます。

対象が見つからない場合のルール:

  • 失敗プロパティのモーメントを持つ完了済みの実行がない場合は、フェーズ 3a をスキップし、最終レポートにその旨を記載します。
  • failure_moment がある未完了の実行がない場合は、フェーズ 3b をスキップし、その旨を記載します。
  • 実行が 1 つもない場合は、その旨を報告して停止します。

フェーズ 3:選択した実行をトリアージする

利用可能な対象ごとに、サブエージェントを並行して起動します。サブエージェントに詳細な報告を指示したり、テストされていると伝えたりしないでください。これにより、サブエージェントの動作が変わってしまいます。オーケストレーターは、フェーズ 4 でサブエージェントの生のセッショントレースを直接確認します。

フェーズ 3a:失敗プロパティがある完了済みの実行

以下の指示で汎用サブエージェントを起動します(実際の実行 ID と、このリポジトリ内にある antithesis-triage/SKILL.md の絶対パスである {{TRIAGE_SKILL}} を指定してください)。

Read the skill file at {{TRIAGE_SKILL}} and follow its instructions to
triage the Antithesis run with run_id {{RUN_ID}}. Investigate the logs of
the failing property most likely to be a SUT bug. Pick any failing property
if you aren't sure. Do NOT explore or analyze any local source code
repositories — only use the snouty API and downloaded logs to perform your
triage.
フェーズ 3b:未完了の実行

以下の指示で汎用サブエージェントを起動します(実際の実行 ID と、このリポジトリ内にある antithesis-triage/SKILL.md の絶対パスである {{TRIAGE_SKILL}} を指定してください)。

Read the skill file at {{TRIAGE_SKILL}} and follow its instructions to
triage the Antithesis run with run_id {{RUN_ID}}.

両方のサブエージェントが完了するまで待ちます。

フェーズ 4:レビューと報告

スキルプロトコルを理解する

サブエージェントのトレースを監査する前に、トリアージスキルとそのリファレンスを読み、正しい動作と違反を区別できるようにしてください。

  1. antithesis-triage/SKILL.md を読む — スキルプロトコルの概要
  2. antithesis-triage/references/run-discovery.md を読む — 実行の一覧表示と選択方法
  3. antithesis-triage/references/run-info.md を読む — 単一実行のメタデータ
  4. antithesis-triage/references/properties.md を読む — 反例やモーメントをログのダウンロードに対応づける方法を含む、プロパティのトリアージワークフロー
  5. antithesis-triage/references/logs.md を読む — ログ形式と jq による分析パターン

コンプライアンスを評価する際は、これらを正しい基準として使用してください。サブエージェントの動作に不自然な点があれば、問題として指摘する前に、スキルにその動作が記載されているか確認してください。

サブエージェントのセッションログを読む

Agent ツールは、各サブエージェントの agentId を返します(結果では agentId: <id> と表示されます)。現在のセッション ID と各 agentId を使って、生の JSONL セッションログを読み取ってください。

~/.claude/projects/<project-dir>/<session-id>/subagents/agent-<agentId>.jsonl

現在のセッションディレクトリを見つけるには、~/.claude/projects/ の下で、subagents/ フォルダーを含むディレクトリのうち、最も最近更新されたものを探してください。

各サブエージェントのトレースから Bash ツール呼び出しをすべて抽出し、各コマンドとその出力を確認してください。

jq -c 'select(.type == "assistant") | .message.content[]?
  | select(.type == "tool_use" and .name == "Bash") | .input.command' \
  <trace-file>.jsonl

ツールの結果を抽出して、コマンドの出力を確認してください。

jq -c 'select(.type == "user") | .message.content[]?
  | select(.type == "tool_result") | {tool_use_id, content: .content[:500]}' \
  <trace-file>.jsonl

これにより、各サブエージェントが行ったすべての操作(snouty の呼び出し、jq クエリ、スクリプトの実行、エラーなど)を完全に把握でき、要約に頼る必要がありません。

確認する項目

生のトレースを確認し、次のカテゴリに該当する問題がないか調べてください。

バグ — 動作に問題があるもの:

  • タイムアウト以外のエラー(404、スキーマの不一致、予期しない終了コード)で失敗する snouty runs の呼び出し
  • ログのダウンロード手順(snouty runs --json logs ... | jq -s '.')が失敗する、タイムアウトする、または出力が切り詰められる/不完全になる
  • エラーになる jq クエリ、またはデータが存在するはずなのに null を返すクエリ
  • スキルに記載されたコマンドが、スキルの説明どおりに動作しない

コンプライアンス違反 — サブエージェントがスキルプロトコルに従っていないもの:

  • snouty runs でデータを取得できるにもかかわらず、Web UI を使う、またはレポート URL に対して curl を実行する
  • トリアージ前に snouty runs --json show を実行しない
  • links.triage_report がない実行について、トリアージ対象外であることを最初に報告せずにトリアージする
  • snouty runs --json logs に渡す前に input_hash/vtime を丸める、または形式を変える(スキルでは値をそのまま渡す必要があります)
  • モーメントが利用可能なのに、対応するログをダウンロードして調べずにプロパティ失敗の根本原因を結論づける
  • テレメトリ/メタプロパティの反例(スカラーやセッション ID オブジェクトなど、moment ではないペイロード)をモーメントがあるかのように扱い、ログをダウンロードしようとする

非効率 — 動作するが、時間やトークンを無駄にするもの:

  • 同じログファイルを同じパスに繰り返しダウンロードする
  • 片方だけ必要なのに、--failing/--passing フィルターを使わずすべてのプロパティを取得する
  • jq フィルターを実行する代わりに、大きなログをコンテキストウィンドウに読み込む
  • 複数回の再試行が必要だった手順(特に同じ操作を 2 回より多く再試行した場合)。通常、これはスキルの指示が不明確であることを示します

同じ実行/エンドポイントに対する snouty runs の繰り返し呼び出しは、非効率として指摘しないでください。snouty は繰り返しの呼び出しをキャッシュするため、異なる jq の深さやフィルターで同じ snouty runs 呼び出し(例:properties、show、build-logs)を再実行しても問題なく、スキル上の問題を示すものではありません。

出力形式

対応が必要な問題のみに焦点を当てた簡潔なレポートを作成してください。問題なく行えた点、一般的な提案、広範な推奨事項のセクションは含めないでください。目的は、障害や非効率に関する明確な情報を提示することです。

テスト概要
  • テスト対象のテナント
  • 選択した実行(run_id、ステータス、該当する場合は失敗プロパティ数)
  • 起動したサブエージェント(agentId を含む)
  • スキップしたフェーズとその理由
問題

見つかった問題ごとに、以下を記載してください。

  • 重大度:バグ/コンプライアンス/非効率性
  • フェーズ:問題が発生したフェーズ
  • 説明:何が起きたか
  • 証拠:セッショントレースに記録された正確なコマンドと出力(直接引用)
  • 修正:実施すべき具体的な変更(ファイル名と変更内容)

重大度の高い順に並べてください(バグ、コンプライアンス、非効率性の順)。

問題が見つからなかった場合は、「問題は見つかりませんでした」と報告してください。報告内容を水増ししないでください。

コメント