Folge 4
Leitplanken
Das Video wird erst per Klick von YouTube (youtube-nocookie.com) geladen. Vorher werden keine Daten an YouTube übertragen. Datenschutzerklärung
In dieser Folge (≈ 40 Min. zum Umsetzen)
- Du weißt, welche Hooks wirklich blockieren und welche nur prüfen.
- Drei Aufgabendateien, mit denen jede Session weiß, wo ihr steht.
- Dein Projekt, gesichert in einem privaten GitHub-Repo.
Dein Schritt
Füge das in Claude Code in deinem Projektordner ein. Claude prüft die Leitplanken mit dir.
Prüf mit mir die Leitplanken in diesem Projekt. Ich bin kein Entwickler, erkläre alles in einfachen Worten. 1. Lies .claude/settings.json (stehen dort keine Hooks, auch ~/.claude/settings.json) und sag mir, welche Hooks eingetragen sind und welche davon wirklich blockieren. Die Tabelle dazu steht in ~/ailoopwise-blueprint/course/04-guardrails.md. 2. Teste einen Wächter. Gibt es hier schon eine .env, überspring den Test und sag es mir. Sonst versuch, eine Datei .env mit dem Inhalt TEST=1 anzulegen, und nenne mir die genaue Meldung. Wurde die Datei trotzdem angelegt, sag das deutlich. 3. Vergleiche tasks/current.md, tasks/lessons.md und tasks/todo.md mit den ausgefüllten Beispielen in ~/ailoopwise-blueprint/course/examples/. Sag mir, was bei mir fehlt, vor allem eine "Exact Next Action", mit der eine frische Session ohne Rückfragen weitermachen kann. 4. Prüf, ob .gitignore die Zeilen .claude/settings.local.json, .mcp.json und .env enthält. Zeig mir, was fehlt, und ergänze es erst, wenn ich Ja sage. 5. Ändere nichts außerhalb dieses Ordners. Zeig nie den Inhalt von .env oder .mcp.json an. Führ nie git commit oder git push aus, ohne dass ich darum bitte, und zeig nie ein Passwort, einen Schlüssel oder ein Token an.
Dateien zu dieser Folge
Fragen zu dieser Folge? Eine kurze Mail genügt: hello@ailoopwise.com
Schritt-für-Schritt-Anleitung
Worum es in dieser Folge geht
Sobald dein Projekt mit dem Blueprint eingerichtet ist, arbeitet die KI in festen Leitplanken. Skripte (Hooks) laufen automatisch an festen Stellen, die KI kann sie nicht überspringen. Drei Textdateien halten den Kontext klein, damit eine frische Session in Sekunden weiß, wo ihr steht. Zum Schluss sicherst du alles in einem privaten GitHub-Repo.
Die Wand: Leitplanken schreiben ist die Arbeit, die keiner sieht. Bei uns waren es Monate.
Was du brauchst
- Dein Projekt aus Folge 2 (mit
.claude/hooks/und.claude/settings.json) - jq: Ohne jq blockieren die Schutz-Hooks Änderungen und Schreibzugriffe, bis es installiert ist (der Befehls-Wächter funktioniert trotzdem): https://jqlang.org/download/
- Git: https://git-scm.com/downloads · ein GitHub-Konto: https://github.com
- Zum Nachlesen: Hooks-Referenz https://code.claude.com/docs/de/hooks
Was die Hooks tatsächlich tun
Die Skripte liegen in blueprint/hooks/, eingetragen in .claude/settings.json:
| Skript | Wann | Was es tut | Wirkung |
|---|---|---|---|
block-dangerous-commands.sh | vor jedem Shell-Befehl | stoppt rm -rf auf Root-, Home- und Projektpfade, git reset --hard, git clean -fd, Force-Push, git checkout/git restore von Dateien, DROP TABLE & Co., Massenlöschen per find, Befehle, die Geheimnisse zeigen könnten (cat .env, printenv), npm/yarn/pnpm publish | blockiert, Claude sieht den Grund |
protect-sensitive-files.sh | vor jedem Schreiben | sperrt .env-Dateien (Vorlagen wie .env.example erlaubt), Lockfiles, .git/, node_modules/, .ssh/, .aws/, credentials, .pem, .key | blockiert |
detect-secrets-in-code.sh | vor jedem Schreiben | sucht AWS-, GitHub-, Stripe-, Slack- und sk--Schlüssel, private Schlüssel, Datenbank-URLs mit Passwort (überspringt .md, Vorlagen, Test-Fixtures) | blockiert |
format-and-lint.sh | nach jedem Schreiben von JS/TS | eslint --fix, wenn es ein package.json gibt | repariert still |
owasp-check.sh | nach jedem Schreiben von Code | warnt bei SQL-Injection, innerHTML, eval, shell=True und Ähnlichem | nur Warnung |
audit-dependencies.sh | nach npm/pnpm/yarn/bun install | führt den Sicherheits-Audit des Paketmanagers aus | nur Warnung |
quality-check.sh | wenn Claude fertig ist | Typecheck, Lint, Format-Check und, wenn Code geändert wurde, Tests (JS/TS, Python, Go, Rust) | blockiert das Beenden einmal, wenn Typen oder Tests fehlschlagen; alles andere nur Warnung |
session-start.sh | beim Session-Start | warnt, wenn jq fehlt, und verweist auf tasks/current.md und tasks/lessons.md | landet im Kontext |
Ehrlich: Die drei Wächter vor dem Schritt blockieren wirklich, und quality-check.sh blockiert das Beenden genau einmal, wenn Typecheck oder Tests fehlschlagen (Claude sieht den Grund und repariert; beim zweiten Versuch lässt es durch, damit nichts endlos hängt). Die übrigen Prüfungen enden mit Exit-Code 0, und laut Hooks-Referenz landet deren Ausgabe dann nur im Debug-Log: „Claude never sees it.“ Dass Claude nach jeder Aufgabe testet und Fehler selbst repariert, kommt aus der Regel „Mandatory Quality Checks“ in deiner CLAUDE.md. Die ist Kontext, keine Sperre. Die Doku sagt es so: Claude behandelt CLAUDE.md „as context, not enforced configuration“ (Quelle). Frag also nach, welche Prüfung wirklich lief.
Schritt für Schritt
- Öffne dein Projekt und tippe
/hooks. Du siehst die Einträge unter PreToolUse, PostToolUse, Stop und SessionStart mit der Quelle Project Settings. - Löse einen Wächter absichtlich aus:
Erwartet: Claude meldet
Lege im Projektordner eine Datei .env mit dem Inhalt TEST=1 an.BLOCKED: Protected file patternund legt nichts an. Liegt danach doch eine.envim Ordner, läuft der Wächter nicht: siehe „Wenn etwas hakt“. Lösch die Datei dann selbst. - Starte jede Session mit dem Satz aus
blueprint/MASTER-BLUEPRINT.md:Read tasks/current.md and tasks/lessons.md. Summarize where we left off.current.mdist der Ist-Zustand,lessons.mddie gelernten Fehler,todo.mddie nächsten Schritte. - Beende jede Aufgabe mit:
Welche Prüfungen (Typecheck, Lint, Tests, Build) hast du gerade ausgeführt? Nenne Befehl und Ergebnis. Was nicht lief, sag ausdrücklich. - Leg auf https://github.com/new ein privates Repo an, ohne README, Lizenz oder
.gitignore. - Leg im Projekt eine
.gitignorean. Die ersten drei Zeilen stammen aus/new-project,.envkommt dazu:Willst du deinen Arbeitsstand mit sichern, streich die Zeile.claude/settings.local.json .mcp.json tasks/current.md .envtasks/current.md..mcp.jsonund.envbleiben draußen, dort stehen Tokens. - Im Terminal des Projekts (in VS Code:
Ctrl+`):git init -b main git add . git commit -m "Erstes Setup" git remote add origin <URL-DEINES-REPOS> git push -u origin main
Beispiel zum Kopieren
Ausgefüllte Aufgabendateien für das Newsletter-Beispiel: examples/current.md · examples/lessons.md · examples/todo.md. Der wichtigste Abschnitt ist „Exact Next Action“ in current.md:
## Exact Next Action
Create src/routes/unsubscribe.ts with GET /unsubscribe?token=... . Verify the token with
verifyToken from src/lib/tokens.ts; on success set the subscriber's status to "unsubscribed"
[...] Done when npm test passes.
Bevor du zur nächsten Folge gehst
Öffne dein Repo auf github.com und prüfe: Es ist privat, und .mcp.json und .env sind nicht dabei.
Wenn etwas hakt
- Die
.envwurde angelegt, oder du siehstFailed with non-blocking status code: Ein Hook konnte nicht starten, und dann läuft die Aktion einfach weiter. Prüfe, ob die Hooks in~/.claude/hooks/(oder.claude/hooks/im Projekt) liegen und in~/.claude/settings.jsoneingetragen sind; führe sonstbootstrap.sherneut aus. Fehlt jq, siehst du stattdessen die Meldung „safety hooks need jq“, und die Änderung wird blockiert. Quelle: https://code.claude.com/docs/de/hooks#other-exit-codes - Claude sagt „Tests grün“, du hast keinen Lauf gesehen: Nur Typ- und Testfehler blockieren; Lint- und Format-Warnungen von
quality-check.shstehen nur im Debug-Log. Starte mitclaude --debugund lies~/.claude/debug/<session-id>.txt, oder lass Claudenpm testsichtbar ausführen. Quelle: https://code.claude.com/docs/de/hooks#debug-hooks git pushfragt nach einem Passwort und scheitert: GitHub nimmt keine Passwörter mehr. Gib ein Personal Access Token ein oder nutze den Git Credential Manager. Quelle: https://docs.github.com/de/get-started/git-basics/about-remote-repositoriesgit pushwird abgelehnt (rejected): Das Repo wurde auf GitHub mit README oder Lizenz angelegt. Leg es leer an. Quelle: https://docs.github.com/de/migrations/importing-source-code/using-the-command-line-to-import-source-code/adding-locally-hosted-code-to-github
Gratis per E-Mail
Neue Anleitungen ins Postfach, dazu das komplette Blueprint-Paket
Zu jedem neuen Video bekommst du die vollständige Anleitung mit dem fertig formulierten KI-Auftrag. Sobald du deine Adresse bestätigt hast, schicken wir dir als Erstes das komplette Blueprint-Paket.
Kostenlos. Abmeldung jederzeit.