333 lines
16 KiB
YAML
333 lines
16 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
|
||
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 {prose_style} —
|
||
treat it as rules the author must follow on every page, not a mood description.
|
||
|
||
PROSE STYLE: {prose_style}
|
||
|
||
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 [Title]
|
||
Summary: [2-3 sentence summary]
|
||
POV: [character name or "narrator"]
|
||
|
||
Chapter [Title]
|
||
Summary: [2-3 sentence summary]
|
||
POV: [character name or "narrator"]
|
||
|
||
Rules:
|
||
- One "Chapter [Title]" line per chapter, in order
|
||
- Indented metadata lines underneath each chapter (Summary, POV)
|
||
- Do NOT include chapter numbers — just the title
|
||
- Do NOT include any markdown headers, bullet points, or extra formatting
|
||
- This output will be parsed by StoryForge's outline sync engine
|
||
|
||
- 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: choose based on genre_name from the outline:
|
||
* "ya_chapter" → if genre_name contains "YA" or "Young Adult"
|
||
* "romance_chapter" → if genre_name contains "Romance" or "Contemporary Romance"
|
||
* "scifi_chapter" → if genre_name contains "Science Fiction" or "Sci-Fi" or "Space Opera"
|
||
* "cozy_mystery_chapter" → if genre_name contains "Cozy Mystery" or "Mystery"
|
||
* "adult_novel_chapter" → if genre_name contains "Adult" and not YA
|
||
* "book_chapter" → all other genres (default)
|
||
- 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
|