StoryForge ist ein spezialisiertes Claude Code Plugin für AI-unterstütztes Buchschreiben. Es ist kein generischer Schreibassistent — es ist ein strukturierter Workflow mit Quality Gates, Autorenprofilen und einem Prosa-Enforcement-System, das verhindert, dass fertige Bücher nach AI klingen.
Zielgruppe:
Was StoryForge nicht ist:
| Feature | Generischer AI-Assistent | StoryForge |
|---|---|---|
| Autorenstimme | Verloren im ersten Prompt | Durchgesetzt via PostToolUse-Hook nach jedem Write |
| Plot-Konsistenz | Auf Gedächtnis angewiesen | Travel Matrix + Canon Log + Timeline + Promises-Register |
| Plot-Holes | Nicht erkannt | Deterministischer + LLM-basierter analyze_plot_logic Scan |
| Genres | Generisch | 14 konfigurierbare Genres mit Conventions, Tropes, Expected Beats |
| Memoir | Nicht unterstützt | First-class: Einwilligungs-Tracking, Verleumdungs-Scan, Strukturtypen |
| Quality Gate | Keines | 28-Punkte-Kapitelreview (inkl. 5 Plot-Logic-Checks), Manuscript-Checker (16 Kategorien), Continuity-Checker |
| Writing Mode | Keiner | Outliner, Plantser, Discovery — jeder mit eigenem Workflow |
| Prosa-Enforcement | Keines | Exit-2-Hook bei Backtick-Mustern aus CLAUDE.md und Author-Vocab |
| Author-Evolution | Keine | 3-Tier-Hierarchie (Buch → Autor → Global) via harvest-author-rules |
Jeder Autor hat ein Profil unter ~/.storyforge/authors/{slug}/:
profile.md — Ton, POV, Satzstruktur, Stimme, Tense, Writing Discoveries (Recurring Tics / Style Principles / Don'ts)vocabulary.md — Preferred Words, Banned Words, Signature Phrases, Writing ModeDas Profil ist die Quelle der Wahrheit für alle Prosa-Entscheidungen. Der PostToolUse-Hook liest es nach jedem Write/Edit und blockt Prosa, die gegen die deklarierten ### Absolutely Forbidden-Phrasen verstößt.
Author Evolution (Sprint 2): Findings aus einem fertigen Buch können via /storyforge:harvest-author-rules in das Autorenprofil promoted werden. Wenn dasselbe Finding in einem späteren Buch wieder auftaucht, wird ein zweiter Origin-Tag angehängt — kein Duplikat. Details: Author Evolution.
Eingebaut: Fantasy, Sci-Fi, Mystery, Thriller, Horror, Romance, Contemporary, Historical, Literary Fiction, YA, Children's, Dark Fantasy, Paranormal Romance, LGBTQ.
Eigene Genres via /storyforge:genre-creator — nimmt mehrere Base-Genres und definiert Conventions, Tropes, Expected Beats.
Jedes Genre hat ein eigenes README.md mit:
Genre-Mixing: Ein Buch kann mehrere Genres deklarieren. Jedes Genre-README wird in den Chapter-Writing-Brief geladen. Widersprüchliche Conventions werden vom Autor priorisiert.
| Mode | Für wen | Workflow |
|---|---|---|
| Outliner | Planer | Vollständiges Plot-Outline vor dem ersten Kapitel |
| Plantser | Hybrid | Minimum Viable Outline, Rolling Planner für Details |
| Discovery Writer | Pantser | Scene-by-scene ohne Outline — Timeline/Canon nachträglich aufgebaut |
Alle drei Modi nutzen dieselben Quality Gates. Discovery Writer nutzt continuity-checker zur nachträglichen Rekonstruktion.
8 eingebaute Methoden:
| Methode | Für wen geeignet |
|---------|-----------------|
| 3-Act Structure | Universell, Einstieg |
| Hero's Journey | Abenteuer, Charakter-Transformation |
| Save the Cat | Kommerzielle Fiction, Film-inspiriert |
| Snowflake Method | Outliner mit viel Planungs-Lust |
| Freytag's Pyramid | Klassisch, literarisch |
| Seven-Point Story | Punktbasiert, gut für Outliner |
| Story Circle | Dan Harmon, gut für Discovery |
| Kishōtenketsu | Literarisch, East-Asian-inspiriert, konfliktarme Plots |
Aufgeteilt in Kategorien: Core, Author, Creative, Writing, Research, Production, Series, Utility, Memoir. Siehe Skills-Detailseite.
Neu in Sprint 2: /storyforge:backfill-promises (Promises in alten Kapitel-Drafts nachfüllen) und /storyforge:harvest-author-rules (Buch-Findings ins Autorenprofil promoten).
Series Lifecycle (Epic #195): Multi-Book-Series-Workflow — Charakter-Endstand am Buch-Ende harvesten, recurring Chars ins nächste Buch auto-kopieren, neues Buch aus Series-Tracker-Plan bootstrappen, Series-Evolution-Kontext im Chapter-Writing-Brief surfacen. Fünf neue MCP-Tools, zwei neue Skills (harvest-character-evolution, bootstrap-book-from-series), ein erweiterter Skill (new-book mit --copy-recurring-from=).
book_category: memoirpeople/-Verzeichnismemoir-ethics-checker, emotional-truth-prompt, plot-architect-memoir37+ Referenzdokumente (74.000+ Wörter) eingebaut:
reference/craft/plot-logic.md)reference/author-evolution.md)reference/craft/anti-ai-patterns.md ist auch die kanonische Quelle für die ~50 globalen AI-Tells, die der Hook als Warn-Severity surfaced.
StoryForge unterstützt Memoir als gleichwertige Buchkategorie neben Fiction. Setze book_category: memoir im Frontmatter deines Buch-README oder in der Config.
| Feature | Fiction | Memoir |
|---|---|---|
| Plot-Strukturtypen | 8 Fiction-Methoden via plot-architect |
4 Memoir-Typen via plot-architect-memoir |
| Figuren | characters/ — fiktive Profile |
people/ — reale Personen mit consent_status |
| Craft-Referenzen | Fiction-Craft-Docs | Memoir-Craft-Docs (scene-vs-summary, emotional-truth, etc.) |
| Ethics Gate | Keines | memoir-ethics-checker Pflicht vor Export |
| Emotional Truth | Nicht nötig | emotional-truth-prompt vor chapter-reviewer |
| Voice Checker | Fiction AI-Tells | Memoir AI-Tells inklusive |
| Plot-Logic-Scan | 6 Kategorien aktiv | 4 Kategorien aktiv (chekhov_gun + premise_violation skipped) |
Der character-creator Skill im Memoir-Modus erstellt Personenprofile im people/-Verzeichnis statt fiktiver Charakter-Dateien. Jedes Profil hat ein consent_status-Feld (granted / pending / not-asked / refused / not-required).
book-conceptualizer (memoir mode)
↓
plot-architect-memoir
↓
character-creator (→ people/ statt characters/)
↓
chapter-writer (→ lädt memoir-craft-docs)
↓
emotional-truth-prompt (nur Memoir, vor chapter-reviewer)
↓
chapter-reviewer
↓
sensitivity-reader (optional) → memoir-ethics-checker → voice-checker → export-engineer
people/ und scannt Kapitel-Drafts auf 4 Verleumdungsrisiko-Muster (D1–D4). Verdicts: EXPORT CLEAR / RESOLVE BEFORE EXPORT / EXPORT BLOCKED.Detailseite: Memoir-Unterstützung
Detailvergleich auf der Writing Modes Seite.
| Mode | Stärke | Schwäche |
|---|---|---|
| Outliner | Maximale Kontrolle, wenig Überraschungen | Kann kreative Spontaneität einschränken |
| Plantser | Balance zwischen Struktur und Freiheit | Braucht Disziplin beim Rolling Planner |
| Discovery | Maximale kreative Freiheit, organischer Plot | Mehr Kontinuitäts-Arbeit (continuity-checker) |
| Komponente | Version | Zweck |
|---|---|---|
| Claude Code | Latest | Plugin-Host |
| Python | 3.10+ | MCP Server Runtime |
| pandoc | 3.x | EPUB/PDF Export |
| Calibre (optional) | 6.x+ | MOBI-Export |
Kein API-Key nötig — StoryForge nutzt Claude Code's eingebauten Claude-Zugang.
# 1. Plugin klonen
git clone https://github.com/markus-michalski/storyforge \
~/.claude/plugins/storyforge
# 2. In Claude Code aktivieren
# Via Plugin-Manager oder Eintrag in ~/.claude/settings.json
# 3. Ersteinrichtung
/storyforge:setup
# 4. Autorenprofil erstellen
/storyforge:create-author Mein Name
Alternativ direkt über den Claude Code Plugin Marketplace (wenn verfügbar).
Konfigurationsdatei: ~/.storyforge/config.yaml
content_root: ~/projekte/book-projects # Wo Bücher/Ideen gespeichert werden
default_author: mein-autor-slug # Wird beim Buchanlegen vorbelegt
review_handle: "Markus" # Erkennungsstring für Inline-Reviews
linter_mode: strict # strict | warn (global default)
Per-Buch-Überschreibung via Frontmatter in {project}/CLAUDE.md:
---
linter_mode: warn # Nur für dieses Buch auf warn schalten
---
1. /storyforge:create-author Mein Name
2. /storyforge:new-book
3. /storyforge:book-conceptualizer mein-buch
4. /storyforge:plot-architect mein-buch
5. /storyforge:character-creator mein-buch
6. /storyforge:world-builder mein-buch
7. /storyforge:rolling-planner mein-buch
8. /storyforge:chapter-writer mein-buch 1
9. (Optional) /storyforge:continuity-checker mein-buch
10. /storyforge:chapter-reviewer mein-buch kapitel-01
10a. /storyforge:chapter-humanizer mein-buch kapitel-01
10b. /storyforge:chapter-proofreader mein-buch kapitel-01
10c. /storyforge:manuscript-checker mein-buch
10d. /storyforge:beta-feedback mein-buch kapitel-01
11. (Optional) /storyforge:voice-checker mein-buch
12. /storyforge:export-engineer mein-buch epub
1. /storyforge:create-author Mein Name
2. /storyforge:new-book (→ book_category: memoir setzen)
3. /storyforge:book-conceptualizer mein-memoir
4. /storyforge:plot-architect-memoir mein-memoir
5. /storyforge:character-creator mein-memoir (→ people/ statt characters/)
6. /storyforge:rolling-planner mein-memoir
7. /storyforge:chapter-writer mein-memoir 1
8. (Optional) /storyforge:continuity-checker mein-memoir
9. /storyforge:emotional-truth-prompt mein-memoir kapitel-01
10. /storyforge:chapter-reviewer mein-memoir kapitel-01
10a. /storyforge:chapter-humanizer mein-memoir kapitel-01
10b. /storyforge:chapter-proofreader mein-memoir kapitel-01
10c. /storyforge:manuscript-checker mein-memoir
11. /storyforge:memoir-ethics-checker mein-memoir
12. /storyforge:export-engineer mein-memoir epub
{content_root}/
├── ideas/ # Brainstorm-Ideen (vor Buchanlage)
│ └── {idea-slug}.md
└── projects/
└── {book-slug}/
├── README.md # Buch-Metadaten (Frontmatter: title, genre, author, ...)
├── CLAUDE.md # Per-Buch-Linter-Config + Rules + Callbacks
├── synopsis.md # Klappentext + Langsynopse
├── plot/
│ ├── outline.md # Akte, Beats
│ ├── arcs.md # Charakter-Arcs
│ ├── timeline.md # Story-Kalender (ein Eintrag pro Story-Tag)
│ ├── canon-log.md # Kanonische Fakten + CHANGED-Markierungen
│ └── tone.md # Tonal Rules, Non-Negotiables, Litmus-Test
├── characters/
│ ├── INDEX.md
│ └── {char-slug}.md # YAML-Frontmatter mit optional tactical: und knowledge:
├── people/ # Memoir only: Realpersonen mit consent_status
├── world/
│ ├── setting.md # Travel Matrix (Pflicht) + Locations
│ ├── rules.md # Magiesystem / World Rules
│ └── history.md
├── chapters/
│ └── {NN-slug}/
│ ├── README.md # Chapter-Timeline, Scene-List, Status, ## Promises
│ └── draft.md # Prosa-Draft (Hook greift hier)
├── research/
│ └── notes/
├── export/
│ ├── front-matter.md
│ ├── back-matter.md
│ ├── custom.css
│ └── output/ # Fertige EPUBs, PDFs
├── cover/
│ ├── brief.md
│ ├── prompts.md
│ └── art/cover.jpg
└── translations/
└── {lang}/
Jedes Kapitel hat einen Status im README.md-Frontmatter:
| Status | Bedeutung | Übergang zu |
|---|---|---|
Outline |
Szenen-Skelett vorhanden | Draft nach chapter-writer |
Draft |
Erste Prosa-Fassung | Review nach Selbst-Check |
Review |
chapter-reviewer gelaufen |
Final nach Fixes |
Final |
Bereit für Revision-Phase | Polished nach Revision |
Polished |
Export-fertig | Export |
export-engineer blockt, wenn nicht alle Kapitel Final oder Polished sind.
Der StoryForge MCP Server (~/.storyforge/server.py) stellt folgende Tools bereit:
list_books() — alle Bücher + Statusget_book_full(slug) — komplette Buch-Metadatenget_book_status(slug) — Status aller Kapitelupdate_book_field(slug, field, value) — einzelnes Metadaten-Feld aktualisierenlist_chapters(book_slug) — alle Kapitel + Statusget_chapter(book_slug, chapter_slug) — Kapitel-Metadatencreate_chapter(book_slug, title, ...) — neues Kapitel anlegenupdate_chapter_status(book_slug, chapter_slug, status) — Status-Updateregister_chapter_promises(book_slug, chapter_slug, promises) — Setup-Elemente eines Kapitels persistieren (Callbacks, Chekhov Guns, Mysteries)get_chapter_promises(book_slug, chapter_slug) — Promises eines Kapitels lesen, dient als Daten-Quelle für analyze_plot_logicget_chapter_writing_brief(book_slug, chapter_slug) — 14 Datenquellen in einem JSON (inkl. pov_character_inventory — deterministisches Inventar des POV-Charakters mit Quellen-Pointern, und pov_character_state — 4 physische Kategorien: clothing, injuries, altered_states, environmental_limiters)get_review_brief(book_slug, chapter_slug) — 8 Datenquellen für chapter-reviewerget_continuity_brief(book_slug) — voller Buch-State für continuity-checkerverify_tactical_setup(book_slug, scene_outline_text, characters_present) — Walking-Order-Checkget_recent_chapter_timelines(book_slug, n) — letzte N Kapitel als Intra-Day-Gridsupdate_character_snapshot(book_slug, pov_slug, snapshot_json, book_category) — Persistiert End-of-Chapter-Zustand des POV-Charakters in characters/{slug}.md / people/{slug}.md Frontmatter (current_inventory, current_clothing, current_injuries, altered_states, environmental_limiters, as_of_chapter); hält pov_character_inventory und pov_character_state im Brief für Folgekapitel aktuelllist_ideas() — alle Ideen + Statusget_idea(slug) — Idea-Datei ladenpromote_idea(slug) — Idea → Buchget_author(slug?) — Autorenprofil laden (default: aus config)list_authors() — alle Profileharvest_book_rules(book_slug, author_slug?) — Klassifiziert Buch-CLAUDE.md-Rules in banned_phrase / style_principle / world_rule und dedupiert gegen Author-Profile + Vocabulary. Treibt das /storyforge:harvest-author-rules-Skill.get_craft_reference(name) — ein Craft-Dokument ladenget_genre(name) — Genre-README ladenget_book_category_dir(category) — Pfad zu book_categories/{category}/ auflösenAlle Checker-MCP-Tools geben ein einheitliches GateResult mit status (PASS/WARN/FAIL), reasons, findings und metadata zurück:
scan_manuscript(book_slug) — Cross-Chapter-Scanvalidate_chapter(book_slug, chapter_slug) — Hook-equivalent als MCP-Toolvalidate_timeline_consistency(book_slug) — Cross-Chapter-Zeitdriftanalyze_plot_logic(book_slug, chapter_slug?) — Plot-Hole-Detektor: deterministisch für causality_inversion und chekhov_gun, plus Knowledge-Index (Canon-Log-Fakten, Story-Day-Map, Promises-Register) den die LLM-Skills für information_leak, motivation_break, premise_violation und pov_knowledge_boundary konsumieren. Memoir-aware: chekhov_gun + premise_violation werden bei book_category: memoir automatisch übersprungen.check_memoir_ethics(book_slug) — Einwilligungs-Gateverify_callbacks(book_slug) — Callback-Register prüfenget_current_story_anchor(book_slug, chapter_slug) — Relativ-Phrasen-Mappingupdate_session(book_slug?, phase?) — Session-State persistierencheck_memoir_consent(book_slug) — Einwilligungs-Status aller PersonenDiese Tools können in jedem Skill-Kontext direkt als MCP-Tool-Call aufgerufen werden:
| Tool | Beschreibung |
|---|---|
list_craft_references() |
Craft- und Genre-Referenzdokumente auflisten |
validate_timeline_consistency(book_slug) |
Zeitdrift zwischen Kapiteln prüfen |
get_review_handle_config() |
Konfigurierten Review-Handle zurückgeben |
rebuild_state(book_slug) |
State-Cache aus dem Dateisystem neu aufbauen |
get_current_story_anchor(book_slug, chapter_slug) |
Story-Kalender-Anker für ein Kapitel auflösen |
get_recent_chapter_timelines(book_slug, n) |
Intra-Day-Grids der letzten N Kapitel |
count_words(book_slug, chapter_slug?) |
Wörter für ein Kapitel oder das ganze Buch zählen |
Entfernt in Issue #236: get_chapter, get_character, get_series, update_book_claudemd_facts
StoryForge nutzt zwei Claude Code Hooks:
Läuft nach jedem Write/Edit/MultiEdit auf **/chapters/*/draft.md.
7 Scanner:
| Scanner | Severity | Was wird geprüft |
|---|---|---|
| Buch-CLAUDE.md Banlist | block | Backtick-Patterns aus ## Rules |
| Author-Vocabulary | block | Alle ### Absolutely Forbidden-Phrasen |
| Meta-Narrative-Detektor | block | Ch \d+, callback(s), as established, etc. |
| Story-Time-Anchor | warn | Relativ-Phrasen → impliziertes Story-Datum |
| Globale AI-Tells | warn | ~50 Patterns aus anti-ai-patterns.md |
| Sentence-Variance | warn | std_dev < 4 Wörter → AI-verdächtig |
| POV-Boundary-Checker | warn | Domain-Vokabular im Narration-Text |
Detailbeschreibung: Quality System
Läuft vor jeder Context-Komprimierung. Liest offene Callbacks, Rules und kritische Fakten aus dem Session-Kontext und schreibt sie in die Per-Book CLAUDE.md. Verhindert, dass wichtige Story-Versprechen beim Context-Reset verloren gehen.
Wenn block-Severity auftritt, gibt der Hook Exit Code 2 zurück:
StoryForge linter blocked this write:
[BLOCK] draft.md line 12: Banned by author voice
(author-vocab (Absolutely Forbidden)): 'clocked'
[BLOCK] draft.md line 12: Banned phrase from book CLAUDE.md: 'clocked'
Plus 3 non-blocking warnings:
[WARN] draft.md line 8: phrase 'yesterday' implies Mon Dec 23 ~19:30
(chapter starts Tue Dec 24 ~19:30). Verify against plot/timeline.md.
[WARN] draft.md line 15: AI-tell 'tapestry' found (1 occurrence)
[WARN] draft.md line 47: POV BOUNDARY: 'lividity' (domain: forensics,
Theo Wilkons knowledge: none).
Fix the blocking issues and try again. Set `linter_mode: warn` in the
book's CLAUDE.md frontmatter to override.
Das Modell empfängt diesen Output in stderr und muss die block-Findings fixen, bevor der nächste Write akzeptiert wird.
CLAUDE.mdJedes Buch hat eine eigene CLAUDE.md direkt im Projekt-Root ({content_root}/projects/{slug}/CLAUDE.md). Sie enthält:
---
linter_mode: strict # oder warn
---
# Mein Buch — Book CLAUDE.md
## Book Facts
- **Author:** Mein Autorenname
- **Genre:** Mystery, Contemporary
- **Target Word Count:** 80000
## Rules
- `journey` als Metapher (Abstract noun banned)
- `clocked` (Zu slang für diese Stimme)
- `delve` max 1 per chapter
## Callbacks
- Callback: Die Silbermünze (Kap 5) muss in Kap 18 wiederkommen
- Callback: Ingas Vater wird in Kap 12 erwähnt — payoff in Kap 28
## Active Tactics
- [x] Snowflake Method — abgeschlossen in Phase 8
Der PostToolUse-Hook liest ## Rules-Bullets und unterscheidet nach Markup:
| Markup | Bedeutung | Wer reagiert |
|---|---|---|
`phrase` (Backticks) |
Hard-Block-Pattern | PostToolUse-Hook → exit 2 |
*phrase* (Italics) |
Heuristik-Marker für manuelles Review | manuscript-checker (Soft) |
"phrase" (Double-Quotes) |
Beispiele, Replacements, advisory | Nur Lese-Hilfe für Modell |
Limit-Syntax:
## Rules
- `journey` (Abstract noun — always banned)
- `kind of X that Y` max 3 per chapter (Strukturmuster — limitiert)
- `echoed` max 0-1 per chapter (Fast gebannt)
Erkannte Limit-Phrasings: max N per chapter, maximum N per chapter, limit to N per chapter, max N per kapitel.
Das Author-Vocabulary (~/.storyforge/authors/{slug}/vocabulary.md) hat mehrere Sektionen, die der Hook liest:
### Absolutely Forbidden
- delve
- tapestry
- clocked
### Forbidden Hedging Phrases
- it's worth noting
- one might say
- it goes without saying
### Forbidden Emotional Tells
- he felt
- she noticed that she felt
- they realized
### Forbidden Structural Patterns
- [Adverb]-ly [said/whispered/replied]
Inflektions-Matching: delve matched auch delved, delving, delves. Multi-Word-Phrasen werden exakt gematcht.
Der Story-Time-Anchor ist ein Mechanismus, der verhindert, dass relative Zeitphrasen (yesterday, tomorrow, an hour ago, etc.) zu zeitlichen Inkonsistenzen führen.
Wie es funktioniert:
## Chapter Timeline-Block mit **Start:** Tue Dec 24 ~19:30Write/Edit-Operation prüft Scanner 4 die Phrasen im neuen Text[WARN] draft.md line 47: phrase 'yesterday' implies Mon Dec 23 ~19:30 (chapter starts Tue Dec 24 ~19:30). Verify against plot/timeline.md.Direkte Nutzung:
mcp__storyforge-mcp__get_current_story_anchor blood-and-binary 22-the-night-before
Liefert u.a.:
{
"available_relative_phrases": {
"yesterday": "Mon Dec 23 ~19:30",
"tomorrow": "Wed Dec 25 ~19:30",
"an hour ago": "Tue Dec 24 ~18:30"
}
}
StoryForge hat kein dediziertes Subplot-Management — Subplots werden als Teil des Haupt-Plots in plot/outline.md und plot/arcs.md verwaltet. Für komplexe Serien: series-planner.
Über plot/outline.md hinaus können Serien via /storyforge:series-planner verwaltet werden:
series/
├── README.md
├── world/
│ └── canon.md
├── characters-evolution.md
└── projects/
├── band-1-slug/
├── band-2-slug/
└── band-3-slug/
Der Chapter-Writer lädt optionalen Series-Canon als zusätzlichen Prereq-Load.
Series Lifecycle (Epic #195): Über die reine Planung hinaus deckt StoryForge jetzt den kompletten Multi-Book-Lifecycle ab — Charakter-Endstand am Buch-Ende harvesten (/storyforge:harvest-character-evolution), recurring Chars beim nächsten Buch via new-book --copy-recurring-from= auto-kopieren, neues Buch aus Series-Tracker-Plan bootstrappen (/storyforge:bootstrap-book-from-series). Die Series-Evolution-Daten landen automatisch im Chapter-Writing-Brief des Folgebuchs.
Phasen-Hinweise:
harvest-character-evolution → Series Trackernew-book --copy-recurring-from= → bootstrap-book-from-seriesKomplettes Beispiel mit allen Phasen, Skill-Outputs und Buchabschluss-Lifecycle: Series-Workflow-Beispiel — Kargholm-Saga. Zeigt Aufbau, End-of-Book-Harvest, Onboarding des nächsten Bands und Box-Set-Produktion am Beispiel einer Trilogie.
Detailbeschreibung: Genre-System
14 eingebaute Genres — jedes als eigenes README.md mit Conventions, Tropes, Expected Beats, Avoided Tropes.
Cross-Cutting: LGBTQ — kein eigenes Genre, sondern eine Schicht, die auf jedes andere Genre angewendet werden kann.
Eigene Genres: /storyforge:genre-creator — interaktiv, fragt nach Base-Genres, Conventions, Tropes.
Drei Ebenen — Pre-Write, Pre-Save (Hook), Post-Draft:
| Gate | Ebene | Skill / Hook |
|---|---|---|
| Chapter Writing Brief | Pre-Write (Keystone) | MCP get_chapter_writing_brief |
| Tactical Setup Verifier | Pre-Write | MCP verify_tactical_setup |
| Pre-Scene Logic Audit | Pre-Write (per Szene / Kapitel) | chapter-writer Step A1b / 2c |
| PostToolUse Validator | Pre-Save (automatisch, 7 Scanner) | validate_chapter.py |
| Voice Checker | Post-Draft | voice-checker |
| Chapter Reviewer | Post-Draft, Einzelkapitel (28 Punkte inkl. Plot-Logic) | chapter-reviewer |
| First-Chapter Gate | Post-Draft, Kapitel 1 (13 Punkte) | in chapter-reviewer |
| Manuscript Checker | Post-Draft, Komplettes Buch (16 Kategorien inkl. plot_hole) |
manuscript-checker |
| Plot-Logic Analyzer | Post-Draft, Plot-Holes | MCP analyze_plot_logic |
| Continuity Checker | Post-Draft, Timeline/Travel/Canon | continuity-checker |
| Cross-Chapter Timeline | Post-Draft | MCP validate_timeline_consistency |
| Emotional Truth Pass | Post-Draft, Memoir-Kapitel | emotional-truth-prompt |
| Memoir Ethics Gate | Vor Export, nur Memoir | memoir-ethics-checker |
Alle Checker-Tools geben ein einheitliches GateResult (PASS/WARN/FAIL) zurück.
Detailbeschreibung: Quality System
Sprint 2 hat einen deterministischen + LLM-gestützten Plot-Hole-Detektor eingeführt: analyze_plot_logic. Architektur: deterministische Datenquellen + statische Detektoren leben im MCP-Tool, die LLM-Passes für die semantischen Kategorien leben in den Skills (chapter-reviewer, manuscript-checker), gefüttert durch den knowledge_index des Tools.
| Kategorie | Wie erkannt | Memoir |
|---|---|---|
causality_inversion |
Deterministisch — Cause-After-Effect-Pattern via Story-Day-Map | Aktiv |
chekhov_gun |
Deterministisch — registrierte Promises ohne Payoff | Skipped |
information_leak |
LLM-Pass mit Canon-Log-Index | Aktiv |
motivation_break |
LLM-Pass mit Character-Arc-Index | Aktiv |
premise_violation |
LLM-Pass mit synopsis.md + plot/tone.md | Skipped |
pov_knowledge_boundary |
LLM-Pass mit Character-knowledge:-Block |
Aktiv |
Persistenz für Setup-Elemente (Chekhov Guns, registrierte Mysteries, Callbacks) pro Kapitel:
register_chapter_promises schreibt eine ## Promises-Sektion in das Kapitel-README.md. Wird vom chapter-writer automatisch beim Übergang Draft → Review befüllt.get_chapter_promises liest die Promises eines Kapitels für analyze_plot_logic./storyforge:backfill-promises ist die one-shot LLM-Bridge für bereits gedraftete Bücher — geht jedes Kapitel durch und extrahiert Setup-Elemente nachträglich.Single-source-of-truth bleibt der Canon-Log — die Promises sind ein Index obenauf, kein zweiter Speicher für Character-Knowledge.
Skill-Integration:
chapter-reviewer hat 5 neue Plot-Logic-Subpoints (20b–20f), die analyze_plot_logic für ein einzelnes Kapitel aufrufen.manuscript-checker hat einen neuen plot_hole-Bucket, sortiert vor cliche.run_quality_gates aggregiert das Plot-Logic-Result in den Gesamt-Status.Sprint 2 hat eine 3-Tier-Hierarchie für Regeln eingeführt: Buch → Autor → Global. Wenn eine Regel sich in einem Buch bewährt, kann sie via /storyforge:harvest-author-rules ins Autorenprofil promoted werden — alle künftigen Bücher dieses Autors erben die Regel automatisch.
manuscript-checker und chapter-reviewer ist eine Liste von Findings vorhanden./storyforge:harvest-author-rules <book-slug> ruft harvest_book_rules auf, das jede Regel klassifiziert in:
banned_phrase — Hard-Block-Pattern (geht in Author-Vocabulary)style_principle — Stil-Regel (geht in Author-Profile ## Writing Discoveries / Style Principles)world_rule — Buch-spezifische Welt-Regel (bleibt in Buch-CLAUDE.md)_(emerged from {book}, YYYY-MM)_. Recurrence in einem späteren Buch hängt einen zweiten Origin-Tag an, statt zu duplizieren.mode=remove oder mode=annotate).Das Author-Profile-Template hat seit Sprint 2 eine ## Writing Discoveries-Sektion mit drei Sub-Buckets:
## Writing Discoveries
### Recurring Tics
- `math` als Vokabel für analytisches Denken _(emerged from firelight, 2026-04)_
### Style Principles
- POV-Filter-Words max 5 pro Kapitel _(emerged from blood-and-binary, 2026-02; firelight, 2026-04)_
### Don'ts
- Keine Therapy-Speak-Begriffe in Kindheits-Flashbacks _(emerged from firelight, 2026-04)_
chapter-writer und chapter-reviewer laden diese Sektion bei jedem Run via get_author() — promoted Findings erreichen das nächste Buch automatisch, ohne in dessen CLAUDE.md gemirrort werden zu müssen.
Konzept-Doku: reference/author-evolution.md im Plugin-Repo.
/storyforge:export-engineer generiert EPUB, PDF oder MOBI via Pandoc (und optionalem Calibre für MOBI).
Pflicht-Voraussetzungen:
Final oder Polishedexport/front-matter.md (Copyright, Widmung)export/back-matter.md (Über den Autor)cover/art/cover.jpg (bei EPUB)Pandoc-Argumente: pdf_engine, font, font_size, margin sind auf eine Allowlist beschränkt — kein direktes Passthrough von Benutzereingaben.
Output: export/output/{book-slug}.epub (bzw. pdf/mobi)
Tiefere Dokumentation in separaten Seiten:
Ältere Bücher haben Regeln im alten Quote-Format ("clocked" statt `clocked`). Der Hook würde sie nicht erkennen. Migration via Skript:
# Dry-run (zeigt Diff, schreibt nicht)
~/.storyforge/venv/bin/python3 -m tools.claudemd.migrate_to_backticks \
/pfad/zum/buch
# Apply mit interaktiver Bestätigung
~/.storyforge/venv/bin/python3 -m tools.claudemd.migrate_to_backticks \
/pfad/zum/buch --apply
Optionale Schema-Migration: tactical: und knowledge: Blöcke können nachträglich an Charakter-Frontmatter angehängt werden. Beide sind optional — fehlende Blöcke führen zu graceful degrade.
Backfill von Promises: Bücher, die vor Sprint 2 gedraftet wurden, haben keine ## Promises-Sektion in den Kapitel-READMEs. analyze_plot_logic für chekhov_gun greift dann nicht. Fix:
/storyforge:backfill-promises mein-buch
Geht jedes Kapitel durch und extrahiert Setup-Elemente via LLM-Pass nachträglich.
Check:
ls ~/.claude/plugins/storyforge/skills/
claude --version
Fix: Plugin-Verzeichnis muss in ~/.claude/settings.json unter plugins eingetragen sein.
/storyforge:setup
Ursache: Phrase aus Buch-CLAUDE.md oder Author-Vocab wird getriggert.
Fix:
### Absolutely Forbidden entfernenlinter_mode: warn in Buch-CLAUDE.md-FrontmatterSymptome: export-engineer blockt mit "EXPORT BLOCKED — memoir ethics check failed"
Check:
/storyforge:memoir-ethics-checker mein-memoir
Folge dem Verdict-Report:
refused-Einwilligung → Passage überarbeiten oder Person umbenennenanalyze_plot_logic meldet chekhov_gun False-PositivesUrsache: Promises-Sektionen in Kapitel-READMEs sind unvollständig oder fehlen.
Fix: /storyforge:backfill-promises <book-slug> einmalig laufen lassen, dann analyze_plot_logic neu ausführen. Wenn der Payoff intentional in einem späteren Band einer Serie passiert, im Promises-Eintrag payoff_book: <next-book-slug> setzen.
get_chapter_writing_brief liefert Errors für einzelne KomponentenKein Crash-Fall. Der Brief shipped auch mit Partial-Daten. Check errors-Feld im JSON für Details. Häufigste Ursache: world/setting.md oder plot/timeline.md fehlen noch.
StoryForge ist unter der PolyForm Noncommercial License 1.0.0 lizenziert. Persönliche, nicht-kommerzielle Nutzung ist frei. Kommerzielle Nutzung erfordert eine separate Lizenz.
CLA für Contributors: Beitragsvereinbarung