Communitygithub.com

サンタメソッド

マルチエージェントによる対抗検証と収束ループ。2つの独立したレビューエージェントが両方とも合格するまで出力は出荷されません。出力が2つの独立した対抗レビュアーによる承認を得る必要がある場合に使用します。

サンタメソッド とは?

サンタメソッドは、AIエージェントの出力品質を高めるためのマルチエージェント対抗検証フレームワークです。中心となる考え方は、「リストを作り、2度確認し、問題があれば修正して合格するまで繰り返す」というものです。単一のエージェントが自身の出力をレビューすると、同じバイアスや知識ギャップ、系統的なエラーを共有するため、問題を見逃しやすくなります。サンタメソッドでは、生成エージェント(Agent A)が出力を作成した後、お互いにコンテキストを共有しない2つの独立したレビューエージェント(Reviewer BとC)が並行して評価を行います。両方のレビュアーが合格(PASS)した場合のみ「NICE(良い子)」と判定され、出力が出荷されます。どちらか一方でも不合格(FAIL)の場合は「NAUGHTY(悪い子)」となり、指摘された問題を全て修正し、新たなレビュアーで再度検証する収束ループに入ります。最大反復回数(デフォルト3回)を超えても合格しない場合は人間にエスカレーションされます。この手法は、Claude Codeのサブエージェント機能と組み合わせることで真のコンテキスト分離を実現でき、コードレビュー、コンテンツ作成、規制準拠など、高い出力品質が求められる場面で特に有効です。

対応✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/santa-method

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

サンタメソッド は何をしますか?

マルチエージェント対抗検証フレームワーク。リストを作り、2度確認しよう。悪い子なら、良い子になるまで修正する。

核となる洞察: 1つのエージェントが自身の出力をレビューしても、出力を生成したときと同じバイアス、知識のギャップ、系統的なエラーを共有している。2人の独立したレビュアーがコンテキストを共有せずにレビューすることで、この障害モードを打破する。

いつ起動するか

以下の場合にこのスキルを呼び出してください:

  • 出力が公開、デプロイ、またはエンドユーザーによって消費される場合
  • コンプライアンス、規制、またはブランドの制約を順守する必要がある場合
  • 人間のレビューなしでコードが本番環境に出荷される場合
  • コンテンツの正確性が重要な場合(技術文書、教育資料、顧客向けコピー)
  • 大規模なバッチ生成で、スポットチェックでは系統的なパターンを見逃す場合
  • ハルシネーションのリスクが高い場合(主張、統計、APIリファレンス、法的表現)

内部ドラフト、探索的リサーチ、または決定論的な検証が可能なタスク(これらにはビルド・テスト・リンターパイプラインを使用)には使用しないでください。

アーキテクチャ

┌─────────────┐
│  生成エージェント   │  フェーズ1: リストを作る
│  (Agent A)   │  成果物を生成する
└──────┬───────┘
       │ 出力
       ▼
┌──────────────────────────────┐
│     二重独立レビュー          │  フェーズ2: 2度確認する
│                                │
│  ┌───────────┐ ┌───────────┐  │  2つのエージェント、同じルーブリック
│  │ レビュアーB │ │ レビュアーC │  │  コンテキスト非共有
│  └─────┬─────┘ └─────┬─────┘  │
│        │              │        │
└────────┼──────────────┼────────┘
         │              │
         ▼              ▼
┌──────────────────────────────┐
│        評決ゲート             │  フェーズ3: 良い子か悪い子か
│                                │
│  B合格 かつ C合格 → 良い子      │  両方合格必須。
│  それ以外 → 悪い子              │  例外なし。
└──────┬──────────────┬─────────┘
       │              │
    良い子          悪い子
       │              │
       ▼              ▼
   [ 出荷 ]    ┌─────────────┐
               │  修正サイクル  │  フェーズ4: 良い子になるまで修正
               │              │
               │  iteration++  │  すべてのフラグを収集。
               │  i > MAX の場合:│  すべての問題を修正。
               │   エスカレーション│  両方のレビュアーを再実行。
               │  それ以外:      │  収束するまでループ。
               │   goto フェーズ2│
               └──────────────┘

フェーズ詳細

フェーズ1: リストを作る(生成)

プライマリタスクを実行します。通常の生成ワークフローに変更はありません。サンタメソッドは生成後の検証レイヤーであり、生成戦略ではありません。

# ジェネレータは通常通り実行
output = generate(task_spec)

フェーズ2: 2度確認する(独立二重レビュー)

2つのレビューエージェントを並行して起動します。重要な不変条件:

  1. コンテキスト分離 — どちらのレビュアーも相手の評価を見ない
  2. 同一ルーブリック — 両方に同じ評価基準が与えられる
  3. 同一入力 — 両方とも元の仕様と生成された出力を受け取る
  4. 構造化出力 — 各レビュアーは散文ではなく型付き評決を返す
REVIEWER_PROMPT = """
あなたは独立した品質レビュアーです。この出力に対する他のレビューは一切見ていません。

## タスク仕様
{task_spec}

## レビュー対象の出力
{output}

## 評価ルーブリック
{rubric}

## 指示
評価ルーブリックの各基準に対して出力を評価してください。それぞれについて:
- PASS: 基準を完全に満たしており、問題なし
- FAIL: 特定の問題を発見(問題の正確な内容を引用)

評価を構造化JSONとして返却:
{
  "verdict": "PASS" | "FAIL",
  "checks": [
    {"criterion": "...", "result": "PASS|FAIL", "detail": "..."}
  ],
  "critical_issues": ["..."],   // 修正必須のブロッカー
  "suggestions": ["..."]         // ブロックしない改善提案
}

厳密に行ってください。あなたの仕事は問題を見つけることであり、承認することではありません。
"""
# レビュアーを並行して起動(Claude Codeサブエージェント)
review_b = Agent(prompt=REVIEWER_PROMPT.format(...), description="サンタレビュアーB")
review_c = Agent(prompt=REVIEWER_PROMPT.format(...), description="サンタレビュアーC")

# 両方が同時に実行 — お互いは見えない

ルーブリック設計

ルーブリックは最も重要な入力です。曖昧なルーブリックは曖昧なレビューを生みます。すべての基準に客観的な合格/不合格条件が必要です。

基準合格条件不合格シグナル
事実の正確性すべての主張がソース資料または一般常識に対して検証可能捏造された統計、間違ったバージョン番号、存在しないAPI
ハルシネーションなし捏造されたエンティティ、引用、URL、参照がない存在しないページへのリンク、出典のない引用
完全性仕様のすべての要件が対応されているセクション欠落、エッジケースのスキップ、不完全なカバレッジ
コンプライアンスすべてのプロジェクト固有の制約をパス禁止用語の使用、トーンの違反、規制不適合
内部一貫性出力内に矛盾がないセクションAでXと言っているのにセクションBでnot-Xと言っている
技術的正確性コードがコンパイル/実行される、アルゴリズムが正しい構文エラー、ロジックバグ、誤った複雑性の主張

ドメイン固有ルーブリック拡張

コンテンツ/マーケティング:

  • ブランドボイスの順守
  • SEO要件の充足(キーワード密度、メタタグ、構造)
  • 競合他社の商標の不正使用がない
  • CTAが存在し、正しくリンクされている

コード:

  • 型安全性(anyのリークなし、適切なnull処理)
  • エラーハンドリングのカバレッジ
  • セキュリティ(コード内にシークレットなし、入力検証、インジェクション防止)
  • 新規パスのテストカバレッジ

コンプライアンス重要(規制、法律、金融):

  • 成果保証や実証されていない主張がない
  • 必要な免責事項が存在する
  • 承認された用語のみ使用
  • 管轄区域に適した言語

フェーズ3: 良い子か悪い子か(評決ゲート)

def santa_verdict(review_b, review_c):
    """両方のレビュアーが合格する必要があります。部分点はありません。"""
    if review_b.verdict == "PASS" and review_c.verdict == "PASS":
        return "NICE"  # 出荷

    # 両方のレビュアーからのフラグをマージ、重複排除
    all_issues = dedupe(review_b.critical_issues + review_c.critical_issues)
    all_suggestions = dedupe(review_b.suggestions + review_c.suggestions)

    return "NAUGHTY", all_issues, all_suggestions

なぜ両方とも合格しなければならないのか: 片方のレビュアーだけが問題をキャッチした場合でも、その問題は現実のものです。もう片方のレビュアーの盲点こそ、サンタメソッドが排除しようとしている障害モードです。

フェーズ4: 良い子になるまで修正(収束ループ)

MAX_ITERATIONS = 3

for iteration in range(MAX_ITERATIONS):
    verdict, issues, suggestions = santa_verdict(review_b, review_c)

    if verdict == "NICE":
        log_santa_result(output, iteration, "passed")
        return ship(output)

    # すべての重大な問題を修正(提案は任意)
    output = fix_agent.execute(
        output=output,
        issues=issues,
        instruction="フラグが立った問題のみを修正してください。リファクタリングやリクエストされていない変更を追加しないでください。"
    )

    # 修正された出力で両方のレビュアーを再実行(新しいエージェント、前回のラウンドの記憶なし)
    review_b = Agent(prompt=REVIEWER_PROMPT.format(output=output, ...))
    review_c = Agent(prompt=REVIEWER_PROMPT.format(output=output, ...))

# 反復回数を使い果たした — エスカレーション
log_santa_result(output, MAX_ITERATIONS, "escalated")
escalate_to_human(output, issues)

重要: 各レビューラウンドでは新しいエージェントを使用します。レビュアーは前のラウンドからの記憶を引き継いではいけません。以前のコンテキストはアンカリングバイアスを生み出すからです。

実装パターン

パターンA: Claude Codeサブエージェント(推奨)

サブエージェントは真のコンテキスト分離を提供します。各レビュアーは共有状態のない独立したプロセスです。

# Claude Codeセッション内で、Agentツールを使用してレビュアーを起動
# 両方のエージェントを並行して実行することで高速化
# Agentツール呼び出しの疑似コード
reviewer_b = Agent(
    description="サンタレビューB",
    prompt=f"品質についてこの出力をレビューしてください...\n\nルーブリック:\n{rubric}\n\n出力:\n{output}"
)
reviewer_c = Agent(
    description="サンタレビューC",
    prompt=f"品質についてこの出力をレビューしてください...\n\nルーブリック:\n{rubric}\n\n出力:\n{output}"
)

パターンB: シーケンシャルインライン(フォールバック)

サブエージェントが利用できない場合、明示的なコンテキストリセットで分離をシミュレート:

  1. 出力を生成
  2. 新しいコンテキスト: 「あなたはレビュアー1です。このルーブリックに対してのみ評価してください。問題を見つけてください。」
  3. 結果をそのまま記録
  4. コンテキストを完全にクリア
  5. 新しいコンテキスト: 「あなたはレビュアー2です。このルーブリックに対してのみ評価してください。問題を見つけてください。」
  6. 両方のレビューを比較し、修正し、繰り返す

サブエージェントパターンが明らかに優れています — インラインシミュレーションはレビュアー間のコンテキスト漏洩のリスクがあります。

パターンC: バッチサンプリング

大規模バッチ(100+アイテム)の場合、全アイテムに完全なサンタを実行するのはコストがかかりすぎます。層化サンプリングを使用:

  1. ランダムサンプル(バッチの10〜15%、最低5アイテム)でサンタを実行
  2. 失敗をタイプ別に分類(ハルシネーション、コンプライアンス、完全性など)
  3. 系統的なパターンが見つかった場合、バッチ全体に対象を絞った修正を適用
  4. 修正されたバッチを再度サンプリングして再検証
  5. クリーンなサンプルが合格するまで継続
import random

def santa_batch(items, rubric, sample_rate=0.15):
    sample = random.sample(items, max(5, int(len(items) * sample_rate)))

    for item in sample:
        result = santa_full(item, rubric)
        if result.verdict == "NAUGHTY":
            pattern = classify_failure(result.issues)
            items = batch_fix(items, pattern)  # パターンに一致するすべてのアイテムを修正
            return santa_batch(items, rubric)   # 再サンプリング

    return items  # クリーンなサンプル → バッチ出荷

障害モードと緩和策

障害モード症状緩和策
無限ループ修正後もレビュアーが新しい問題を発見し続ける最大反復回数キャップ(3回)。エスカレーション。
ゴム印承認両方のレビュアーがすべてを合格させる対抗プロンプト: 「あなたの仕事は問題を見つけることであり、承認することではありません。」
主観的ドリフトレビュアーがエラーではなくスタイルの好みをフラグする客観的な合格/不合格基準のみの厳格なルーブリック
修正の回帰問題Aを修正すると問題Bが発生する各ラウンドで新しいレビュアーが回帰をキャッチ
レビュアー一致バイアス両方のレビュアーが同じものを見逃す独立性によって緩和されるが、排除はされない。重要な出力の場合は、3人目のレビュアーまたは人間によるスポットチェックを追加。
コスト爆発大規模出力で反復回数が多すぎるバッチサンプリングパターン。検証サイクルごとの予算上限。

他のスキルとの統合

スキル関係
検証ループ決定論的チェック(ビルド、リンター、テスト)に使用。サンタは意味論的チェック(正確性、ハルシネーション)に使用。最初に検証ループ、次にサンタを実行。
Evalハーネスサンタメソッドの結果が評価指標を提供。Santa実行全体でのpass@kを追跡し、生成品質の経時変化を測定。
継続的学習v2サンタの発見がインスティンクトになる。同じ基準での繰り返しの失敗 → そのパターンを避けるための学習された振る舞い。
戦略的コンパクトコンパクト化の前にサンタを実行。検証の途中でレビューコンテキストを失わないようにする。

メトリクス

サンタメソッドの有効性を測定するためにこれらを追跡:

  • 初回合格率: ラウンド1でサンタに合格する出力の割合(目標: >70%)
  • 収束までの平均反復回数: NICEまでの平均ラウンド数(目標: <1.5)
  • 問題の分類: 失敗タイプの分布(ハルシネーション vs 完全性 vs コンプライアンス)
  • レビュアー一致率: 両方のレビュアーによってフラグされた問題の割合 vs 片方のみ(一致率が低い = ルーブリックの調整が必要)
  • エスケープ率: 出荷後に発見された、サンタがキャッチすべきだった問題(目標: 0)

コスト分析

サンタメソッドのコストは、検証サイクルごとに生成単独のトークンコストの約2〜3倍です。ほとんどの高リスク出力にとって、これはお買い得です:

サンタのコスト = (生成トークン) + 2×(ラウンドあたりのレビュートークン) × (平均ラウンド数)
サンタなしのコスト = (評判の低下) + (修正の労力) + (信頼の喪失)

バッチ運用の場合、サンプリングパターンによりコストを完全検証の約15〜20%に抑えながら、系統的な問題の90%以上をキャッチできます。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

関連スキル