Ein neues TYPO3-Content-Element ProductList soll vollständig implementiert werden:
TCA, TCA-Inline-Produkte (mit Name, Kategorie via sys_category, Beschreibung, Bild, Preis),
Fluid-Template, TypoScript-Einbindung und eine Vue-Komponente mit
Sortierung und Kategoriefilter. Dafür existiert ein .agent.md-File
(/.github/agents/create-content-element.agent.md), das Copilot alle Projektkonventionen mitteilt.
Agent-File ist der Schlüssel. "do your job" als Eröffnungsprompt funktioniert
nur, weil das Agent-File alle notwendigen Konventionen enthält: Namensschema (mm_-Präfix),
Dateistruktur, TCA-Standards, welche DataProcessors das mmpackage bereitstellt.
Ohne Agent-File würde "do your job" scheitern.
create-content-element.agent.md alle notwendigen Konventionen enthält. Der Agent weiß, was er tun soll – er fragt nur die fehlenden Angaben ab.my_elementmm_-Präfix), Standard-Icons und Insert-Positionen.product_list → CType mm_product_listcontent-tabletextmediamm_product_list – der mm_-Präfix kommt aus dem Agent-File. Ohne das File würde Copilot einfach product_list oder tx_extension_productlist nehmen.TCA/mm_product_list.php: CType-Definition, fields header/bodytextTCA/tx_mmsitepackage_product.php: Inline-Produkt-Tabelle mit name, category, description, image, priceext_tables.sql: neue Tabelle tx_mmsitepackage_productTypoScript/Setup.typoscript: CE-Rendering-Config, DataProcessorTemplates/ContentElements/ProductList.html: Fluid-Template mit Vue-Mount-PointResources/Public/JavaScript/ProductList.vue: Vue-Komponente mit Sortierung und KategoriefilterResources/Public/JavaScript/ProductList.js: Vue-App-BootstrapConfiguration/TCA/Overrides/tt_content.php: CType-RegistrierungConfiguration/TCA/Overrides/sys_category.php: Kategorie-RelationResources/Private/Language/locallang_db.xlf: Labels für alle Felder
sys_category-Relation. Das ist fachlich unvollständig – aber korrigierbar (siehe Austausch 4).sys_category-Relations haben sich zwischen TYPO3 11, 12 und 13 verändert (MM-Tabellen, Slug-Felder, TCA-Typen). Die Versionsnummer sichert korrekten Code.sys_category_record_mm – kein manueller MM-Eintrag in ext_tables.sql nötig.
type='category' in TCA, der MM-Tabellen automatisch verwaltet. Copilot kennt diesen Standard und wendet ihn korrekt an.sys_category_record_mm ist TYPO3-core-seitig bereits vorhanden – kein manueller ext_tables.sql-Eintrag nötig. Copilot erklärt das proaktiv.inlineLanguageLabelFiles + translate.js ist ein projekt-eigenes Pattern, das Copilot nicht kennen kann. Der Entwickler erklärt es kurz und präzise – Copilot passt die Vue-Komponente entsprechend an.translate.js und versteht das Muster.inlineLanguageLabelFiles-System mit translate.js zu nutzen, anstatt Labels über Props zu übergeben.translate.js-Muster ins Agent-File aufnehmen! Dann muss es beim nächsten Content Element nicht mehr erklärt werden./.github/agents/create-content-element.agent.md:Diese Session zeigt das volle Potenzial des Agent-File-Ansatzes. Vom "do your job" bis zum fertigen Full-Stack-Content-Element sind es sechs Austausche – bei einem manuellen Prozess wären es Stunden. Das Geheimnis ist das Agent-File, das alle Projekt-Konventionen vorab kodiert.
Drei Muster stechen heraus: "entscheide selbst" delegiert technische Details an Copilot und spart Entscheidungsaufwand. "passt" startet die Implementierung mit einem einzigen Wort. Und die abschließende Agent-File-Verbesserung ist die wichtigste Investition der Session – sie macht jede zukünftige CE-Session schneller.
Das einzige schwache Moment: Austausch 3 liefert anfänglich ein einfaches Input-Feld statt einer sys_category-Relation. Das ist ein klares Signal: Felddefinitionen präzise spezifizieren oder den TYPO3-Standard explizit fordern. Beides geht schnell – und Austausch 4 zeigt, wie einfach die Korrektur ist.
Ein vollständiges .agent.md-File für wiederkehrende Aufgaben (CE erstellen, Service anlegen, Extension erweitern) ist die beste Investition der ersten Woche. Es macht aus einem 30-Minuten-Prompt ein "do your job".
Name, Icon, Insert-Position sind keine fachlichen Entscheidungen – das sind Konventionen. Copilot kennt das Namensschema aus dem Agent-File. "Entscheide selbst" ist kein Kontrollverlust, sondern effiziente Delegation.
"Halte die an TYPO3 13 Standards" gibt Copilot den Versionkontext für API-Entscheidungen. TCA, DataProcessors und Relations ändern sich zwischen Versionen. Ohne Versionsangabe wählt Copilot den "sichersten" (meist älteren) Ansatz.
Für translate.js-Integration reicht eine kurze Beschreibung: "in translate.js ist eine importierbare Funktion". Copilot sucht die Datei selbst und versteht das Muster. Keine langen Erklärungen, kein Copy-Paste als Kontext.
Copilot implementiert "Kategorie" als einfaches Input, wenn keine TYPO3-Standardrelation gefordert wird. Bei Feldern, die einen spezifischen TCA-Typ brauchen (sys_category, sys_file_reference), explizit benennen.
Jede Session bringt neue Erkenntnisse über Projekt-Konventionen. Diese gehören zurück ins Agent-File. Das ist der Compounding-Effekt: Jede Session macht alle zukünftigen Sessions besser.
Für i18n in Vue-Komponenten innerhalb von TYPO3 den inlineLanguageLabelFiles-Mechanismus nutzen: Labels in XLF definieren, per TypoScript einbinden, via translate.js (oder direkt via TYPO3.lang) in Vue verwenden. Kein Props-Overhead.
| Element | Qualität | Anmerkung |
|---|---|---|
| Austausch 1 – "do your job" | ✓ Exzellent | Funktioniert dank Agent-File; Checkliste bestätigt korrekte Aktivierung |
| Austausch 2 – Spezifikation | ✓ Sehr gut | Vollständige fachliche Anforderungen + "entscheide selbst" für Technisches |
| Austausch 3 – Implementierung | ⚠ Gut mit Lücke | Full-Stack-Output sehr gut; Category-Feld ohne TYPO3-Standardrelation |
| Austausch 4 – sys_category | ✓ Sehr gut | Gezielter Standard-Upgrade; TYPO3 13 nativer category-Type korrekt angewandt |
| Austausch 5 – translate.js | ✓ Sehr gut | Kurze Musterbeschreibung reicht; vollständiges i18n-Setup inklusive XLF |
| Austausch 6 – Agent-File | ✓ Vorbildlich | Session endet mit Basis-Verbesserung für alle zukünftigen Sessions |