Was macht kikita-create-angular-app?
Erstellt ein neues Angular-Projekt und generiert dessen AGENTS.md- / .agents/-Dokumentationsbaum,
sodass jeder KI-Agent (Claude Code, Codex, usw.), der anschließend im Projekt arbeitet, eine
vollständige, selbstwartende Quelle der Wahrheit hat.
0. Moduserkennung (immer zuerst durchführen)
Drei mögliche Zustände für das Zielverzeichnis – in dieser Reihenfolge prüfen:
.agents/.kikita-scaffold.jsonvorhanden → Dieses Projekt wurde bereits von dieser Fähigkeit eingerichtet oder übernommen. Befolgeupdate.md– führe den Fragebogen nicht erneut aus, führe kein erneutes Scaffolding durch, führeadopt.mdnicht erneut aus.update.mdbehandelt das Abrufen der neuesten Vorlage, das Vergleichen seit dem aufgezeichneten Commit und das Zusammenführen von Änderungen in die (möglicherweise angepassten).agents/-Dateien des Projekts.- Leeres oder fast leeres Verzeichnis (keine
package.json, keineangular.json, nichts außer vielleicht einem.git//README, das der Benutzer gerade erstellt hat) → Frische Initialisierung. Fahre mit Abschnitt 1 unten fort, dann mitplan.md. - Bestehendes Projekt ohne Scaffold-Eintrag (
package.json/angular.jsonvorhanden, keine.agents/.kikita-scaffold.json) → Dies ist ein Angular-Projekt von jemand anderem (oder ein älteres, vor dieser Fähigkeit erstelltes). Führe nichtplan.mdaus – es nimmt ein leeres Verzeichnis an und wird versuchen,ng newüber ein echtes Projekt auszuführen. Befolge stattdessenadopt.md: Es generiert den.agents/-Baum basierend auf dem, was tatsächlich vorhanden ist, leitet Antworten auf den Fragebogen aus der bestehenden Konfiguration ab und fragt nach, bevor es etwas ändert, das bereits existiert.
0.5 Voraussetzungen (nur bei frischer Initialisierung)
- Stelle sicher, dass das Arbeitsverzeichnis leer ist oder der Benutzer explizit hier initialisieren möchte.
- Wenn sich das Verzeichnis bei der Überprüfung als nicht leer herausstellt, brich ab und leite zu Fall 3
oben (
adopt.md) um, anstatt den Initialisierungspfad zu erzwingen – bitte den Benutzer nicht, einfach zu „bestätigen, dass die Initialisierung hier in Ordnung ist“, wenn eigentlich der Adopt-Flow benötigt wird.
1. Fragebogen (immer vor dem Berühren des Dateisystems fragen)
Befolge plan.md Schritt für Schritt ab hier. Überspringe den Fragebogen nicht. Überspringe die MCP-
Installation nicht. Wenn fertig, führe checklist.md vollständig aus, bevor du dem Benutzer mitteilst,
dass es abgeschlossen ist.
Stelle dem Benutzer eine Runde, alles auf einmal:
- CSS: natives CSS (Custom Properties), SCSS oder Tailwind CSS?
- Tailwind ist strukturell ein anderer Zweig, nicht eine Variante der anderen beiden: kein
@layer {{PREFIX}}.*-Schema, keine handgeschriebenen:root-Token, keine SCSS-Mixins – siehe dieCSS=TailwindScaffold-Blöcke intemplates/.agents/code-style/css-architecture.md,component-structure.mdundtemplates/.agents/architecture/folder-structure.md.
- Tailwind ist strukturell ein anderer Zweig, nicht eine Variante der anderen beiden: kein
- UI-Bibliothek:
@kikita-labs/ui, Taiga UI, PrimeNG oder keine (baue ein lokales token-basiertes UI-Set auf)?- Wenn eine Bibliothek gewählt wird: Prüfe, ob sie ein
ng add-Schematic und/oder einen MCP- Server liefert. Bevorzuge das Schematic. Wenn es einen MCP hat, installiere ihn (sieheplan.mdSchritt 4).
- Wenn eine Bibliothek gewählt wird: Prüfe, ob sie ein
- Tests: keine, nur Unit, nur e2e oder beides? Welcher Runner (Vitest/Jasmine+Karma ist bei neuem Angular veraltet – bevorzuge Vitest; Playwright für e2e)?
- SSR: Wird diese App servergerendert (Angular SSR / Hydration) oder nur clientseitig?
- Bestimmt, ob
.agents/architecture/platform-adapter.mdgeneriert wird.
- Bestimmt, ob
- i18n: Benötigt dieses Projekt mehrere Locales (
@angular/localizeoder eine Runtime-i18n- Bibliothek)? Wenn ja, welcher Ansatz?- Bestimmt, ob
.agents/i18n.mdgeneriert wird.
- Bestimmt, ob
- JSDoc bei öffentlicher API: Erzwinge obligatorisches JSDoc für jedes exportierte Symbol oder überspringe es?
- Bestimmt, ob
.agents/agent-surface.mdgeneriert wird (empfohlener Standard: ja).
- Bestimmt, ob
- Projekt-Präfix: Kurzes Kebab-Case-Selektorpräfix für Komponenten/Direktiven.
- Git-Richtlinie: Darf der Agent ohne Nachfrage committen und pushen, oder muss jeder Commit/Push bestätigt werden?
- Paketmanager: npm, pnpm oder yarn? Standardempfehlung: pnpm (schneller, platzsparend durch einen gemeinsam genutzten Content-Addressable Store, strengere Abhängigkeitsauflösung). Überschreibe den Standard nur, wenn der Benutzer etwas anderes verlangt.
- Git-Remote: Hat der Benutzer bereits eine Repository-URL, in die er pushen möchte? Wenn ja, notiere sie –
git remote add origin <url>wird direkt nachgit initausgeführt (sieheplan.mdSchritt 9). Wenn keine URL angegeben wird, überspringe dies; der Benutzer richtet das Remote später selbst ein.
Notiere jede Antwort – sie bestimmen sowohl das Scaffolding als auch, welche Dokumentdateien generiert werden. Nimm niemals stillschweigend einen Standard an; wenn der Benutzer eine Frage überspringt, frage für diese noch einmal nach. Diese Fähigkeit zielt auf ein einzelnes Angular-Projekt ab, nicht auf ein Monorepo - wenn der Benutzer ein Monorepo/Nx-Workspace möchte, sage, dass diese Fähigkeit das nicht abdeckt, und brich ab, anstatt improvisieren.
2. Generieren
Befolge plan.md. Kopiere Dateien aus templates/ in das Zielprojekt, einschließlich der
Punktdateien (.gitignore, .editorconfig, .prettierrc, .prettierignore, .nvmrc,
.vscode/extensions.json).
Zwei verschiedene Dinge passieren mit den Fragebogenantworten, vermische sie nicht:
- Text-Platzhalter – Ersetze jeden
{{TOKEN}}durch den tatsächlichen Wert, lasse keinen zurück:{{PREFIX}},{{PROJECT_NAME}},{{CSS}},{{CSS_EXT}},{{UI_LIB}},{{UI_LIB_MCP_NAME}},{{UI_LIB_MCP_PURPOSE}},{{TESTS}},{{GIT_POLICY}},{{PACKAGE_MANAGER}},{{NODE_VERSION}},{{I18N_APPROACH}},{{DATE}}. - Aufnahme-Tore – Antworten zu SSR, i18n, obligatorischem JSDoc, UI-Bibliothek und CSS-Engine
füllen keinen Platzhalter; sie entscheiden, ob eine gesamte Datei (oder ein mit
<!-- SCAFFOLD -->markierter Block innerhalb einer Datei) überhaupt kopiert wird. Eine „Nein“-Antwort (oder bei CSS die beiden nicht gewählten Engines) bedeutet, dass die Datei/der Block gelöscht wird, nicht mit einem leeren String gefüllt. Getorierte Dateien müssen dennoch vonAGENTS.md/ dem relevanten README verlinkt werden, wenn sie behalten werden, und ihre Links entfernt werden, wenn sie übersprungen werden.
3. Verifizieren
Führe checklist.md vollständig aus, bevor du den Erfolg meldest.
Anmerkungen zur Dokumentationsstruktur (einmal lesen, dann die Vorlagen wörtlich befolgen)
CLAUDE.mdist immer ein einzeiliger Stub, der aufAGENTS.mdverweist.AGENTS.mdist der obligatorische Einstiegspunkt: eine kurze „Muss gelesen werden“-Liste plus unverhandelbare Regeln, im Projektstamm..agents/README.mdist ein flacher Index von allem unter.agents/– das barrelindex.ts- Äquivalent für den Dokumentationsbaum. Jedes Root-Dokument und jedes Unterordner-README wird daraus verlinkt. Halte es synchron, sobald eine bedingte Datei (i18n, agent-surface, platform-adapter) hinzugefügt oder übersprungen wird.- Themen, die wirklich ein kurzes Dokument sind, bleiben flach in
.agents/*.md(workflow, git-policy, documentation, mcp, testing-and-quality, agent-surface, refactoring, progress, i18n, accessibility). - Themen, die sich in mehrere kleine Dokumente aufteilen, erhalten einen Unterordner mit eigenem
README.md-Hub:.agents/code-style/,.agents/architecture/,.agents/shared/,.agents/core/,.agents/decisions/. Dies ist eine bewusste Abweichung von kikita-ui/-docs (die vollständig flach blieben), da die Spezifikation dieser Fähigkeit pro-Komponenten- und pro-Belang-Wiederverwendungsdokumente vorsieht, die nach dem Scaffolding weiter wachsen werden. .agents/shared/README.mdregistriert alles untersrc/app/shared/, aufgeteilt nach Abhängigkeitsform:shared/ui/(Komponente/Direktive/Pipe, Angular-dekoriert) undshared/utilities/(reine Funktionen, ohne Angular-Importe – erzwungen durch eine ESLint- restricted-import-Regel). SCSS-Mixins, falls SCSS gewählt wurde, liegen instyles/mixins/, nicht untershared/..agents/core/README.mdregistriert app-weite Singletons (Services/Guards/Interceptors) untersrc/app/core/. Keines heißt „components“ – beide decken mehr als nur Komponenten ab, daher die Namensgebung..agents/decisions/README.mderklärt, wann ein kurzer ADR erforderlich ist (Schichtenrichtung, Zustandseigentum, Routing-Strategie, öffentliches Alias-Schema) – wird immer generiert, beginnt ohne ADR-Dateien.AGENTS.mdverlinkt es unter einer bedingten Gruppe „für strukturelle Änderungen“, nicht in der immer-zu-lesenden Liste – gleiches Muster wie dieshared//core/-Gruppe „für Komponentenarbeit“.- Der gesamte verfolgte Dateiinhalt – einschließlich JSDoc – ist nur auf Englisch. Kein Kyrillisch, kein Mojibake.
- Alle Dokumente in
.agents/müssen wieangular-code-style.mdin kikita-ui gelesen werden: imperativ, kurz, mit Beispielen untermauert, endend mit einer Überprüfungs-/Verifikations-Checkliste.