← Zurück zum Phasen-Detail

Weichenstellung-Logik

Der vollständige Entscheidungsbaum von Phase 0: Source-Detection, HARD BLOCK, Zielgruppen-Routing und sämtliche Edge Cases mit komplettem Pseudocode

01

Source-Detection im Detail

Die Source-Detection ist der allererste Entscheidungsknoten im Orchestrator. Bevor irgendein Analyse-Token ausgegeben wird, muss der Skill wissen, wo der Quellcode liegt. Es gibt genau drei Pfade — und jeden Edge Case, der dabei auftreten kann.

Der vollständige Entscheidungsbaum:

💬
User-Eingabe
🔍
Pattern-Match
Validierung
📂
Source-Objekt

Pfad 1 — Git-URL: Wenn die Eingabe mit „http“ oder „git@“ beginnt, wird ein Git-Clone in ein temporäres Verzeichnis ausgeführt. GitHub-URLs ohne „.git“-Suffix bekommen diesen automatisch angehängt. URLs mit „/tree/“ oder „/blob/“ (die auf ein Unterverzeichnis oder eine Datei im Browser zeigen) werden auf die Repo-Root zurückgeführt. Schlägt der Clone fehl, wird zwischen Auth-Fehler (privates Repo, Token fehlt) und 404 (Repo existiert nicht) unterschieden.

Pfad 2 — Dateisystem-Pfad: Absolute Pfade (/...), relative Pfade (./...) und Home-Pfade (~/) werden aufgelöst. Kritischer Edge Case: Wenn der Pfad auf eine Datei statt ein Verzeichnis zeigt, wird nicht still fehlgeschlagen, sondern eine klare Fehlermeldung ausgegeben, die das übergeordnete Verzeichnis vorschlägt. Leere Verzeichnisse erzeugen ebenfalls einen Fehler.

Pfad 3 — CWD: Die Eingabe „.“, eine leere Eingabe, oder Formulierungen wie „dieses Projekt“ nutzen das aktuelle Arbeitsverzeichnis. Auch hier muss das Verzeichnis mindestens eine lesbare Datei enthalten.

Kein Match: Wenn keines der drei Muster zutrifft, wird eine Fehlermeldung mit allen drei akzeptierten Formaten angezeigt. Es gibt keinen Fallback und kein Raten.

02

Der HARD BLOCK Mechanismus

Nach erfolgreicher Source-Detection steht der Orchestrator vor einem unumgehbaren Gate: Zwei Pflichtfragen müssen beantwortet werden, bevor Phase 1 starten darf. Es gibt keine Abkürzung, keinen Default und kein „Später“.

HARD BLOCK — Die zwei Pflichtfragen

Frage 1: Sprache(n)?

Akzeptierte Antworten: „de“, „en“, „beide“/„both“, „Deutsch“, „English“, „Deutsch und Englisch“. Bestimmt die Dateinamens-Suffixe (_de.html, _en.html) und die Inhaltssprache.

Frage 2: Zielgruppen?

Akzeptierte Antworten: Explizite Nennung von einer oder mehreren der drei Standard-Audiences (Entwickler, Anwender, Entscheider) oder benutzerdefinierte Audiences. „alle“ und „für jeden“ sind nicht akzeptiert — zu vage.

Warum kein „einfach loslegen“?

Wenn der Skill raten würde („vermutlich Deutsch, vermutlich Entwickler“), könnte er einen kompletten Kurs mit 50+ Dateien generieren — nur um festzustellen, dass der User eigentlich Englisch für Entscheider wollte. Die zwei Fragen kosten 10 Sekunden. Eine falsche Annahme kostet Minuten an verschwendeter Generierung. Das Kosten-Nutzen-Verhältnis ist eindeutig.

Guard-Logic — Vollständiger Pseudocode:

Die Guard-Logik arbeitet so:

1. Der Orchestrator hat eine feste Liste von zwei Pflichtfragen. Jede Frage hat einen Prompt (DE + EN) und einen Validator.

2. Für jede Frage wird der User gefragt. Seine Antwort wird zuerst auf Bypass-Versuche geprüft: „leg los“, „just go“, „skip“, „egal“ und ähnliche werden erkannt und abgelehnt. Die Nachricht erklärt, warum die Frage nicht übersprungen werden kann.

3. Dann wird die Antwort validiert. Für Zielgruppen bedeutet das: „alle“ oder „für jeden“ ist zu vage und wird abgelehnt. Spezifische Namen (Entwickler, Anwender, Entscheider) oder Custom-Audiences werden akzeptiert.

4. Die Schleife wiederholt sich maximal 5-mal. Danach wird die Skill-Ausführung abgebrochen — lieber kein Ergebnis als ein falsches.

Kernregel: Es gibt keine Defaults. Keine Inferenz aus dem Kontext. Keine Heuristik. Der User muss explizit antworten.

03

Zielgruppen-Routing

Sobald die Pflichtfragen beantwortet sind, muss der Orchestrator aus den Antworten eine Pipeline-Konfiguration ableiten: Wer bekommt welche Dateien, mit welchen Suffixen, bis zu welcher Tiefe?

Suffix-Bestimmung — Reihenfolge entscheidet:

Reihenfolge Audience Datei-Suffix Beispiel L0
1. (Erste/Allgemeinste) Allgemeinste Audience Kein Suffix index_de.html
2. Entwickler _dev index_dev_de.html
3. Entscheider _exec index_exec_de.html
4. (Custom) z.B. „DevOps Team“ _devops-team index_devops-team_de.html

Regel: Die allgemeinste Audience (typischerweise Anwender) bekommt keinen Suffix und wird damit zur Standard-Ansicht. Alle weiteren Audiences bekommen ein Suffix. Diese Reihenfolge ist: Anwender (kein Suffix) → Entwickler (_dev) → Entscheider (_exec) → Custom (_slug).

Routing-Tabelle — Ableitung:

Der Routing-Algorithmus erstellt eine Pipeline pro Audience-Sprach-Kombination:

1. Audiences werden nach Allgemeinheit sortiert. Die allgemeinste (typischerweise Anwender) kommt zuerst und bekommt keinen Suffix — ihre Dateien sind die „Standard“-Ansicht.

2. Jede weitere Audience bekommt ihren vordefinierten Suffix: _dev für Entwickler, _exec für Entscheider, ein abgeleiteter Slug für Custom-Audiences.

3. Für jede Audience werden so viele Pipelines wie Sprachen erstellt. Bei 2 Audiences und 2 Sprachen ergeben sich 4 Pipelines.

4. Jede Pipeline enthält: Audience-Name, Emoji, Suffix, Sprache, maximale Tiefe, HS-Schwellenwerte, Ausgabeverzeichnis und Dateinamens-Pattern. Damit hat der Pipeline-Agent alle Informationen, die er braucht.

04

Edge Cases & Fehlerfälle

Jeder Entscheidungsknoten in Phase 0 hat Fehlerzustände. Hier ist das vollständige Verzeichnis aller Edge Cases mit der jeweiligen Behandlungsstrategie.

Edge Case Erkennung Behandlung
User ändert Audiences mid-generation „Ändere Zielgruppen“ während Phase 3/4 läuft Voller Neustart. Alle bereits generierten Dateien verwerfen. Phase 0 mit neuen Antworten komplett neu durchlaufen. Teilgenerierung ist inkonsistent.
Quellverzeichnis ist leer count_readable_files() == 0 Sofortiger Fehler in Source-Detection. Klare Meldung: „Keine analysierbaren Dateien gefunden.“ Keine Analyse starten.
Pfad existiert nicht !exists(resolved_path) Sofortiger Fehler. Pfad ausgeben, damit der User den Tippfehler erkennen kann.
Pfad zeigt auf eine Datei is_file(resolved_path) Fehler mit Hinweis: „Bitte das übergeordnete Verzeichnis angeben.“ Der Skill analysiert Projekte, nicht einzelne Dateien.
GitHub gibt 404 zurück git clone exit code 128 + „not found“ Unterscheidung: Repository existiert nicht vs. Repository ist privat. Beide Fälle produzieren 128, aber die stderr-Meldung unterscheidet sich.
Privates Repo, kein Token git clone exit code 128 + „auth“ Fehler mit klarem Hinweis auf fehlendes Token. Kein stiller Abbruch.
Monorepo ohne klaren Entry-Point Kein README, kein offensichtlicher Entry-Point in Root Phase 1 scant Unterverzeichnisse und behandelt jedes Paket als eigenständigen Teilbaum. Nicht Fehler, aber Warnung an User.
User gibt „alle“ als Audience an validate_audiences() rejektiert vage Antworten Re-Prompt: „Bitte nenne die Zielgruppen konkret.“ Kein Default auf alle drei Standard-Audiences.
Netzwerkfehler während Clone git clone timeout / DNS failure Fehler mit Netzwerk-Hinweis. Vorschlag: Lokalen Pfad als Alternative verwenden, falls Repo bereits geklont ist.
User antwortet 5x nicht korrekt HARD BLOCK attempt > max_attempts Skill-Abbruch. Besser kein Ergebnis als ein falsches. Fehlermeldung erklärt warum.

Audience-Wechsel mid-generation: Wenn der User während der Generierung die Zielgruppen ändern will, gibt es keine Möglichkeit, die bereits generierten Dateien „umzubiegen“. Die Helpfulness-Scores sind audience-spezifisch, die Curricula basieren auf diesen Scores, und die Cross-Links verweisen auf audience-spezifische Varianten. Ein Teilupdate würde zu inkonsistenten Ergebnissen führen. Deshalb: voller Neustart.

GitHub-Fehler-Diagnose: Ein fehlgeschlagener Clone (Exit-Code 128) kann zwei Ursachen haben: Das Repository existiert nicht, oder es ist privat und der Zugriff fehlt. Der Skill analysiert die stderr-Ausgabe, um zwischen beiden Fällen zu unterscheiden, und gibt eine spezifische Fehlermeldung aus. Bei Auth-Fehlern wird als Alternative der lokale Pfad vorgeschlagen.

✏️ Wissenstest

User sagt: „Mach einen Kurs aus ./my-project für alle“. Ist der HARD BLOCK erfüllt?

Ja — Source ist klar (./my-project) und „für alle“ meint alle drei Standard-Audiences
Nein — „für alle“ ist zu vage, spezifische Zielgruppen fehlen, und Sprache ist nicht angegeben
Teilweise — Source ist erfüllt, aber Audiences und Sprache müssen noch nachgefragt werden
🔧 Entwickler — Alle L3-Seiten
01 Weichenstellung-Logik 02 Schwellenwerte 03 Pipeline-Agent-Prompts