Bootstrap, Analyse, Curriculum-Ableitung und Polish-Algorithmus — die Kernphasen mit vollständigem Pseudocode, Edge Cases und Entscheidungslogik
Bevor der Orchestrator irgendeine Analyse startet, muss er wissen, wo der Quellcode liegt. Phase 0 erkennt die Quelle und stellt sicher, dass alle Pflichtfragen beantwortet sind, bevor ein einziger Token für Analyse ausgegeben wird.
Source-Detection — drei Pfade:
HARD BLOCK — Pflichtfragen
Phase 0 stellt nach der Source-Detection einen Block von Pflichtfragen. Der Orchestrator darf nicht zu Phase 1 weitergehen, bevor alle beantwortet sind. Fehlende Antworten erzeugen keine Defaults — sie erzeugen eine erneute Nachfrage. Das verhindert, dass der Skill mit falschen Annahmen einen kompletten Kurs baut.
Schritt 1: Der Orchestrator prüft die Nutzer-Eingabe auf drei Muster: GitHub-URL (beginnt mit https://github.com/...), lokaler Dateipfad (absolut oder relativ), oder eine Formulierung wie „dieses Projekt“.
Schritt 2: Je nach Muster wird geklont, der Pfad aufgelöst oder das aktuelle Verzeichnis verwendet. Bei Fehlern (privates Repo, nicht existierender Pfad, leeres Verzeichnis) bricht Phase 0 mit einer klaren Fehlermeldung ab.
Schritt 3: Danach kommen die Pflichtfragen. Die drei Fragen (Sprache, Integrationsmodus, Zielgruppen) werden in einer Schleife gestellt. Keine Frage darf übersprungen werden. Es gibt keine Standardwerte. Die Schleife wiederholt sich, bis eine gültige Antwort vorliegt.
Edge Case: Wenn ein Nutzer eine GitHub-URL angibt, die auf ein privates Repo zeigt, und kein Token verfügbar ist, scheitert der Clone. Die Fehlermeldung enthält einen Hinweis auf das fehlende Token — kein stiller Abbruch.
Phase 1 liest den Quellcode und baut einen Themenbaum mit Komplexitätsbewertungen. Der Ansatz ist top-down: Zuerst README und Einstiegspunkte, dann immer tiefer in die Struktur.
Analyse-Reihenfolge:
Themenbaum-Aufbau:
Der Themenbaum ist das zentrale Artefakt von Phase 1. Jedes Thema bekommt:
• Komplexität 0: Trivial — in einem Satz auf dem L0-Überblick erwähnt. Kein eigenes Modul.
• Komplexität 1: Braucht einen Absatz. Kandidat für ein L1-Modul, aber nicht tiefer.
• Komplexität 2: Braucht mehrere Abschnitte. L1 + L2 Kandidat.
• Komplexität 3: Braucht eine eigene Seite mit Diagrammen, Code-Beispielen und Edge Cases. L1 + L2 + L3 Kandidat.
Das rationale-Feld dokumentiert, warum diese Komplexität gewählt wurde. Das ist entscheidend für Nachvollziehbarkeit — wenn später die Tiefenkarte zeigt, dass ein Thema keinen L3 bekommen hat, kann man zurück zur Begründung navigieren.
Edge Case: Monorepos
Bei Monorepos mit mehreren Paketen analysiert Phase 1 jedes Paket als eigenen Teilbaum. Die Themen werden dann auf oberster Ebene gruppiert (z.B. „Frontend“, „Backend“, „Shared“). Das verhindert, dass ein Monorepo einen flachen, unübersichtlichen Baum erzeugt.
Phase 2 nimmt den Themenbaum aus Phase 1 und erstellt separate Curricula für jede Zielgruppe. Jede Audience bekommt nur die Themen und Tiefen, die für sie relevant sind.
Maximale Tiefe per Zielgruppe:
Curriculum-Ableitung — Algorithmus:
Der Algorithmus arbeitet so:
1. Für jede Zielgruppe gibt es eine maximale Tiefe. Entscheider: L1. Anwender: L2. Entwickler: L3. Darüber hinaus wird nie geplant.
2. Für jedes Thema wird der Helpfulness-Score (HS) berechnet — spezifisch für diese Zielgruppe. Dasselbe Thema hat unterschiedliche Scores je nach Audience.
3. Der HS wird gegen Schwellenwerte geprüft. Jedes Level hat einen Schwellenwert pro Audience. Nur wenn der Score den Schwellenwert erreicht und die maximale Tiefe es erlaubt, wird das Level eingeplant.
4. Jedes Thema bekommt einen Stop-Reason: Warum wurde nicht tiefer geplant? Drei mögliche Gründe: maximale Tiefe der Audience erreicht, Score unter Schwellenwert, oder das Thema hat einfach nicht genug Substanz für mehr.
Kern-Regel: Plane nie Seiten, die nicht gebaut werden. Wenn Entscheider maximal L1 bekommen, wird für sie kein L2 eingeplant — auch wenn der HS theoretisch hoch genug wäre.
Beispiel: Thema „Authentifizierung“ — drei Curricula
| Zielgruppe | HS | Geplante Levels | Stop-Reason |
|---|---|---|---|
| 📊 Entscheider | 9 | L0, L1 | audience_max_level (max=L1) |
| 👤 Anwender | 7 | L0, L1, L2 | audience_max_level (max=L2) |
| 🔧 Entwickler | 10 | L0, L1, L2, L3 | complexity exhausted |
Phase 5 ist der letzte Durchlauf. Hier wird nichts mehr inhaltlich geändert — nur verifiziert, repariert und konsistent gemacht. Der Polish-Algorithmus ist eine systematische Checkliste, die als interaktive Toggles implementiert ist.
Prüfungen im Detail:
l1/datei.html. L1→L2: ../l2/datei.html. L2→L3: ../l3/datei.html. Ein falscher Präfix bricht die Navigation.
Der Polish-Algorithmus macht fünf Durchläufe:
1. Tote Links finden und behandeln: Jeder interne Link wird gegen die Liste generierter Dateien geprüft. Deep-Dive-Links zu nicht generierten L3-Seiten werden entfernt. Andere tote Links erzeugen einen Fehler.
2. Audience-Switch injizieren: Wenn mehrere Audiences generiert wurden, bekommt der L0-Überblick Links zu allen Varianten. Wenn nur eine Audience existiert, wird kein Switch angezeigt.
3. Pfad-Präfixe korrigieren: Links zwischen Levels müssen die richtige Verzeichnisstruktur widerspiegeln. Ein Link von einer L1-Seite zu einer L2-Seite muss mit ../l2/ beginnen, nicht mit l2/.
4. Breadcrumbs synchronisieren: Die Breadcrumb-Kette wird aus der Datei-Position im Levelbaum berechnet und mit dem tatsächlichen HTML verglichen.
5. Sprachpaare prüfen: Jede _de-Datei braucht ein _en-Gegenstück (wenn beide Sprachen gewählt wurden). Fehlende Partner werden als Fehler gemeldet.
Phase 2 erstellt ein Curriculum für 📊 Entscheider. Soll es L2/L3-Kandidaten-Themen einplanen?