Appearance
Konventionen
Die verbindlichen Regeln für das PIM stehen in admin/CLAUDE.md. Sie gelten für Menschen genauso wie für KI-Assistenten. Hier die wichtigsten.
Sprache im Code
- Kommentare und PHPDoc auf Englisch. Nur Englisch, auch in neuen Dateien neben deutsch kommentiertem Altbestand.
- Kein sichtbarer Text im PHP- oder Blade-Code. Jeder Text, den ein Benutzer sieht, läuft über
__()mit einem Schlüssel ausadmin/lang/<sprache>/*.php.- Beispiele:
lang/de/catalog.php,lang/de/media.php,lang/de/import.php,lang/de/pim.php,lang/de/mail.php. lang/deundlang/enimmer gemeinsam pflegen. Deutsch ist die Anwendungssprache, Englisch der Fallback.
- Beispiele:
- Kirby- und Nuxt-Code sind überwiegend deutsch kommentiert. Dort gilt: der Stil der Nachbardateien.
PHP
- Geschweifte Klammern immer, auch bei Einzeilern.
- Constructor Property Promotion.
- Explizite Rückgabetypen und Parametertypen.
- Enum-Fälle in TitleCase (
ApprovalStatus::ReleasedForChannels). - PHPDoc mit Array-Shapes statt Inline-Kommentaren.
- Beschreibende Namen.
- Neue Dateien mit
php artisan make:… --no-interactionerzeugen. - Nach PHP-Änderungen formatieren:
vendor/bin/pint --dirty --format agent(bzw.composer lint).
Struktur
- Neue Dateien folgen den Konventionen der Nachbardateien.
- Keine neuen Basisordner und keine neuen Abhängigkeiten ohne Absprache.
- Filament 5: Aktionen liegen unter
Filament\Actions\. - Octane: Keine Request- oder Container-Objekte in Konstruktoren von Singletons und keine statischen Sammelvariablen, die über Requests wachsen. Der Prozess lebt über viele Requests.
Nur eigener Code
Kein Debuggen oder Patchen in vendor/, node_modules/ oder generiertem Code. Fehler werden im eigenen Code behoben oder per Konfiguration umgangen.
Tests
- Neue Tests mit
php artisan make:test --pest. - Tests nicht ohne Absprache löschen.
- Details: Tests.
Dokumentation
- Doku nur auf Anfrage oder wenn ein Verhalten für andere wichtig ist.
- Diese Doku liegt in
docs/(VitePress). Navigation indocs/.vitepress/config.ts. - Keine Passwörter, Tokens oder personenbezogenen Daten in die Doku. Beispielwerte mit
example.test.
Commits
- Commit-Nachrichten im Stil der bestehenden Historie:
typ(bereich): kurze Beschreibungauf Deutsch, z. B.fix(pim): …,feat(api): …,docs(api): ….