332 lines
15 KiB
YAML
332 lines
15 KiB
YAML
name: book_outline
|
|
description: "Boardroom debate to lock the book concept, produce a character bible (for fiction) + full chapter outline, then spawn chapter writing tasks."
|
|
debug: true
|
|
rag_exclude: [business_plan, charter]
|
|
system: agent_prompt
|
|
step_pause_mode: true
|
|
context_builders:
|
|
- markov_names
|
|
|
|
participant_prompt:
|
|
- "= identity.md"
|
|
|
|
agent_prompt:
|
|
- "= identity.md"
|
|
|
|
sections:
|
|
- agent
|
|
- project
|
|
- history
|
|
- rag
|
|
- deliverables
|
|
- participants
|
|
- participants_prompt
|
|
- message
|
|
- instructions
|
|
|
|
steps:
|
|
- type: think
|
|
rotate_participants: true
|
|
loop:
|
|
max_iterations: 4
|
|
hint: |
|
|
You are {agent.name}. This is round {task.iteration} of the creative boardroom.
|
|
|
|
GENRE: {genre_name|[infer from project description if blank]}
|
|
AUDIENCE: {genre_audience|[infer from project description if blank]}
|
|
STRUCTURE GUIDE: {outline_structure|[use standard 3-act structure with chapter hooks if blank]}
|
|
|
|
The room is deciding on ONE book concept to write. The trend research
|
|
is in the DELIVERABLES and RAG above -- everyone has read it.
|
|
|
|
???????????????????????????????????????????????
|
|
PRE-ASSIGNED CHARACTER NAMES (fiction projects -- use these exactly)
|
|
???????????????????????????????????????????????
|
|
These names were generated for this project. Do NOT substitute generic defaults
|
|
like Jax, Elara, Ryder, Quinn, Lyra, Knox, or Zane.
|
|
|
|
Protagonist: {protagonist_name}
|
|
Love interest: {love_interest_name}
|
|
Antagonist: {antagonist_name}
|
|
Supporting: {supporting_1}, {supporting_2}, {supporting_3}
|
|
Setting/Town: {place_name}
|
|
|
|
(Non-fiction projects: ignore the character names above -- they are not applicable.)
|
|
???????????????????????????????????????????????
|
|
|
|
From YOUR area of expertise, argue for (or against) a specific concept:
|
|
- Which of the research concepts has the strongest hook for this audience?
|
|
- What protagonist archetype will readers obsess over?
|
|
- What central conflict creates the best chapter-to-chapter tension?
|
|
- What's the opening chapter hook that makes a reader continue?
|
|
- What should the chapter length and structure be?
|
|
|
|
React to what prior speakers argued. Push back on weak ideas. Build on strong ones.
|
|
Be specific -- no vague enthusiasm. Name the concept, argue WHY.
|
|
|
|
When the group has agreed on ONE specific concept (title, hook, protagonist, conflict, structure):
|
|
"consensus_reached: true"
|
|
|
|
- type: think
|
|
agent: first_available
|
|
hint: |
|
|
The boardroom has selected ONE concept. Your job is to write the SINGLE CANONICAL outline.
|
|
|
|
?? CRITICAL RULES:
|
|
- Do NOT present multiple options, alternatives, or "Option A / Option B" variants.
|
|
- Do NOT include chapter ideas from the deliberation rounds that were NOT selected.
|
|
- Write ONE definitive chapter list. If the project calls for 10 chapters, write EXACTLY 10.
|
|
- Every chapter entry must follow the exact format: "- Chapter N: [Title]" (sequential, no gaps).
|
|
|
|
Synthesize the agreed concept into a COMPLETE BOOK OUTLINE document.
|
|
|
|
???????????????????????????????????????????????
|
|
PART 1: CHARACTER BIBLE (fiction only -- omit entirely for non-fiction)
|
|
???????????????????????????????????????????????
|
|
If this is a fiction project, write a Character Bible FIRST:
|
|
|
|
# [Book Title] -- Character Bible
|
|
|
|
## {protagonist_name}
|
|
- Age:
|
|
- Voice: [describe the internal narrative voice -- e.g., "sardonic, first-person, teen"]
|
|
- Background: [2 sentences]
|
|
- Want: [what they think they want]
|
|
- Need: [what they actually need to grow]
|
|
- Fatal flaw: [the trait that creates conflict]
|
|
- Speech pattern: [how they talk -- with examples]
|
|
|
|
## {love_interest_name}
|
|
- Age:
|
|
- Role in story:
|
|
- Why readers root for them:
|
|
- Dynamic with protagonist:
|
|
- Secret or wound they carry:
|
|
|
|
## {antagonist_name}
|
|
- Type: [person / institution / supernatural / internal]
|
|
- Motivation:
|
|
- How they challenge the protagonist:
|
|
|
|
## Supporting Characters
|
|
- {supporting_1}: [role and relationship to protagonist]
|
|
- {supporting_2}: [role and relationship to protagonist]
|
|
- {supporting_3}: [role and relationship to protagonist]
|
|
|
|
## World Rules (if paranormal/fantasy/speculative)
|
|
- [Powers, systems, constraints -- be precise]
|
|
- [What limits them? What are the costs?]
|
|
|
|
## Voice Signatures
|
|
(REQUIRED for fiction -- this section is injected into every chapter to enforce consistent character voice.
|
|
Think carefully: these are NON-NEGOTIABLE identifiers the polisher will enforce.)
|
|
|
|
### [Protagonist name] -- Voice Signature
|
|
- Curse/stress expression scale: "[mild phrase]" = minor irritation | "[mid phrase]" = upset | "[strong phrase]" = furious
|
|
- Verbal tic or sarcasm tell: [e.g., "says 'obviously' when meaning the opposite"]
|
|
- Speech pattern when excited: [e.g., "interrupts own sentences mid-thought"]
|
|
- What they REACH FOR in descriptions: [e.g., "tactile/kinesthetic -- touches things to understand them"]
|
|
- What they NEVER say or do in dialogue: [e.g., "never apologizes directly -- fixes things instead"]
|
|
- Sentence pattern: [e.g., "short declaratives when focused; long run-ons when arguing"]
|
|
|
|
### [Love interest name] -- Voice Signature
|
|
- Formality scale (INVERSELY maps to severity): "[mild formal phrase]" = small problem | "[very formal/archaic phrase]" = disaster
|
|
- What they NEVER say: [e.g., "never says 'I think' -- says 'the evidence suggests' or 'it is probable that'"]
|
|
- Superlative rule: [e.g., "never uses superlatives except for things that matter deeply -- when they do, it stops the room"]
|
|
- Sentence completeness tell: [e.g., "always grammatically complete -- EXCEPT when flustered by protagonist, then fragments"]
|
|
- Speech pattern: [e.g., "precise, no wasted words; anger shows through subject choice and word order, not volume"]
|
|
|
|
???????????????????????????????????????????????
|
|
PART 2: CHAPTER OUTLINE (all projects)
|
|
???????????????????????????????????????????????
|
|
|
|
## Factions
|
|
(REQUIRED for fantasy/speculative -- define named factions so NPCs have memory chapter-to-chapter.
|
|
These entries are compiled into factions.rag.md and injected into each chapter's world state.)
|
|
|
|
### [Faction Name]
|
|
- Home location: [specific -- city, building, region, planet -- not vague]
|
|
- Leader: [name and title]
|
|
- Key NPCs: [name (role/function at this location), name (role), ...]
|
|
- Initial attitude toward protagonist: [ALLIED / NEUTRAL / WATCHFUL / HOSTILE] -- [one sentence reason]
|
|
- Initial attitude toward love interest: [same]
|
|
- What they want: [one sentence faction goal]
|
|
- What would make them hostile: [threshold / trigger]
|
|
- What would make them allied: [threshold / trigger]
|
|
|
|
(Repeat for every faction in the story -- at minimum: protagonist's school/home,
|
|
antagonist's faction, any neutral third party with named NPCs)
|
|
|
|
---
|
|
|
|
# [Book Title]
|
|
## Concept Summary
|
|
- Hook: one sentence that sells the book
|
|
- Genre: {genre_name}
|
|
- Protagonist: name, age, background, flaw, want vs need
|
|
- Antagonist / Central Conflict: what stands in their way
|
|
- Setting: world, time, atmosphere
|
|
- Format: target chapter length ~{chapter_target_words} words, POV (1st/3rd)
|
|
- Target audience: {genre_audience}
|
|
|
|
## Chapter Outline
|
|
?? COMPLETENESS REQUIRED: Write a FULL entry for EVERY chapter. Do NOT abbreviate, skip,
|
|
or summarize multiple chapters with "...omitted for brevity" or similar. If the outline
|
|
calls for 45 chapters, all 45 must appear below with complete entries. Partial outlines
|
|
are a critical error -- Iris writes blind without this information.
|
|
|
|
For each chapter (target {chapter_count} chapters):
|
|
- Chapter N: [Title]
|
|
- Summary: 2-3 sentences of what happens
|
|
- Emotional beat: what the reader feels
|
|
- Hook / cliffhanger: the exact last image or line that makes readers continue
|
|
- Opens at: [location / setting at chapter start]
|
|
- Character state: [protagonist's emotional and physical state as the chapter opens]
|
|
- Dominant tension: [the active conflict or pressure driving this chapter]
|
|
|
|
## Voice & Tone Guide
|
|
Write the Voice & Tone Guide as HARD OPERATING CONSTRAINTS, not aspirations.
|
|
This guide will be copied verbatim into every chapter task as the prose_style context variable --
|
|
treat it as rules the author must follow on every page, not a mood description.
|
|
|
|
Format the Voice & Tone Guide as:
|
|
- POV and tense: [e.g., "First-person present tense throughout."]
|
|
- Sentence rhythm: [e.g., "Vary sentence length; no more than two consecutive complex
|
|
sentences. Short sentences for impact. Fragments allowed for interiority."]
|
|
- Anti-overpolish rules: [e.g., "Not every paragraph needs a memorable line. Use
|
|
functional connective prose. Let observation precede interpretation -- show the moment
|
|
before naming what it means. Avoid clustering aphorisms. Prefer scene motion over
|
|
thesis delivery."]
|
|
- Voice don'ts: [e.g., "No head-hopping. No passive construction during action beats.
|
|
No normalizing the protagonist's distinctive voice."]
|
|
- One example opening sentence that demonstrates all of the above.
|
|
|
|
## Publishing Notes
|
|
Why this book fits the genre and target audience.
|
|
|
|
- type: document
|
|
filename: "{{task_name_slug}}"
|
|
|
|
- type: think
|
|
agent: first_available
|
|
hint: |
|
|
Extract a CLEAN CHAPTER LIST from the outline document above.
|
|
Output ONLY the chapter list in this exact format -- no other text:
|
|
|
|
Chapter [Number]: [Title]
|
|
Summary: [2-3 sentence summary]
|
|
POV: [character name or "narrator"]
|
|
Emotional beat: [what the reader feels]
|
|
Hook: [last image or line that makes readers continue]
|
|
|
|
Rules:
|
|
- Include the chapter number: "Chapter 1: Title", "Chapter 2: Title", etc.
|
|
- Indented metadata lines underneath each chapter (Summary, POV, Emotional beat, Hook)
|
|
- Do NOT include any markdown headers, bullet points, or extra formatting
|
|
- This output will be written to bible/outline.md for StoryForge to read
|
|
|
|
- type: document
|
|
dest_path: "projects/{project.slug}/bible/outline.md"
|
|
commit_msg: "outline: chapter list from book_outline pipeline"
|
|
|
|
- type: package
|
|
packet_type: IntakeResponse
|
|
hint: |
|
|
You are the Project Manager serializing the FINAL OUTLINE DOCUMENT above into chapter tasks.
|
|
|
|
?? STRICT DEDUPLICATION RULES:
|
|
- Use ONLY the chapters listed in PART 2: CHAPTER OUTLINE of the document above.
|
|
- IGNORE all chapter suggestions from the boardroom deliberation rounds.
|
|
- Count ONLY entries formatted as "- Chapter N:" in PART 2. That count = your action count.
|
|
- A 10-chapter outline = exactly 10 actions. A 12-chapter outline = exactly 12 actions.
|
|
- If you produce more actions than chapter entries in PART 2, you have made an error -- recount.
|
|
|
|
For each chapter in PART 2 (and ONLY those chapters), create one create_task action:
|
|
|
|
CRITICAL -- Fill in these values from the outline document:
|
|
- genre_name: the exact genre (e.g., "YA Romance", "Science Fiction", "Literary Fiction")
|
|
- genre_audience: the target audience (e.g., "Young adults 14-18", "Adult romance readers")
|
|
- prose_style: copy the 3-sentence Voice & Tone Guide from the outline exactly
|
|
- chapter_target_words: the target word count per chapter as a number string (e.g., "3500")
|
|
- chapter_ref: zero-padded two-digit chapter number, e.g. "ch-01", "ch-02", ... "ch-18"
|
|
- chapter_number: plain chapter number as a string, e.g. "1", "2", ... "18"
|
|
- character_profiles: copy the COMPLETE "## Voice Signatures" section from PART 1 of
|
|
the outline verbatim. Include every named character's Voice Signature entry.
|
|
If no Voice Signatures section exists, copy the full character entries (## Name blocks)
|
|
from the Character Bible in Part 1. If this is a non-fiction project, leave empty.
|
|
|
|
Rules:
|
|
- EXACTLY one action per chapter from PART 2 of the outline -- no more, no less
|
|
- task_name format: "Write Chapter N: [Chapter Title]" (N is a plain number, 1, 2, 3...)
|
|
- agent_name: always "Iris"
|
|
- task_type: always "book_chapter" for all genres (book_chapter uses conditional_skills
|
|
to load the correct genre guide automatically based on genre_name)
|
|
- description: >
|
|
Include the chapter summary, POV character, emotional beat, cliffhanger, character state,
|
|
dominant tension, and opening location from the chapter outline.
|
|
Start with: "You are writing Chapter N of [Book Title]. [chapter summary].
|
|
POV: [character name]. Opens at: [location]. [Character name] enters this chapter
|
|
[character state]. Dominant tension: [tension]. Closes with: [cliffhanger hook]."
|
|
Also include the Voice & Tone Guide from the outline as the prose_style value --
|
|
copy it exactly. This is a hard constraint for every sentence of the chapter.
|
|
- depends_on: the exact task_name of the PREVIOUS chapter (empty string for Chapter 1)
|
|
|
|
The depends_on chain creates sequential writing -- each chapter waits for the previous to be committed.
|
|
schema:
|
|
actions:
|
|
- type: create_task
|
|
task_name: "string"
|
|
agent_name: "string"
|
|
task_type: "string"
|
|
description: "string"
|
|
depends_on: "string"
|
|
context:
|
|
genre_name: "string"
|
|
genre_audience: "string"
|
|
prose_style: "string"
|
|
chapter_target_words: "string"
|
|
chapter_ref: "string"
|
|
chapter_number: "string"
|
|
character_profiles: "string"
|
|
|
|
- type: package
|
|
packet_type: IntakeResponse
|
|
hint: |
|
|
SPAWN CHARACTER SHEET TASKS
|
|
|
|
From the "## Character Bible" section of PART 1 (or the Voice Signatures section),
|
|
identify every NAMED character who has a speaking role or significant story function.
|
|
|
|
For EACH named character, emit one create_task action:
|
|
- task_name: "Character Sheet: [character full name]"
|
|
- task_type: character_sheet
|
|
- agent_name: Iris
|
|
- context.character_name: exact canonical name as used in the outline
|
|
- context.character_name_slug: lowercase, spaces-to-hyphens, remove non-alphanumeric
|
|
|
|
Example for a character named "Emmeline Voss":
|
|
task_name: "Character Sheet: Emmeline Voss"
|
|
task_type: character_sheet
|
|
agent_name: Iris
|
|
context.character_name: "Emmeline Voss"
|
|
context.character_name_slug: "emmeline-voss"
|
|
|
|
Do NOT include unnamed background characters or characters mentioned only in passing.
|
|
Include at minimum: protagonist(s), love interest(s), antagonist(s), and any character
|
|
with more than one scene.
|
|
schema:
|
|
actions:
|
|
- type: create_task
|
|
task_name: "string"
|
|
agent_name: Iris
|
|
task_type: character_sheet
|
|
context:
|
|
character_name: "string"
|
|
character_name_slug: "string"
|
|
|
|
- type: close
|
|
rag_update: true
|
|
|
|
adjudication:
|
|
enabled: false
|