Sprint 56f: Human-readable file naming - Chapter_N_draft/review_a/b/c/final

This commit is contained in:
David Baity
2026-03-22 18:57:33 -04:00
parent d8b566e7c4
commit 177acdfa35
21 changed files with 940 additions and 64 deletions

View File

@@ -0,0 +1,140 @@
# Cozy Mystery Style Guide — Crimson Leaf Publishing
This guide is authoritative for all cozy mysteries produced at CLP.
Every agent writing or editing cozy mystery content must read and apply this guide.
---
## The Core Principle of the Cozy Mystery
**Cozy mysteries are about community, not crime.**
The murder (or theft, or scandal) is the catalyst. The real story is about a protagonist who is woven into the fabric of a small, richly rendered world, and who solves the crime precisely because they know that world from the inside out. The reader comes for the puzzle — they stay for the people, the place, and the warmth.
A reader who solves the mystery on page two and reads to the end anyway is a reader who loves your characters and your world. That is the goal.
---
## The Cozy Contract: What Readers Expect
Cozy readers make a trust agreement with you on page one:
1. **The world is safe at its core.** There is death, but no graphic gore. There is danger, but the protagonist will not be permanently traumatized. Good wins.
2. **The puzzle is fair.** Every clue needed to solve the mystery is visible to the reader before the reveal. Surprises that depend on information the reader never had feel like cheating.
3. **The community is real.** The recurring cast is the true product. Readers return for the friend group, the rival, the love interest, the eccentric neighbor — not just the mysteries.
4. **The protagonist is warm and competent.** They are not superhuman. They may be messy, funny, or in over their head — but they are genuinely good at noticing, and genuinely care about the people around them.
Break this contract and you lose your readers.
---
## Setting: The Community Is a Character
### The Small-World Rule
The setting must be small enough that everyone knows everyone — and large enough to hold secrets. A New England village. A small-town bakery. A knitting circle. A mountain resort in shoulder season. The boundaries of the world must be clear by chapter three.
### Sensory Grounding
Every scene should carry sensory detail specific to the setting:
- The smell of the bakery at 5 a.m.
- The way the rain sounds on the old church roof
- The texture of the quilt in the protagonist's lap
- The particular creak of the door at the hardware store
Generic settings feel generic. Specific settings feel like home.
### Seasonal and Temporal Rhythm
Cozy mysteries live in time. Use seasonal details, local events (the Harvest Fair, the Summer Reading Program, the town council election) to ground the story in a specific moment. The world has a rhythm; the crime disrupts it; the resolution restores it.
---
## The Amateur Sleuth
### What Makes Them Good at This
Your protagonist does not have detective training. They have **intimacy**. They know:
- Who is lying about being at the bookshop when the murder occurred (they've known her for twenty years)
- That the victim and the council chairman had a grudge going back to the zoning dispute in 2019
- Which back gate is never locked, because they covered for the groundskeeper once
The protagonist's edge is community knowledge, not technique. Honor this — never let them out-detective the detective on procedural grounds. Let them out-know the detective on personal grounds.
### Voice
The protagonist should be warm, observant, and gently funny. They notice things. They care about people, even the irritating ones. Their internal monologue should feel like a thoughtful neighbor narrating — not a thriller protagonist narrating.
### Flaws and Limits
The protagonist gets things wrong. They misread motives. They follow the wrong thread for two chapters. The false solution (thinking it was Character B before discovering it was Character D) is a structural requirement. The protagonist's fallibility makes the final solve satisfying.
---
## The Mystery Architecture
### The Fair-Play Clue Standard
Every clue must be:
- **Present**: The reader sees it when the protagonist does (no off-page discoveries)
- **Discoverable**: If the reader went back to look, they'd find it in plain sight
- **Honest**: No clue should point so obviously to the culprit that it destroys the puzzle, but no clue should be so buried that no reader could ever catch it
### The Suspect Architecture
A well-structured cozy mystery has 46 suspects with:
- **A real motive** (even if they're innocent)
- **An opportunity** (even if alibi'd — alibis can be wrong)
- **A surface personality** (what the community believes about them)
- **A hidden layer** (what they're actually hiding — even innocent people have secrets)
Red herrings must be earned. A red herring that seems planted only to mislead is a broken promise. A red herring that reveals something true about a character — even if not the murderer — is good storytelling.
### Pacing: The Investigation Curve
- **Act 1**: Establish the world and the victim (before death), introduce the protagonist in their element, then the crime
- **Act 2**: Investigation in waves — dead ends, new leads, community disruption, escalating tension (is the protagonist in danger?), false solution
- **Act 3**: Revelation scene (often a confrontation or gathering), resolution, restoration of community order
Each chapter should advance one investigation beat AND one personal/community thread.
---
## The Ensemble Cast
Cozy readers return for the recurring cast. Every series needs:
- **The Best Friend / Confidant**: Usually suspects everyone the protagonist doesn't; bounces theories; provides emotional support and comic relief
- **The Reluctant Authority Figure**: Police detective, sheriff, or inspector who finds the protagonist maddening but secretly relies on them
- **The Foil**: Someone whose values or approach to life productively conflict with the protagonist — not a villain, but a friction point that generates story
- **The Community Anchor**: The character who embodies the setting — the town elder, the longtime business owner, the local historian
- **The Love Interest** (series-long): Slow burn, not fast resolution. Attraction, obstacle, retreat, proximity.
Every chapter should touch at least two of these relationships — ideally through story-relevant scenes, not just check-ins.
---
## Humor: Light, Warm, and Character-Driven
Cozy humor comes from:
- Characters being exactly themselves in absurd situations
- The gap between what a character says and what they mean
- Small-town logic applied to a murder investigation
- The protagonist's internal commentary on the people they love (gently)
**Never**: dark humor, mean-spirited comedy, laughing at characters the reader should care about.
**Always**: warmth first, wit second, never at the expense of the community.
---
## The Cozy Mystery Signature Move
Every great cozy mystery chapter has at least one moment that exemplifies the genre:
- A community scene (the potluck, the town meeting, the shop floor) that feels completely normal EXCEPT that someone is hiding something
- A piece of gossip that turns out to be a clue
- A moment of genuine warmth between protagonist and community member that reminds the reader why this world is worth protecting
- A small, specific, sensory detail about the setting that makes the world feel real and precious
The crime is temporary. The community is permanent. Write every chapter like you believe that.

36
steps/blog_draft_step.yml Normal file
View File

@@ -0,0 +1,36 @@
type: think
max_tokens: 4000
hint: |
BLOG POST DRAFT
ASSIGNMENT
Title: {item_title}
Brief: {item_brief}
Target reader: {audience}
Voice: {voice}
Word count target: {item_target_words} words
Keywords to work in naturally: {item_keywords}
Before writing, confirm:
- TOPIC and TARGET READER
- HOOK: the first sentence drops the reader into a real scenario or provocative question
- PROMISE: the one thing they walk away with
- KEY POINTS to cover (use the brief above)
- TONE and WORD COUNT TARGET
- CALL TO ACTION
Write the full blog post:
- # Title as H1 (make it specific and curiosity-driven, not generic)
- Optional subhead in italics
- Opening hook: first 23 sentences pull the reader in immediately
- Body: 35 sections with bold subheadings, short readable paragraphs
- At least one concrete example, number, or real scenario per section
- "Try This Week" or equivalent action section before the closing
- Memorable closing line that reinforces the promise
Tone rules (apply the voice above):
- Peer-to-peer. Write like a knowledgeable friend, not a corporate brochure.
- Use "you" and "your" — not "one" or "the reader."
- Short sentences preferred. No filler paragraphs.
- No listicles of 10+ items without grouping them into themes.
- Work the keywords in naturally — never stuff them.

View File

@@ -0,0 +1,20 @@
type: think
max_tokens: 4000
model: power
hint: |
BLOG POST POLISH
Read your draft as the target reader would on their phone.
Apply these editorial passes in sequence:
1. CUT — eliminate any warmup sentences, vague generalities, or brochure-speak
2. SHARPEN — every subheading should be scannable and specific
3. HOOK CHECK — does the opening pull in the first two sentences?
4. CTA CHECK — is the call to action specific and doable this week?
5. VOICE CHECK — does it sound human and direct throughout?
6. KEYWORD CHECK — are the keywords present and naturally integrated (not stuffed)?
Target word count: stay within the specified range. Quality over quantity.
Output ONLY the polished final blog post starting with # [Title].
No commentary, no "Pass 2" label, no preamble.

View File

@@ -0,0 +1,60 @@
type: think
hint: |
PASS 0 — BIBLE, CONTINUITY, AND DRAFT PROMPT
GENRE: {genre_name} | AUDIENCE: {genre_audience}
PROSE STYLE GUIDE: {prose_style}
TARGET CHAPTER LENGTH: ~{chapter_target_words} words
GENRE GUIDE: Your skills section contains exactly the guide for {genre_name}. Apply it fully.
CONTINUITY GUARDRAILS:
- Use ONLY the outline / character bible and the immediately previous chapter for continuity.
- Ignore future chapters, editorial reviews, roundtables, polish drafts, and any non-chapter artifacts.
- Never pull facts from a deliverable whose filename indicates a later chapter than {chapter_ref}.
⚠️ CRITICAL: Your task name tells you EXACTLY which chapter to write.
Look at the CURRENT MESSAGE — write THAT chapter and ONLY that chapter.
Do NOT write Chapter 1 unless the message explicitly says "Chapter 1".
STEP 1 — READ THE OUTLINE / CHARACTER BIBLE:
Look at PROJECT DELIVERABLES for the outline file (it contains the Character Bible
if this is a fiction project, and the Chapter Outline for all projects).
Extract and record:
- Protagonist: exact name, voice description, age (if fiction)
- Love interest and supporting characters: exact names and roles (if fiction)
- World rules / constraints (if paranormal or speculative)
- This chapter's summary, emotional beat, and closing hook from the outline
If no outline/bible is available, use the character names and project details
from the task description above — be CONSISTENT throughout the book.
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.
STEP 3 — QUOTE THE ENDING:
Copy the LAST 23 sentences of the previous chapter here, word for word.
Label them: "PREVIOUS CHAPTER ENDED WITH: ..."
Your new chapter MUST pick up from this exact moment.
STEP 4 — BUILD THE DRAFT PROMPT:
Write the exact drafting prompt for the next pass. That prompt must include:
- CHAPTER: Exact chapter number and title (from the task message)
- POV CHARACTER: Whose perspective are we in?
- FIRST LINE: The exact opening sentence, continuing from the previous ending
- EMOTIONAL ARC: What does the protagonist feel at start vs end?
- CHAPTER GOAL: What plot event MUST happen here?
- KEY BEATS: 35 numbered scene beats that will form the chapter
- CLOSING HOOK: Exact last image or line that makes readers continue
- Reminders about continuity, prose style, and target length
STEP 5 — PREVIOUS CHAPTER CHARACTER STATE (if available):
If context contains a block starting with "PREVIOUS CHAPTER CHARACTER STATE:",
include it verbatim in the prompt under the heading:
"CHARACTER CONTINUITY: The previous chapter ended with these character states:
{prev_character_state}"
These states override any outline prediction that conflicts with them — the character
is ALREADY in this emotional/physical state at the start of this chapter.
If no character state was provided, skip this block entirely.
Stop here. Output ONLY the draft prompt. Do NOT write chapter prose yet.

View File

@@ -0,0 +1,63 @@
type: think
hint: |
SELF-CHECK — STRUCTURAL VALIDATION ONLY
You have just written a chapter draft. Your job here is narrow: check the draft against
the structural checklist below, apply ONLY the corrections that fall within scope, and
output the final chapter.
DRAFT TO CHECK:
{steps[1].text}
CHECKLIST — check each item, note any issue found:
1. BEAT & HOOK: Does the chapter reach its intended emotional beat and closing hook
from the PASS 0 draft prompt? Flag if the chapter ends without the planned hook.
2. NAMES & POV: Are all character names and the POV consistent with the bible/outline?
Flag any name that doesn't match the project canon.
3. CONTINUITY TERMS: Do world rules, place names, and timeline references match
project state? Flag any factual break.
4. FORMATTING: Are there obvious section-break artifacts, duplicate headers,
or missing chapter title? Flag and fix.
5. WORD FLOOR: Is the draft within 10% of {chapter_target_words}? Flag only if
critically short (more than 20% under target) — do not expand for style.
6. OPENING HOOK: Check the PASS 0 draft prompt ({steps[0].text}) for a line labeled
"LOCKED PREVIOUS CHAPTER HOOK:". If present, verify the chapter's opening paragraph
directly resolves it. If not, add a brief resolution sentence at the opening —
do not leave a locked hook unanswered.
7. AUTHOR'S INTENT: Check the PASS 0 draft prompt ({steps[0].text}) for a line
starting with "AUTHOR'S INTENT:". If present, confirm the completed chapter
satisfies that intent — note whether it was honored or partially missed.
ALLOWED CORRECTIONS:
- Fix a wrong character name to match the canon name
- Fix a POV slip (e.g., the chapter is 1st-person but one paragraph shifted to 3rd)
- Fix a missing or duplicated chapter title/header
- If the chapter is missing its closing hook entirely, add it as a final paragraph
that matches the hook specified in the draft prompt — no new invention beyond the
planned hook
NOT ALLOWED — do not make any of these changes:
- Improve any sentence for prose quality, rhythm, or lyricism
- Deepen emotional beats or add interiority
- Expand any description or add sensory detail
- Reorder scenes or restructure the chapter
- Add new metaphors, aphorisms, or quotable lines
- Normalize or upgrade the authorial voice
OUTPUT FORMAT:
Start your response with a VALIDATION LOG section:
VALIDATION LOG:
1. BEAT & HOOK: [check pass/fail with brief note]
2. NAMES & POV: [check pass/fail with brief note]
3. CONTINUITY TERMS: [check pass/fail with brief note]
4. FORMATTING: [check pass/fail — note any fixes applied]
5. WORD FLOOR: [check pass/fail — include word count]
6. OPENING HOOK: [check pass/fail or N/A]
7. AUTHOR'S INTENT: [honored / partially missed — note / N/A if no intent set]
Then output the separator on its own line:
---BEGIN CHAPTER---
Then output the final chapter text (corrected where structurally required,
verbatim everywhere else). Start the chapter directly with the chapter title
and first line. No preamble or commentary within the chapter text.

View File

@@ -0,0 +1,62 @@
type: think
model: power
hint: |
PASS 1 — WRITE THE COZY MYSTERY CHAPTER DRAFT
Use the draft prompt below as your exact writing brief:
{steps[0].text}
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 — the reader expects the answer immediately
- If the draft prompt contains a line starting with "AUTHOR'S INTENT:", treat it as a
binding creative directive — your draft must satisfy that intent in full
- Follow the KEY BEATS in order, but write with full scene depth — don't skip
- All character names, the town layout, and recurring elements must be consistent with the bible/outline
- Every dialogue exchange must be tight and voice-distinct
- Show, don't tell — externalize emotion through action, detail, and dialogue
- Every scene beat moves the story forward OR reveals character (no filler)
- 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 you have not reached {chapter_target_words} words, continue
writing — add warm detail, community scenes, extended dialogue beats, and character moments
until you hit the target. Short chapters will be REJECTED in adjudication.
DRAFTING DISCIPLINE — apply these on every page:
- {prose_style} is a hard constraint, not decoration
- Not every paragraph needs a memorable or quotable line — use functional connective prose
- Let observation precede interpretation: show the moment before naming what it means
- Avoid clustering aphorisms or thesis-style sentences back to back
- Prefer scene motion over thesis delivery — action and dialogue carry meaning
- Write ONE complete draft now. Do NOT self-polish. Reviewers will give feedback downstream.
COZY MYSTERY CRAFT RULES — these apply on every page:
- THE SETTING IS A CHARACTER: The small town, the bakery, the knitting circle — these are
not backdrop, they are the emotional heart of the series. Give the setting sensory life on
every page: smells, textures, seasonal details, the rhythms of community life.
- COZY WARMTH IS NON-NEGOTIABLE: There is death, but no graphic gore. Danger is present, but
the world is ultimately safe and resolvable. Readers come here for comfort. The protagonist
is competent, good-hearted, and embedded in a community that matters to them.
- CLUE INTEGRITY: Every clue dropped must be discoverable by the reader in retrospect.
No solutions pulled from nowhere. Suspects and red herrings are played fair — they have
real motives, even if they didn't commit the crime.
- THE AMATEUR SLEUTH VOICE: Your protagonist is not a professional detective. They notice
things because they KNOW this community, these people, these routines. The edge they have
over police is intimacy, not technique. Honor that — let their community knowledge be their
superpower.
- ENSEMBLE IS EVERYTHING: Cozy mysteries live or die on the recurring cast. Every chapter
should feel the community around the protagonist: the best friend who over-shares, the
rival who isn't entirely wrong, the authority figure who is simultaneously helpful and
obstructive. These relationships are the true product.
- HUMOR AND HEART: Cozy mysteries are warm books. There must be humor — light, character-
driven, never mean-spirited. There must be heart — the protagonist cares about these people
and this place, even the irritating ones.
- PACING: Cozy chapters move through scenes naturally, never rushed. A chapter might include
an investigation beat, a community scene, and a personal moment. Balance all three.
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.

View File

@@ -0,0 +1,62 @@
type: package
hint: |
The draft chapter has been written, self-checked, and committed.
CRITICAL — include the `chapter_text` field:
Copy the COMPLETE chapter text from the self-check output (step 2 — the final chapter draft)
into the `chapter_text` field.
Reviewers have NO other way to access the chapter content.
Do NOT summarize or truncate it — include every word of the chapter.
Now spawn the three independent editorial reviewers
and the roundtable debate. Use the exact task_names shown — the roundtable depends_on all three.
schema:
chapter_text: string
spawn:
- task_type: chapter_review
task_name: "Review (Devon): {chapter_ref}"
agent_name: Devon
priority: 6
context:
chapter_text: "{chapter_text}"
review_focus: developmental
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
- task_type: chapter_review
task_name: "Review (Lane): {chapter_ref}"
agent_name: Lane
priority: 6
context:
chapter_text: "{chapter_text}"
review_focus: line
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
- task_type: chapter_review
task_name: "Review (Cora): {chapter_ref}"
agent_name: Cora
priority: 6
context:
chapter_text: "{chapter_text}"
review_focus: continuity
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
- task_type: chapter_roundtable
task_name: "Roundtable: {chapter_ref}"
agents:
- Devon
- Lane
- Cora
priority: 7
context:
chapter_text: "{chapter_text}"
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
chapter_target_words: "{chapter_target_words}"
depends_on:
- "Review (Devon): {chapter_ref}"
- "Review (Lane): {chapter_ref}"
- "Review (Cora): {chapter_ref}"

View File

@@ -0,0 +1,57 @@
type: think
model: power
hint: |
PASS 1 — WRITE THE ROMANCE CHAPTER DRAFT
Use the draft prompt below as your exact writing brief:
{steps[0].text}
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 — the reader expects the answer immediately
- If the draft prompt contains a line starting with "AUTHOR'S INTENT:", treat it as a
binding creative directive — your draft must satisfy that intent in full
- Follow the KEY BEATS in order, but write with full scene depth — don't skip
- All character names must be consistent with the bible/outline
- Every dialogue exchange must be tight and voice-distinct
- Show, don't tell — externalize emotion through action, detail, and dialogue
- Every scene beat moves the story forward OR reveals character (no filler)
- 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 you have not reached {chapter_target_words} words, continue
writing — add interiority, sensory detail, extended dialogue beats, and scene transitions
until you hit the target. Short chapters will be REJECTED in adjudication.
DRAFTING DISCIPLINE — apply these on every page:
- {prose_style} is a hard constraint, not decoration
- Not every paragraph needs a memorable or quotable line — use functional connective prose
- Let observation precede interpretation: show the moment before naming what it means
- Avoid clustering aphorisms or thesis-style sentences back to back
- Prefer scene motion over thesis delivery — action and dialogue carry meaning
- Write ONE complete draft now. Do NOT self-polish. Reviewers will give feedback downstream.
ROMANCE-SPECIFIC CRAFT RULES — these apply on every page:
- TENSION IS THE PRODUCT: Every scene between leads must have an undercurrent of want,
resistance, or denial. The reader must feel the pull even in mundane exchanges.
- THE SLOW BURN BANK: Each chapter should deposit into the romantic tension account.
A lingering glance. An interrupted touch. A sentence that almost says something.
No withdrawal (resolution) until the story earns it.
- INTERNAL STAKES: Romantic conflict is internal as much as external. What is she afraid
of? What is she protecting herself from? Give us the emotional wound and let it shape
every interaction with the love interest.
- SEXUAL TENSION (if appropriate to heat level): Not explicit in narrative unless the
project specifies — but physical awareness is always there. The smell of his jacket.
The accidental brush of hands. The protagonist is hyper-aware of proximity.
- SWOON MOMENTS: Plan at least one moment per chapter that the reader will screenshot
and send to a friend. One line, one gesture, one micro-scene that is memorable.
- DIALOGUE IS SUBTEXT: Romance characters rarely say what they mean. Give us the conversation
underneath the conversation. She says "It's fine." She means "I need you to fight for this."
- PACING: Slow build. Do NOT resolve the primary romantic tension early. Push through to
the black moment before the earned resolution.
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.

View File

@@ -0,0 +1,60 @@
type: think
model: power
hint: |
PASS 1 — WRITE THE SCIENCE FICTION CHAPTER DRAFT
Use the draft prompt below as your exact writing brief:
{steps[0].text}
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 — the reader expects the answer immediately
- If the draft prompt contains a line starting with "AUTHOR'S INTENT:", treat it as a
binding creative directive — your draft must satisfy that intent in full
- Follow the KEY BEATS in order, but write with full scene depth — don't skip
- All character names, alien species, and world terminology must be consistent with the bible/outline
- Every dialogue exchange must be tight and voice-distinct
- Show, don't tell — externalize emotion through action, detail, and dialogue
- Every scene beat moves the story forward OR reveals character (no filler)
- 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 you have not reached {chapter_target_words} words, continue
writing — add interiority, sensory detail, extended dialogue beats, and scene transitions
until you hit the target. Short chapters will be REJECTED in adjudication.
DRAFTING DISCIPLINE — apply these on every page:
- {prose_style} is a hard constraint, not decoration
- Not every paragraph needs a memorable or quotable line — use functional connective prose
- Let observation precede interpretation: show the moment before naming what it means
- Avoid clustering aphorisms or thesis-style sentences back to back
- Prefer scene motion over thesis delivery — action and dialogue carry meaning
- Write ONE complete draft now. Do NOT self-polish. Reviewers will give feedback downstream.
SCIENCE FICTION CRAFT RULES — these apply on every page:
- WORLDBUILDING BY IMMERSION: Do not pause to explain your world. Characters live in it.
Let technology, politics, and history emerge through action and dialogue, not exposition.
"She scanned for temporal residue" tells us about the world without stopping to define it.
- INTERNAL LOGIC IS NON-NEGOTIABLE: Your world's rules must be established and honored.
If FTL travel has a cost, that cost appears on every jump. If psionics tire the user,
fatigue is present. Consistency is the contract with the reader.
- THE IDEA IS A CHARACTER: Science fiction ideas (the alien biology, the AI ethics
dilemma, the political paradox) are as much a character as any person. Give the idea
presence in every chapter — don't let it fade into backdrop.
- SCALE WITHOUT LOSING THE HUMAN: The universe can be vast, the stakes cosmic — but anchor
each chapter in one person's experience, one pair of hands, one heartbeat. The reader
cannot feel interstellar scale; they CAN feel one soldier's fear before the breach.
- SENSE OF WONDER: Every chapter should have at least one moment that enlarges the reader's
imagination — a view, a revelation, a technology, a moral question — that makes the
universe feel genuinely strange and genuinely real at the same time.
- ALIEN AUTHENTICITY: Non-human characters must not be humans in costumes. Alien cognition,
alien values, alien humor. If a species has a different relationship with time or memory,
show it in their dialogue and choices.
- PACING: Alternate tension with revelation. Each chapter should push the external plot
forward AND deliver one new piece of world or character understanding.
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.

View File

@@ -0,0 +1,53 @@
type: think
model: power
hint: |
PASS 1 — WRITE THE YA CHAPTER DRAFT
Use the draft prompt below as your exact writing brief:
{steps[0].text}
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 — the reader expects the answer immediately
- If the draft prompt contains a line starting with "AUTHOR'S INTENT:", treat it as a
binding creative directive — your draft must satisfy that intent in full
- Follow the KEY BEATS in order, but write with full scene depth — don't skip
- All character names must be consistent with the bible/outline
- Every dialogue exchange must be tight and voice-distinct
- Show, don't tell — externalize emotion through action, detail, and dialogue
- Every scene beat moves the story forward OR reveals character (no filler)
- 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 you have not reached {chapter_target_words} words, continue
writing — add interiority, sensory detail, extended dialogue beats, and scene transitions
until you hit the target. Short chapters will be REJECTED in adjudication.
DRAFTING DISCIPLINE — apply these on every page:
- {prose_style} is a hard constraint, not decoration
- Not every paragraph needs a memorable or quotable line — use functional connective prose
- Let observation precede interpretation: show the moment before naming what it means
- Avoid clustering aphorisms or thesis-style sentences back to back
- Prefer scene motion over thesis delivery — action and dialogue carry meaning
- Write ONE complete draft now. Do NOT self-polish. Reviewers will give feedback downstream.
YA-SPECIFIC CRAFT RULES — these apply on every page:
- AUTHENTIC TEEN VOICE: Your protagonist thinks and speaks like an actual teenager.
Not a precocious adult, not a caricature. Short, fragmented thoughts. Reactions before
analysis. The world feels high-stakes even for "small" problems — that's real teen experience.
- EMOTIONAL STAKES: Everything feels life-or-death. A rumor is social death. Being left out
is gut-punch lonely. A first kiss is epoch-defining. Honor this even if the plot is bigger.
- NO ADULT WISDOM INJECTION: Your teen protagonist does not land on wise, balanced conclusions.
They overcorrect, lash out, apologize awkwardly, misread situations. Growth is messy.
- INTERIORITY IS CORE: In YA, the internal monologue IS the story. External event + internal
reaction × 3 = a chapter. Give us at least two beats of deep interiority per scene.
- FRIENDSHIP/BELONGING: Even if the plot is about monsters, the emotional core is about
whether the protagonist belongs, is loved, is seen. Keep that alive in every chapter.
- PACING: YA chapters end on hooks. Momentum over description. No scene lasts longer than
it earns. Get out of scenes early.
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.

View File

@@ -0,0 +1,118 @@
name: blog_series_outline
description: "Plan a blog series — generate a numbered multi-post outline with title, brief, and keywords per post."
debug: true
system: agent_prompt
agent_prompt:
- "= identity.md"
- "agent.rag.json"
sections:
- agent
- project
- rag
- deliverables
- message
- instructions
steps:
- type: think
hint: |
You are planning a blog series for the project described above.
Read the project description and current message to understand:
- SERIES TOPIC: What is the overall theme or subject?
- TARGET READER: Who is this series for? What is their experience level?
- VOICE: What tone should the posts use? (e.g., conversational, authoritative, peer-to-peer)
- POST COUNT: How many posts? (default to 10 if not specified)
- POST LENGTH: Target word count per post? (default to 800-1200 if not specified)
First, organize the series into 3-5 thematic clusters. Each cluster covers one
dimension of the topic. This ensures the series doesn't repeat itself and builds
progressively.
Think through:
- What does a beginner need to know first?
- What intermediate topics will add depth?
- What advanced or nuanced topics complete the picture?
- What "quick win" or highly shareable posts should be included?
Output a CLUSTER PLAN:
Cluster A: [Name]
- [3-4 post ideas that belong here]
Cluster B: [Name]
...
Stop here — the numbered outline comes in the next step.
- type: think
model: power
hint: |
Using the cluster plan above, write the COMPLETE numbered outline.
For each post, output exactly this format on ONE LINE:
N. [Post Title] — [2-3 sentence brief covering what the post does]. Keywords: [kw1, kw2, kw3]
Rules:
- Titles must be specific and curiosity-driven (not "Introduction to X" — instead "Why X breaks and how to fix it")
- Briefs must be 2-3 sentences describing the actual content (not the title restated)
- 3 keywords per post: 1 primary, 2 supporting (naturally integrated, not stuffed)
- Number sequentially from 1 to N
- Posts should build logically — early posts don't assume knowledge from later posts
- Vary post types: how-to, analysis, checklist, case study, opinion, beginner explainer
- At least 2 posts should be "highly shareable" (strong opinion, surprising finding, or practical quick-win)
Output ONLY the numbered list. No prose, no cluster headings, no commentary.
- type: document
filename: "{{task_name_slug}}-outline"
- type: package
packet_type: IntakeResponse
hint: |
Convert every post from the numbered blog outline above into a create_task action.
RULES:
- One action per post, in order
- task_name: "Write Post N: [Post Title]" where N is the exact post number from the outline
- agent_name: "Iris"
- task_type: "blog_write"
- description: Start with the post title, then the 2-3 sentence brief, then "Keywords: [keywords]"
Full format:
"[Post Title]
[Full brief from the outline — 2-3 sentences describing what the post covers]
Keywords: [comma-separated keywords from the outline]"
- depends_on: "" (all posts can be written in parallel)
Produce ONLY the numbered actions. No prose, no commentary.
schema:
actions:
- type: create_task
task_name: "string"
agent_name: "string"
task_type: "blog_write"
description: "string"
depends_on: "string"
- type: close
rag_update: true
adjudication:
enabled: true
pass_threshold: 65
deliverable_type: coordination
criteria:
completeness:
weight: 35
description: "All posts have title, brief, and keywords in the correct format"
variety:
weight: 30
description: "Posts cover different angles, formats, and difficulty levels — no redundancy"
progression:
weight: 20
description: "Series builds logically; posts don't assume knowledge the series hasn't covered"
shareability:
weight: 15
description: "At least 2 posts have obvious viral or sharing potential"

View File

@@ -3,6 +3,13 @@ description: "Write a standalone blog post — draft, polish, deliver."
debug: true
system: agent_prompt
requires:
- item_title
- item_brief
- voice
- audience
- item_target_words
skills:
- guides/BlogWritingGuide.md
@@ -21,55 +28,10 @@ sections:
- instructions
steps:
- type: think
max_tokens: 4000
hint: |
Your task message contains the blog content brief. Follow it exactly.
Before writing, confirm:
- TOPIC and TARGET READER
- HOOK: the first sentence drops the reader into a real scenario or provocative question
- PROMISE: the one thing they walk away with
- KEY POINTS to cover
- TONE and WORD COUNT TARGET
- CALL TO ACTION
Write the full blog post:
- # Title as H1 (make it specific and curiosity-driven, not generic)
- Optional subhead in italics
- Opening hook: first 23 sentences pull the reader in immediately
- Body: 35 sections with bold subheadings, short readable paragraphs
- At least one concrete example, number, or real scenario per section
- "Try This Week" or equivalent action section before the closing
- Memorable closing line that reinforces the promise
Tone rules:
- Peer-to-peer. Write like a knowledgeable friend, not a corporate brochure.
- Use "you" and "your" — not "one" or "the reader."
- Short sentences preferred. No filler paragraphs.
- No listicles of 10+ items without grouping them into themes.
- type: think
max_tokens: 4000
model: power
hint: |
Read your draft as the target reader would on their phone.
Apply these editorial passes in sequence:
1. CUT — eliminate any warmup sentences, vague generalities, or brochure-speak
2. SHARPEN — every subheading should be scannable and specific
3. HOOK CHECK — does the opening pull in the first two sentences?
4. CTA CHECK — is the call to action specific and doable this week?
5. VOICE CHECK — does it sound human and direct throughout?
Target word count: stay within the specified range. Quality over quantity.
Output ONLY the polished final blog post starting with # [Title].
No commentary, no "Pass 2" label, no preamble.
- include: steps/blog_draft_step.yml
- include: steps/blog_polish_step.yml
- type: document
filename: "{{task_name_slug}}"
- type: close
rag_update: true

View File

@@ -10,15 +10,25 @@ requires:
- chapter_target_words
- chapter_ref
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"
# Genre-aware guide use: All three genre guides are injected so this template
# can serve any fiction genre. Apply ONLY the guide that matches {genre_name}.
# Ignore guides for other genres — conflicting craft signals from non-matching
# genres will degrade the chapter. The active genre is always {genre_name}.
# Genre-aware guide use: Only the guide whose genre_contains keywords match {genre_name}
# is injected. The pipeline skips non-matching guides entirely, so there are no
# conflicting craft signals from other genres.
agent_prompt:
- "= identity.md"
@@ -43,8 +53,7 @@ steps:
PROSE STYLE GUIDE: {prose_style}
TARGET CHAPTER LENGTH: ~{chapter_target_words} words
⚠️ SKILLS & GUIDES NOTE: You have multiple genre guides available.
Apply ONLY the guide that matches {genre_name}. Ignore guides for other genres.
GENRE GUIDE: Your skills section contains exactly the guide for {genre_name}. Apply it fully.
CONTINUITY GUARDRAILS:
- Use ONLY the outline / character bible and the immediately previous chapter for continuity.
@@ -86,6 +95,15 @@ steps:
- CLOSING HOOK: Exact last image or line that makes readers continue
- Reminders about continuity, prose style, and target length
STEP 5 — PREVIOUS CHAPTER CHARACTER STATE (if available):
If context contains a block starting with "PREVIOUS CHAPTER CHARACTER STATE:",
include it verbatim in the prompt under the heading:
"CHARACTER CONTINUITY: The previous chapter ended with these character states:
{prev_character_state}"
These states override any outline prediction that conflicts with them — the character
is ALREADY in this emotional/physical state at the start of this chapter.
If no character state was provided, skip this block entirely.
Stop here. Output ONLY the draft prompt. Do NOT write chapter prose yet.
- type: think
@@ -101,6 +119,8 @@ steps:
- 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 — the reader expects the answer immediately
- If the draft prompt contains a line starting with "AUTHOR'S INTENT:", treat it as a
binding creative directive — your draft must satisfy that intent in full
- Follow the KEY BEATS in order, but write with full scene depth — don't skip
- All character names must be consistent with the bible/outline
- Every dialogue exchange must be tight and voice-distinct
@@ -151,6 +171,9 @@ steps:
"LOCKED PREVIOUS CHAPTER HOOK:". If present, verify the chapter's opening paragraph
directly resolves it. If not, add a brief resolution sentence at the opening —
do not leave a locked hook unanswered.
7. AUTHOR'S INTENT: Check the PASS 0 draft prompt ({steps[0].text}) for a line
starting with "AUTHOR'S INTENT:". If present, confirm the completed chapter
satisfies that intent — note whether it was honored or partially missed.
ALLOWED CORRECTIONS:
- Fix a wrong character name to match the canon name
@@ -168,12 +191,26 @@ steps:
- Add new metaphors, aphorisms, or quotable lines
- Normalize or upgrade the authorial voice
Output the FINAL CHAPTER (corrected where structurally required, verbatim everywhere else).
Start directly with the chapter title and first line.
No preamble, no validation notes, no commentary — ONLY the chapter text.
OUTPUT FORMAT:
Start your response with a VALIDATION LOG section:
VALIDATION LOG:
1. BEAT & HOOK: [check pass/fail with brief note]
2. NAMES & POV: [check pass/fail with brief note]
3. CONTINUITY TERMS: [check pass/fail with brief note]
4. FORMATTING: [check pass/fail — note any fixes applied]
5. WORD FLOOR: [check pass/fail — include word count]
6. OPENING HOOK: [check pass/fail or N/A]
7. AUTHOR'S INTENT: [honored / partially missed — note / N/A if no intent set]
Then output the separator on its own line:
---BEGIN CHAPTER---
Then output the final chapter text (corrected where structurally required,
verbatim everywhere else). Start the chapter directly with the chapter title
and first line. No preamble or commentary within the chapter text.
- type: document
filename: "chapter-{chapter_ref}"
filename: "Chapter_{chapter_number}_draft"
- type: package
hint: |
@@ -194,34 +231,43 @@ steps:
task_name: "Review (Devon): {chapter_ref}"
agent_name: Devon
priority: 6
_if: "not meta.is_locked"
context:
chapter_text: "{chapter_text}"
review_focus: developmental
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
chapter_number: "{chapter_number}"
review_letter: "a"
- task_type: chapter_review
task_name: "Review (Lane): {chapter_ref}"
agent_name: Lane
priority: 6
_if: "not meta.is_locked"
context:
chapter_text: "{chapter_text}"
review_focus: line
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
chapter_number: "{chapter_number}"
review_letter: "b"
- task_type: chapter_review
task_name: "Review (Cora): {chapter_ref}"
agent_name: Cora
priority: 6
_if: "not meta.is_locked"
context:
chapter_text: "{chapter_text}"
review_focus: continuity
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
chapter_number: "{chapter_number}"
review_letter: "c"
- task_type: chapter_roundtable
task_name: "Roundtable: {chapter_ref}"
@@ -230,6 +276,7 @@ steps:
- Lane
- Cora
priority: 7
_if: "not meta.is_locked"
context:
chapter_text: "{chapter_text}"
genre_name: "{genre_name}"

View File

@@ -211,7 +211,13 @@ steps:
- 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"
- 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.

View File

@@ -76,7 +76,7 @@ steps:
No commentary, no change log, no editorial notes — ONLY the chapter.
- type: document
filename: "{{task_name_slug}}-polished"
filename: "Chapter_{chapter_number}_final"
- type: close
rag_update: true

View File

@@ -66,7 +66,7 @@ steps:
Reserve judgment on full rewrites — that decision belongs to the roundtable.
- type: document
filename: "review-{chapter_ref}-{agent_slug}"
filename: "Chapter_{chapter_number}_review_{review_letter}"
- type: close
rag_update: false

View File

@@ -110,6 +110,7 @@ steps:
genre_name: "{genre_name}"
genre_audience: "{genre_audience}"
chapter_ref: "{chapter_ref}"
chapter_number: "{chapter_number}"
chapter_target_words: "{chapter_target_words}"
adjudication:

View File

@@ -0,0 +1,33 @@
name: cozy_mystery_chapter
description: "Write one cozy mystery chapter — fair-play clues, warm community life, and an amateur sleuth who wins through intimacy not expertise."
extends: book_chapter
# Cozy mystery projects load the genre guide from skills
skills:
- guides/CozyMysteryGuide.md
steps:
- include: steps/chapter_pass0_bible.yml
- include: steps/cozy_chapter_pass1_draft.yml
- include: steps/chapter_selfcheck.yml
- type: document
filename: "chapter-{chapter_ref}"
- include: steps/fiction_editorial_spawn.yml
- type: close
rag_update: true
adjudication:
pass_threshold: 80
criteria:
clue_integrity:
weight: 20
description: "Any clue or red herring introduced is discoverable in retrospect — nothing comes from nowhere; suspects have real motives"
cozy_atmosphere:
weight: 15
description: "The chapter feels warm, community-rooted, and safe — the world is troubled but ultimately resolvable; no gratuitous darkness"
ensemble_presence:
weight: 15
description: "Recurring cast members contribute meaningfully — the community feels alive, not just backdrop"
prose_quality:
weight: 20
description: "Writing is vivid and readable; voice is consistent with {prose_style}"

View File

@@ -0,0 +1,33 @@
name: romance_chapter
description: "Write one Romance chapter — sexual tension, slow burn, and earned emotional stakes."
extends: book_chapter
# Romance projects load the Romance guide directly
skills:
- guides/RomanceFictionGuide.md
steps:
- include: steps/chapter_pass0_bible.yml
- include: steps/romance_chapter_pass1_draft.yml
- include: steps/chapter_selfcheck.yml
- type: document
filename: "chapter-{chapter_ref}"
- include: steps/fiction_editorial_spawn.yml
- type: close
rag_update: true
adjudication:
pass_threshold: 80
criteria:
romantic_tension:
weight: 25
description: "Chapter builds or maintains palpable tension between leads; slow-burn deposit honored"
swoon_moment:
weight: 15
description: "At least one memorable micro-scene that captures the romantic promise of the story"
emotional_authenticity:
weight: 15
description: "Internal stakes are clear; the protagonist's resistance/want feels real, not contrived"
prose_quality:
weight: 20
description: "Writing is vivid and readable; voice is consistent with {prose_style}"

View File

@@ -0,0 +1,33 @@
name: scifi_chapter
description: "Write one science fiction chapter — internal logic, sense of wonder, and human stakes inside a vast universe."
extends: book_chapter
# Sci-fi projects load the SciFi guide directly
skills:
- guides/SciFiFictionGuide.md
steps:
- include: steps/chapter_pass0_bible.yml
- include: steps/scifi_chapter_pass1_draft.yml
- include: steps/chapter_selfcheck.yml
- type: document
filename: "chapter-{chapter_ref}"
- include: steps/fiction_editorial_spawn.yml
- type: close
rag_update: true
adjudication:
pass_threshold: 80
criteria:
worldbuilding_consistency:
weight: 20
description: "World rules established earlier in the manuscript are honored — no retcons or forgotten constraints"
internal_logic:
weight: 15
description: "Technology, alien biology, political systems, and physics behave consistently within the story's own rules"
sense_of_wonder:
weight: 15
description: "At least one moment per chapter enlarges the reader's imagination — a revelation, a view, a moral question"
prose_quality:
weight: 20
description: "Writing is vivid and readable; voice is consistent with {prose_style}"

30
templates/ya_chapter.yml Normal file
View File

@@ -0,0 +1,30 @@
name: ya_chapter
description: "Write one YA chapter — authentic teen voice, emotional stakes, and fast pacing."
extends: book_chapter
# YA projects load the YA guide directly (no conditional matching needed)
skills:
- guides/YAFictionGuide.md
steps:
- include: steps/chapter_pass0_bible.yml
- include: steps/ya_chapter_pass1_draft.yml
- include: steps/chapter_selfcheck.yml
- type: document
filename: "chapter-{chapter_ref}"
- include: steps/fiction_editorial_spawn.yml
- type: close
rag_update: true
adjudication:
pass_threshold: 82
criteria:
ya_voice_authenticity:
weight: 20
description: "Protagonist has an authentic teen voice — not an adult impersonating a teenager"
emotional_stakes:
weight: 15
description: "Chapter stakes feel genuinely high to the teen protagonist, even if objectively small"
prose_quality:
weight: 20
description: "Writing is vivid and readable; voice is consistent with {prose_style}"