Communitygithub.com

GateGuard

Ein Fakten-erzwingendes Tor, das Edit/Write/Bash-Aktionen (einschließlich MultiEdit) blockiert und konkrete Untersuchungen (Importeure, Datenschemata, Benutzeranweisungen) verlangt, bevor die Aktion ausgeführt wird. Verbessert die Ausgabequalität messbar um +2,25 Punkte im Vergleich zu ungeschützten Agenten.

Was ist GateGuard?

GateGuard ist ein PreToolUse-Hook, der Claude dazu zwingt, vor dem Editieren zu recherchieren. Statt einer Selbstbewertung („Bist du sicher?“) werden konkrete Fakten gefordert. Der Akt der Untersuchung schafft ein Bewusstsein, das Selbstbewertung nie erreicht. Der Hook blockiert die erste Edit/Write/Bash-Anfrage (DENY), zwingt den Agenten, genau festgelegte Fakten zu sammeln (FORCE), und erlaubt dann die Wiederholung nach Vorlage der Fakten (ALLOW). Experimente zeigen eine durchschnittliche Verbesserung der Designqualität um +2,25 Punkte (von 6,75 auf 9,0/10). GateGuard unterstützt Edit/MultiEdit-, Write- und destructive/routine Bash-Gates, sowie Umgebungsvariablen zur Steuerung (z. B. GATEGUARD_BASH_ROUTINE_DISABLED, GATEGUARD_EXEMPT_GLOBS). Es ist als ECC-Hook oder als vollständiges Python-Paket („gateguard-ai“) erhältlich.

Funktioniert mit✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/gateguard

In Ihrer bevorzugten KI fragen

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

Dokumentation

GateGuard — Fakten-erzwingendes Pre-Action-Tor

Ein PreToolUse-Hook, der Claude zwingt, vor dem Editieren zu recherchieren. Statt Selbstbewertung („Bist du sicher?“) werden konkrete Fakten gefordert. Der Akt der Untersuchung schafft ein Bewusstsein, das Selbstbewertung nie erreicht hat.

Wann aktivieren

  • Arbeiten an einer Codebasis, bei der Dateiänderungen mehrere Module betreffen
  • Projekte mit Datendateien, die bestimmte Schemata oder Datumsformate haben
  • Teams, bei denen KI-generierter Code zu bestehenden Mustern passen muss
  • Jeder Workflow, bei dem Claude eher rät als untersucht

Kernkonzept

LLM-Selbstbewertung funktioniert nicht. Frage „Hast du gegen Richtlinien verstoßen?“ und die Antwort ist immer „Nein.“ Dies ist experimentell bestätigt.

Aber die Frage „Liste alle Dateien auf, die dieses Modul importieren“ zwingt das LLM, Grep und Read auszuführen. Die Untersuchung selbst schafft Kontext, der die Ausgabe verändert.

Dreistufiges Tor:

1. VERWEIGERN — blockiere den ersten Edit/Write/Bash-Versuch
2. ERZWINGEN — sage dem Modell genau, welche Fakten es sammeln soll
3. ERLAUBEN — erlaube den Wiederholungsversuch nach Vorlage der Fakten

Kein Wettbewerber tut alle drei. Die meisten hören beim Verweigern auf.

Nachweise

Zwei unabhängige A/B-Tests, identische Agenten, gleiche Aufgabe:

AufgabeMit TorOhne TorAbstand
Analytics-Modul8,0/106,5/10+1,5
Webhook-Validator10,0/107,0/10+3,0
Durchschnitt9,06,75+2,25

Beide Agenten produzieren Code, der läuft und Tests besteht. Der Unterschied ist die Designtiefe.

Tortypen

Edit / MultiEdit-Tor (erster Edit pro Datei)

MultiEdit wird identisch behandelt — jede Datei im Batch wird einzeln getorct.

Vor dem Editieren von {dateipfad} präsentiere diese Fakten:

1. Liste ALLE Dateien auf, die diese Datei importieren/benötigen (durchsuche den Baum — Glob/Grep, oder find/grep via Bash)
2. Liste die öffentlichen Funktionen/Klassen auf, die von dieser Änderung betroffen sind
3. Wenn diese Datei Datendateien liest/schreibt, zeige Feldnamen, Struktur
   und Datumsformat (verwende geschwärzte oder synthetische Werte, keine rohen Produktionsdaten)
4. Zitiere die aktuelle Benutzeranweisung wörtlich

Write-Tor (erste neue Datei)

Vor dem Erstellen von {dateipfad} präsentiere diese Fakten:

1. Nenne die Datei(en) und Zeile(n), die diese neue Datei aufrufen werden
2. Bestätige, dass keine bestehende Datei denselben Zweck erfüllt (durchsuche den Baum — Glob/Grep, oder find/grep via Bash)
3. Wenn diese Datei Datendateien liest/schreibt, zeige Feldnamen, Struktur
   und Datumsformat (verwende geschwärzte oder synthetische Werte, keine rohen Produktionsdaten)
4. Zitiere die aktuelle Benutzeranweisung wörtlich

Destruktives Bash-Tor (jedes destruktive Kommando)

Auslöser: rm -rf, git reset --hard, git push --force, drop table, usw.

1. Liste alle Dateien/Daten auf, die dieses Kommando ändern oder löschen wird
2. Schreibe eine einzeilige Rollback-Prozedur
3. Zitiere die aktuelle Benutzeranweisung wörtlich

Routine-Bash-Tor (einmal pro Sitzung)

1. Die aktuelle Benutzeranfrage in einem Satz
2. Was dieses spezifische Kommando überprüft oder erzeugt

Parallele Batches und teilweise Anwendung

Das Erstkontakt-Tor bewertet jeden Tool-Aufruf unabhängig. Wenn mehrere Edits an einer Datei, die noch nicht berührt wurde, in einem parallelen Batch gesendet werden, wird der erste Aufruf verweigert und die Verweigerung markiert die Datei als geprüft, sodass die Geschwister-Edits in diesem Batch angewendet werden. Es wird nichts zurückgesetzt: Die Datei kann die Geschwister-Edits ohne den verweigerten enthalten.

Die Verweigerungsnachricht nennt die Datei und warnt, dass Batch-Geschwister bereits angewendet worden sein könnten. Behandle es wörtlich:

  • Sende abhängige Edits an eine noch nicht berührte Datei sequenziell, nicht in einem parallelen Batch. Eine Definition und ihre erste Verwendung, oder ein Import und seine Aufrufstelle, dürfen nicht im selben Batch reisen.
  • Stelle nach einer Erstkontakt-Verweigerung die Fakten dar, wiederhole den verweigerten Edit und lies die Datei erneut, bevor du auf etwas anderem aus dem Batch aufbaust.

Eine batchweite Sperre ist nicht möglich: Hooks sehen Tool-Aufrufe einzeln, daher kann das Tor nicht wissen, welche Aufrufe gleichzeitig eingetroffen sind.

Schnellstart

Option A: Den ECC-Hook verwenden (keine Installation)

Der Hook unter scripts/hooks/gateguard-fact-force.js ist in diesem Plugin enthalten. Aktiviere ihn über hooks.json.

Wenn GateGuard Setup- oder Reparaturarbeit blockiert, starte die Sitzung mit ECC_GATEGUARD=off. Für Hook-Level-Steuerung verwende weiterhin ECC_DISABLED_HOOKS mit der GateGuard-Hook-ID.

In langen Sitzungen geben nur die ersten GATEGUARD_FACT_FORCE_FULL_DENIALS Fakten-erzwingende Verweigerungen (Standard: 3) den vollständigen Vier-Fakten-Block aus; spätere Verweigerungen werden auf eine einzelne Zeile mit der Verweigerungsnummer reduziert, damit nahezu identische Blöcke nicht den Kontextfenster füllen und Wiederholungsschleifen des Modells verstärken (#2142). Die Wiederholung derselben Datei oder desselben Befehls nach Vorlage der Fakten löst das Tor nie erneut aus.

Abgestufte Steuerungen

ECC_GATEGUARD=off (oder GATEGUARD_DISABLED=1) schaltet das Tor vollständig aus. Die Variablen in dieser Tabelle tun dies nicht — jede schränkt ein Verhalten ein, während die lasttragenden destruktiven Bash-Prüfungen weiterlaufen:

VariableStandardEffekt
GATEGUARD_BASH_ROUTINE_DISABLEDnicht gesetzt (Tor an)Deaktiviert nur das Routine-Bash-Tor. Das destruktive Bash-Tor (rm -rf, git reset --hard, drop table, dd if=, …) bleibt unberührt.
GATEGUARD_EXEMPT_GLOBSnicht gesetzt (keine Ausnahmen)Kommagetrennte Globs; ein passendes Edit/Write/MultiEdit-Ziel überspringt die Erstkontakt-Fakten-Erzwingung. Gedacht für Bäume mit geringem Importwert (Tests, generierte Artefakte, Scratch-Verzeichnisse), bei denen „wer importiert dies / welches Schema“ kein Signal liefert.
GATEGUARD_FACT_FORCE_FULL_DENIALS3Wie viele Verweigerungen den vollständigen Vier-Fakten-Block ausgeben, bevor spätere auf eine einzelne Zeile kondensieren. 0 kondensiert ab der allerersten Verweigerung.
GATEGUARD_BASH_EXTRA_DESTRUCTIVEnicht gesetztZusätzliche destruktive Kommandomuster als Regex-Quelltext, die zum integrierten Satz hinzugefügt werden. Eine fehlerhafte Regex wird als nicht gesetzt behandelt (integrierte gelten weiterhin) und einmalig nach stderr protokolliert.
GATEGUARD_STATE_DIR~/.gateguardWo der sitzungsbezogene Tor-Zustand gespeichert wird. Wenn der Zustand nicht persistiert werden kann, erlaubt das Tor die Operation, anstatt zu schleifen, und nennt diese Variable in der Warnung.

GATEGUARD_BASH_ROUTINE_DISABLED akzeptiert 1, true, on, enabled, enable oder yes (Groß-/Kleinschreibung und Leerzeichen werden ignoriert); jeder andere Wert belässt das Tor an.

Das Tor vollständig ausschalten

VariableEffekt
ECC_GATEGUARD=offDeaktiviert GateGuard für die Sitzung. Akzeptiert 0, false, off, disabled oder disable.
GATEGUARD_DISABLED=1Gleicher Effekt. Erkennt nur 1 — die obigen Schreibweisen gelten hier nicht.

Für Hook-Level-Steuerung verwende weiterhin ECC_DISABLED_HOOKS mit der GateGuard-Hook-ID.

Glob-Semantik für GATEGUARD_EXEMPT_GLOBS

Muster stimmen mit dem gesamten projektrelevanten Zielpfad überein. Das Projektstammverzeichnis ist CLAUDE_PROJECT_DIR, fallback auf das cwd des Hook-Payloads, dann das Arbeitsverzeichnis des Hook-Prozesses. Relative Globs befreien niemals Ziele außerhalb dieses Stammverzeichnisses. Explizite absolute Globs stimmen mit dem gesamten absoluten Zielpfad überein und können absichtlich Pfade außerhalb des Projekts befreien.

Sowohl Muster als auch Pfade verwenden /-Trennzeichen und Abgleich in Kleinschreibung. * stimmt innerhalb eines Segments, ** segmentübergreifend und ? für ein Nicht-Trennzeichen. **/ schließt null Verzeichnisse ein, daher stimmt **/tests/** auch mit tests/foo.js überein. Fehlerhafte Muster werden verworfen, ohne eine Ausnahme zu gewähren.

Seit 2.2.1 deckt services/** nur den Services-Baum des Projekts ab, und *.md nur seine Markdown-Dateien im Stamm. Verwende **/*.md für alle Markdown-Dateien innerhalb des Projekts. Bestehende unverankerte Ausnahmen müssen möglicherweise angepasst werden:

{
  "env": {
    "GATEGUARD_BASH_ROUTINE_DISABLED": "1",
    "GATEGUARD_EXEMPT_GLOBS": "**/tests/**,tests/**,**/*.test.*,**/docs/**,**/dist/**"
  }
}

Option B: Vollständiges Paket mit Konfiguration

pip install gateguard-ai
gateguard init

Dies fügt .gateguard.yml für projektspezifische Konfiguration hinzu (benutzerdefinierte Nachrichten, Ignorierpfade, Tor-Umschalter).

Anti-Patterns

  • Verwende stattdessen keine Selbstbewertung. „Bist du sicher?“ bekommt immer „Ja.“ Dies ist experimentell bestätigt.
  • Überspringe nicht die Datenschema-Prüfung. Beide A/B-Test-Agenten nahmen ISO-8601-Daten an, wenn reale Daten %Y/%m/%d %H:%M verwendeten. Die Überprüfung der Datenstruktur (mit geschwärzten Werten) verhindert diese gesamte Fehlerklasse.
  • Tore nicht jeden einzelnen Bash-Befehl. Routine-Bash torct einmal pro Sitzung. Destruktives Bash torct jedes Mal. Diese Balance vermeidet Verlangsamung, während echte Risiken abgefangen werden.

Best Practices

  • Lasse das Tor natürlich auslösen. Versuche nicht, die Tor-Fragen vorab zu beantworten — die Untersuchung selbst ist es, die die Qualität verbessert.
  • Passe die Tor-Nachrichten an deine Domäne an. Wenn dein Projekt spezifische Konventionen hat, füge sie den Tor-Aufforderungen hinzu.
  • Verwende .gateguard.yml, um Pfade wie .venv/, node_modules/, .git/ zu ignorieren.

Verwandte Skills

  • safety-guard — Laufzeit-Sicherheitsprüfungen (komplementär, nicht überschneidend)
  • code-reviewer — Post-Edit-Review (GateGuard ist Pre-Edit-Untersuchung)

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