Files
breakpilot-lehrer/.claude/rules/architecture.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.4 KiB

Architecture Rule — BreakPilot Lehrer

File Size Budget

Hard default: 500 LOC max per file. Soft targets:

  • Handler/Router/Service: 300-400 LOC
  • Models/Schemas/Types: 200-300 LOC
  • Utilities: 100-200 LOC

Ausnahmen nur in .claude/rules/loc-exceptions.txt mit Begruendung.

Split-Trigger

Sofort splitten wenn:

  • Datei ueberschreitet 500 LOC
  • Datei wuerde nach Aenderung 500 LOC ueberschreiten
  • Datei mischt Transport + Business Logic + Persistence
  • Datei enthaelt mehrere unabhaengig testbare Verantwortlichkeiten

Python (backend-lehrer, klausur-service, voice-service)

  • Routes duenn halten — Business Logic in Services
  • Persistenz in Repositories/Data-Access-Module
  • Pydantic Schemas nach Domain splitten
  • Zirkulaere Imports vermeiden

Go (school-service, edu-search-service)

  • Handler duenn halten (≤40 LOC)
  • Business Logic in Services/Use-Cases
  • Transport/Request-Decoding getrennt von Domain-Logik

TypeScript / Next.js (admin-lehrer, studio-v2, website)

  • page.tsx duenn halten — Server Actions, Queries, Forms auslagern
  • Monolithische types.ts frueh splitten
  • types.ts + types/ Shadowing vermeiden
  • Shared Client/Server Types explizit trennen

Entscheidungsreihenfolge

  1. Bestehendes kleines kohaeesives Modul wiederverwenden
  2. Neues Modul in der Naehe erstellen
  3. Ueberfuellte Datei splitten, neues Verhalten in richtiges Split-Modul
  4. Nur als letzter Ausweg: Grosse bestehende Datei erweitern