Skip to content

andreaslehnert/uc-codeguard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

uc-codeguard

uc-codeguard ist ein Sicherheits- und Qualitäts-Plugin für Claude Code: Es verhindert, dass Geheimnisse wie API-Keys oder Passwörter versehentlich nach GitHub gepusht werden, und prüft den geschriebenen Code zusätzlich auf Schwachstellen und unsaubere Stellen.

Ein Claude-Code-Plugin, das den offiziellen security-guidance-Plugin ergänzt — kein Ersatz. Drei gezielte Lücken werden gefüllt: ein harter Push-Türsteher, ein In-Session-Qualitätsreview und vorbereitete UC-Regeldateien.

📘 Komplette Schritt-für-Schritt-Anleitung (inkl. Installation des offiziellen security-guidance-Plugins): INSTALLATION.md — empfohlener Einstieg, auch für Nicht-Entwickler.


Was ist uc-codeguard?

Das offizielle security-guidance-Plugin von Anthropic bietet bereits Per-Edit-Mustersuche und KI-gestützte Sicherheitsreviews. Es blockiert jedoch nie Push/Deploy-Vorgänge.

uc-codeguard schließt drei dokumentierte Lücken:

Lücke Was uc-codeguard liefert
Kein hartes Blockieren Deterministischer pre-push-Türsteher
Keine Code-Qualitätsprüfung In-Session Dead-Code/Duplikate/Optimierungsreview
Keine UC-Stack-Regeln Fertige Regel-Vorlagen für Next.js, Astro, WordPress/PHP, Vercel/Supabase

Die drei Ebenen

Ebene Was Wie Token-Kosten Abschalten
Ebene 1 In-Session Qualitätsreview Stop-Hook → frischer Claude-Aufruf analysiert Git-Diff auf toten Code, ungenutzte Importe, Duplikate und Optimierungen Ja (ein Call pro Session) UC_QUALITY_REVIEW=0 setzen
Ebene 2 UC-Regeldateien Werden vom offiziellen Plugin automatisch mitgelesen, wenn sie unter .claude/ im Projekt liegen Nein (kein eigener Modellaufruf) Dateien aus .claude/ entfernen
Ebene 3 git pre-push-Türsteher Deterministischer Regex-Scan der zu pushenden Commits; Geheimnis gefunden = Push blockiert (Exit-Code ≠ 0) Nein (nur git + grep) git push --no-verify

Ebene 1 und 3 sind vollständig entkoppelt: Fällt die Claude-CLI aus, läuft der Push-Türsteher trotzdem. Fällt git weg, läuft der Session-Review trotzdem.


Voraussetzungen

  • Claude Code (CLI)
  • Ebene 1: Python 3.8+ und die claude-CLI müssen im PATH liegen
  • Ebene 2: Das offizielle Plugin muss aktiv sein (Installation siehe unten)
  • Ebene 3: Ein git-Repository im Projektverzeichnis

Installation

Schritt 1 — Offizielles Plugin installieren (Basis für Ebene 2)

/plugin install security-guidance@claude-plugins-official

Schritt 2 — uc-codeguard aus dem Marketplace hinzufügen

/plugin marketplace add unitedcreation/uc-codeguard

Schritt 3 — Plugin installieren

/plugin install uc-codeguard@uc-codeguard

Schritt 4 — Einmalig pro Projekt initialisieren

/uc-secure-init

Der Installer:

  1. Prüft, ob das Verzeichnis ein git-Repository ist (Ebene 3 braucht git)
  2. Installiert den pre-push-Hook in .git/hooks/pre-push — bestehende Hooks werden ergänzt, nie überschrieben
  3. Kopiert security-patterns.yaml und claude-security-guidance.md nach .claude/ — existierende Dateien werden nicht überschrieben, stattdessen als .uc-codeguard-Kopie abgelegt
  4. Ergänzt .gitignore um transiente Dateien
  5. Gibt eine Zusammenfassung aus

Was passiert automatisch?

Nach jeder Claude-Session (Ebene 1): Der Stop-Hook ruft quality_review.py auf. Das Script holt git diff HEAD, schickt den Diff an einen frischen Claude-Aufruf und gibt Befunde direkt in der Session aus. Wenn nichts zu beanstanden ist, erscheint nichts. Dieser Review blockiert niemals.

Bei jedem git push (Ebene 3): Der pre-push-Hook ruft secret_scan.sh mit dem exakten Commit-Range auf, der gepusht wird (neue Branch: alle Commits; Update: nur die neuen Commits). Findet der Scan ein mögliches Geheimnis, wird der Push mit einer Erklärung blockiert.

Bei jedem Claude-Code-Edit (Ebene 2): Das offizielle Plugin liest .claude/security-patterns.yaml und .claude/claude-security-guidance.md und wendet UC-spezifische Muster an.


Verhalten des Push-Türstehers

Was blockiert wird

Der Scanner prüft hinzugefügte Zeilen in den zu pushenden Commits auf diese Muster:

  • Stripe Live/Test-Keys (sk_live_, sk_test_)
  • AWS Access Keys (AKIA…)
  • Google API Keys (AIza…)
  • GitHub-Tokens und PATs (ghp_, gho_, etc.)
  • Slack-Tokens (xox…)
  • PEM-Privatschlüssel-Blöcke
  • Generische Secret-Zuweisungen (password = "…", api_key = "…" u.ä.)

Was nicht blockiert wird (Ausschlüsse)

Offensichtliche Platzhalter werden ignoriert: process.env, import.meta.env, os.environ, getenv, your_, xxx, changeme, example, <…> (Template-Variablen).

Override

Wenn der Scan einen False Positive liefert oder ein bewusster Ausnahmefall vorliegt:

git push --no-verify

Der Secret-Scanner standalone

scripts/secret_scan.sh kann auch direkt aufgerufen werden:

# Scannt uncommitted working-tree changes (git diff HEAD)
bash scripts/secret_scan.sh

# Scannt einen expliziten Commit-Range
bash scripts/secret_scan.sh abc123..def456

Wichtig: Ohne Argument scannt das Script HEAD — das entspricht git diff HEAD und prüft damit die noch nicht commiteten Änderungen gegenüber dem letzten Commit. Der pre-push-Hook übergibt immer einen expliziten Range (z.B. <remote-sha>..<local-sha>), sodass nur die tatsächlich gepushten Commits geprüft werden.


Deaktivieren

Ebene 1 (Qualitätsreview) dauerhaft deaktivieren:

export UC_QUALITY_REVIEW=0

In .env oder Shell-Profil eintragen, um es dauerhaft zu deaktivieren.

Ebene 2 (UC-Regeln) deaktivieren:

Die Dateien .claude/security-patterns.yaml und .claude/claude-security-guidance.md aus dem Projekt entfernen.

Ebene 3 (Push-Türsteher) deaktivieren:

Den uc-codeguard-Block aus .git/hooks/pre-push entfernen oder den Hook löschen.

Gesamtes Plugin deaktivieren:

/plugin disable uc-codeguard

Deinstallation

/plugin uninstall uc-codeguard

Danach manuell aus dem Projekt:

  • .git/hooks/pre-push — uc-codeguard-Block entfernen (oder Datei löschen)
  • .claude/security-patterns.yaml und .claude/claude-security-guidance.md löschen

Troubleshooting

Ebene 1 läuft nicht / gibt keine Ausgabe: Logs prüfen: ~/.claude/uc-codeguard.log. Häufige Ursachen:

  • claude-CLI nicht im PATH
  • UC_QUALITY_REVIEW=0 gesetzt
  • Leerer Git-Diff (keine Änderungen seit letztem Commit)
  • Kein git-Repository im Projektverzeichnis (funktioniert auch ohne, aber kein Diff möglich)

Ebene 3 blockiert einen False Positive: git push --no-verify verwenden. Langfristig: Platzhalter-Erkennung greift bei process.env, import.meta.env und ähnlichen Mustern automatisch.

Ebene 3 wurde nicht installiert: /uc-secure-init braucht ein git-Repository. git init ausführen, dann nochmal /uc-secure-init aufrufen.

Pre-push-Hook manuell installiert (ohne /uc-secure-init): Wenn der pre-push-Hook manuell kopiert wurde, muss die Umgebungsvariable UC_CODEGUARD_DIR auf das Plugin-Verzeichnis zeigen, damit der Hook secret_scan.sh findet. Beispiel:

export UC_CODEGUARD_DIR="/pfad/zum/uc-codeguard"

In der Shell-Konfigurationsdatei (.zshrc, .bashrc) eintragen, damit die Variable dauerhaft gesetzt ist.

Plugin-Installation schlägt fehl: Sicherstellen, dass der Marketplace-Eintrag vorhanden ist (/plugin marketplace list) und der Repo-Name korrekt ist.


Windows

secret_scan.sh ist ein POSIX-Shell-Script. Unter Windows Git Bash oder WSL verwenden.


Lizenz

MIT — siehe LICENSE

Autor

United Creation — Andreas Lehnert

About

Claude Code plugin: hard pre-push secret gate + in-session dead-code/quality review. Complements the official security-guidance plugin.

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages