`
+ },
+}
+
+marked.use({ extensions: [blockMath, inlineMath, mermaidBlock] })
+
+// Mermaid-Knoten in einem Container rendern (nach v-html). Idempotent: bereits
+// verarbeitete (data-processed) überspringt mermaid.run; defekte Graphen bleiben als Text.
+export async function renderMermaid(root) {
+ const nodes = root?.querySelectorAll?.('pre.mermaid:not([data-processed="true"])')
+ if (!nodes || !nodes.length) return
+ try {
+ const m = await getMermaid()
+ await m.run({ nodes })
+ } catch { /* defektes Diagramm → Quelltext bleibt sichtbar */ }
+}
// Rohes HTML im Markdown (z. B.
, ohne Backticks aus Agenten-Output)
// als Text anzeigen statt rendern — sonst verschluckt der Browser den Inhalt.
diff --git a/frontend/src/stufen.js b/frontend/src/stufen.js
index bc71e8c..6d0d733 100644
--- a/frontend/src/stufen.js
+++ b/frontend/src/stufen.js
@@ -1,5 +1,5 @@
// Lernstufen je Baustein — identisch zum Backend (lernen.py STUFEN).
-// Floor in % des cap (cap = clamp(4×relevante Subbausteine, 10, 50)).
+// Floor in % des cap_final (cap_final = alle Subbausteine × 25).
// grün=Anfänger 20% · blau=Fortgeschritten 40% · lila=Experte 60% · gold=Meister 100%.
export const STUFEN = [
{ key: 'anfaenger', label: 'Anfänger', kurz: '✓', floor: 0.2, farbe: 'var(--stufe-anfaenger)' },
@@ -25,11 +25,11 @@ export function naechste(score, cap) {
return null
}
-// Fehler-Strafe-Anzeige nach Fortschritt: 0–20%→0 · 21–40%→−1 · 41–60%→−2 · 61–100%→−3.
+// Fehler-Strafe-Anzeige nach Fortschritt (gegen cap_aktuell): ≤25%→−5 · ≤50%→−10 · ≤75%→−15 · >75%→−20.
export function malusRegel(score, cap) {
const pct = cap ? score / cap : 0
- if (pct <= 0.2) return '0'
- if (pct <= 0.4) return '−1'
- if (pct <= 0.6) return '−2'
- return '−3'
+ if (pct <= 0.25) return '−5'
+ if (pct <= 0.5) return '−10'
+ if (pct <= 0.75) return '−15'
+ return '−20'
}
diff --git a/templates/Prompt/Artefakt-Beispiel.md b/templates/Prompt/Artefakt-Beispiel.md
new file mode 100644
index 0000000..bf03dd9
--- /dev/null
+++ b/templates/Prompt/Artefakt-Beispiel.md
@@ -0,0 +1,21 @@
+Baue für die Subbausteine des Themas "{topic}" ein ausgearbeitetes Beispiel (Worked Example) — ein durchgearbeiteter Fall, der das Verständnis trägt.
+
+BAUSTEINE MIT SUBBAUSTEINEN UND IHREN FAKTEN (gehe JEDEN Subbaustein durch):
+{bausteine}
+
+Ein gutes Worked Example:
+- **problem**: eine konkrete, kleine Aufgabe/Frage zum Subbaustein (1 Satz).
+- **schritte**: 2–5 nachvollziehbare Schritte vom Problem zur Lösung. Jeder Schritt ein knapper Satz, in der richtigen Reihenfolge.
+- **ergebnis**: das Endergebnis / die Erkenntnis (1 Satz).
+- Stütze dich auf `beispiel_idee` und die belegten Fakten des Subbausteins. Rechne sauber; erfinde keine Werte, die den Fakten widersprechen.
+- **Nur wo es trägt:** Lässt sich ein Subbaustein nicht sinnvoll an einem Beispiel zeigen (reine Definition, Meta-Wissen), LASSE IHN WEG — kein erzwungenes Beispiel.
+- `$…$` NUR für echte Mathematik. Code/Pfade/Bezeichner in Backticks (`` `…` ``).
+
+Schreibe die Beispiele als EIN JSON in die Datei {out_path} (nutze dein Schreib-Werkzeug), GENAU so:
+{{"beispiele": [
+ {{"baustein": "", "subbaustein": "",
+ "problem": "…", "schritte": ["…", "…"], "ergebnis": "…"}}
+]}}
+
+Gib sonst keinen Text aus.
+{extra}
diff --git a/templates/Prompt/Artefakt-Diagramm.md b/templates/Prompt/Artefakt-Diagramm.md
new file mode 100644
index 0000000..f9c62e1
--- /dev/null
+++ b/templates/Prompt/Artefakt-Diagramm.md
@@ -0,0 +1,24 @@
+Baue für jeden Baustein des Themas "{topic}" EIN Übersichts-Diagramm (Concept-Map) als Mermaid-Code. Es zeigt, wie die Subbausteine/Kernbegriffe des Bausteins zusammenhängen.
+
+BAUSTEINE MIT SUBBAUSTEINEN UND IHREN FAKTEN:
+{bausteine}
+
+Regeln für das Diagramm:
+- Genau EIN Mermaid-Graph je Baustein, Typ `flowchart TD` (oben→unten) oder `flowchart LR`.
+- Knoten = die Subbausteine bzw. ihre Kernbegriffe. Kanten = echte Beziehungen (baut-auf, gehört-zu, führt-zu). Keine erfundenen Beziehungen.
+- 3–8 Knoten. Lieber klar als vollständig. Stütze dich auf Voraussetzungen/Kernpunkte aus den Fakten.
+- **Gültige Mermaid-Syntax, sonst rendert nichts:**
+ - Knoten-IDs sind kurze ASCII-Wörter ohne Leerzeichen (z. B. `dfa`, `nfa1`).
+ - Label in eckigen Klammern, Text schlicht: `dfa[Deterministischer Automat]`. KEINE Anführungszeichen, runden Klammern, Doppelpunkte oder `#` im Label.
+ - Kanten mit `-->` (optional Label: `a -->|baut auf| b`).
+- Zeilen im `mermaid`-Feld mit `\n` trennen (ein JSON-String).
+- Lässt sich ein Baustein nicht sinnvoll als Graph zeigen (ein einziger Begriff), LASSE IHN WEG.
+
+Schreibe die Diagramme als EIN JSON in die Datei {out_path} (nutze dein Schreib-Werkzeug), GENAU so:
+{{"diagramme": [
+ {{"baustein": "",
+ "mermaid": "flowchart TD\n a[Alphabet] --> b[Wort]\n b --> c[Sprache]"}}
+]}}
+
+Gib sonst keinen Text aus.
+{extra}
diff --git a/templates/Prompt/Artefakt-Karteikarte.md b/templates/Prompt/Artefakt-Karteikarte.md
new file mode 100644
index 0000000..9b80593
--- /dev/null
+++ b/templates/Prompt/Artefakt-Karteikarte.md
@@ -0,0 +1,20 @@
+Baue für jeden Subbaustein des Themas "{topic}" EINE Karteikarte (Frage→Antwort) zum aktiven Abrufen.
+
+BAUSTEINE MIT SUBBAUSTEINEN UND IHREN FAKTEN (bearbeite JEDEN Subbaustein):
+{bausteine}
+
+Eine gute Karteikarte:
+- **frage**: eine knappe Abruf-Frage, die genau einen Kernpunkt prüft (kein „Erkläre alles"). Eine Frage, eine Sache.
+- **antwort**: die kurze, präzise Antwort — auf den belegten Fakten/Kernpunkten des Subbausteins. Nichts dazu erfinden.
+- Stütze dich auf die gelieferten Fakten. Wo ein belegter Fakt existiert, muss die Antwort dazu passen.
+- Knapp: Frage ≤ 15 Wörter, Antwort ≤ 25 Wörter. Keine Prosa, kein Vorspann.
+- `$…$` NUR für echte Mathematik. Code/Pfade/Bezeichner in Backticks (`` `…` ``).
+
+Schreibe ALLE Karten als EIN JSON in die Datei {out_path} (nutze dein Schreib-Werkzeug), GENAU so:
+{{"karten": [
+ {{"baustein": "", "subbaustein": "",
+ "frage": "…", "antwort": "…"}}
+]}}
+
+Gib sonst keinen Text aus.
+{extra}
diff --git a/templates/Prompt/Baustein-Frage-Variante.md b/templates/Prompt/Baustein-Frage-Variante.md
index 4beedd4..3fa84ea 100644
--- a/templates/Prompt/Baustein-Frage-Variante.md
+++ b/templates/Prompt/Baustein-Frage-Variante.md
@@ -1,6 +1,6 @@
-Du bist Prüfer in einem Lern-Guide zum Thema "{topic}", Baustein "{baustein}". Formuliere dem Lerner EINE Verständnisfrage. Du bekommst dafür ein **Muster** — eine Beispielfrage. Stelle dieselbe Sache, aber im Wortlaut **leicht anders** (andere Formulierung, gleicher Kern und gleiche Schwierigkeit).
+Du bist Prüfer in einem Lern-Guide zum Thema "{topic}", Baustein "{baustein}". Formuliere dem Lerner EINE Verständnisfrage. Du bekommst dafür ein **Muster** — eine Beispielfrage zum Kernkonzept. Stelle dieselbe Sache, aber im Anspruch passend zum Lerner-Niveau (siehe unten) und im Wortlaut anders.
-MUSTER (Vorlage — gleiche Sache, neuer Wortlaut):
+MUSTER (Vorlage — gleicher Kern, neuer Wortlaut und Anspruch):
{muster}
BAUSTEIN AUS DEM GUIDE (fachliche Referenz — die Frage darf ihr nie widersprechen):
@@ -9,6 +9,9 @@ BAUSTEIN AUS DEM GUIDE (fachliche Referenz — die Frage darf ihr nie widersprec
KOMPAKTE FASSUNG (Merksätze, falls vorhanden):
{kompakt_block}
+LERNER-NIVEAU (bestimmt den Anspruch der Frage):
+{niveau_block}
+
ERDUNG AM BAUSTEIN (zuerst prüfen):
- Das Muster wurde ohne den Guide-Text erstellt — es kann am Inhalt vorbeigehen.
- Prüfe das Muster gegen den BAUSTEIN oben: Lässt sich die Sache wirklich aus dem Material beantworten?
diff --git a/templates/Prompt/Baustein-Frage.md b/templates/Prompt/Baustein-Frage.md
index 7c28d4a..7aaccc6 100644
--- a/templates/Prompt/Baustein-Frage.md
+++ b/templates/Prompt/Baustein-Frage.md
@@ -18,6 +18,9 @@ GEWÜNSCHTER FRAGETYP:
FOKUS:
{fokus_block}
+LERNER-NIVEAU (bestimmt den Anspruch der Frage — passe Tiefe und Anforderung daran an):
+{niveau_block}
+
HARTE REGELN FÜR DIE FRAGE — wichtiger als alles andere:
- GENAU EINE Frage. Ein einziges Fragezeichen. Eine einzige Sache.
- Maximal 1–2 Sätze. Kein Szenario-Aufbau, keine Vorrede, kein "Angenommen … und außerdem …".
diff --git a/templates/Prompt/Baustein-Lueckentext.md b/templates/Prompt/Baustein-Lueckentext.md
index 09e41d2..6f32988 100644
--- a/templates/Prompt/Baustein-Lueckentext.md
+++ b/templates/Prompt/Baustein-Lueckentext.md
@@ -9,6 +9,9 @@ BAUSTEIN AUS DEM GUIDE (fachliche Referenz — der Satz darf ihr nie widersprech
KOMPAKTE FASSUNG (Merksätze, falls vorhanden):
{kompakt_block}
+LERNER-NIVEAU (bestimmt den Anspruch von Satz und Lücke):
+{niveau_block}
+
AUFGABE:
- Schreibe EINEN kurzen Aussagesatz (höchstens ~15 Wörter, keine Nebensatz-Kaskade).
- Ersetze den **Schlüsselbegriff** durch `___` (genau eine Lücke).
diff --git a/templates/Prompt/Baustein-Lueckwahl.md b/templates/Prompt/Baustein-Lueckwahl.md
index c995f78..01ad61b 100644
--- a/templates/Prompt/Baustein-Lueckwahl.md
+++ b/templates/Prompt/Baustein-Lueckwahl.md
@@ -9,6 +9,9 @@ BAUSTEIN AUS DEM GUIDE (fachliche Referenz — der Satz darf ihr nie widersprech
KOMPAKTE FASSUNG (Merksätze, falls vorhanden):
{kompakt_block}
+LERNER-NIVEAU (bestimmt den Anspruch von Satz und Optionen):
+{niveau_block}
+{distraktor_block}
AUFGABE:
- Schreibe EINEN kurzen Aussagesatz (höchstens ~15 Wörter). Ersetze den **Schlüsselbegriff** durch `___` (genau eine Lücke).
- Die Lücke ist ein **Fachbegriff als Wort** — KEIN mathematisches Symbol/Formelteil
diff --git a/templates/Prompt/Baustein-Quiz.md b/templates/Prompt/Baustein-Quiz.md
index bb2f310..1f7ac8f 100644
--- a/templates/Prompt/Baustein-Quiz.md
+++ b/templates/Prompt/Baustein-Quiz.md
@@ -9,10 +9,13 @@ BAUSTEIN AUS DEM GUIDE (fachliche Referenz — Optionen dürfen ihr nie widerspr
KOMPAKTE FASSUNG (Merksätze, falls vorhanden):
{kompakt_block}
+LERNER-NIVEAU (bestimmt den Anspruch von Frage und Distraktoren):
+{niveau_block}
+{distraktor_block}
AUFGABE:
- Formuliere EINE klare Frage und GENAU VIER Antwortoptionen.
-- {anzahl_block}
-- Jede richtige Option ist sachlich aus dem Material belegbar. Jede falsche ist plausibel,
+- GENAU EINE Option ist richtig, die anderen drei sind klar falsch.
+- Die richtige Option ist sachlich aus dem Material belegbar. Jede falsche ist plausibel,
aber klar falsch (typischer Irrtum, Verwechslung, Halbwahrheit) — keine Albernheiten.
- **Optionen SEHR KURZ:** ein Stichwort, Begriff oder Halbsatz, höchstens ~8 Wörter.
KEINE ganzen Sätze, KEIN „Weil …"-Vorspann, keine Begründungs-Prosa. Nur der Kern.
@@ -25,5 +28,5 @@ Gib NUR dieses JSON aus (kein weiterer Text):
{{"text": "Option A", "korrekt": true}},
{{"text": "Option B", "korrekt": false}},
{{"text": "Option C", "korrekt": false}},
- {{"text": "Option D", "korrekt": true}}
+ {{"text": "Option D", "korrekt": false}}
]}}
diff --git a/templates/Prompt/Fakten-Check.md b/templates/Prompt/Fakten-Check.md
new file mode 100644
index 0000000..87173dd
--- /dev/null
+++ b/templates/Prompt/Fakten-Check.md
@@ -0,0 +1,22 @@
+Du bist Faktenprüfer für die Lern-Fakten des Themas "{topic}". Ein anderer Agent hat je Subbaustein Fakten extrahiert. Prüfe NUR die **belegten Fakten** auf Wahrheit — nicht die Beispiele.
+
+{source}
+
+ZU PRÜFENDE FAKTEN (je Subbaustein):
+{fakten}
+
+Prüfe je Subbaustein:
+1. **Beleg-Treue**: Steht jeder `belegte_fakten`-Eintrag so in der Quelle (sinngemäß-genau)? Stimmt die Quellenangabe? Mit Quelldatei: gegen die Datei prüfen. Ohne Quelle: ist es gesichertes Standardwissen?
+2. **Sachliche Korrektheit**: Sind Formeln, Werte, Definitionen, Signaturen fachlich richtig? Eine falsche Formel/ein falscher Wert ist ein Mangel.
+3. **Fakt vs. Beispiel**: Ist ein selbst gerechnetes/erfundenes Beispiel fälschlich als `belegte_fakten` deklariert? Das ist ein Mangel — es gehört in `beispiel_idee`.
+4. Beispiele (`beispiel_idee`) NICHT auf Quellen-Beleg prüfen — sie sind generativ.
+
+Notiere nur ECHTE Mängel (falscher Fakt, falsche Quelle, Beispiel als Fakt getarnt). Geschmacksfragen nicht.
+
+Schreibe NUR die JSON-Datei nach: {out_path}
+
+Format — alles in Ordnung:
+{{"ok": true}}
+Sonst (Subbaustein-Titel EXAKT wie oben):
+{{"probleme": [{{"subbaustein": "", "problem": "…"}}]}}
+{extra}
diff --git a/templates/Prompt/Fakten-Recherche.md b/templates/Prompt/Fakten-Recherche.md
new file mode 100644
index 0000000..abc88b1
--- /dev/null
+++ b/templates/Prompt/Fakten-Recherche.md
@@ -0,0 +1,30 @@
+Extrahiere die Lern-Fakten für jeden Subbaustein des Themas "{topic}". Diese Fakten sind die verbindliche Grundlage, aus der später der Guide-Text, die Stufen und die Prüfungsfragen entstehen — sie müssen **stimmen**.
+
+{source}
+
+BAUSTEINE MIT SUBBAUSTEINEN (bearbeite JEDEN Subbaustein):
+{bausteine}
+
+Sammle pro Subbaustein NUR das Wesentliche (überflüssiges Material schadet dem Lernen):
+- **kernpunkte**: 1–3 knappe Aussagen — was muss man an diesem Subbaustein verstehen?
+- **voraussetzungen**: was muss man vorher kennen (ein Halbsatz)? Leer, wenn nichts.
+- **huerden**: typischer Anfänger-Irrtum (ein Halbsatz). Leer, wenn keiner.
+- **belegte_fakten**: harte Fakten (Definitionen, Formeln, Werte, Namen, Signaturen) — **nur was du belegen kannst**. Jeder mit Quelle:
+ - Mit Quelldatei/Skript: zitiere **sinngemäß-genau** und gib die Stelle an (z. B. „Skript Def. 6.3, Z.66"). Erfinde keine Werte, rechne nichts selbst aus.
+ - Ohne Quelle (reines Thema): nur gesichertes Standardwissen; Unsicheres per Websuche prüfen; Quelle = „allgemein" oder die URL.
+- **beispiel_idee**: EIN Beispiel, das das Verständnis trägt — frei formuliert. **Hier** gehören selbst gebildete Sätze, Mini-Szenarien, durchgerechnete Beispiele hin. Leer, wenn ein Beispiel nichts beiträgt.
+
+HARTE TRENNUNG — wichtig:
+- `belegte_fakten` = nur Belegbares aus Quelle/gesichertem Wissen. **NIEMALS** ein selbst gerechnetes oder erfundenes Beispiel als belegten Fakt ausgeben.
+- Ein durchgerechnetes Beispiel, ein erdachter Satz, ein konstruierter Fall → gehört in `beispiel_idee`, nicht in `belegte_fakten`.
+- Im Zweifel: lieber weglassen als falsch behaupten.
+
+Schreibe ALLE Subbausteine als EIN JSON in die Datei {out_path} (nutze dein Schreib-Werkzeug), GENAU in diesem Format:
+{{"fakten": [
+ {{"baustein": "", "subbaustein": "",
+ "kernpunkte": ["…"], "voraussetzungen": "…", "huerden": "…",
+ "belegte_fakten": [{{"text": "…", "quelle": "…"}}], "beispiel_idee": "…"}}
+]}}
+
+Gib sonst keinen Text aus.
+{extra}
diff --git a/templates/Prompt/Frage-Muster-Kritik.md b/templates/Prompt/Frage-Muster-Kritik.md
index c018595..4580309 100644
--- a/templates/Prompt/Frage-Muster-Kritik.md
+++ b/templates/Prompt/Frage-Muster-Kritik.md
@@ -1,20 +1,20 @@
-Du bist Qualitäts-Prüfer für den Fragen-Vorrat einer Lern-Prüfung zum Thema "{topic}". Ein anderer Agent hat Frage-Muster für **mehrere Bausteine** erstellt. Prüfe sie und gib eine **bereinigte** Endfassung zurück.
+Du bist Qualitäts-Prüfer für den Fragen-Vorrat einer Lern-Prüfung zum Thema "{topic}". Ein anderer Agent hat Frage-Muster für **mehrere Bausteine** erstellt — genau ein Muster je Subbaustein. Prüfe sie und gib eine **bereinigte** Endfassung zurück.
-ZU PRÜFENDE MUSTER (gruppiert je Baustein; Zeilen: [typ] (subbaustein) Frage):
+ZU PRÜFENDE MUSTER (gruppiert je Baustein; Zeilen: (subbaustein) Frage):
{tabelle}
PRÜFE UND BEREINIGE GEGEN DIESE KRITERIEN (je Baustein getrennt):
- **Stil:** jede Frage GENAU EINE Frage, ein Fragezeichen, eine Sache. Kein "und"/"sowie", keine Aufzählung. Maximal 1–2 Sätze. Verstöße → umformulieren.
-- **Eindeutig beantwortbar:** aus dem Baustein-Wissen klar beantwortbar, keine erfundenen Annahmen. Unbeantwortbares → korrigieren oder entfernen.
-- **Distinkt:** keine zwei Muster desselben Bausteins, die sinngemäß dieselbe Frage stellen (auch nicht über Typen hinweg). Dubletten → eines behalten, das andere entfernen.
-- **Typ-Treue:** die Frage passt zum angegebenen Typ; sonst Typ anpassen oder Muster entfernen.
-- `baustein`, `subbaustein` und `typ` der Einträge unverändert übernehmen (nur `frage` darf sich ändern); nur entfernen, nicht neu erfinden.
+- **Eindeutig beantwortbar:** aus dem Baustein-Wissen klar beantwortbar, keine erfundenen Annahmen. Unbeantwortbares → korrigieren.
+- **Kern-Treffer:** die Frage trifft das Kernkonzept des Subbausteins, neutral formuliert (nicht extra leicht/schwer — die Schwierigkeit setzt später das Lerner-Niveau). Verfehlt sie den Kern → umformulieren.
+- **Genau eins je Subbaustein:** pro Subbaustein bleibt genau ein Muster. Doppelte → eines behalten.
+- `baustein` und `subbaustein` der Einträge unverändert übernehmen (nur `frage` darf sich ändern); nicht neu erfinden.
Behalte gute Muster unverändert. Ändere nur, was wirklich gegen die Kriterien verstößt.
Schreibe die bereinigte Endfassung ALLER Bausteine als EIN JSON in die Datei {out_path} (nutze dein Schreib-Werkzeug), GENAU in diesem Format:
{{"muster": [
- {{"baustein": "", "subbaustein": "", "typ": "", "frage": ""}}
+ {{"baustein": "", "subbaustein": "", "frage": ""}}
]}}
Gib sonst keinen Text aus.
diff --git a/templates/Prompt/Frage-Muster-Recherche.md b/templates/Prompt/Frage-Muster-Recherche.md
index 0c7d9a9..cc2e681 100644
--- a/templates/Prompt/Frage-Muster-Recherche.md
+++ b/templates/Prompt/Frage-Muster-Recherche.md
@@ -1,29 +1,26 @@
-Du baust den Fragen-Vorrat für eine Lern-Prüfung zum Thema "{topic}". Erzeuge **Frage-Muster** — je eine konkrete Beispielfrage pro Subbaustein und Fragetyp. Aus diesen Mustern werden später bei der Prüfung leicht abgewandelte Fragen formuliert.
+Du baust den Fragen-Vorrat für eine Lern-Prüfung zum Thema "{topic}". Erzeuge **Frage-Muster** — **genau eine** konkrete Beispielfrage **pro Subbaustein**. Aus jedem Muster wird später bei der Prüfung eine leicht abgewandelte Frage formuliert — passend zum Niveau des Lerners (Anfänger bis Experte). Die Schwierigkeit steckt also NICHT im Muster, sondern kommt erst bei der Prüfung. Frag deshalb nach dem **Kernkonzept** des Subbausteins, neutral formuliert.
-Du bearbeitest **mehrere Bausteine**. Jeder Baustein hat seine eigenen relevanten Subbausteine:
+Du bearbeitest **mehrere Bausteine**. Jeder Baustein hat seine eigenen Subbausteine:
{bausteine}
-FRAGETYPEN (Schlüssel : Bedeutung):
-{typen}
-
AUFGABE (für **jeden** der Bausteine oben):
-- Erzeuge für **jeden** seiner Subbausteine zu **jedem** passenden Fragetyp **ein** Muster (volles Kreuzprodukt).
-- Lasse eine Kombination **weg**, wenn der Typ klar nicht passt (z.B. Code-Vorhersage bei reiner Theorie ohne Code). Nichts erzwingen.
-- Jedes Muster ist EINE konkrete, knappe Frage (1–2 Sätze, genau ein Fragezeichen, eine Sache) — kein Mehrteiler, keine Aufzählung.
+- Erzeuge für **jeden** seiner Subbausteine **genau ein** Muster — eine konkrete, knappe Frage zum Kernkonzept dieses Subbausteins.
+- Jedes Muster ist EINE konkrete Frage (1–2 Sätze, genau ein Fragezeichen, eine Sache) — kein Mehrteiler, keine Aufzählung.
- Die Frage muss aus dem Baustein-Wissen beantwortbar sein. Erfinde keine Zusatzannahmen.
-- WICHTIG: Du siehst nur Titel, NICHT den späteren Guide-Text. Frag deshalb nur nach dem KERNKONZEPT des Subbausteins. Setze NICHTS voraus, was evtl. nicht im Guide steht: keine „gezeigten" Code-Ausschnitte/Beispiele/Diagramme, keine konkreten Werte/Listen/Zahlen, keine Randthemen. Frag das Konzept selbst, nicht ein bestimmtes Artefakt.
-- Innerhalb eines Subbausteins sollen die Muster verschiedener Typen **wirklich verschiedene** Aspekte treffen — keine Umformulierungen derselben Frage.
-- Der `typ` ist exakt einer der Schlüssel oben. `baustein` ist exakt einer der Baustein-Titel oben. `subbaustein` ist exakt einer der Subbaustein-Titel des jeweiligen Bausteins.
+- WICHTIG: Du siehst nur Titel, NICHT den späteren Guide-Text. Frag deshalb nur nach dem KERNKONZEPT des Subbausteins. Setze NICHTS voraus, was evtl. nicht im Guide steht: keine „gezeigten" Code-Ausschnitte/Beispiele/Diagramme, keine konkreten Werte/Listen/Zahlen.
+- Die Frage trifft den **Kern** des Subbausteins — den zentralen Punkt, den man verstanden haben muss. Nicht zu eng auf ein Detail, nicht zu breit über den ganzen Baustein.
+- `baustein` ist exakt einer der Baustein-Titel oben. `subbaustein` ist exakt einer der Subbaustein-Titel des jeweiligen Bausteins.
HARTE STIL-REGELN JE FRAGE:
- Genau EINE Frage, ein Fragezeichen, eine Sache. Kein "und"/"sowie", kein "nenne drei …".
- Maximal 1–2 Sätze, keine Vorrede, kein Szenario-Aufbau.
+- Neutral formuliert — nicht extra leicht, nicht extra schwer. Die Schwierigkeit setzt die Prüfung über das Lerner-Niveau.
- Direkte Ansprache, klares Deutsch.
{extra}
Schreibe ALLE Muster aller Bausteine als EIN JSON in die Datei {out_path} (nutze dein Schreib-Werkzeug), GENAU in diesem Format:
{{"muster": [
- {{"baustein": "", "subbaustein": "", "typ": "", "frage": ""}}
+ {{"baustein": "", "subbaustein": "", "frage": ""}}
]}}
Gib sonst keinen Text aus.
diff --git a/templates/Prompt/Guide-Gliederung.md b/templates/Prompt/Guide-Gliederung.md
index 1d45137..aa3b7d2 100644
--- a/templates/Prompt/Guide-Gliederung.md
+++ b/templates/Prompt/Guide-Gliederung.md
@@ -1,6 +1,6 @@
-Plane die Gliederung eines Lern-Guides zum Thema "{topic}" (Format: {format_name}).
+Plane die Gliederung eines Lern-Guides zum Thema "{topic}".
-GEWÄHLTE BAUSTEINE (jeder mit seiner NUMMER — die Auswahl steht fest, du ordnest nur):
+BAUSTEINE (jeder mit seiner NUMMER — die Liste steht fest, du ordnest nur):
{bausteine}
REIHENFOLGE — vom Bekannten zum Unbekannten:
diff --git a/templates/Prompt/Guide-Inhalt.md b/templates/Prompt/Guide-Inhalt.md
index 81740b2..fc499cc 100644
--- a/templates/Prompt/Guide-Inhalt.md
+++ b/templates/Prompt/Guide-Inhalt.md
@@ -1,16 +1,18 @@
Identifiziere für jeden zugeteilten Baustein eines Lern-Guides zum Thema "{topic}", WAS ein Anfänger ohne Vorwissen verstehen muss. Du schreibst noch keinen Guide-Text — du sammelst nur die Inhalte, die später gelehrt werden.
-Dir zugeteilt sind folgende Kapitel und Bausteine — verbindlich: jeder zugeteilte Baustein muss vorkommen, keine zusätzlichen erfinden. Unter jedem Baustein stehen seine SUBBAUSTEINE mit Stufe (`[einfach]`/`[mittel]`/`[schwer]`) — die Teilpunkte, die gelehrt werden:
+Dir zugeteilt sind folgende Kapitel und Bausteine — verbindlich: jeder zugeteilte Baustein muss vorkommen, keine zusätzlichen erfinden. Unter jedem Baustein stehen seine SUBBAUSTEINE mit Lernpfad-Stufe (`[anfaenger]`/`[fortgeschritten]`/`[experte]`) — die Teilpunkte, die gelehrt werden:
{zuteilung}
{facts}
+Leitprinzip: nur das **Wesentliche**. Überflüssiges Material schadet dem Lernen — sammle, was ein Anfänger WIRKLICH braucht, nicht alles, was man sagen könnte.
+
Sammle pro Baustein:
-- Kernpunkte / Lernziele: was muss der Leser begreifen? Decke JEDEN gelisteten Subbaustein mit mindestens einem Kernpunkt ab. Hat ein Baustein keine Subbausteine, sammle 3–7 knappe Punkte.
+- Kernpunkte / Lernziele: was muss der Leser begreifen? Decke JEDEN gelisteten Subbaustein mit GENAU dem einen, zentralen Kernpunkt ab — nicht mehrere überlappende. Hat ein Baustein keine Subbausteine, sammle 3–7 knappe Punkte.
- Voraussetzungen: welche Begriffe/Ideen muss man vorher kennen, um das hier zu verstehen? Jede in einem Halbsatz erklärbar — das sind die Ankerpunkte für Neulinge.
- Typische Hürden: wo verstehen Anfänger es erfahrungsgemäß falsch oder stolpern?
- Belegte Fakten (Versionen, Namen, Werte) — nichts Unbelegtes; Unsicheres per Websuche prüfen.
-- Eine konkrete Beispiel-Idee: was soll das Beispiel zeigen?
+- Eine konkrete Beispiel-Idee NUR, wo ein Beispiel das Verständnis wirklich trägt — nicht pflichtmäßig bei jedem Subbaustein.
- Scope: nur was DIESER Baustein hergibt. Nicht mehr, nicht weniger. Am Rand Erwähntes nicht zum Thema aufblasen.
Schreibe NUR die Datei {out_path} — pro Baustein ein section-Marker (Titel EXAKT aus der Zuteilung), darunter die Punkte:
diff --git a/templates/Prompt/Guide-Lese-Check.md b/templates/Prompt/Guide-Lese-Check.md
index 4b70e66..47703f8 100644
--- a/templates/Prompt/Guide-Lese-Check.md
+++ b/templates/Prompt/Guide-Lese-Check.md
@@ -14,8 +14,13 @@ Prüfe jede Section:
- Eine Aufzählung (Schritte/Optionen/Anforderungen) als langer Fließtext-Satz, die eine Markdown-Liste sein sollte.
- Textwand: ein dichter Block ohne Absätze, der sich in mehrere teilen ließe.
- Mehr als ~4 neue Fachbegriffe ohne Erklärung beim ersten Auftreten.
-3. Sind die Beispiele kurz, simpel, plausibel korrekt — und im themengerechten Format laut Spezifikation (kein Codeblock um Prosa-Beispiele, kein Prosa-Pseudo-Beispiel, wo Code gefragt ist)?
-4. Ist das Markdown sauber (keine abgebrochenen Code-Blöcke, keine Platzhalter, kein Fremdtext)?
+3. Knappheit (überflüssiges Material schadet dem Lernen — echte Mängel notieren):
+ - Wiederholung: dieselbe Aussage mehrfach, nur anders formuliert.
+ - Breit ausgewalztes Triviales, Füllsätze, Vorreden, Meta-Kommentare ohne neuen Inhalt.
+ - Ein Beispiel, das nichts zum Verständnis beiträgt.
+ → notieren als „zu lang/redundant — kürzen ohne Info-Verlust". WICHTIG: Kürzen heißt nie, einen Subbaustein zu streichen — jeder bleibt erhalten.
+4. Sind die Beispiele kurz, simpel, plausibel korrekt — und im themengerechten Format laut Spezifikation (kein Codeblock um Prosa-Beispiele, kein Prosa-Pseudo-Beispiel, wo Code gefragt ist)?
+5. Ist das Markdown sauber (keine abgebrochenen Code-Blöcke, keine Platzhalter, kein Fremdtext)?
Du PRÜFST nur und notierst Probleme — du änderst nichts. Nur echte Mängel notieren, keine Geschmacksfragen.
diff --git a/templates/Prompt/Guide-Sections-Fix.md b/templates/Prompt/Guide-Sections-Fix.md
index cb7a0eb..8e67ff5 100644
--- a/templates/Prompt/Guide-Sections-Fix.md
+++ b/templates/Prompt/Guide-Sections-Fix.md
@@ -5,23 +5,32 @@
SECTION-SPEZIFIKATION:
{spec}
-ZU ÜBERARBEITEN — je Section der aktuelle Inhalt und das notierte Problem:
+ZU ÜBERARBEITEN — je Section ihre Subbausteine, das notierte Problem und der aktuelle Inhalt:
{auftraege}
Behebe pro Section NUR das notierte Problem; was in Ordnung ist, bleibt inhaltlich erhalten.
-Jede Section hat ZWEI Fassungen mit denselben Inhalten: **kompakt** (je Subbaustein ein Merksatz als Stichpunkt) und **ausführlich** (zusammenhängender Anfänger-Text). Gib beide neu aus und halte sie deckungsgleich.
+VERBINDLICHE STRUKTUR (wie der Writer) — sonst bricht die gestufte Anzeige:
+- Jede Section hat ZWEI Fassungen: **kompakt** (je Subbaustein ein Merksatz) und **ausführlich** (zusammenhängender Anfänger-Text).
+- In BEIDEN Fassungen steht je Subbaustein ein ``-Marker. LABEL und Titel EXAKT aus der Subbaustein-Liste oben, gleiche Reihenfolge in beiden Blöcken. Der ausführliche Text beginnt mit einem kurzen Anker (Einordnung) VOR dem ersten Marker.
+- Die Marker sind unsichtbare Schnittstellen, KEINE sichtbaren Überschriften — schreibe trotzdem flüssig.
-Schreibe NUR die Datei {out_path} in GENAU diesem Format — für JEDE beanstandete Section ein section-Marker (Titel EXAKT wie oben) mit `kompakt`- und `ausführlich`-Block:
+KNAPP HALTEN (falls das Problem „zu lang/redundant" ist):
+- Jeder Satz trägt neue Information. Streiche Wiederholungen, Füll- und Meta-Sätze, Vorreden.
+- Erkläre Triviales kurz; gib Tiefe nur, wo der Stoff sie braucht. Im Zweifel weglassen, nicht hinzufügen.
+- Ein Beispiel nur, wo es das Verständnis wirklich trägt — nicht pflichtmäßig bei jedem Subbaustein.
+- Kürzen heißt nie: einen Subbaustein streichen. Jeder bleibt mit seinem Marker erhalten.
+
+Schreibe NUR die Datei {out_path} in GENAU diesem Format — für JEDE beanstandete Section ein section-Marker (Titel EXAKT wie oben):
+
- Merksatz je Subbaustein (knapp, ohne Erklärung)
-Erklärung (Einordnung → Wie/Warum) laut SECTION-SPEZIFIKATION…
-
-### Beispiel
-(Beispiel im themengerechten Format laut SECTION-SPEZIFIKATION: Codeblock NUR bei Code-Themen, sonst Beispielsätze oder Mini-Szenario)
+Anker: kurze Einordnung des Bausteins — vor dem ersten Subbaustein.
+
+Anfängerfreundlicher Fließtext zu diesem Subbaustein.
Die Marker-Zeilen exakt so schreiben. Kein Text außerhalb der Sections.
{extra}
diff --git a/templates/Prompt/Guide-Writer.md b/templates/Prompt/Guide-Writer.md
index 5272f9f..655c26d 100644
--- a/templates/Prompt/Guide-Writer.md
+++ b/templates/Prompt/Guide-Writer.md
@@ -1,23 +1,25 @@
Schreibe Sections für einen Lern-Guide zum Thema "{topic}" (Format: {format_name}).
-Dir zugeteilt sind folgende Kapitel und Bausteine — verbindlich: jede zugeteilte Section muss vorkommen, keine zusätzlichen erfinden. Unter jedem Baustein stehen seine SUBBAUSTEINE mit Stufe (`[einfach]`/`[mittel]`/`[schwer]`):
+Dir zugeteilt sind folgende Kapitel und Bausteine — verbindlich: jede zugeteilte Section muss vorkommen, keine zusätzlichen erfinden. Unter jedem Baustein stehen seine SUBBAUSTEINE mit Ebenen-Label (`[anfaenger]`/`[fortgeschritten]`/`[experte]`/`[rand]`):
{zuteilung}
-Das Format ({format_name}) beeinflusst NICHT, wie ein Baustein geschrieben wird — nur, wie viele Bausteine das Thema abdecken. Derselbe Baustein bekommt in MiniGuide, Guide und FullGuide denselben Text.
+WICHTIG — jeder Subbaustein wird mit einem Marker abgegrenzt, damit der Guide später gestuft angezeigt werden kann (Anfänger sehen nur `anfaenger`, Fortgeschrittene mehr). Das Label kommt EXAKT aus der Zuteilung. Trotz Marker schreibst du FLÜSSIG und verwoben — der Marker ist eine unsichtbare Schnittstelle, KEINE sichtbare Überschrift.
-Jeder Baustein bekommt ZWEI Fassungen mit DENSELBEN Inhalten (dieselben Subbausteine):
-- **kompakt**: je Subbaustein EIN Merksatz als Stichpunkt (`- …`). Zum Erinnern. Nur benennen, nicht erklären. Gleiche Reihenfolge wie ausführlich.
+Der Inhalt ist UNABHÄNGIG von der Stufe: jeder Subbaustein wird **anfängerfreundlich** erklärt, egal welches Label. Das Label sagt nur, WANN im Lernpfad der Punkt drankommt (Fundament → Feinheit) — NICHT wie kompliziert er geschrieben wird. Ein `[experte]`-Punkt wird genauso simpel erklärt wie ein `[anfaenger]`-Punkt. Kein Perfektionismus, keine künstliche Tiefe: das Wesentliche klar, so dass ein Neuling es versteht.
+
+Jeder Baustein bekommt ZWEI Fassungen mit DENSELBEN Subbausteinen (gleiche Titel, gleiche Reihenfolge):
+- **kompakt**: je Subbaustein EIN Merksatz als Stichpunkt (`- …`). Zum Erinnern. Nur benennen, nicht erklären.
- **ausführlich**: der zusammenhängende Anfänger-Lerntext (siehe unten).
-Beide MÜSSEN dieselben Subbausteine abdecken. Nichts, das nur in einer Fassung steht.
SO SCHREIBST DU die ausführliche Fassung — EIN zusammenhängender Text für einen Junior, der das Thema NEU lernt:
-- Beginne mit dem Anker (Einordnung): welches Problem/wozu, angeknüpft an etwas Bekanntes — erst dann das Neue. Pflicht, nie weglassen.
-- Löse JEDEN Fachbegriff bei Erstnennung in einem Halbsatz auf. Setze nichts voraus — auch keine Begriffe aus dem Titel oder anderen Bausteinen. Nutze die „Voraussetzung"-Hinweise aus den Inhalten als Anker, die „Hürde"-Hinweise, um Missverständnisse vorweg auszuräumen.
-- Die Subbausteine sind deine INHALTS-CHECKLISTE, keine Überschriften: webe sie in den Fließtext ein. Behandle jeden, aber als Teil eines Ganzen — nicht als isolierten Mini-Absatz.
-- Reihenfolge: erst die `[einfach]`-Punkte (das Fundament), dann `[mittel]` (Details/Varianten), zuletzt `[schwer]` (Sonderfälle/Tücken — knapp, als fortgeschrittener Hinweis).
-- Diese Fassung trägt die volle Tiefe selbst — es gibt keine zweite Ausbaustufe. „Wie"-Abläufe Schritt für Schritt zeigen, nicht nur das Ergebnis.
-- KEIN festes Längen-Limit. So lang wie nötig, damit ein Neuling es OHNE Vorwissen versteht. Im Zweifel ein Satz mehr und klar.
-- Beispiele großzügig — auch kleine Mini-Beispiele mitten im Text, wo sie einen Punkt sofort greifbar machen, zusätzlich zum `### Beispiel` am Ende (Format laut Spezifikation).
+- Beginne mit dem Anker (Einordnung): welches Problem/wozu, angeknüpft an etwas Bekanntes — erst dann das Neue. Der Anker steht VOR dem ersten Subbaustein-Marker. Pflicht, nie weglassen.
+- Löse JEDEN Fachbegriff bei Erstnennung in einem Halbsatz auf. Setze nichts voraus — auch keine Begriffe aus dem Titel oder anderen Bausteinen. Nutze die „Voraussetzung"-Hinweise als Anker, die „Hürde"-Hinweise, um Missverständnisse vorweg auszuräumen.
+- Behandle jeden Subbaustein unter seinem Marker — flüssig formuliert, erklärender Fließtext, kein isolierter Stichpunkt-Block.
+- Reihenfolge der Subbausteine wie in der Zuteilung: erst `[anfaenger]` (Fundament), dann `[fortgeschritten]`, dann `[experte]`, zuletzt `[rand]`.
+- „Wie"-Abläufe Schritt für Schritt zeigen, nicht nur das Ergebnis.
+- KNAPP: Jeder Satz trägt neue Information. Keine Wiederholung, keine Füll- oder Meta-Sätze, keine Vorrede. Überflüssiges schadet dem Lernen — im Zweifel weglassen, nicht hinzufügen.
+- Länge folgt dem Inhalt: ein triviales Detail ein, zwei Sätze; ein komplexes Konzept so viel, wie es WIRKLICH braucht — nicht mehr. Kein „so lang wie möglich".
+- Ein Beispiel NUR, wo es das Verständnis wirklich trägt — nicht pflichtmäßig bei jedem Subbaustein.
GEPRÜFTE INHALTE je Baustein — das ist verbindlich, was gelehrt werden muss:
{inhalte}
@@ -27,17 +29,21 @@ Recherchiere NICHT und suche NICHT im Web. Alle nötigen Fakten stehen in diesen
SECTION-SPEZIFIKATION (gilt je Baustein):
{spec}
-Schreibe NUR die Datei {out_path} in GENAU diesem Format — pro Kapitel ein kapitel-Marker, pro Baustein ein section-Marker (Titel EXAKT aus der Zuteilung), darin ein `kompakt`- und ein `ausführlich`-Block:
+Schreibe NUR die Datei {out_path} in GENAU diesem Format — pro Kapitel ein kapitel-Marker, pro Baustein ein section-Marker (Titel EXAKT aus der Zuteilung), darin ein `kompakt`- und ein `ausführlich`-Block. In BEIDEN Blöcken steht je Subbaustein ein ``-Marker (LABEL und Titel EXAKT aus der Zuteilung, gleiche Reihenfolge in beiden Blöcken):
-- Merksatz je Subbaustein (knapp, ohne Erklärung)
+
+- Merksatz zu diesem Subbaustein (knapp, ohne Erklärung)
+
+- Merksatz zu diesem Subbaustein
-Erklärung (Einordnung → Wie/Warum) laut SECTION-SPEZIFIKATION…
+Anker: Einordnung des ganzen Bausteins (welches Problem, wozu) — vor dem ersten Subbaustein.
+
+Anfängerfreundlicher Fließtext zu diesem Subbaustein, mit kleinem Beispiel.
+
+Anfängerfreundlicher Fließtext zu diesem Subbaustein.
-### Beispiel
-(Beispiel im themengerechten Format laut SECTION-SPEZIFIKATION: Codeblock NUR bei Code-Themen, sonst Beispielsätze oder Mini-Szenario)
-
-Die Marker-Zeilen exakt so schreiben (jede Section hat genau einen ``- und einen ``-Block). Kein Text außerhalb der Sections, kein Dokument-Titel, kein Inhaltsverzeichnis.
+Die Marker-Zeilen exakt so schreiben. Jede Section hat genau einen ``- und einen ``-Block; die Subbaustein-Titel sind in beiden identisch. Kein Text außerhalb der Sections, kein Dokument-Titel, kein Inhaltsverzeichnis.
{extra}
diff --git a/templates/Prompt/Relevanz-Mapping.md b/templates/Prompt/Relevanz-Mapping.md
index fe7c64e..b4c53ca 100644
--- a/templates/Prompt/Relevanz-Mapping.md
+++ b/templates/Prompt/Relevanz-Mapping.md
@@ -4,8 +4,8 @@ STRITTIGE SUBBAUSTEINE (mit den abgegebenen Stimmen):
{strittig}
Relevanz:
-- **relevant**: Kern-/Standardwissen, ein ernsthafter Lerner braucht es.
-- **rand**: Randnotiz, Spezial-/Nischenfall, „nice to know" — nur für den Komplett-Guide.
+- **relevant**: Kern-/Standardwissen, das das Thema trägt — zentrale Konzepte, Definitionen, Eigenschaften. Bei theoretischen Themen auch zentrale Sätze ohne praktischen Gebrauch.
+- **rand**: Randnotiz, Nischen-/Spezialfall, „nice to know", Deprecated/Exotik, rein historische Details, konkrete Zahlenbeispiele, bloße Querverweise. NICHT rand: ein zentrales Theorem/eine fundamentale Eigenschaft. Nur für den Komplett-Guide.
Regeln:
- Wäge die Stimmen ab, entscheide fachlich. Im Zweifel **relevant**.
diff --git a/templates/Prompt/Relevanz-Recherche.md b/templates/Prompt/Relevanz-Recherche.md
index f6998d3..1ceb566 100644
--- a/templates/Prompt/Relevanz-Recherche.md
+++ b/templates/Prompt/Relevanz-Recherche.md
@@ -4,8 +4,8 @@ SUBBAUSTEINE (Nummer in Klammern der zugehörige Baustein):
{subbausteine}
Relevanz:
-- **relevant**: Kern- oder Standardwissen des Themas. Ein ernsthafter Lerner braucht es im normalen Gebrauch. Was man wirklich kennen sollte.
-- **rand**: Randnotiz, Spezial-/Nischenfall, „nice to know", Deprecated/Exotik. Für die meisten Lerner verzichtbar — gehört nur in einen Komplett-Guide.
+- **relevant**: Kern-/Standardwissen, das das Thema TRÄGT — zentrale Konzepte, Definitionen, Eigenschaften, gängige Praxis. Bei praktischen Themen: was man im Gebrauch braucht. Bei theoretischen Themen: zentrale Sätze/Eigenschaften, AUCH ohne praktischen Gebrauch. Was man wirklich kennen sollte.
+- **rand**: Randnotiz, Spezial-/Nischenfall, „nice to know", Deprecated/Exotik — PLUS rein historische Details (wer/wann), konkrete Zahlenbeispiele eines allgemeinen Prinzips, bloße Querverweise. NICHT rand: ein zentrales Theorem oder eine fundamentale Eigenschaft, nur weil sie „theoretisch" wirkt. Gehört nur in einen Komplett-Guide.
Regeln:
- Bewerte jeden Punkt einzeln, gemessen an SEINEM Baustein und am Thema.
diff --git a/templates/Prompt/Stufen-Mapping.md b/templates/Prompt/Stufen-Mapping.md
index f88f5c1..e0c0d1a 100644
--- a/templates/Prompt/Stufen-Mapping.md
+++ b/templates/Prompt/Stufen-Mapping.md
@@ -1,19 +1,20 @@
-Mehrere Agenten haben die Subbausteine des Themas "{topic}" nach Schwierigkeit eingestuft. Bei einigen sind sie sich uneinig. Entscheide für jeden strittigen Subbaustein die finale Stufe.
+Mehrere Agenten haben die Subbausteine des Themas "{topic}" nach Lernpfad-Position eingestuft. Bei einigen sind sie sich uneinig. Entscheide für jeden strittigen Subbaustein die finale Stufe.
STRITTIGE SUBBAUSTEINE (mit den abgegebenen Stimmen):
{strittig}
-Stufe = Lern-/Verständnisaufwand (nicht Seltenheit/Obskurität):
-- **einfach**: Basis-Fakt/Definition, sofort verständlich. Auch Versions-Details, Pfade, Konstanten, einzelne Fakten.
-- **mittel**: braucht Erklärung — mehrere Teile, Zusammenhang, typische Anwendung.
-- **schwer**: komplexes Zusammenspiel mehrerer Konzepte, tieferes Verständnis nötig. NICHT „schwer" nur weil selten/neu/Edge-Case.
+Stufe = Lernpfad-Position (WANN man den Punkt braucht), NICHT Schwierigkeit:
+- **anfaenger**: Fundament — was man zuerst/unbedingt braucht; Voraussetzung für den Rest. Auch wenn gedanklich anspruchsvoll.
+- **fortgeschritten**: baut darauf auf; gängige Varianten, typische Anwendung.
+- **experte**: Feinheiten, Sonderfälle, Nischen, seltene Details — auch wenn inhaltlich einfach (z. B. ein obskures Flag, ein Versions-Detail).
Regeln:
-- Wäge die Stimmen ab, entscheide fachlich nach Lernaufwand. Im Zweifel die niedrigere Stufe.
+- Ein einfaches Nischen-Detail ist `experte`; ein fundamentales komplexes Konzept ist `anfaenger`.
+- Wäge die Stimmen ab, entscheide fachlich nach Lernpfad-Position.
- Für JEDE strittige Nummer genau eine Stufe.
Schreibe NUR die JSON-Datei nach: {out_path}
Format (kein weiterer Text):
-{{"stufen": {{"1": "einfach", "4": "schwer"}}}}
+{{"stufen": {{"1": "anfaenger", "4": "experte"}}}}
{extra}
diff --git a/templates/Prompt/Stufen-Recherche.md b/templates/Prompt/Stufen-Recherche.md
index 1c7d392..bd6dd13 100644
--- a/templates/Prompt/Stufen-Recherche.md
+++ b/templates/Prompt/Stufen-Recherche.md
@@ -1,27 +1,25 @@
-Stufe jeden Subbaustein des Themas "{topic}" nach **Lern-/Verständnisaufwand** ein: einfach, mittel oder schwer. Die Stufe steuert, wann ein Lerner den Punkt sieht (Anfänger sehen nur „einfach", Fortgeschrittene alles).
+Ordne jeden Subbaustein des Themas "{topic}" seiner **Lernpfad-Position** zu: anfaenger, fortgeschritten oder experte. Die Stufe steuert, wann ein Lerner den Punkt sieht (Anfänger sehen nur „anfaenger", Fortgeschrittene mehr).
SUBBAUSTEINE (nach Baustein gruppiert):
{subbausteine}
-Was die Stufe misst — wie viel Aufwand, den Punkt zu VERSTEHEN und ANZUWENDEN:
-- **einfach**: Basis-Fakt oder Definition. Sofort verständlich. Der Einstieg in den Baustein.
-- **mittel**: braucht etwas Erklärung. Mehrere Teile, ein Zusammenhang, eine typische Anwendung.
-- **schwer**: komplexes Zusammenspiel mehrerer Konzepte. Setzt tieferes Verständnis voraus, ist gedanklich anspruchsvoll.
+ENTSCHEIDEND — die Stufe misst, WANN man den Punkt im Lernpfad braucht, NICHT wie schwer er zu verstehen ist:
+- **anfaenger**: Fundament. Was man als Erstes/unbedingt braucht, um den Baustein überhaupt zu verstehen. Voraussetzung für den Rest. Auch wenn das Konzept gedanklich anspruchsvoll ist — ist es das Fundament, gehört es hierher.
+- **fortgeschritten**: baut auf dem Fundament auf. Gängige Varianten, typische Anwendung, der nächste Schritt.
+- **experte**: Feinheiten, Sonderfälle, Edge-Cases, Nischen, seltene Details. Was man erst braucht, wenn man die Basis beherrscht — **auch wenn es inhaltlich einfach ist** (z. B. ein obskures Flag, ein Versions-Detail).
-WICHTIG — was NICHT die Stufe bestimmt:
-- Seltenheit ist KEINE Schwierigkeit. Ein Nischen-Feature kann trotzdem einfach sein.
-- Versions-Details (z.B. „seit 6.4.12.0"), Konstanten, Pfade, einzelne Fakten → meist **einfach**, nicht schwer.
-- Edge-Cases/Gotchas, die nur eine simple Regel sind (z.B. „Name muss dem Ordner entsprechen") → **einfach/mittel**, nicht schwer.
-- „schwer" NUR, wenn der Punkt selbst gedanklich schwer ist — nicht weil er obskur oder neu ist.
+WICHTIG — Schwierigkeit ist NICHT das Kriterium:
+- Ein **einfaches Nischen-Detail** (selten gebraucht, z. B. „seit 6.4.12.0") ist `experte`, nicht `anfaenger`.
+- Ein **fundamentales, aber komplexes Konzept** (man braucht es früh) ist `anfaenger`, nicht `experte`.
+- Frag: „Wann im Lernpfad braucht man das?" — nicht „Wie schwer ist es?".
Regeln:
-- Stufe RELATIV im jeweiligen Baustein: vergleiche die Punkte eines Bausteins miteinander.
-- Die meisten Punkte sind einfach/mittel. „schwer" nur für die echten Brocken.
-- Jeder Baustein hat mindestens einen „einfach"-Punkt (den Einstieg). Im Zweifel die niedrigere Stufe.
+- Stufe RELATIV im jeweiligen Baustein: was ist hier Fundament, was Aufbau, was Feinheit?
+- Nicht jeder Baustein braucht einen `anfaenger`-Punkt. Manche Themen setzen Vorwissen voraus und sind ganz `fortgeschritten`/`experte` — das ist gewollt. Stufe ehrlich nach Lernpfad-Position, ohne künstlichen Einstieg zu erfinden.
- Urteile nur — erfinde nichts dazu, ändere keine Subbausteine.
Schreibe NUR die JSON-Datei nach: {out_path}
Format (für JEDE Nummer genau eine Stufe; kein weiterer Text):
-{{"stufen": {{"1": "einfach", "2": "mittel", "3": "schwer"}}}}
+{{"stufen": {{"1": "anfaenger", "2": "fortgeschritten", "3": "experte"}}}}
{extra}