qa について
qa は、コード、文書、テスト出力などを一度の評価で確認する Ouroboros のスキルです。複数の品質項目を採点し、判定と実行可能な提案を返します。
主な機能
- 01多様な成果物の評価
- 025つの品質項目の採点
- 03PASS、REVISE、FAIL の判定
- 04反復評価への対応
- 05動作を伴う成果物の検証
活用シーン
- 01受け入れ基準に沿ったコードレビュー
- 02文書や API 応答の評価
- 03テスト出力と実際の動作の確認
MCP 対応
利用可能な場合、Ouroboros MCP ツール `ouroboros_qa` を呼び出します。MCP サーバーがない環境向けの代替手順もあります。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ q00/ ouroboros --skill qaインストール後、Claude Code で/qaを入力して読み込まれたか確認します。
詳細
/ouroboros:qa
コード、ドキュメント、API レスポンス、テスト出力、カスタムコンテンツなど、あらゆる成果物を素早く一度で評価し、実行可能な提案を添えて品質を判定します。実行を正式な3段階で検証するには、ooo evaluate を使用してください。
ooo qa [file_path | artifact_text]
ooo qa # recent execution output
/ouroboros:qa [file_path | artifact_text]
QA Judge は、正確性、完全性、品質、意図との整合性、ドメイン固有の観点に基づいて、定められた品質基準に照らして成果物を採点します。
| スコア | 判定 | ループでのアクション |
|---|---|---|
| >= 0.80 | 合格 | 完了 |
| 0.40 - 0.79 | 要修正 | 続行 |
| < 0.40 | 不合格 | エスカレーション |
手順
MCP ツールの読み込み(遅延スキーマへの対処)
Ouroboros ツールは遅延読み込みされる場合があり、あるターンで読み込まれたスキーマが次のターンまでにアンロードされることがあります。各 ouroboros_* 呼び出しの直前に、アクティブなランタイムのツール検出機能を使って読み込んでください。ouroboros_qa の場合は "+ouroboros qa" を指定します。スキーマが読み込まれていない状態で呼び出すと、"Invalid tool parameters" というエラーが発生します。ツールをすでに呼び出せる場合、検出は何も行わず、空の結果が返されます。フォールバックは、ツールが実際に存在しない場合にのみ使用してください。このスキルは MCP のセットアップなしでも動作します。
QA の手順
- 成果物:ファイルパス(アクティブなランタイムの
inspect_code機能で読み取ります)、インラインテキスト、または直近の実行出力です。不明な場合はask_userで確認します。 - 品質基準:Seed がコンテキストにある場合は Seed の受け入れ基準、そうでなければユーザーが示した基準です。いずれもない場合は「この成果物にとって『良い』とはどういう意味ですか?」と尋ねます。
- 成果物の種類:
code、test_output、document、api_response、screenshot、customのいずれかです。
3.5. 動作検証の並列実行(動作を伴う成果物):期待を込めたログ行にテキスト判定が惑わされることがあります。アクティブなランタイムの orchestrate_subagents 機能を使って、ランタイムが公開する動作モダリティごとに1つずつ、プローブ用の子エージェントを同時に起動します。プロセスプローブ(run_shell:コマンド、アプリ、またはスモークテスト用コマンドをタイムアウト付きで実行し、終了コードと実際の出力を取得する)、ブラウザープローブ(HTTP サービスと Web UI:読み込み、主要なフローの操作、レンダリングとコンソール/ネットワークエラーの取得)、コンピューター操作プローブ(GUI/TUI:ユーザーのように操作し、観測した状態のスクリーンショットを撮る)、成果物プローブ(inspect_code:宣言されたファイルにプレースホルダーではない実際の内容が存在することを確認する)です。各プローブは、コマンド、観測した動作、スクリーンショット/パス、動作ごとの合否のみを含む構造化された証拠を返し、QA ツールに記載されている該当する敵対的なケースを網羅します。ツールが存在しない場合、または成果物に意味のないモダリティに限り、そのモダリティを省略し、省略したものと理由を述べます。すべてのプローブの完了を待ち、統合した証拠を reference として渡します。内容が食い違う場合は、ソーステキストよりも観測された動作を artifact として優先します。
-
ツールを呼び出す:
Tool: ouroboros_qa Arguments: artifact: <the content to evaluate> quality_bar: <what 'pass' means> artifact_type: "code" (or other type) reference: <observed-behaviour evidence from step 3.5, plus any reference> pass_threshold: 0.80 (adjustable) seed_content: <seed YAML if available>プラグインへの委任:
status: "delegated_to_subagent"およびdispatch_mode: "plugin"を含む応答には判定結果がありません。その内容はブリッジからのディスパッチ通知であり、_subagentプロンプトは子エージェントへの入力であって、結果ではありません。qa_session_idを保持し、プラグインが起動した子エージェントの完了を待って、その JSON 判定結果(score、verdict、dimensions、differences、suggestions、reasoning)を解析します。iteration_entryは返されないため、ツールと同様にループのアクションを導き出します(スコアがpass_threshold以上:完了、0.40以上:続行、それ以外:エスカレーション)。また、エントリー(iteration、score、verdict、loop_action)を自分で作成します。子エージェントから解析可能な判定結果が返されない場合は、その旨を述べ、エンベロープを結果として提示しないでください。 -
提示する:スコアと判定結果を目立つように示し、次に各評価軸のスコア、具体的な差異、実行可能な提案を示します。実証的な証拠は判定結果より優先されます:判定が PASS でもプローブが動作の失敗を観測した場合は、その証拠に基づいて REVISE/FAIL を提示し、その旨を述べます。何も動作させられなかった場合は、動作を観測できなかったことを明記します。判定結果に応じて次のアクションを選びます:
- PASS(完了):続行します。成果物は品質基準を満たしています
- REVISE(続行):提案に対応してから、もう一度
ooo qaを実行します - FAIL(エスカレーション):要件を再検討するには
ooo interviewを、前提を問い直すにはooo unstuckを実行します
反復 QA
最初の呼び出しでは、メタデータに qa_session_id と iteration_entry が返されます。後続の呼び出しでは、qa_session_id と蓄積した iteration_history を渡します。判定が pass または fail になるまで続けます。
フォールバック(Ouroboros MCP サーバーがない場合)
MCP ツールで使用されるものと同じプロンプトを使って、自分で qa-judge の役割を担います。$OUROBOROS_AGENTS_DIR/qa-judge.md のオーバーライドが設定されている場合はそのファイルを使い、そうでなければインストール済みパッケージのコピーを run_shell で表示します:
uvx --isolated --python '>=3.12' --from ouroboros-ai python -c "import importlib.resources as r, sys; print(r.files('ouroboros.agents').joinpath(sys.argv[1]).read_text(encoding='utf-8'))" qa-judge.md
どちらも利用できない場合は、上記の評価軸としきい値に基づいて判定し、判定結果に「未調整のフォールバック」と明記します。動作を伴う成果物の場合は、まず手順3.5のプローブを実行します。MCP ツールの返却形式(score、verdict、threshold、dimensions、differences、suggestions、reasoning、loop action)と同じ形式で判定結果を示し、qa-<uuid4_short> のセッション ID と会話内で保持する反復回数を使って、反復の契約を維持します。
RFC #1392 状態ブレッドクラムフッター
最終回答の末尾は、必ず ◆ <current state> → next: <recommended action> の1行で締めくくってください。利用可能な場合は ouroboros_session_status でライブセッションの状態を取得し、そうでない場合はこのスキルの実際の結果から状態を判断してください。直線的な Step N of M フッターは使わないでください。次のステップが実際の選択肢である場合は、2~3個の選択肢を示してください。