Dateistruktur im Projekt-Root
.claude/
├── CLAUDE.md (168 lines - Projekt-Hauptdoku)
├── settings.local.json (Lokale Einstellungen)
│
├── rules/
│ ├── code-style.md (29 lines - Coding-Richtlinien)
│ └── workflows.md (89 lines - Workflow-Orchestrierung)
│
├── skills/
│ ├── plan/SKILL.md (57 lines - Implementierungsplanung)
│ ├── review/SKILL.md (25 lines - Code-Review)
│ ├── ruff-cleanup/SKILL.md (75 lines - Linter-Bereinigung)
│ ├── sync-docs/SKILL.md (227 lines - Doku-Synchronisation)
│ └── verify/SKILL.md (31 lines - Feature-Verifikation)
│
├── hooks/
│ ├── run-tests.sh (52 lines - Pytest-Hook)
│ ├── ruff-fix.sh (36 lines - Ruff-Autofix-Hook)
│ └── final-check.sh (66 lines - Abschluss-Check-Hook)
│
└── tasks/
└── lessons.md (5 lines - Lessons Learned)
| Zeitpunkt | Was passiert | Datei |
|---|---|---|
| Claude schreibt/editiert .py | Ruff fix + format sofort auf die Datei | ruff-fix.sh |
| Claude schreibt/editiert .py | pytest läuft im Hintergrund, Ergebnis wird Claude gemeldet | run-tests.sh (async) |
| Claude will aufhören | Finaler Check: Ruff + Tests über alle geänderten Dateien. Bei Fehlern arbeitet Claude weiter | final-check.sh |
# 1. Abhängigkeiten sicherstellen
brew install jq # JSON-Parser für die Hook-Scripts
uv add --dev ruff pytest # Falls noch nicht vorhanden
# 2. Hook-Scripts ausführbar machen
chmod +x .claude/hooks/ruff-fix.sh
chmod +x .claude/hooks/run-tests.sh
chmod +x .claude/hooks/final-check.sh
# 3. Prüfen ob alles erreichbar ist
jq --version # muss Version ausgeben
uv run ruff --version # muss Version ausgeben
uv run pytest --version # muss Version ausgeben
# Claude Code starten
claude
# Im Claude-Chat prüfen:
/hooks # → 3 Hooks sichtbar
/skills # → plan, verify, review sichtbar
| Trigger | Aktion |
|---|---|
| Claude schreibt/editiert .py | Ruff fix + format auf die Datei |
| Claude schreibt/editiert .py | pytest läuft im Hintergrund |
| Claude will aufhören | Finaler Check über alle Änderungen |
(werden automatisch von Claude genutzt!)