Zum Inhalt springen

Selbsttest mit Beispielen zum Kopieren

Wie viele von 10 Gates stoppen schlechten KI-Code in Ihrer CI?

Schlechten Code eines KI-Agenten stoppen in der CI zehn Gates: Lint, Typprüfung, Pflichttests, verbotene Muster, Secret-Scan, Migrationswächter, Abhängigkeitsprüfung, PR-Vorlage mit KI-Abschnitt, Review-Regel und geschützter Branch. Haken Sie ab, was Sie haben, und Sie sehen sofort Ihr Ergebnis und die fehlenden Gates, das größte Risiko zuerst. Unter der Liste gibt es zu jedem Gate ein Beispiel für GitHub Actions.

Was Sie ausfüllen und abhaken, bleibt nur in diesem Browserfenster. Wir senden nichts, solange Sie sich die Auswertung nicht per E-Mail schicken lassen. Nach dem Schließen ist es weg, drucken Sie Ihr Ergebnis also aus.

Für CTOs und Tech Leads, deren Team bereits mit Claude Code, Codex oder Cursor Code schreibt. Eine Regel in AGENTS.md kann der Agent umgehen. Ein Gate in der CI nicht. Die Beispiele sind für GitHub Actions und pnpm. In GitLab CI ist jedes Gate derselbe Befehl unter script:.

KI schreibt heute unseren gesamten Code, und ein Senior verantwortet das Ergebnis. Die meisten Beispiele stammen aus unserem öffentlichen Repository claude-code-production-starter, wo Sie sie vollständig finden.

1. Welche Gates haben Sie schon?

Haken Sie nur ab, was den Merge wirklich blockiert. Ein Gate, das nur meldet, zählt nicht.

2. Zehn Gates mit Beispielen

Lint blockiert den Merge

Lint, das nur warnt, ignoriert der Agent. Lassen Sie es in der CI laufen und fehlschlagen. Wenn Sie eine neue strenge Regel in alten Code einführen, halten Sie die heutigen Verstöße fest und lassen Sie die CI fehlschlagen, wenn es mehr werden.

- run: pnpm lint --max-warnings 0

Typprüfung im Strict-Modus

Agenten ändern gern einen Typ auf any, damit der Code durchgeht. Der Strict-Modus und ein eigener CI-Schritt verhindern das.

# tsconfig.json: "strict": true
- run: pnpm exec tsc --noEmit

Tests sind Pflicht und beweisen etwas

Ein Test, der auch auf dem Hauptbranch besteht, beweist nichts. Geänderter Quellcode braucht einen geänderten Test, und der muss auf dem Hauptbranch fehlschlagen und auf Ihrem bestehen. Eine Ausnahme (reines Refactoring) genehmigt ein Mensch per Label, nicht der Agent.

- name: Geänderte Tests scheitern auf base und bestehen hier
  if: "!contains(github.event.pull_request.labels.*.name, 'skip-red-proof')"
  run: bash scripts/gate.sh red-proof "origin/${{ github.base_ref }}"

Verbotene Muster

Manche Abkürzungen von Agenten findet eine einfache Suche: .only im Test, abgeschaltete Typprüfung, abgeschaltetes Lint. Lassen Sie sie in der CI fehlschlagen.

- name: Verbotene Muster
  run: "! git grep -nE '(it|test|describe)\\.only\\(|@ts-ignore|eslint-disable' -- src tests"

Secret-Scan

Ein Schlüssel in einem Commit ist auch nach dem Löschen ein Problem, er bleibt in der Historie. Scannen Sie vor dem Commit (Hook) und in der CI.

- uses: actions/checkout@v5
  with:
    fetch-depth: 0
- run: docker run --rm -v "$PWD:/repo" ghcr.io/gitleaks/gitleaks:latest git /repo --redact

Migrationswächter

Eine Datenbankmigration lässt sich nicht so leicht zurücknehmen wie Code. Ein PR, der Migrationen ändert, geht nur mit einem Label von einem Menschen durch. Eine Produktionsmigration erfordert in den Einstellungen des Agenten eine Bestätigung.

- name: Migrationen nur mit Label
  if: "!contains(github.event.pull_request.labels.*.name, 'migration-ok')"
  run: "! git diff --name-only origin/${{ github.base_ref }}... | grep -E '(^|/)migrations/'"

Abhängigkeitsprüfung

Der Agent fügt ein Paket hinzu, wenn die Aufgabe es braucht. Prüfen Sie, dass es keine bekannte schwere Schwachstelle hat, und lassen Sie Abhängigkeiten regelmäßig aktualisieren.

- run: pnpm audit --audit-level high
# .github/dependabot.yml: package-ecosystem npm, schedule weekly

PR-Vorlage mit KI-Abschnitt

Ein PR muss sagen, wie die Änderung geprüft wurde und was der Autor nicht gemacht hat. Dann weiß der Reviewer, wo er hinschauen muss.

## Wie es geprüft wurde
- [ ] das Gate ist grün, inklusive Red-Proof
- [ ] kein Test wurde abgeschwächt, übersprungen oder gelöscht

## Was der Agent geschrieben und der Autor geprüft hat
<!-- Welche Teile der Agent erzeugt hat, was Sie Zeile für Zeile geprüft haben. -->

## Was nicht fertig ist

Review-Regel

Eine Änderung genehmigt jemand, der sie nicht geschrieben hat. Regeln für Agenten und CI ändern nur ihre Verantwortlichen, sonst lockert der Agent mit der Zeit seine eigenen Gates.

# .github/CODEOWNERS
*             @ihre-firma/team
/.claude/     @ihre-firma/regel-owner
/.github/     @ihre-firma/regel-owner
/AGENTS.md    @ihre-firma/regel-owner

Geschützter Branch

Alles oben gilt nur, wenn sich der Hauptbranch nicht umgehen lässt. Ein zusammenfassender Check ci, ein Pflicht-PR, die Freigabe durch den Code Owner und Regeln auch für Admins.

gh api -X PUT repos/IHRE-FIRMA/REPO/branches/main/protection \
  -F 'required_status_checks[strict]=true' -f 'required_status_checks[contexts][]=ci' \
  -F 'required_pull_request_reviews[required_approving_review_count]=1' \
  -F 'required_pull_request_reviews[require_code_owner_reviews]=true' \
  -F enforce_admins=true -F restrictions=null

Weitere Tools für Sie

Wie weit sind Sie von AI-native SDLC entfernt? 12 Fragen

12 Fragen zu Regeln für KI-Agenten, CI-Prüfungen und Verantwortung. Sie sehen, wo Ihr Team heute steht.

KI im SDLC in 30 Tagen: ein Plan Woche für Woche

Regeln in AGENTS.md, CI-Gates und Hooks, Review und Messung. Vier Wochen mit Beispielen aus unserem öffentlichen Repository.

Häufige Fragen

Was ist ein CI-Gate?
Eine Prüfung in der CI, die eine Änderung blockiert, statt sie nur zu melden. Ein Lint, Test oder Scan, der bei einem Fehler fehlschlägt und ohne den sich der PR nicht mergen lässt.
Was ist ein Red-Proof-Test?
Die Prüfung, dass ein geänderter Test auf dem Hauptbranch fehlschlägt und auf Ihrem besteht. Ein Test, der auch ohne Ihre Änderung besteht, beweist nichts. So kann der Agent keinen Test schreiben, der immer besteht.
Welche Gates zuerst?
Geschützter Branch, Pflichttests und Secret-Scan. Ohne geschützten Branch lassen sich alle anderen umgehen, ohne Tests beweist die CI nichts, und ein geleakter Schlüssel bleibt auch nach dem Löschen in der Historie.
Gilt das auch außerhalb von GitHub Actions?
Ja. Die Beispiele sind für GitHub Actions und pnpm, aber jedes Gate ist ein einfacher Befehl, der fehlschlägt. Sie führen ihn genauso in GitLab CI, Bitbucket Pipelines oder auf Ihrem eigenen Server aus.

Wo kommt KI-Code ungeprüft durch?

Der nächste Schritt ist KI im SDLC: Gates und Regeln richten wir gemeinsam mit Ihrem Team ein.