Files
breakpilot-lehrer/AGENTS.python.md
Benjamin Admin 5abdfa202e chore: install refactoring guardrails (Phase 0) [guardrail-change]
- 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>
2026-04-23 12:25:36 +02:00

1.2 KiB

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

ruff check .
mypy . --ignore-missing-imports --no-error-summary
pytest tests/ -x -q --no-header