Communitygithub.com

Santa-Methode

Multi-Agenten-Adversarial-Verifikation mit Konvergenzschleife. Zwei unabhängige Review-Agenten müssen beide bestehen, bevor die Ausgabe ausgeliefert wird. Verwende dies, wenn die Ausgabe zwei unabhängige, gegnerische Prüfer passieren muss.

Was ist Santa-Methode?

Die Santa-Methode ist ein Multi-Agenten-Framework zur adversarischen Verifikation, das sicherstellt, dass eine Ausgabe erst ausgeliefert wird, nachdem zwei unabhängige Review-Agenten sie geprüft und beide bestanden haben. Das Kernproblem, das es löst: Ein einzelner Agent, der seine eigene Arbeit prüft, teilt dieselben Verzerrungen, Wissenslücken und systematischen Fehler, die zur Erstellung der Ausgabe geführt haben. Zwei unabhängige Prüfer ohne gemeinsamen Kontext brechen dieses Fehlermuster auf. Es eignet sich besonders für hochriskante Ausgaben wie produktiven Code, Compliance-relevante Texte oder öffentliche Inhalte. Der Ablauf gliedert sich in vier Phasen: Generieren (Phase 1), zwei parallele unabhängige Reviews mit identischer Rubrik (Phase 2), ein Gate, das nur bei zwei Bestehen die Ausgabe freigibt (Phase 3), und eine iterative Fix-Schleife bis zur Konvergenz (Phase 4). Die Methode funktioniert plattformunabhängig (Claude Code, Cursor, Codex usw.) und bietet verschiedene Implementierungsmuster: echte Subagenten (empfohlen), sequentielles Inline-Review (Fallback) oder Batch-Sampling für große Mengen.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Santa-Methode?

Multi-Agenten-Framework zur adversarischen Verifikation. Mach eine Liste, prüfe sie zweimal. Wenn es böse ist, repariere es, bis es brav ist.

Die Kernidee: Ein einzelner Agent, der seine eigene Ausgabe prüft, teilt dieselben Verzerrungen, Wissenslücken und systematischen Fehler, die die Ausgabe produziert haben. Zwei unabhängige Prüfer ohne gemeinsamen Kontext brechen dieses Fehlermuster auf.

Wann aktivieren

Rufe diesen Skill auf, wenn:

  • Die Ausgabe veröffentlicht, bereitgestellt oder von Endbenutzern konsumiert wird
  • Compliance-, regulatorische oder Markenauflagen eingehalten werden müssen
  • Code ohne menschliche Überprüfung in die Produktion geht
  • Inhaltsgenauigkeit wichtig ist (technische Dokumente, Schulungsmaterial, kundenorientierte Texte)
  • Stapelgenerierung in großem Umfang, bei der Stichproben systematische Muster übersehen
  • Halluzinationsrisiko erhöht ist (Behauptungen, Statistiken, API-Referenzen, rechtliche Formulierungen)

NICHT verwenden für interne Entwürfe, explorative Forschung oder Aufgaben mit deterministischer Verifikation (dafür Build-/Test-/Lint-Pipelines nutzen).

Architektur

┌─────────────┐
│  GENERATOR   │  Phase 1: Mach eine Liste
│  (Agent A)   │  Erstelle das Arbeitsergebnis
└──────┬───────┘
       │ Ausgabe
       ▼
┌──────────────────────────────┐
│    DOPPELTE UNABHÄNGIGE      │  Phase 2: Prüfe sie zweimal
│    PRÜFUNG                   │
│                              │
│  ┌───────────┐ ┌───────────┐ │  Zwei Agenten, gleiche Rubrik,
│  │ Prüfer B  │ │ Prüfer C  │ │  kein gemeinsamer Kontext
│  └─────┬─────┘ └─────┬─────┘ │
│        │              │       │
└────────┼──────────────┼───────┘
         │              │
         ▼              ▼
┌──────────────────────────────┐
│        URTEILS-GATE          │  Phase 3: Böse oder Brav
│                              │
│  B besteht UND C besteht → BRAV │  Beide müssen bestehen.
│  Sonst → BÖSE                │  Keine Ausnahmen.
└──────┬──────────────┬────────┘
       │              │
    BRAV           BÖSE
       │              │
       ▼              ▼
   [ AUSLIEFERN ]  ┌─────────────┐
                    │  FIX-ZYKLUS  │  Phase 4: Reparieren, bis brav
                    │              │
                    │ iteration++  │  Sammle alle Mängel.
                    │ wenn i > MAX:│  Behebe alle Probleme.
                    │   eskalieren │  Führe beide Prüfer erneut aus.
                    │ sonst:       │  Schleife bis Konvergenz.
                    │   gehe zu Ph.2│
                    └──────────────┘

Phasendetails

Phase 1: Mach eine Liste (Generieren)

Führe die primäre Aufgabe aus. Keine Änderungen an deinem normalen Generierungsablauf. Die Santa-Methode ist eine Post-Generierungs-Verifikationsschicht, keine Generierungsstrategie.

# Der Generator läuft normal
output = generieren(aufgabe_spezifikation)

Phase 2: Prüfe sie zweimal (Unabhängige Doppelprüfung)

Erzeuge zwei Prüfagenten parallel. Kritische Invarianten:

  1. Kontextisolierung — Kein Prüfer sieht die Bewertung des anderen
  2. Identische Rubrik — Beide erhalten dieselben Bewertungskriterien
  3. Gleiche Eingaben — Beide erhalten die Originalspezifikation UND die generierte Ausgabe
  4. Strukturierte Ausgabe — Jeder gibt ein typisiertes Urteil zurück, keinen Fließtext
PRUEFER_PROMPT = """
Du bist ein unabhängiger Qualitätsprüfer. Du hast KEINE andere Prüfung dieser Ausgabe gesehen.

## Aufgabenspezifikation
{aufgabe_spezifikation}

## Zu prüfende Ausgabe
{ausgabe}

## Bewertungsrubrik
{rubrik}

## Anweisungen
Bewerte die Ausgabe anhand JEDES Rubrik-Kriteriums. Für jedes:
- BESTANDEN: Kriterium vollständig erfüllt, keine Probleme
- DURCHGEFALLEN: Spezifisches Problem gefunden (nenne das genaue Problem)

Gib deine Bewertung als strukturiertes JSON zurück:
{
  "urteil": "BESTANDEN" | "DURCHGEFALLEN",
  "pruefungen": [
    {"kriterium": "...", "ergebnis": "BESTANDEN|DURCHGEFALLEN", "detail": "..."}
  ],
  "kritische_probleme": ["..."],   // Blockaden, die behoben werden müssen
  "verbesserungsvorschlaege": ["..."] // Nicht blockierende Verbesserungen
}

Sei streng. Deine Aufgabe ist es, Probleme zu finden, nicht zu genehmigen.
"""
# Prüfer parallel starten (Claude Code Subagenten)
pruf_b = Agent(prompt=PRUEFER_PROMPT.format(...), beschreibung="Santa Prüfer B")
pruf_c = Agent(prompt=PRUEFER_PROMPT.format(...), beschreibung="Santa Prüfer C")

# Beide laufen gleichzeitig — keiner sieht den anderen

Rubrik-Design

Die Rubrik ist die wichtigste Eingabe. Vage Rubriken erzeugen vage Prüfungen. Jedes Kriterium muss eine objektive Bestanden-/Durchgefallen-Bedingung haben.

KriteriumBestanden-BedingungFehlersignal
FaktentreueAlle Behauptungen anhand Quellen oder Allgemeinwissen überprüfbarErfundene Statistiken, falsche Versionsnummern, nicht existierende APIs
HalluzinationsfreiKeine erfundenen Entitäten, Zitate, URLs oder ReferenzenLinks zu nicht vorhandenen Seiten, zitierte Quellen ohne Beleg
VollständigkeitJede Anforderung in der Spezifikation wird adressiertFehlende Abschnitte, übersprungene Randfälle, unvollständige Abdeckung
ComplianceBesteht alle projektspezifischen EinschränkungenVerbotene Begriffe, Tonverstöße, regulatorische Nichtkonformität
Interne KonsistenzKeine Widersprüche innerhalb der AusgabeAbschnitt A sagt X, Abschnitt B sagt nicht-X
Technische KorrektheitCode kompiliert/läuft, Algorithmen sind korrektSyntaxfehler, Logikfehler, falsche Komplexitätsangaben

Domänenspezifische Rubrikerweiterungen

Content/Marketing:

  • Einhaltung der Markenstimme
  • SEO-Anforderungen erfüllt (Keyword-Dichte, Meta-Tags, Struktur)
  • Keine Markenrechtsverletzung von Wettbewerbern
  • Call-to-Action vorhanden und korrekt verlinkt

Code:

  • Typsicherheit (keine any-Lecks, korrekte Nullbehandlung)
  • Fehlerbehandlungsabdeckung
  • Sicherheit (keine Secrets im Code, Eingabevalidierung, Injektionsprävention)
  • Testabdeckung für neue Pfade

Compliance-sensitiv (reguliert, rechtlich, finanziell):

  • Keine Ergebnisgarantien oder unbelegte Behauptungen
  • Erforderliche Haftungsausschlüsse vorhanden
  • Nur genehmigte Terminologie
  • Rechtsraumspezifische Sprache

Phase 3: Böse oder Brav (Urteils-Gate)

def santa_urteil(pruf_b, pruf_c):
    """Beide Prüfer müssen bestehen. Keine Teilpunkte."""
    if pruf_b.urteil == "BESTANDEN" and pruf_c.urteil == "BESTANDEN":
        return "BRAV"  # Ausliefern

    # Mängel beider Prüfer zusammenführen, doppelte entfernen
    alle_probleme = deduplizieren(pruf_b.kritische_probleme + pruf_c.kritische_probleme)
    alle_vorschlaege = deduplizieren(pruf_b.verbesserungsvorschlaege + pruf_c.verbesserungsvorschlaege)

    return "BÖSE", alle_probleme, alle_vorschlaege

Warum beide bestehen müssen: Wenn nur ein Prüfer ein Problem findet, ist dieses Problem real. Der blinde Fleck des anderen Prüfers ist genau das Fehlermuster, das die Santa-Methode beseitigen soll.

Phase 4: Reparieren, bis brav (Konvergenzschleife)

MAX_ITERATIONEN = 3

for iteration in range(MAX_ITERATIONEN):
    urteil, probleme, vorschlaege = santa_urteil(pruf_b, pruf_c)

    if urteil == "BRAV":
        protokolliere_santa_ergebnis(ausgabe, iteration, "bestanden")
        return ausliefern(ausgabe)

    # Behebe alle kritischen Probleme (Vorschläge sind optional)
    ausgabe = fix_agent.ausfuehren(
        ausgabe=ausgabe,
        probleme=probleme,
        anweisung="Behebe NUR die markierten Probleme. Refaktoriere nicht und füge keine unangeforderten Änderungen hinzu."
    )

    # Führe BEIDE Prüfer ERNEUT auf der korrigierten Ausgabe aus (frische Agenten, keine Erinnerung an vorherige Runde)
    pruf_b = Agent(prompt=PRUEFER_PROMPT.format(ausgabe=ausgabe, ...))
    pruf_c = Agent(prompt=PRUEFER_PROMPT.format(ausgabe=ausgabe, ...))

# Iterationen erschöpft — eskalieren
protokolliere_santa_ergebnis(ausgabe, MAX_ITERATIONEN, "eskaliert")
eskaliere_an_mensch(ausgabe, probleme)

Kritisch: Jede Prüfrunde verwendet frische Agenten. Prüfer dürfen keine Erinnerung an vorherige Runden haben, da vorheriger Kontext einen Verankerungsfehler erzeugt.

Implementierungsmuster

Muster A: Claude Code Subagenten (Empfohlen)

Subagenten bieten echte Kontextisolierung. Jeder Prüfer ist ein separater Prozess ohne gemeinsamen Zustand.

# Verwendet in einer Claude Code-Sitzung das Agent-Tool, um Prüfer zu starten
# Beide Agenten laufen parallel für Geschwindigkeit
# Pseudocode für die Agent-Tool-Invocation
pruefer_b = Agent(
    beschreibung="Santa Prüfung B",
    prompt=f"Prüfe diese Ausgabe auf Qualität...\n\nRUBRIK:\n{rubrik}\n\nAUSGABE:\n{ausgabe}"
)
pruefer_c = Agent(
    beschreibung="Santa Prüfung C",
    prompt=f"Prüfe diese Ausgabe auf Qualität...\n\nRUBRIK:\n{rubrik}\n\nAUSGABE:\n{ausgabe}"
)

Muster B: Sequentiell Inline (Fallback)

Wenn Subagenten nicht verfügbar sind, simuliere Isolierung mit expliziten Kontextrücksetzungen:

  1. Ausgabe generieren
  2. Neuer Kontext: "Du bist Prüfer 1. Bewerte NUR anhand dieser Rubrik. Finde Probleme."
  3. Ergebnisse wörtlich notieren
  4. Kontext vollständig löschen
  5. Neuer Kontext: "Du bist Prüfer 2. Bewerte NUR anhand dieser Rubrik. Finde Probleme."
  6. Beide Prüfungen vergleichen, korrigieren, wiederholen

Das Subagenten-Muster ist strikt überlegen — Inline-Simulation birgt das Risiko von Kontextübertragung zwischen den Prüfern.

Muster C: Stichproben-Batch

Für große Stapel (100+ Elemente) ist eine vollständige Santa-Prüfung für jedes Element kostspielig. Verwende stratifizierte Stichproben:

  1. Führe Santa auf einer Zufallsstichprobe durch (10-15 % des Stapels, mindestens 5 Elemente)
  2. Kategorisiere Fehler nach Typ (Halluzination, Compliance, Vollständigkeit usw.)
  3. Falls systematische Muster auftreten, wende gezielte Korrekturen auf den gesamten Stapel an
  4. Wiederhole die Stichprobe und überprüfe den korrigierten Stapel erneut
  5. Fahre fort, bis eine saubere Stichprobe besteht
import random

def santa_batch(elemente, rubrik, stichproben_rate=0.15):
    stichprobe = random.sample(elemente, max(5, int(len(elemente) * stichproben_rate)))

    for element in stichprobe:
        ergebnis = santa_voll(element, rubrik)
        if ergebnis.urteil == "BÖSE":
            muster = klassifiziere_fehler(ergebnis.probleme)
            elemente = batch_fix(elemente, muster)  # Korrigiere alle Elemente, die dem Muster entsprechen
            return santa_batch(elemente, rubrik)   # Erneute Stichprobe

    return elemente  # Saubere Stichprobe → Stapel ausliefern

Fehlermodi und Gegenmaßnahmen

FehlermodusSymptomGegenmaßnahme
EndlosschleifePrüfer finden nach Korrekturen immer wieder neue ProblemeMax Iterationen (3). Eskalieren.
AbnickereiBeide Prüfer geben alles durchAdversarialer Prompt: "Deine Aufgabe ist es, Probleme zu finden, nicht zu genehmigen."
Subjektive AbweichungPrüfer bemängeln Stilpräferenzen, keine FehlerStrenge Rubrik mit objektiven Bestanden-/Durchgefallen-Kriterien
KorrekturregressionKorrektur von Problem A führt zu Problem BFrische Prüfer in jeder Runde erkennen Regressionen
Übereinstimmungsfehler der PrüferBeide Prüfer übersehen dasselbeWird durch Unabhängigkeit gemindert, nicht beseitigt. Bei kritischer Ausgabe dritten Prüfer oder menschliche Stichprobe hinzufügen.
KostenexplosionZu viele Iterationen bei großen AusgabenBatch-Stichprobenmuster. Budgetobergrenzen pro Verifikationszyklus.

Integration mit anderen Skills

SkillBeziehung
VerifikationsschleifeVerwende für deterministische Prüfungen (Build, Lint, Test). Santa für semantische Prüfungen (Genauigkeit, Halluzinationen). Führe zuerst die Verifikationsschleife aus, dann Santa.
Evaluierungs-HarnessErgebnisse der Santa-Methode speisen Evaluierungsmetriken. Verfolge pass@k über Santa-Läufe, um die Generatorqualität im Zeitverlauf zu messen.
Kontinuierliches Lernen v2Santa-Ergebnisse werden zu Instinkten. Wiederholtes Scheitern am selben Kriterium → erlerntes Verhalten, das Muster zu vermeiden.
Strategischer KompaktFühre Santa VOR dem Kompaktieren aus. Verliere keinen Prüfungskontext während der Verifikation.

Metriken

Verfolge diese, um die Effektivität der Santa-Methode zu messen:

  • Erstbestehungsrate: % der Ausgaben, die Santa in Runde 1 bestehen (Ziel: >70%)
  • Mittlere Iterationen bis Konvergenz: Durchschnittliche Runden bis BRAV (Ziel: <1,5)
  • Fehlertaxonomie: Verteilung der Fehlertypen (Halluzination vs. Vollständigkeit vs. Compliance)
  • Prüferübereinstimmung: % der von beiden Prüfern vs. nur einem Prüfer markierten Probleme (niedrige Übereinstimmung = Rubrik muss geschärft werden)
  • Entweichrate: Probleme, die nach der Auslieferung gefunden werden und die Santa hätte fangen sollen (Ziel: 0)

Kostenanalyse

Die Santa-Methode kostet pro Verifikationszyklus etwa das 2- bis 3-fache der Token-Kosten der reinen Generierung. Für die meisten hochriskanten Ausgaben ist dies ein Schnäppchen:

Kosten von Santa = (Generierungs-Token) + 2×(Prüf-Token pro Runde) × (durchschnittliche Runden)
Kosten von KEINEM Santa = (Reputationsschaden) + (Korrekturaufwand) + (Vertrauensverlust)

Bei Batch-Operationen reduziert das Stichprobenmuster die Kosten auf ~15-20 % der vollständigen Verifikation, während >90 % der systematischen Probleme erkannt werden.

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.

Verwandte Skills