- scripts/check-loc.sh: LOC budget checker (500 LOC hard cap) - .claude/rules/architecture.md: split triggers, patterns per language - .claude/rules/loc-exceptions.txt: documented escape hatches - AGENTS.python.md: FastAPI conventions (routes thin, service layer) - AGENTS.go.md: Go/Gin conventions (handler ≤40 LOC) - AGENTS.typescript.md: Next.js conventions (page.tsx ≤250 LOC, colocation) - CLAUDE.md extended with guardrail section + commit markers 273 files currently exceed 500 LOC — to be addressed phase by phase. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1.2 KiB
1.2 KiB
AGENTS.python.md — Python/FastAPI Konventionen
Architektur
routes/oderapi/: Request/Response nur — kein Business Logicservices/: Business Logicrepositories/: Persistenz/Data Accessschemas/: Pydantic Models, nach Domain gesplittettests/: Spiegelt Produktions-Layout
Regeln
- Route-Dateien duenn halten (≤300 LOC)
- Wenn eine Route-Datei 300-400 LOC erreicht → nach Resource/Operation splitten
- Schema-Dateien nach Domain splitten wenn sie wachsen
- Modul-Level Singleton-Kopplung vermeiden (Tests patchen falsches Symbol)
- Patch immer das Symbol das vom getesteten Modul importiert wird
- Dependency Injection bevorzugen statt versteckte Imports
- Pydantic v2:
from __future__ import annotationsNICHT verwenden (bricht Pydantic) - Migrationen getrennt von Refactorings halten
Split-Trigger
- Datei naehert sich oder ueberschreitet 500 LOC
- Zirkulaere Imports erscheinen
- Tests brauchen tiefes Patching
- API-Schemas mischen verschiedene Domains
- Service-Datei macht Transport UND DB-Logik
Verifikation
ruff check .
mypy . --ignore-missing-imports --no-error-summary
pytest tests/ -x -q --no-header