diff --git a/templates/book_chapter.yml b/templates/book_chapter.yml index a6ff5d0..1d25c86 100644 --- a/templates/book_chapter.yml +++ b/templates/book_chapter.yml @@ -315,6 +315,17 @@ steps: Reviewers have NO other way to access the chapter content. Do NOT summarize or truncate it — include every word of the chapter. + NEW CHARACTER DETECTION (Bug G fix): + Look at the Character State from PASS 3 above (step 4). For each character listed there + whose name slug does NOT already have a "character-{slug}" file in PROJECT DELIVERABLES, + emit one additional create_task action per new character using task_type: character_sheet. + This ensures new characters introduced in this chapter get proper character sheets. + + PERMANENT CHANGE DETECTION (butterfly effect): + For any character in the Character State whose "Permanent:" field is YES, + emit one additional create_task action using task_type: character_update. + This triggers the character update pipeline to record deaths, power changes, etc. + Now spawn the three independent editorial reviewers and the roundtable debate. Use the exact task_names shown — the roundtable depends_on all three. schema: diff --git a/templates/character_sheet.yml b/templates/character_sheet.yml index 75d8339..34acf5f 100644 --- a/templates/character_sheet.yml +++ b/templates/character_sheet.yml @@ -74,6 +74,21 @@ steps: - type: document filename: "character-{character_name_slug}" + - type: rag_write + asset_id: "voice-sig-{character_name_slug}" + hint: | + Extract ONLY the voice signature entry for {character_name} in this exact format. + Do NOT include any other sections. Do NOT paraphrase — copy directly from the + Voice Signature section of the character sheet you just wrote. + + ### {character_name} — Voice Signature + - Role: [from ## Identity: Role field] + - Voice tone: [from ## Voice Signature: stress scale value] + - Speech pattern: [from ## Voice Signature: sentence length pattern] + - What they NEVER say: [from ## Voice Signature: never-say entry] + - Verbal tic: [from ## Voice Signature: tic/catchphrase entry] + - Notes: [first 2 bullets from ## Notes for Writers] + - type: close rag_update: true diff --git a/templates/drafting.yml b/templates/drafting.yml index 2842e77..bd6657c 100644 --- a/templates/drafting.yml +++ b/templates/drafting.yml @@ -1,5 +1,5 @@ name: drafting -description: "Write one chapter in draft-only mode — continuity check, draft prompt, draft, then stop." +description: "Write one chapter in draft-only mode — continuity check, draft prompt, draft, character state extraction, then stop. No editorial pipeline." debug: true system: agent_prompt @@ -9,11 +9,23 @@ requires: - prose_style - chapter_target_words - chapter_ref + - chapter_number -skills: - - guides/YAFictionGuide.md - - guides/RomanceFictionGuide.md - - guides/SciFiFictionGuide.md +conditional_skills: + - path: guides/YAFictionGuide.md + genre_contains: + - "YA" + - "Young Adult" + - path: guides/RomanceFictionGuide.md + genre_contains: + - "Romance" + - "Contemporary Romance" + - path: guides/SciFiFictionGuide.md + genre_contains: + - "Science Fiction" + - "Sci-Fi" + - "SciFi" + - "Science-Fiction" agent_prompt: - "= identity.md" @@ -55,6 +67,13 @@ steps: If no outline/bible is available, use the character names and project details from the task description above — be CONSISTENT throughout the book. + CHARACTER VOICE PROFILES (pre-extracted): + {character_profiles} + + If this block is empty, search PROJECT DELIVERABLES for the outline file containing + "## Voice Signatures" and copy those profiles here. PASS 1 must write every character + to their voice profile without exception. + STEP 2 — FIND THE PREVIOUS CHAPTER: Look at PROJECT DELIVERABLES for the chapter that comes BEFORE this one. If no previous chapter exists (this IS Chapter 1), skip to STEP 4. @@ -75,6 +94,24 @@ steps: - CLOSING HOOK: Exact last image or line that makes readers continue - Reminders about continuity, prose style, and target length + STEP 5 — CHECK LIVE CHARACTER STATE (if available): + Look in your RAG context for an asset called [character-state]. + If it exists — this is WHERE and WHO each character is RIGHT NOW. + It OVERRIDES any outline predictions about character state. + Record as "LIVE CHARACTER STATE:" for use in PASS 1. + + LOCATION CONTINUITY CHECK (perform this if [character-state] is present): + Does this chapter's outline place any character at a location inconsistent + with their Location field in [character-state]? + If conflict found — FLAG before drafting: + "LOCATION CONFLICT: [char] is at [state-location] per last chapter but outline + places them at [outline-location]. Resolve by opening in transit or adjusting." + + Also note any Active obligations, Open loops, or Known secrets from [character-state] + that should be honored or advanced in this chapter. + Check RAG for [world-state] — current NPC attitudes and faction memory. + If present, record as "LIVE WORLD STATE:". NPCs listed there behave per their attitude. + Stop here. Output ONLY the draft prompt. Do NOT write chapter prose yet. - type: think @@ -88,6 +125,9 @@ steps: Requirements: - Start with the FIRST LINE you planned — make it continue naturally from the previous chapter + - If the draft prompt contains a line starting with "LOCKED PREVIOUS CHAPTER HOOK:", + your FIRST LINE MUST directly resolve that hook + - If the draft prompt contains "AUTHOR'S INTENT:", treat it as a binding directive - Follow the KEY BEATS in order, but write with full scene depth - All character names must be consistent with the bible/outline - Every dialogue exchange must be tight and voice-distinct @@ -96,14 +136,67 @@ steps: - End with the CLOSING HOOK you planned - Match the prose style guide: {prose_style} - Target length: {chapter_target_words} words — write the FULL chapter, not a summary + - ⚠️ DO NOT stop early. If under {chapter_target_words} words, continue with interiority, + sensory detail, extended dialogue beats, and transitions until hitting the target. + + VOICE ANTI-PATTERNS — FORBIDDEN ON EVERY PAGE: + - Do NOT open with the "didn't just X; it Y" construction. Use varied openers. + - Thematic contrast appears max ONCE per scene as metaphor — not every paragraph. + - Do NOT label an emotion already shown through action or dialogue. + - Do NOT count or reference chapter numbers in the prose. "Five chapters of..." is an AI fingerprint. + - Each character must have at least ONE verbal imperfection per scene they appear in. Output ONLY the draft chapter text. - Start directly with the chapter title (e.g., "Chapter N: [Title]") and opening line. - No commentary, no plan headers, no "Pass 1" label. + Start directly with the chapter title and opening line. No commentary, no "Pass 1" label. - type: document filename: "chapter-{chapter_ref}" + - type: think + hint: | + PASS 3 — CHARACTER + WORLD STATE EXTRACTION + + You have just completed the chapter draft. Extract structured state for continuity tracking. + Write in compact format — this content is stored as a RAG asset read by the NEXT chapter. + Every character who appeared must have an entry. + + OUTPUT FORMAT — write this EXACTLY, filling in real values: + + # Character State: {chapter_ref} + + ## [Character Name] + Location: [specific location — building, floor, city — no vague "nearby"] + Physical: [injuries, fatigue, notable physical state, or "no injuries"] + Emotional: [dominant emotion at chapter end; what they carry into next chapter] + Active obligations: [debts/promises owed — format: "owes [person] [what] (Ch[N]) — UNPAID/PAID"] + Open loops: [unresolved conflicts — format: "[parties] [issue] (Ch[N]) — UNRESOLVED/RESOLVED"] + Known secrets: [info this character has that others don't — "knows [what] — [who does NOT know]"] + Arc: [XX%] — [one sentence: what permanently changed, or "no change"] + Permanent: [YES if something permanently changed (death, power gained/lost, relationship changed); NO otherwise] + + (Repeat for EVERY named character who appeared in this chapter) + + # World State: {chapter_ref} + + ## NPC Memory + - [NPC Name] ([faction/location]): [ATTITUDE] — [what happened] — [behavioral consequence] + + ## Faction Attitudes + - [Faction name]: [current attitude toward protagonists] — [reason] + + ## Active World Events + - [Event]: [status and expected timeline] + + CRITICAL: Keep total output under 3500 characters. Be precise and specific. + Do NOT write prose — only the structured data above. + + - type: rag_write + asset_id: "character-state" + max_chars: 4000 + + - type: document + filename: "character-state-{chapter_ref}" + - type: close rag_update: true