Sprint 56f: Human-readable file naming - Chapter_N_draft/review_a/b/c/final
This commit is contained in:
140
skills/guides/CozyMysteryGuide.md
Normal file
140
skills/guides/CozyMysteryGuide.md
Normal 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 4–6 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
36
steps/blog_draft_step.yml
Normal 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 2–3 sentences pull the reader in immediately
|
||||||
|
- Body: 3–5 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.
|
||||||
20
steps/blog_polish_step.yml
Normal file
20
steps/blog_polish_step.yml
Normal 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.
|
||||||
60
steps/chapter_pass0_bible.yml
Normal file
60
steps/chapter_pass0_bible.yml
Normal 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 2–3 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: 3–5 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.
|
||||||
63
steps/chapter_selfcheck.yml
Normal file
63
steps/chapter_selfcheck.yml
Normal 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.
|
||||||
62
steps/cozy_chapter_pass1_draft.yml
Normal file
62
steps/cozy_chapter_pass1_draft.yml
Normal 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.
|
||||||
62
steps/fiction_editorial_spawn.yml
Normal file
62
steps/fiction_editorial_spawn.yml
Normal 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}"
|
||||||
57
steps/romance_chapter_pass1_draft.yml
Normal file
57
steps/romance_chapter_pass1_draft.yml
Normal 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.
|
||||||
60
steps/scifi_chapter_pass1_draft.yml
Normal file
60
steps/scifi_chapter_pass1_draft.yml
Normal 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.
|
||||||
53
steps/ya_chapter_pass1_draft.yml
Normal file
53
steps/ya_chapter_pass1_draft.yml
Normal 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.
|
||||||
118
templates/blog_series_outline.yml
Normal file
118
templates/blog_series_outline.yml
Normal 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"
|
||||||
@@ -3,6 +3,13 @@ description: "Write a standalone blog post — draft, polish, deliver."
|
|||||||
debug: true
|
debug: true
|
||||||
system: agent_prompt
|
system: agent_prompt
|
||||||
|
|
||||||
|
requires:
|
||||||
|
- item_title
|
||||||
|
- item_brief
|
||||||
|
- voice
|
||||||
|
- audience
|
||||||
|
- item_target_words
|
||||||
|
|
||||||
skills:
|
skills:
|
||||||
- guides/BlogWritingGuide.md
|
- guides/BlogWritingGuide.md
|
||||||
|
|
||||||
@@ -21,55 +28,10 @@ sections:
|
|||||||
- instructions
|
- instructions
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- type: think
|
- include: steps/blog_draft_step.yml
|
||||||
max_tokens: 4000
|
- include: steps/blog_polish_step.yml
|
||||||
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 2–3 sentences pull the reader in immediately
|
|
||||||
- Body: 3–5 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.
|
|
||||||
|
|
||||||
- type: document
|
- type: document
|
||||||
filename: "{{task_name_slug}}"
|
filename: "{{task_name_slug}}"
|
||||||
|
|
||||||
- type: close
|
- type: close
|
||||||
rag_update: true
|
rag_update: true
|
||||||
|
|
||||||
|
|||||||
@@ -10,15 +10,25 @@ requires:
|
|||||||
- chapter_target_words
|
- chapter_target_words
|
||||||
- chapter_ref
|
- chapter_ref
|
||||||
|
|
||||||
skills:
|
conditional_skills:
|
||||||
- guides/YAFictionGuide.md
|
- path: guides/YAFictionGuide.md
|
||||||
- guides/RomanceFictionGuide.md
|
genre_contains:
|
||||||
- guides/SciFiFictionGuide.md
|
- "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
|
# Genre-aware guide use: Only the guide whose genre_contains keywords match {genre_name}
|
||||||
# can serve any fiction genre. Apply ONLY the guide that matches {genre_name}.
|
# is injected. The pipeline skips non-matching guides entirely, so there are no
|
||||||
# Ignore guides for other genres — conflicting craft signals from non-matching
|
# conflicting craft signals from other genres.
|
||||||
# genres will degrade the chapter. The active genre is always {genre_name}.
|
|
||||||
|
|
||||||
agent_prompt:
|
agent_prompt:
|
||||||
- "= identity.md"
|
- "= identity.md"
|
||||||
@@ -43,8 +53,7 @@ steps:
|
|||||||
PROSE STYLE GUIDE: {prose_style}
|
PROSE STYLE GUIDE: {prose_style}
|
||||||
TARGET CHAPTER LENGTH: ~{chapter_target_words} words
|
TARGET CHAPTER LENGTH: ~{chapter_target_words} words
|
||||||
|
|
||||||
⚠️ SKILLS & GUIDES NOTE: You have multiple genre guides available.
|
GENRE GUIDE: Your skills section contains exactly the guide for {genre_name}. Apply it fully.
|
||||||
Apply ONLY the guide that matches {genre_name}. Ignore guides for other genres.
|
|
||||||
|
|
||||||
CONTINUITY GUARDRAILS:
|
CONTINUITY GUARDRAILS:
|
||||||
- Use ONLY the outline / character bible and the immediately previous chapter for continuity.
|
- 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
|
- CLOSING HOOK: Exact last image or line that makes readers continue
|
||||||
- Reminders about continuity, prose style, and target length
|
- 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.
|
Stop here. Output ONLY the draft prompt. Do NOT write chapter prose yet.
|
||||||
|
|
||||||
- type: think
|
- type: think
|
||||||
@@ -101,6 +119,8 @@ steps:
|
|||||||
- Start with the FIRST LINE you planned — make it continue naturally from the previous chapter
|
- 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:",
|
- 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
|
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
|
- 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
|
- All character names must be consistent with the bible/outline
|
||||||
- Every dialogue exchange must be tight and voice-distinct
|
- 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
|
"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 —
|
directly resolves it. If not, add a brief resolution sentence at the opening —
|
||||||
do not leave a locked hook unanswered.
|
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:
|
ALLOWED CORRECTIONS:
|
||||||
- Fix a wrong character name to match the canon name
|
- Fix a wrong character name to match the canon name
|
||||||
@@ -168,12 +191,26 @@ steps:
|
|||||||
- Add new metaphors, aphorisms, or quotable lines
|
- Add new metaphors, aphorisms, or quotable lines
|
||||||
- Normalize or upgrade the authorial voice
|
- Normalize or upgrade the authorial voice
|
||||||
|
|
||||||
Output the FINAL CHAPTER (corrected where structurally required, verbatim everywhere else).
|
OUTPUT FORMAT:
|
||||||
Start directly with the chapter title and first line.
|
Start your response with a VALIDATION LOG section:
|
||||||
No preamble, no validation notes, no commentary — ONLY the chapter text.
|
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
|
- type: document
|
||||||
filename: "chapter-{chapter_ref}"
|
filename: "Chapter_{chapter_number}_draft"
|
||||||
|
|
||||||
- type: package
|
- type: package
|
||||||
hint: |
|
hint: |
|
||||||
@@ -194,34 +231,43 @@ steps:
|
|||||||
task_name: "Review (Devon): {chapter_ref}"
|
task_name: "Review (Devon): {chapter_ref}"
|
||||||
agent_name: Devon
|
agent_name: Devon
|
||||||
priority: 6
|
priority: 6
|
||||||
|
_if: "not meta.is_locked"
|
||||||
context:
|
context:
|
||||||
chapter_text: "{chapter_text}"
|
chapter_text: "{chapter_text}"
|
||||||
review_focus: developmental
|
review_focus: developmental
|
||||||
genre_name: "{genre_name}"
|
genre_name: "{genre_name}"
|
||||||
genre_audience: "{genre_audience}"
|
genre_audience: "{genre_audience}"
|
||||||
chapter_ref: "{chapter_ref}"
|
chapter_ref: "{chapter_ref}"
|
||||||
|
chapter_number: "{chapter_number}"
|
||||||
|
review_letter: "a"
|
||||||
|
|
||||||
- task_type: chapter_review
|
- task_type: chapter_review
|
||||||
task_name: "Review (Lane): {chapter_ref}"
|
task_name: "Review (Lane): {chapter_ref}"
|
||||||
agent_name: Lane
|
agent_name: Lane
|
||||||
priority: 6
|
priority: 6
|
||||||
|
_if: "not meta.is_locked"
|
||||||
context:
|
context:
|
||||||
chapter_text: "{chapter_text}"
|
chapter_text: "{chapter_text}"
|
||||||
review_focus: line
|
review_focus: line
|
||||||
genre_name: "{genre_name}"
|
genre_name: "{genre_name}"
|
||||||
genre_audience: "{genre_audience}"
|
genre_audience: "{genre_audience}"
|
||||||
chapter_ref: "{chapter_ref}"
|
chapter_ref: "{chapter_ref}"
|
||||||
|
chapter_number: "{chapter_number}"
|
||||||
|
review_letter: "b"
|
||||||
|
|
||||||
- task_type: chapter_review
|
- task_type: chapter_review
|
||||||
task_name: "Review (Cora): {chapter_ref}"
|
task_name: "Review (Cora): {chapter_ref}"
|
||||||
agent_name: Cora
|
agent_name: Cora
|
||||||
priority: 6
|
priority: 6
|
||||||
|
_if: "not meta.is_locked"
|
||||||
context:
|
context:
|
||||||
chapter_text: "{chapter_text}"
|
chapter_text: "{chapter_text}"
|
||||||
review_focus: continuity
|
review_focus: continuity
|
||||||
genre_name: "{genre_name}"
|
genre_name: "{genre_name}"
|
||||||
genre_audience: "{genre_audience}"
|
genre_audience: "{genre_audience}"
|
||||||
chapter_ref: "{chapter_ref}"
|
chapter_ref: "{chapter_ref}"
|
||||||
|
chapter_number: "{chapter_number}"
|
||||||
|
review_letter: "c"
|
||||||
|
|
||||||
- task_type: chapter_roundtable
|
- task_type: chapter_roundtable
|
||||||
task_name: "Roundtable: {chapter_ref}"
|
task_name: "Roundtable: {chapter_ref}"
|
||||||
@@ -230,6 +276,7 @@ steps:
|
|||||||
- Lane
|
- Lane
|
||||||
- Cora
|
- Cora
|
||||||
priority: 7
|
priority: 7
|
||||||
|
_if: "not meta.is_locked"
|
||||||
context:
|
context:
|
||||||
chapter_text: "{chapter_text}"
|
chapter_text: "{chapter_text}"
|
||||||
genre_name: "{genre_name}"
|
genre_name: "{genre_name}"
|
||||||
|
|||||||
@@ -211,7 +211,13 @@ steps:
|
|||||||
- EXACTLY one action per chapter from PART 2 of the outline — no more, no less
|
- 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...)
|
- task_name format: "Write Chapter N: [Chapter Title]" (N is a plain number, 1, 2, 3...)
|
||||||
- agent_name: always "Iris"
|
- 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: >
|
- description: >
|
||||||
Include the chapter summary, POV character, emotional beat, cliffhanger, character state,
|
Include the chapter summary, POV character, emotional beat, cliffhanger, character state,
|
||||||
dominant tension, and opening location from the chapter outline.
|
dominant tension, and opening location from the chapter outline.
|
||||||
|
|||||||
@@ -76,7 +76,7 @@ steps:
|
|||||||
No commentary, no change log, no editorial notes — ONLY the chapter.
|
No commentary, no change log, no editorial notes — ONLY the chapter.
|
||||||
|
|
||||||
- type: document
|
- type: document
|
||||||
filename: "{{task_name_slug}}-polished"
|
filename: "Chapter_{chapter_number}_final"
|
||||||
|
|
||||||
- type: close
|
- type: close
|
||||||
rag_update: true
|
rag_update: true
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ steps:
|
|||||||
Reserve judgment on full rewrites — that decision belongs to the roundtable.
|
Reserve judgment on full rewrites — that decision belongs to the roundtable.
|
||||||
|
|
||||||
- type: document
|
- type: document
|
||||||
filename: "review-{chapter_ref}-{agent_slug}"
|
filename: "Chapter_{chapter_number}_review_{review_letter}"
|
||||||
|
|
||||||
- type: close
|
- type: close
|
||||||
rag_update: false
|
rag_update: false
|
||||||
|
|||||||
@@ -110,6 +110,7 @@ steps:
|
|||||||
genre_name: "{genre_name}"
|
genre_name: "{genre_name}"
|
||||||
genre_audience: "{genre_audience}"
|
genre_audience: "{genre_audience}"
|
||||||
chapter_ref: "{chapter_ref}"
|
chapter_ref: "{chapter_ref}"
|
||||||
|
chapter_number: "{chapter_number}"
|
||||||
chapter_target_words: "{chapter_target_words}"
|
chapter_target_words: "{chapter_target_words}"
|
||||||
|
|
||||||
adjudication:
|
adjudication:
|
||||||
|
|||||||
33
templates/cozy_mystery_chapter.yml
Normal file
33
templates/cozy_mystery_chapter.yml
Normal 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}"
|
||||||
33
templates/romance_chapter.yml
Normal file
33
templates/romance_chapter.yml
Normal 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}"
|
||||||
33
templates/scifi_chapter.yml
Normal file
33
templates/scifi_chapter.yml
Normal 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
30
templates/ya_chapter.yml
Normal 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}"
|
||||||
Reference in New Issue
Block a user