Communitygithub.com

Santa-Methode

Mehrstufige, gegnerische Verifikation mit Konvergenzschleife. Zwei unabhängige Prüfagenten müssen beide bestehen, bevor die Ausgabe ausgeliefert wird. Verwenden, wenn die Ausgabe zwei unabhängige, gegnerische Prüfer durchlaufen muss.

Was ist Santa-Methode?

Die Santa-Methode ist ein mehrstufiges, gegnerisches Verifikations-Framework für KI-Agenten (kompatibel mit Claude Code, Cursor und Codex). Der Kern besteht darin, dass die Ausgabe eines Erzeuger-Agenten von zwei vollständig unabhängigen Prüfagenten bewertet wird, die keinerlei Kontext teilen. Diese Unabhängigkeit verhindert systematische Fehler und Verzerrungen, die auftreten, wenn ein einzelner Agent seine eigene Arbeit überprüft. Die Methode durchläuft vier Phasen: Erzeugen (Make a List), unabhängige Doppelprüfung (Check It Twice), Entscheidungsgatter (Naughty or Nice) und einen Korrekturzyklus (Fix Until Nice), der sich wiederholt, bis beide Prüfer bestehen oder ein Maximum an Iterationen erreicht ist. Sie ist besonders nützlich für sicherheitskritische Ausgaben wie Code für die Produktion, Compliance-Dokumente und Kundenkommunikation, wo Halluzinationen und Genauigkeitsfehler fatale Folgen haben können.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/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?

Mehrstufiges, gegnerisches Verifikations-Framework. Mach eine Liste, prüf sie zweimal. Wenn es unartig ist, reparier es, bis es artig ist.

Die Kerneinsicht: Ein einzelner Agent, der seine eigene Ausgabe überprüft, teilt dieselben Verzerrungen, Wissenslücken und systematischen Fehler, die die Ausgabe erzeugt haben. Zwei unabhängige Prüfer ohne gemeinsamen Kontext durchbrechen dieses Fehlermuster.

Wann aktivieren

Dieses Skill einladen, wenn:

  • Ausgabe veröffentlicht, bereitgestellt oder von Endnutzern konsumiert wird
  • Compliance-, regulatorische oder Markenauflagen durchgesetzt werden müssen
  • Code ohne menschliche Überprüfung in die Produktion ausgeliefert wird
  • Inhaltsgenauigkeit wichtig ist (technische Dokumente, Schulungsmaterial, kundenorientierte Texte)
  • Batch-Generierung in großem Maßstab, wo Stichproben systemische Muster übersehen
  • Halluzinationsrisiko erhöht ist (Behauptungen, Statistiken, API-Referenzen, Rechtssprache)

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

Architektur

┌─────────────┐
│  GENERATOR   │  Phase 1: Mach eine Liste
│  (Agent A)   │  Das Arbeitsergebnis erstellen
└──────┬───────┘
       │ Ausgabe
       ▼
┌──────────────────────────────┐
│     DOPPELTE UNABHÄNGIGE PRÜFUNG |  Phase 2: Prüf es zweimal
│                                │
│  ┌───────────┐ ┌───────────┐  │  Zwei Agenten, gleiche Bewertungskriterien,
│  │ Prüfer B  │ │ Prüfer C  │  │  kein gemeinsamer Kontext
│  └─────┬─────┘ └─────┬─────┘  │
│        │              │        │
└────────┼──────────────┼────────┘
         │              │
         ▼              ▼
┌──────────────────────────────┐
│        URTEILS-GATTER         │  Phase 3: Unartig oder Artig
│                                │
│  B bestanden UND C bestanden → ARTIG  │  Beide müssen bestehen.
│  Sonst → UNARTIG               │  Keine Ausnahmen.
└──────┬──────────────┬─────────┘
       │              │
    ARTIG           UNARTIG
       │              │
       ▼              ▼
   [ AUSLIEFERN ]  ┌─────────────┐
                    │  KORREKTURZYKLUS │  Phase 4: Reparieren bis artig
                    │              │
                    │ iteration++  │  Alle Beanstandungen sammeln.
                    │ if i > MAX:  │  Alle Probleme beheben.
                    │   eskalieren │  Beide Prüfer erneut ausführen.
                    │ else:        │  Schleife bis Konvergenz.
                    │   goto Ph.2  │
                    └──────────────┘

Phasendetails

Phase 1: Mach eine Liste (Generieren)

Die Hauptaufgabe ausführen. Keine Änderungen an Ihrem normalen Generierungs-Workflow. Die Santa-Methode ist eine Post-Generierungs-Verifikationsschicht, keine Generierungsstrategie.

# Der Generator läuft wie gewohnt
output = generate(task_spec)

Phase 2: Prüf es zweimal (Unabhängige Doppelprüfung)

Zwei Prüfagenten parallel starten. Kritische Invarianten:

  1. Kontextisolierung – kein Prüfer sieht die Bewertung des anderen
  2. Identische Bewertungsmatrix – beide erhalten dieselben Bewertungskriterien
  3. Gleiche Eingaben – beide erhalten die ursprüngliche Spezifikation UND die generierte Ausgabe
  4. Strukturierte Ausgabe – jeder gibt ein typisiertes Urteil zurück, keinen Fließtext
PRÜFER_PROMPT = """
Sie sind ein unabhängiger Qualitätsprüfer. Sie haben KEINE andere Prüfung dieser Ausgabe gesehen.

## Aufgabenspezifikation
{task_spec}

## Zu prüfende Ausgabe
{output}

## Bewertungsmatrix
{rubric}

## Anweisungen
Bewerten Sie die Ausgabe anhand JEDES Kriteriums der Matrix. Für jedes:
- BESTANDEN: Kriterium vollständig erfüllt, keine Probleme
- NICHT BESTANDEN: spezifisches Problem gefunden (das genaue Problem angeben)

Geben Sie Ihre Bewertung als strukturiertes JSON zurück:
{
  "urteil": "BESTANDEN" | "NICHT BESTANDEN",
  "prüfungen": [
    {"kriterium": "...", "ergebnis": "BESTANDEN|NICHT BESTANDEN", "detail": "..."}
  ],
  "kritische_probleme": ["..."],   // Blocker, die behoben werden müssen
  "verbesserungsvorschläge": ["..."]  // Nicht-blockierende Verbesserungen
}

Seien Sie gründlich. Ihre Aufgabe ist es, Probleme zu finden, nicht zu genehmigen.
"""
# Prüfer parallel starten (Claude Code Subagenten)
pruefung_b = Agent(prompt=PRÜFER_PROMPT.format(...), description="Santa Prüfer B")
pruefung_c = Agent(prompt=PRÜFER_PROMPT.format(...), description="Santa Prüfer C")

# Beide laufen gleichzeitig – keiner sieht den anderen

Bewertungsmatrix Design

Die Matrix ist der wichtigste Input. Vage Matrizen liefern vage Prüfungen. Jedes Kriterium muss eine objektive Bestanden/Nicht Bestanden-Bedingung haben.

KriteriumBestanden-BedingungFehlersignal
FaktentreueAlle Behauptungen anhand Quellenmaterial oder Allgemeinwissen überprüfbarErfundene Statistiken, falsche Versionsnummern, nicht existierende APIs
HalluzinationsfreiKeine erfundenen Entitäten, Zitate, URLs oder ReferenzenLinks zu nicht existierenden Seiten, zugeschriebene Zitate ohne Quelle
VollständigkeitJede Anforderung der Spezifikation wird behandeltFehlende Abschnitte, übersprungene Randfälle, unvollständige Abdeckung
ComplianceBesteht alle projektspezifischen EinschränkungenVerwendung verbotener Begriffe, Tonfallverstöß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 Matrix-Erweiterungen

Inhalte/Marketing:

  • Einhaltung der Markenstimme
  • SEO-Anforderungen erfüllt (Keyword-Dichte, Meta-Tags, Struktur)
  • Kein Missbrauch von Wettbewerbsmarken
  • CTA vorhanden und korrekt verlinkt

Code:

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

Compliance-sensitiv (reguliert, rechtlich, finanziell):

  • Keine Ergebnisgarantien oder unbegründete Behauptungen
  • Erforderliche Haftungsausschlüsse vorhanden
  • Nur genehmigte Terminologie
  • Gerichtsbarkeitsgerechte Sprache

Phase 3: Unartig oder Artig (Urteils-Gatter)

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

    # Beanstandungen beider Prüfer zusammenführen, deduplizieren
    alle_probleme = dedupe(pruefung_b.kritische_probleme + pruefung_c.kritische_probleme)
    alle_vorschlaege = dedupe(pruefung_b.verbesserungsvorschläge + pruefung_c.verbesserungsvorschläge)

    return "UNARTIG", alle_probleme, alle_vorschlaege

Warum beide bestehen müssen: Wenn nur ein Prüfer ein Problem entdeckt, 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 artig (Konvergenzschleife)

MAX_ITERATIONEN = 3

for iteration in range(MAX_ITERATIONEN):
    urteil, probleme, vorschlaege = santa_urteil(pruefung_b, pruefung_c)

    if urteil == "ARTIG":
        log_santa_ergebnis(ausgabe, iteration, "bestanden")
        return ausliefern(ausgabe)

    # Alle kritischen Probleme beheben (Vorschläge sind optional)
    ausgabe = korrektur_agent.ausführen(
        ausgabe=ausgabe,
        probleme=probleme,
        anweisung="Beheben Sie NUR die markierten Probleme. Keine Refaktorisierung oder unangeforderten Änderungen."
    )

    # BEIDE Prüfer auf der korrigierten Ausgabe erneut ausführen (frische Agenten, keine Erinnerung an vorherige Runde)
    pruefung_b = Agent(prompt=PRÜFER_PROMPT.format(ausgabe=ausgabe, ...))
    pruefung_c = Agent(prompt=PRÜFER_PROMPT.format(ausgabe=ausgabe, ...))

# Iterationen erschöpft – eskalieren
log_santa_ergebnis(ausgabe, MAX_ITERATIONEN, "eskaliert")
eskalieren_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 Verankerungs-Bias erzeugt.

Implementierungsmuster

Muster A: Claude Code Subagenten (Empfohlen)

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

# In einer Claude Code-Sitzung das Agent-Tool verwenden, um Prüfer zu starten
# Beide Agenten laufen parallel für Geschwindigkeit
# Pseudocode für Agent-Tool-Aufruf
pruefer_b = Agent(
    description="Santa Prüfung B",
    prompt=f"Überprüfen Sie diese Ausgabe auf Qualität...\n\nMATRIX:\n{rubric}\n\nAUSGABE:\n{ausgabe}"
)
pruefer_c = Agent(
    description="Santa Prüfung C",
    prompt=f"Überprüfen Sie diese Ausgabe auf Qualität...\n\nMATRIX:\n{rubric}\n\nAUSGABE:\n{ausgabe}"
)

Muster B: Sequentiell inline (Fallback)

Wenn keine Subagenten verfügbar sind, Isolierung durch explizite Kontextzurücksetzungen simulieren:

  1. Ausgabe generieren
  2. Neuer Kontext: "Sie sind Prüfer 1. Bewerten Sie NUR anhand dieser Matrix. Finden Sie Probleme."
  3. Ergebnisse wörtlich notieren
  4. Kontext vollständig löschen
  5. Neuer Kontext: "Sie sind Prüfer 2. Bewerten Sie NUR anhand dieser Matrix. Finden Sie Probleme."
  6. Beide Prüfungen vergleichen, korrigieren, wiederholen

Das Subagenten-Muster ist klar überlegen – die Inline-Simulation birgt das Risiko von Kontextüberläufen zwischen den Prüfern.

Muster C: Batch-Stichproben

Für große Batches (100+ Elemente) ist eine vollständige Santa-Prüfung jedes Elements kostspielig. Verwenden Sie geschichtete Stichproben:

  1. Santa auf einer Zufallsstichprobe ausführen (10-15% des Batches, mindestens 5 Elemente)
  2. Fehler nach Typ kategorisieren (Halluzination, Compliance, Vollständigkeit usw.)
  3. Wenn sich systematische Muster abzeichnen, gezielte Korrekturen auf den gesamten Batch anwenden
  4. Den korrigierten Batch erneut beproben und verifizieren
  5. Fortfahren, bis eine saubere Stichprobe besteht
import random

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

    for element in stichprobe:
        ergebnis = santa_voll(element, matrix)
        if ergebnis.urteil == "UNARTIG":
            muster = fehlerklassifizieren(ergebnis.probleme)
            elemente = batch_korrigieren(elemente, muster)  # Alle Elemente mit passendem Muster korrigieren
            return santa_batch(elemente, matrix)   # Erneut beproben

    return elemente  # Saubere Stichprobe → Batch ausliefern

Fehlermodi und Gegenmaßnahmen

FehlermodusSymptomGegenmaßnahme
EndlosschleifePrüfer finden nach Korrekturen ständig neue ProblemeMax Iterationen (3). Eskalieren.
AbnickmechanikBeide Prüfer geben alles durchGegnerischer Prompt: "Ihre Aufgabe ist es, Probleme zu finden, nicht zu genehmigen."
Subjektive AbweichungPrüfer beanstanden Stilpräferenzen, keine FehlerStrenge Matrix mit objektiven Bestanden/Nicht Bestanden-Kriterien
KorrekturregressionBehebung von Problem A führt zu Problem BFrische Prüfer in jeder Runde erkennen Regressionen
Prüfer-Übereinstimmungs-BiasBeide Prüfer übersehen dasselbeDurch Unabhängigkeit gemildert, nicht beseitigt. Bei kritischer Ausgabe einen dritten Prüfer oder menschliche Stichprobenprüfung hinzufügen.
KostenexplosionZu viele Iterationen bei großen AusgabenBatch-Stichprobenmuster. Budgetobergrenzen pro Verifikationszyklus.

Integration mit anderen Skills

SkillBeziehung
VerifikationsschleifeFür deterministische Prüfungen verwenden (Build, Lint, Test). Santa für semantische Prüfungen (Genauigkeit, Halluzinationen). Zuerst Verifikationsschleife ausführen, dann Santa.
Eval-HarnessSanta-Method-Ergebnisse speisen Eval-Metriken. Überwachen Sie pass@k über Santa-Läufe, um die Generatorqualität im Zeitverlauf zu messen.
Kontinuierliches Lernen v2Santa-Ergebnisse werden zu Instinkten. Wiederholte Fehler beim selben Kriterium → gelerntes Verhalten, das Muster zu vermeiden.
Strategisches KompaktierenSanta VOR dem Kompaktieren ausführen. Verlieren Sie während der Verifikation nicht den Prüfkontext.

Metriken

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

  • Erstbestehensrate: % der Ausgaben, die Santa in Runde 1 bestehen (Ziel: >70%)
  • Mittlere Iterationen bis zur Konvergenz: durchschnittliche Runden bis ARTIG (Ziel: <1,5)
  • Fehlertaxonomie: Verteilung der Fehlertypen (Halluzination vs. Vollständigkeit vs. Compliance)
  • Prüferübereinstimmung: % der von beiden Prüfern vs. nur einem gemeldeten Probleme (niedrige Übereinstimmung = Matrix muss verschärft werden)
  • Entweichungsrate: nach der Auslieferung gefundene Probleme, die Santa hätte abfangen sollen (Ziel: 0)

Kostenanalyse

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

Kosten von Santa = (Generierungs-Token) + 2×(Prüf-Token pro Runde) × (durchschnittliche Runden)
Kosten von NICHT 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/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

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.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

Verwandte Skills