Sprint 56h: butterfly effect + character sheet auto-import
- drafting.yml: add {character_profiles} in PASS 0, PASS 3 character state
extraction, rag_write for character-state asset (enables butterfly effect
in draft mode), document for character-state file, conditional_skills
- character_sheet.yml: add rag_write step writing voice-sig-{slug} asset
so auto-import can pick up completed character sheets from RagMemory
- book_chapter.yml: package hint now detects new characters from PASS 3
Character State (spawns character_sheet tasks) and detects Permanent:YES
changes (spawns character_update tasks)
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user