diff --git a/backend/montage.py b/backend/montage.py index a067dd0..15f25bf 100644 --- a/backend/montage.py +++ b/backend/montage.py @@ -9,7 +9,7 @@ from . import config, gliederung, state log = logging.getLogger("buchwerk") ABSCHNITT_RE = re.compile(r"^## (\d+\.\d+) (.+?)\s*$", re.M) -KERN_RE = re.compile(r"^## Kern[ \t]*\n(.*?)(?=^## |\Z)", re.S | re.M) +KERN_RE = re.compile(r"^## (?:Kern|\d+\.\d+ Merken)[ \t]*\n(.*?)(?=^## |\Z)", re.S | re.M) def _woerter(text: str) -> int: @@ -90,7 +90,7 @@ def markdown(name: str) -> str: def kern(name: str) -> str: - """Alle `## Kern`-Blöcke der Kapitel in einer Datei – zum Auffrischen eines gelesenen Buchs.""" + """Alle Merken-Abschnitte (bzw. ältere `## Kern`-Blöcke) der Kapitel in einer Datei – zum Auffrischen eines gelesenen Buchs.""" g = guide(name); v = state.verzeichnis(name) out = [f"# Kernerkenntnisse – {g['titel']}", ""] for k in g["kapitel"]: diff --git a/prompts/kapitel.md b/prompts/kapitel.md index ec8e487..aa7a747 100644 --- a/prompts/kapitel.md +++ b/prompts/kapitel.md @@ -6,7 +6,7 @@ Aufgabe: **Kapitel {{n}} – {{kapitel_titel}}**, Datei `buch/{{datei}}`, mit ge Arbeite in diesem Loop: 1. RECHERCHE in den lokalen Quellen (siehe QUELLEN.md): Verstehe die Sache anhand von Quellcode, Referenz, Doku bzw. Abstracts, bevor du schreibst. Online nur, wenn lokal nicht klärbar und QUELLEN.md es erlaubt. -2. SCHREIBEN mit Write (bei Länge in mehreren Schritten, dann anhängen). Am Ende des Kapitels der Block `## Kern` nach STIL.md: alle Kerneinsichten als Frage-Antwort-Paare. +2. SCHREIBEN mit Write (bei Länge in mehreren Schritten, dann anhängen). Am Ende des Kapitels der Abschnitt `## N.M Merken` nach STIL.md: je Abschnitt ein Absatz mit dem, was man sich merken soll. 3. VERIFIZIEREN: Lies das fertige Kapitel vollständig. Prüfe JEDE Tatsachenangabe (Bezeichner, Signaturen, Versionsangaben, Namen, Jahre, Zahlen, Studienergebnisse) gegen die Quellen; führe Codebeispiele aus, wo STIL.md das verlangt – im Gerüst unter `arbeit/`, ins Buch kommt nur der Kern. Korrigiere oder entschärfe alles Unbelegte. 4. PRÜFEN gegen STIL.md: Überschriften exakt wie in der Gliederung, keine Übungen/Merkkästen/Zusammenfassungen/Literaturlisten, Prosa statt Listenwüste, keine Verweisklammern, keine Wiederholung von Themen anderer Kapitel, Umfang, Umlaute. Überarbeite, bis alles passt. diff --git a/prompts/pruefung.md b/prompts/pruefung.md index ae7a1c2..5703dad 100644 --- a/prompts/pruefung.md +++ b/prompts/pruefung.md @@ -11,7 +11,7 @@ Loop, bis nichts mehr zu korrigieren ist: 1. Lies das Kapitel komplett. Extrahiere alle überprüfbaren Behauptungen: Bezeichner und Signaturen, Versionsangaben, Studien (Autoren, Jahr, Design, Stichprobe, Ergebnis, Effektgröße), Zahlen, Zitate, Verhaltensbeschreibungen („was passiert wann“), Zuschreibungen („X hat Y eingeführt“), Textdiagramme (jedes Element und jeder Pfeil gegen Quellcode/Doku) und Ausgabeblöcke (gegen den eigenen Testlauf). 2. Verifiziere möglichst ALLE gegen die lokalen Quellen (QUELLEN.md). Priorisiere nach Fehlerwahrscheinlichkeit. Führe Codebeispiele aus bzw. teste beschriebenes Verhalten mit kleinen Skripten, wo STIL.md das vorsieht. Versionsangaben gegen Tags/Changelogs prüfen. Achte besonders auf: falsche Zuschreibungen, verdrehte Effektrichtungen, überzogene Kausalaussagen aus Korrelationsstudien, erfundene Stichprobengrößen, veraltete oder erfundene Bezeichner, Doku-Aussagen, die dem Quellcode widersprechen (dann gilt der Quellcode). 3. Korrigiere Fehler direkt in der Datei mit Edit (minimal-invasiv, Stil beibehalten). Unbelegbares vorsichtiger formulieren oder streichen. -4. Prüfe Form: Überschriften exakt wie GLIEDERUNG.md, dazu am Ende `## Kern` mit Frage-Antwort-Paaren, die jeden Abschnitt abdecken und nichts enthalten, was das Kapitel nicht erklärt; keine Übungen/Merkkästen/Zusammenfassungen/Literaturlisten; keine Verweisklammern „(→ …)“ und keine Rückverweise auf frühere Abschnitte; Vorausverweise nur als Halbsatz und nur, wenn das Thema dort laut Gliederung steht; keine größeren Doppelungen mit Themen, die in andere Kapitel gehören (dann kürzen und verweisen); Rechtschreibung, Umlaute, Markdown. Satzbau: Sätze über 30 Wörter in mehrere auflösen, Inhalt unverändert; Zielschnitt unter 20 Wörter je Satz. Sätze mit drei und mehr Code-Bezeichnern entflechten: in Worten erklären, Namenslisten streichen. Verständlichkeit: Begriffe, die der Abschnitt benutzt, ohne sie bis dahin eingeführt zu haben, kurz erklären oder auf die Einführung verweisen; Interna, die kein sichtbares Verhalten erklären, streichen; Zwischenabschnitte unter 150 Wörtern mit dem Nachbarn zusammenlegen; Gedankensprünge schließen, wo zwischen zwei Sätzen oder Absätzen die Verbindung fehlt. Umfang: Abschnitte über 120 % ihres Richtwerts aus der Gliederung (`(kurz)` ≈ 800, ohne Angabe ≈ 1.300, `(lang)` ≈ 2.000 Wörter) straffen – zuerst Wiederholungen und Quellenformeln ohne Informationswert, keine Fakten oder Beispiele streichen. +4. Prüfe Form: Überschriften exakt wie GLIEDERUNG.md, dazu als letzter Abschnitt `## N.M Merken` (fortlaufend nummeriert), der je Abschnitt einen Absatz mit Fakten und Mechanismen wiederholt und nichts enthält, was das Kapitel nicht erklärt; keine Übungen/Merkkästen/Zusammenfassungen/Literaturlisten; keine Verweisklammern „(→ …)“ und keine Rückverweise auf frühere Abschnitte; Vorausverweise nur als Halbsatz und nur, wenn das Thema dort laut Gliederung steht; keine größeren Doppelungen mit Themen, die in andere Kapitel gehören (dann kürzen und verweisen); Rechtschreibung, Umlaute, Markdown. Satzbau: Sätze über 30 Wörter in mehrere auflösen, Inhalt unverändert; Zielschnitt unter 20 Wörter je Satz. Sätze mit drei und mehr Code-Bezeichnern entflechten: in Worten erklären, Namenslisten streichen. Verständlichkeit: Begriffe, die der Abschnitt benutzt, ohne sie bis dahin eingeführt zu haben, kurz erklären oder auf die Einführung verweisen; Interna, die kein sichtbares Verhalten erklären, streichen; Zwischenabschnitte unter 150 Wörtern mit dem Nachbarn zusammenlegen; Gedankensprünge schließen, wo zwischen zwei Sätzen oder Absätzen die Verbindung fehlt. Umfang: Abschnitte über 120 % ihres Richtwerts aus der Gliederung (`(kurz)` ≈ 800, ohne Angabe ≈ 1.300, `(lang)` ≈ 2.000 Wörter) straffen – zuerst Wiederholungen und Quellenformeln ohne Informationswert, keine Fakten oder Beispiele streichen. 5. Wiederhole, bis du keine Fehler mehr findest. Ändere nur `buch/{{datei}}`. Arbeitsdateien nur unter `arbeit/pruefung-{{n}}/`. Keine persönlichen Daten an externe Dienste senden. diff --git a/prompts/stil_basis.md b/prompts/stil_basis.md index abeb6ce..39ca7ac 100644 --- a/prompts/stil_basis.md +++ b/prompts/stil_basis.md @@ -7,7 +7,7 @@ Ein deutschsprachiges Sachbuch, das **Verständnis** vermittelt: Wie ist die Sac - Wortwahl: Verben statt Substantivierungen („prüfen“ statt „eine Prüfung vornehmen“, „wahrnehmen“ statt „die Wahrnehmung erfolgt“). Lange zusammengesetzte Wörter nur, wenn sie der Fachbegriff sind; sonst umschreiben oder bei der ersten Nennung erklären. Keine Füllwörter („grundsätzlich“, „im Wesentlichen“, „durchaus“). - Code-Bezeichner im Fließtext nur, wenn der Satz von genau diesem Bezeichner handelt. Erst in Worten erklären, was etwas tut, dann den Namen nennen. Keine Aufzählungen von Methoden-, Eigenschafts- oder Klassennamen, weder im Satz noch als Tabelle: Solche Listen weglassen. Faustregel: höchstens ein Bezeichner je Satz, selten zwei. - **Keine** Übungen, Selbsttests, Lernziele, Merkkästen, Checklisten, „Praxistipps“, Schritt-für-Schritt-Anleitungen als Selbstzweck, Literaturlisten. -- Jedes Kapitel endet mit einem Block `## Kern`: alle Kerneinsichten des Kapitels als Frage-Antwort-Paare. Die Frage ist fett gesetzt und lautet so, wie ein Leser sie sich stellen würde („Warum nehmen Spieler Regeln hin, die alles umständlicher machen?“). Die Antwort sind zwei bis fünf Sätze Prosa mit dem Warum und dem konkreten Beispiel aus dem Kapitel. Jeder Abschnitt des Kapitels ist mit mindestens einer Frage vertreten, so lang wie nötig. Nichts Neues, keine Bullets, keine Begriffe, die das Kapitel nicht eingeführt hat. Der Kern zählt nicht zum Richtwert des Umfangs. +- Jedes Kapitel endet mit einem eigenen Abschnitt `## N.M Merken`, nummeriert als letzter Abschnitt des Kapitels (hat das Kapitel 1.1 bis 1.4, heißt er `## 1.5 Merken`). Er wiederholt, was man sich merken soll: Fakten, Mechanismen und ihr Warum, als kurze Aussagen. Je Abschnitt des Kapitels ein Absatz, eingeleitet mit der fetten Abschnittsnummer (`**1.1**`), drei bis sechs Sätze, mit dem Beispiel, an dem das Kapitel es gezeigt hat. Keine Fragen, keine Bullets, nichts Neues, keine Begriffe, die das Kapitel nicht eingeführt hat. Der Abschnitt steht nicht in der Gliederung und zählt nicht zum Richtwert des Umfangs. - Überwiegend Fließtext. Listen und Tabellen nur, wo sie echte Klarheit bringen – sparsam. Eine Tabelle vergleicht Varianten mit ihren Kosten; sie zählt nie Methoden, Eigenschaften, Konstanten oder Einstellungen auf. - Kein Nachschlagewissen: keine Einstellungspfade (eine Projekteinstellung wird in Worten genannt, nicht als `pfad/zur/einstellung`), keine Standardwerte, Grenzwerte, Signaturen oder Parameterpositionen, die nur beim Bauen helfen. Keine Versionsnotizen („seit 4.3“, „in Godot 3 hieß“, „bis 4.2“): Das Buch beschreibt den Stand der Referenzversion, als hätte es nie einen anderen gegeben. - Keine Autoren als Erzählgerüst: nicht „X beschreibt“, „X hält“, „X rät“, sondern die Sache selbst erklären und begründen. Der Erfinder eines Verfahrens wird höchstens einmal genannt, wenn das Verfahren nach ihm heißt. Keine Jahreszahlen, Daten, Lebensläufe oder Anekdoten ohne Erklärwert. Keine Testberichte im Text („Im Testlauf …“, „Das Skript läuft ohne Fehler“, „Ein Versuch zeigt“): Die Ausgabe spricht für sich.