Narrative v2 — Craft + Slop Defense + Project Pipeline
Assist with narrative prose: fiction, lore, character backstories, quest text, dialogue, worldbuilding — and full short-novel projects. Grounded, buildable writing. Not abstract exposition.
Reference files (verbatim, do not edit):
references/autonovel-craft.md — plot / character / worldbuilding / foreshadowing, each with a mechanical check.
references/autonovel-anti-slop.md — banned words, structural slop, tone, detection signals.
references/project-mode.md — manuscript tree, schemas, gates (this skill's project extension).
Load with skill_view(name='narrative', file_path='references/…') when you need exact rule text.
Modes
| Mode |
When |
Requires |
| single-scene |
short tests, one-off prose, game text |
nothing bound |
| project |
multi-chapter novel / short novel |
bound manuscript/{project}/ with state files |
In project mode, refuse chapter assembly and export if ledger/canon/voice are missing or scenes are not reviewed.
Skill tests / short samples stay scene-scale. Do not expand into a full book pipeline unless the user asks.
Single-scene procedure (v1, retained)
- Anchor tone — name register (dread / restraint / melancholy / bright action). Ask if vague; use tone defaults above for this user's fantasy.
- Structure — one framework from CRAFT §1 (Save-the-Cat | Harmon circle | Sanderson PPP). Prefer MICE + try-fail: middle beats mostly "yes, but…" / "no, and…".
- Character before prose — Three Sliders (proactivity / likability / competence — ≥2 high, or one high with growth) + Wound→Lie→Want→Need (Want ⊥ Need).
- System / magic — Three Laws (CRAFT §3): hard rules, limitations ≥ powers, costs drive decisions, no unforeshadowed power in final 25%.
- Draft show-don't-tell (CRAFT §5) — concrete nouns, earned metaphor, rhythm variation (short → long → short). Zero telling at peaks.
- Dual-persona review — A literary critic (prose, voice, monotony); B fiction professor (character, ethics, beats). Fix top items until "mostly qualified hedges."
- Kill slop (ANTI-SLOP) — Tier-1 zero; Tier-3 delete; em dashes ≤2/page; kill "not just X, but Y"; break topic-sentence templates.
- Stability-trap check (mandatory) — all 7 points below.
Project mode
Init
- Scaffold
manuscript/{project}/ from templates/ (or book-pipeline templates — same fields).
- Write
concept.md with user (logline, tone, MICE, target length 40–50k default).
- Seed character sheets,
plot-ledger.md, foreshadow-bank.md, worldbuilding.md, canon.md.
- One-time voice calibration →
voice-profile.md (see book-pipeline style-revision playbook §3).
- Bind via optional
manuscript.yaml (title, framework, target_words, voice_profile).
Continuity ledger (read every draft/review)
| File |
Role |
canon.md |
Truth ledger — names, rules, geography, dates. New facts go here, not silent intro. |
plot-ledger.md |
Beats + %mark + status (planned / drafted / reviewed / done) |
foreshadow-bank.md |
plant → payoff (status: open / planted / payoff / dangling / red-herring) |
character-sheet.md or characters/*.md |
sliders, Lie/Truth, dialogue 8-dims |
worldbuilding.md |
pillars + Three Laws + societal implications |
voice-profile.md |
register, bans, rhythm targets, metaphor domains |
Generator loads only what it needs for the current scene (beat row + relevant characters + last chapter summary) — never the full manuscript.
Draft (generator stage)
- Read assigned beat from ledger + voice-profile + relevant character rows.
- Run single-scene procedure steps 1–5.
- Frontmatter on scene/chapter file:
---
scene_id: ch03-sc02
beat: catalyst
try_fail: no-and # yes-but | no-and | no-but | yes-and
pov: Jin
status: drafted
---
- Do not self-critique for stability trap at book scale — hand to reviewer.
Review (separate stage — use narrative-revisor or style-revision playbook)
Fresh context. Loads ledger + canon + voice + one scene. Never generator reasoning.
- Pass 1 craft/structure
- Pass 2 anti-slop mechanical
- Pass 3 stability-trap 7-point
- Emit JSON handoff (
scene_id, issues[], severity)
Revise
Drafting agent applies only reviewer issues. Re-submit until pass status with zero blocker/major.
Assemble & chapter gates
Before marking a chapter done:
- Fact continuity — new facts added to
canon.md
- Ledger progression — beats moved planned→drafted→reviewed; no silent skips
- Foreshadow — no dangling past payoff window; no unforeshadowed climax element
- Character state — sliders/arc match sheet
- Stability-trap at chapter grain
- Anti-slop per chapter (Tier-1 zero, em-dash cap)
Export (via book-writer-pipeline CLI) only when all chapters done.
Scriptable checks
Run scripts/check_manuscript.py <manuscript_dir> for mechanical scans (Tier-1, em-dash density, dangling plants, beat status). Judgment items (moral ambiguity, emotional range) stay human/reviewer.
Stability Trap — non-negotiable (all scales)
| Point |
Scene |
Chapter |
Manuscript |
| Characters end truly different |
arc advances |
checkpoint hit |
final vs opening |
| Bad things stay bad |
not retconned |
loss not undone |
≥1 unresolved |
| Irreversible loss |
choice has cost |
cost paid |
no undo in ledger |
| Information withheld |
mystery planted |
not all revealed |
reader incomplete |
| Moral ambiguity |
unclear right |
tension held |
no clean ending |
| Emotional range |
intensity varies |
quiet + explosive |
full register |
| Real cost per choice |
cost stated |
accumulates |
no free climax |
If a draft rounds a sharp edge safer/generic → rewrite.
Anti-slop (project + single)
- Tier-1 kill on sight; Tier-2 ≤2/paragraph; Tier-3 delete all filler
- Em dashes ≤2/page; zero "not just X, but Y"
- No topic-sentence machine, list abuse, hedge parade, transition addiction
- Fiction AI tells (CRAFT §6): "a sense of…", "eyes widened", "wave of emotion", etc. — kill
Full lists: references/autonovel-anti-slop.md.
Pitfalls
- Lists instead of prose for weighty scenes
- Throat-clearing openings ("In this land…")
- Info-dump >100 words without action/dialogue
- Self-review at book scale (stability trap doubles)
- Ledger drift / voice drift across chapters
- Dumping full manuscript into a 16K–32K context
- Expanding a skill test into a pipeline without being asked
Verify
Book-scale ownership
This skill owns craft inside a scene/chapter. The book-pipeline skill owns architecture, folder convention, export, publish routing, and multi-lane orchestration. The book-writer profile owns the loop end-to-end.
When book work spans craft + models + CLI + market + publish: delegate lanes. Do not solo the whole novel from one profile.
1---2name: narrative3description: Full-novel craft + anti-slop pipeline with project mode (ledger, characters, foreshadow, worldbuilding bible), draft→review→revise gates, and stability-trap enforcement at scene/chapter/manuscript scale. Single-scene mode retained. Use for fiction, lore, character docs, dialogue, worldbuilding, or book projects.4---56# Narrative v2 — Craft + Slop Defense + Project Pipeline78Assist with narrative prose: fiction, lore, character backstories, quest text, dialogue, worldbuilding — and full short-novel projects. Grounded, buildable writing. Not abstract exposition.910**Reference files (verbatim, do not edit):**11- `references/autonovel-craft.md` — plot / character / worldbuilding / foreshadowing, each with a mechanical check.12- `references/autonovel-anti-slop.md` — banned words, structural slop, tone, detection signals.13- `references/project-mode.md` — manuscript tree, schemas, gates (this skill's project extension).1415Load with `skill_view(name='narrative', file_path='references/…')` when you need exact rule text.1617## Modes1819| Mode | When | Requires |20|------|------|----------|21| **single-scene** | short tests, one-off prose, game text | nothing bound |22| **project** | multi-chapter novel / short novel | bound `manuscript/{project}/` with state files |2324In project mode, refuse chapter assembly and export if ledger/canon/voice are missing or scenes are not reviewed.2526**Skill tests / short samples** stay scene-scale. Do not expand into a full book pipeline unless the user asks.2728---2930## Single-scene procedure (v1, retained)31321. **Anchor tone** — name register (dread / restraint / melancholy / bright action). Ask if vague; use tone defaults above for this user's fantasy.332. **Structure** — one framework from CRAFT §1 (Save-the-Cat | Harmon circle | Sanderson PPP). Prefer MICE + try-fail: middle beats mostly "yes, but…" / "no, and…".343. **Character before prose** — Three Sliders (proactivity / likability / competence — ≥2 high, or one high with growth) + Wound→Lie→Want→Need (Want ⊥ Need).354. **System / magic** — Three Laws (CRAFT §3): hard rules, limitations ≥ powers, costs drive decisions, no unforeshadowed power in final 25%.365. **Draft show-don't-tell** (CRAFT §5) — concrete nouns, earned metaphor, rhythm variation (short → long → short). Zero telling at peaks.376. **Dual-persona review** — A literary critic (prose, voice, monotony); B fiction professor (character, ethics, beats). Fix top items until "mostly qualified hedges."387. **Kill slop** (ANTI-SLOP) — Tier-1 zero; Tier-3 delete; em dashes ≤2/page; kill "not just X, but Y"; break topic-sentence templates.398. **Stability-trap check (mandatory)** — all 7 points below.4041---4243## Project mode4445### Init461. Scaffold `manuscript/{project}/` from `templates/` (or `book-pipeline` templates — same fields).472. Write `concept.md` with user (logline, tone, MICE, target length 40–50k default).483. Seed character sheets, `plot-ledger.md`, `foreshadow-bank.md`, `worldbuilding.md`, `canon.md`.494. One-time **voice calibration** → `voice-profile.md` (see book-pipeline style-revision playbook §3).505. Bind via optional `manuscript.yaml` (`title`, `framework`, `target_words`, `voice_profile`).5152### Continuity ledger (read every draft/review)5354| File | Role |55|------|------|56| `canon.md` | Truth ledger — names, rules, geography, dates. New facts go here, not silent intro. |57| `plot-ledger.md` | Beats + %mark + status (`planned` / `drafted` / `reviewed` / `done`) |58| `foreshadow-bank.md` | plant → payoff (status: open / planted / payoff / dangling / red-herring) |59| `character-sheet.md` or `characters/*.md` | sliders, Lie/Truth, dialogue 8-dims |60| `worldbuilding.md` | pillars + Three Laws + societal implications |61| `voice-profile.md` | register, bans, rhythm targets, metaphor domains |6263**Generator loads only what it needs** for the current scene (beat row + relevant characters + last chapter summary) — never the full manuscript.6465### Draft (generator stage)661. Read assigned beat from ledger + voice-profile + relevant character rows.672. Run single-scene procedure steps 1–5.683. Frontmatter on scene/chapter file:69 ```yaml70 ---71 scene_id: ch03-sc0272 beat: catalyst73 try_fail: no-and # yes-but | no-and | no-but | yes-and74 pov: Jin75 status: drafted76 ---77 ```784. Do **not** self-critique for stability trap at book scale — hand to reviewer.7980### Review (separate stage — use `narrative-revisor` or style-revision playbook)81Fresh context. Loads ledger + canon + voice + **one** scene. Never generator reasoning.82- Pass 1 craft/structure83- Pass 2 anti-slop mechanical84- Pass 3 stability-trap 7-point85- Emit JSON handoff (`scene_id`, `issues[]`, `severity`)8687### Revise88Drafting agent applies **only** reviewer issues. Re-submit until pass status with zero blocker/major.8990### Assemble & chapter gates91Before marking a chapter `done`:921. **Fact continuity** — new facts added to `canon.md`932. **Ledger progression** — beats moved planned→drafted→reviewed; no silent skips943. **Foreshadow** — no dangling past payoff window; no unforeshadowed climax element954. **Character state** — sliders/arc match sheet965. **Stability-trap** at chapter grain976. **Anti-slop** per chapter (Tier-1 zero, em-dash cap)9899Export (via `book-writer-pipeline` CLI) only when all chapters `done`.100101### Scriptable checks102Run `scripts/check_manuscript.py <manuscript_dir>` for mechanical scans (Tier-1, em-dash density, dangling plants, beat status). Judgment items (moral ambiguity, emotional range) stay human/reviewer.103104---105106## Stability Trap — non-negotiable (all scales)107108| Point | Scene | Chapter | Manuscript |109|-------|-------|---------|------------|110| Characters end truly different | arc advances | checkpoint hit | final vs opening |111| Bad things stay bad | not retconned | loss not undone | ≥1 unresolved |112| Irreversible loss | choice has cost | cost paid | no undo in ledger |113| Information withheld | mystery planted | not all revealed | reader incomplete |114| Moral ambiguity | unclear right | tension held | no clean ending |115| Emotional range | intensity varies | quiet + explosive | full register |116| Real cost per choice | cost stated | accumulates | no free climax |117118If a draft rounds a sharp edge safer/generic → rewrite.119120---121122## Anti-slop (project + single)123124- Tier-1 kill on sight; Tier-2 ≤2/paragraph; Tier-3 delete all filler125- Em dashes ≤2/page; zero "not just X, but Y"126- No topic-sentence machine, list abuse, hedge parade, transition addiction127- Fiction AI tells (CRAFT §6): "a sense of…", "eyes widened", "wave of emotion", etc. — kill128129Full lists: `references/autonovel-anti-slop.md`.130131---132133## Pitfalls134135- Lists instead of prose for weighty scenes136- Throat-clearing openings ("In this land…")137- Info-dump >100 words without action/dialogue138- Self-review at book scale (stability trap doubles)139- Ledger drift / voice drift across chapters140- Dumping full manuscript into a 16K–32K context141- Expanding a skill test into a pipeline without being asked142143## Verify144145- [ ] Read aloud — person who has lived, not press release146- [ ] Tier-1 search = zero147- [ ] ≥1 surprising sentence148- [ ] Stability 7/7 at the grain you shipped (scene / chapter / book)149- [ ] Project mode: ledger statuses match reality; no dangling plants at export150151## Book-scale ownership152153This skill owns **craft inside a scene/chapter**. The `book-pipeline` skill owns architecture, folder convention, export, publish routing, and multi-lane orchestration. The `book-writer` profile owns the loop end-to-end.154155When book work spans craft + models + CLI + market + publish: **delegate lanes**. Do not solo the whole novel from one profile.