- 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>
37 lines
1.2 KiB
Markdown
37 lines
1.2 KiB
Markdown
# AGENTS.python.md — Python/FastAPI Konventionen
|
|
|
|
## Architektur
|
|
|
|
- `routes/` oder `api/`: Request/Response nur — kein Business Logic
|
|
- `services/`: Business Logic
|
|
- `repositories/`: Persistenz/Data Access
|
|
- `schemas/`: Pydantic Models, nach Domain gesplittet
|
|
- `tests/`: Spiegelt Produktions-Layout
|
|
|
|
## Regeln
|
|
|
|
1. Route-Dateien duenn halten (≤300 LOC)
|
|
2. Wenn eine Route-Datei 300-400 LOC erreicht → nach Resource/Operation splitten
|
|
3. Schema-Dateien nach Domain splitten wenn sie wachsen
|
|
4. Modul-Level Singleton-Kopplung vermeiden (Tests patchen falsches Symbol)
|
|
5. Patch immer das Symbol das vom getesteten Modul importiert wird
|
|
6. Dependency Injection bevorzugen statt versteckte Imports
|
|
7. Pydantic v2: `from __future__ import annotations` NICHT verwenden (bricht Pydantic)
|
|
8. 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
|
|
|
|
```bash
|
|
ruff check .
|
|
mypy . --ignore-missing-imports --no-error-summary
|
|
pytest tests/ -x -q --no-header
|
|
```
|