Von 0 auf produktiv
Claude Code im Entwickleralltag — einem Entwickler live über die Schulter geschaut, am echten Projekt.
Was euch erwartet
Kein Chat-Fenster.
Ein agentisches CLI.
Claude Code arbeitet dort, wo ihr arbeitet: im echten Repo. Es liest Dateien, führt Befehle aus, schreibt Code und lässt Tests laufen — jeder heikle Schritt nur mit eurer Freigabe.
Terminal
Volle Kontrolle, überall — auch über SSH und in der CI. Tool-Calls und Permissions sichtbar im Verlauf.
IDE-Extension
VS Code & JetBrains. Diffs inline, eure Selektion wandert als Kontext direkt in den Prompt.
Desktop & Web
claude.ai/code für parallele und Cloud-Agents, wenn eine Aufgabe größer wird als ein Fenster.
Claude ist so gut wie
sein Harness.
Vier Schichten geben Claude Kontext und Leitplanken — von passiv bis erzwungen.
settings.json — Berechtigungen & Hooks
- permissions.allow — was Claude ohne Rückfrage darf (
Bash,Edit,Read). - settings.local.json — persönlich & ungetrackt; hier
WebSearch& Playwright-Pfade. - hooks — registriert die Pre-Commit-Skripte (Details gleich).
- Prinzip: Berechtigung = Vertrauen mit Geltungsbereich. Eng starten, gezielt öffnen.
"permissions": { "allow": [ "Bash(*)", "Edit(*)", "Read(*)", "WebFetch(*)" ] }, "hooks": { "PreToolUse": [{ "matcher": "Bash", "if": "Bash(git commit*)" // nur bei commit }] }
CLAUDE.md — das Projektgedächtnis
Bei jeder Session automatisch geladen. Claude „weiß", wie dieses Projekt funktioniert — ohne dass ihr es jedes Mal erklärt.
- Commands — dev, worker, lint, Migrationen
- Docker-Tabelle — 5 Container, Tests laufen im Container
- Key-Files-Tabelle — Claudes Landkarte durchs Repo
- Do-NOT-Liste — nie
db:migrate, keinany, keine hartkodierten Strings
## Do NOT - Use Options API - Hardcode user-facing strings (i18n) - Use the any type - Run db:generate / db:migrate — NEVER | Purpose | File | | Chat stream | server/api/chat.. | | Hybrid search| db/document-chu.. | # kuratiert, nicht erschöpfend → # zeigt auf .claude/rules/
Rules — Leitplanken,
die nach Pfad laden
Jede Rule hat ein paths:-Frontmatter und lädt nur, wenn Claude Dateien in diesem Bereich anfasst. Schlanker Kontext, kein Wissensverlust.
| gdpr.md | server, db — Cascade-Delete, Export, Verschlüsselung |
| api-endpoints.md | server/api — Zod-Validierung, OpenAPI-Pflicht |
| frontend.md | app, i18n — Nuxt UI, Strings in beiden Sprachen |
| forms.md | Formulare — Inline-Validierung, Toasts nur bei Server-Fehlern |
| database.md | db — Migrationen nie automatisch ausführen |
| security · testing · docker · queue · docs | je nach Bereich |
Wie ein erfahrener Kollege, der genau im richtigen Moment über die Schulter schaut.
Hooks — erzwungene Garantien
Rules sind Empfehlungen, die das Modell befolgen soll. Hooks sind Skripte, die der Harness erzwingt — egal, was das Modell vorhat.
- test-before-commit.sh —
npm run test:runim Container. Rote Tests → Commit blockiert. - docs-check.sh — neuer Endpoint oder Schema-Änderung ohne Doku → Commit blockiert.
- Escape-Hatch:
SKIP_DOCS_CHECK=1 git commit …
✓ Running unit tests… passed [docs-check] Commit blocked — doc-worthy changes, no docs: • new API endpoint: documents/[id]/download.get.ts Update docs/** · openapi.ts · CLAUDE.md $ exit 2 # blockiert
Skills — Playbooks,
die nach Absicht laden
Ein Ordner mit SKILL.md. Claude lädt ihn on demand, wenn die Aufgabe passt — oder ihr ruft /skill-name auf. Wiederkehrende, konventionslastige Workflows: einmal sauber kodiert.
| /add-i18n-string | UI-String in beide Locale-Dateien + Sync-Prüfung |
| /scaffold-api-endpoint | Zod-Schema, Auth/Scope, Audit-Log, OpenAPI, Doku |
| /create-migration | Schema + GDPR-Pflichten — führt nie selbst aus |
| /scaffold-form | Formular nach dem forms.md-Pattern |
Rules = passiv (nach Pfad). Skills = aktiv (nach Absicht). Zusammen: reproduzierbare Qualität.
Erst Spec, dann Test,
dann Code.
Ein Agent wird stark, wenn das Ziel deterministisch ist. Spezifikation und Tests geben ihm genau das — und euch ein objektives „fertig".
Der Ablauf
- 1 · Spec — Plan Mode: erst die Akzeptanzkriterien, dann Code. Ihr nehmt die Absicht ab, nicht 300 Zeilen Diff.
- 2 · Test (rot) — Tests sind die ausführbare Spec. Erst schreiben, bewusst rot.
- 3 · Code — bis die Tests grün sind. Nicht mehr, nicht weniger.
- 4 · Grün → Review — objektives „fertig", dann erst der Diff-Review.
Warum mit einem Agenten
- Klares Ziel — Claude weiß, wann es fertig ist.
- Selbstkorrektur: Tests laufen, Fehler lesen, fixen — die Schleife, die Claude stark macht.
- Weniger „sieht plausibel aus, ist aber falsch".
- Der
test-before-commit-Hook wird zum Sicherheitsnetz, nicht zur Hürde.
Logik testet ihr per Unit-Test; reine Optik (wie der iOS-Bug gleich) per Spec + klarem Verifikations-Protokoll.
Demo 1 — Feature
Originaldokumente ansehen & herunterladen. Die Datei liegt verschlüsselt auf der Platte — bisher gibt es keinen Weg zurück zum Client.
- Endpoint GET /documents/[id]/download
- Entschlüsseln readDecrypted() (AES-256-GCM)
- Frontend Ansehen + Herunterladen je Zeile
- i18n + OpenAPI + Doku
Diff nicht blind abnicken
- Wird die Berechtigung geprüft, bevor entschlüsselt wird?
- Path-Traversal-Schutz übernommen?
- Content-Disposition RFC-6266 (Umlaute)?
- Dateien ohne Original → sauberes 404?
- Greift gleich der docs-check-Hook?
Demo 2 — Bugfix
Auf iOS-Safari verrutscht die untere Navigation beim Ein-/Ausblenden der Adressleiste und überlappt den Home-Indicator.
- Ursache zuerst verstehen, nicht übermalen
- nuxt.config viewport-fit=cover ergänzen
- Layout dvh-Höhe robust machen
- NavBar Safe-Area-Padding unten
Diff nicht blind abnicken
- Bleibt das Desktop-Layout (md:) unangetastet?
- Safe-Area korrekt, kein doppeltes Padding?
- Kein Layout-Shift — springt nichts?
- Im Browser verifizieren (iOS-Sim)
Schnelligkeit ersetzt
kein Urteilsvermögen.
Claude ist schnell. Ihr bleibt verantwortlich für jeden Diff, der ins Repo geht.
- Lest den Diff — besonders an Sicherheits-, GDPR- und Auth-Stellen.
- Prompts sind Spezifikationen — präzise rein, präzise raus.
- Plan Mode nutzen — erst den Plan sehen, dann editieren lassen.
- Garantien in Hooks — nicht in Hoffnung.
Jeder Fehler ist
ein Harness-Bug.
Code fixen behebt das Symptom. Den Harness fixen verhindert die Wiederholung — und macht jeden nächsten Lauf besser.
# hängt sie direkt an CLAUDE.md an.Wohin als Nächstes
MCP & Connectors
Claude an externe Systeme anbinden — Jira, GitLab, Sentry, DB, Playwright. Connectors sind gehostete Remote-MCP-Server: dasselbe Protokoll, nur fertig betrieben.
Statische Analyse
Lint, Typecheck, Security-Scan (z. B. Semgrep) als PostToolUse-Hook nach jedem Edit — Probleme fallen sofort auf, nicht erst beim Commit.
Adherence-Gates
Soft Rules → harte Checks. Du prüfst Outcomes, nicht Absicht: kein any, kein console.log, Doku da, Tests grün — als Gate.
CI & Automation
Claude headless in der GitLab CI: automatischer MR-Review, geplante Agents für wiederkehrende Aufgaben (Aufräumen, Triage, Doku-Sync).
Subagents & Commands
Spezialisierte Agenten (code-reviewer, security-review) in .claude/agents/ und eigene /commands für eure Routinen.
Permissions härten
Von Bash(*) zu gezielten Allowlists. Skill /fewer-permission-prompts wertet eure Transkripte aus und schlägt eine engere Liste vor.
Von 0 auf produktiv —
in einem Satz
Claude Code wird produktiv, wenn das Harness stimmt — und ihr die Reviewer bleibt, die den Diff verstehen, bevor sie ihn abnicken.
Klein anfangen: ein gutes CLAUDE.md + eine Rule für euren wundesten Punkt.
Garantien in Hooks gießen, nicht in Hoffnung.
Skills für alles, was ihr öfter als zweimal promptet.
Immer den Diff lesen.