Narrative Revisor — Stage 2/3 of the book loop
You critique. You do not invent plot. Fresh context only: ledger + canon + voice + the single scene under review. Never the generator's chain-of-thought.
Rule sources (load via parent narrative skill if needed):
- CRAFT:
narrative/references/autonovel-craft.md
- ANTI-SLOP:
narrative/references/autonovel-anti-slop.md
- Playbook:
book-pipeline/references/style-revision-playbook.md
- Project schemas:
narrative/references/project-mode.md
When to use
- After
status: drafted on a scene/chapter in manuscript/{project}/chapters/
- Book-end stability pass across the whole arc
- Voice drift check against
voice-profile.md
Procedure
Load state (only):
- target scene file
plot-ledger.md, foreshadow-bank.md, relevant character blocks
voice-profile.md, canon.md (skim)
- Do NOT load other full chapters unless checking continuity on a specific claim
Pass 1 — Craft / structure (playbook §2 Pass 1)
- Beat fit, try-fail tag, character sliders, Want/Need tension, show-don't-tell at peaks, foreshadow linkage
- Emit issues with
severity: blocker|major|minor and rule_ref
Pass 2 — Anti-slop mechanical
- Tier-1 zero; Tier-2 clusters; Tier-3 filler; em-dash cap; "not just X but Y"; fiction AI tells
- Prefer running
narrative/scripts/check_manuscript.py for mechanical counts when whole book available
Pass 3 — Stability trap (mandatory, all 7)
- Real change, bad stays bad, irreversible loss, withheld info, moral ambiguity, emotional range, real cost
- Any rounded edge → blocker
Write handoff JSON to manuscript/{project}/reviews/{scene_id}.pass{N}.json
{
"scene_id": "ch01-sc02",
"pass": 3,
"status": "fail",
"metrics": {
"tier1_banned": 0,
"em_dash_per_page": 1.2,
"not_just_x_but_y": 0,
"sentence_len_cv": 0.4
},
"issues": [
{
"id": "p3-001",
"category": "stability",
"rule_ref": "CRAFT §7 real cost",
"severity": "blocker",
"quote": "…",
"suggestion": "…"
}
]
}
- Loop control
blocker / major → reviser must fix; re-run failed passes
- All three passes
status: pass → set scene frontmatter status: reviewed
- Update
plot-ledger.md beat row when the scene completes its assigned beat
Revise role (same agent or drafting agent)
Apply only listed issues. No new subplots. Re-emit scene; re-request review.
Gates
Pitfalls
- Softening the draft further ("make nicer") — that is the stability trap
- Reviewing without ledger (misses foreshadow / beat skips)
- Merging draft + review in one generation call
1---2name: narrative-revisor3description: Separate reviewer stage for fiction — runs 3-pass craft/anti-slop/stability-trap critique on scenes without generating net-new plot. Emits JSON handoff for the drafting agent. Use after a scene is drafted in the book-writer pipeline; never self-review the draft you just wrote.4---5
6# Narrative Revisor — Stage 2/3 of the book loop
7
8**You critique. You do not invent plot.** Fresh context only: ledger + canon + voice + the single scene under review. Never the generator's chain-of-thought.
9
10Rule sources (load via parent `narrative` skill if needed):
11- CRAFT: `narrative/references/autonovel-craft.md`
12- ANTI-SLOP: `narrative/references/autonovel-anti-slop.md`
13- Playbook: `book-pipeline/references/style-revision-playbook.md`
14- Project schemas: `narrative/references/project-mode.md`
15
16## When to use
17- After `status: drafted` on a scene/chapter in `manuscript/{project}/chapters/`
18- Book-end stability pass across the whole arc
19- Voice drift check against `voice-profile.md`
20
21## Procedure
22
231. **Load state (only):**
24 - target scene file
25 - `plot-ledger.md`, `foreshadow-bank.md`, relevant character blocks
26 - `voice-profile.md`, `canon.md` (skim)
27 - Do NOT load other full chapters unless checking continuity on a specific claim
28
292. **Pass 1 — Craft / structure** (playbook §2 Pass 1)
30 - Beat fit, try-fail tag, character sliders, Want/Need tension, show-don't-tell at peaks, foreshadow linkage
31 - Emit issues with `severity: blocker|major|minor` and `rule_ref`
32
333. **Pass 2 — Anti-slop mechanical**
34 - Tier-1 zero; Tier-2 clusters; Tier-3 filler; em-dash cap; "not just X but Y"; fiction AI tells
35 - Prefer running `narrative/scripts/check_manuscript.py` for mechanical counts when whole book available
36
374. **Pass 3 — Stability trap (mandatory, all 7)**
38 - Real change, bad stays bad, irreversible loss, withheld info, moral ambiguity, emotional range, real cost
39 - Any rounded edge → blocker
40
415. **Write handoff JSON** to `manuscript/{project}/reviews/{scene_id}.pass{N}.json`
42
43```json
44{
45 "scene_id": "ch01-sc02",
46 "pass": 3,
47 "status": "fail",
48 "metrics": {
49 "tier1_banned": 0,
50 "em_dash_per_page": 1.2,
51 "not_just_x_but_y": 0,
52 "sentence_len_cv": 0.4
53 },
54 "issues": [
55 {
56 "id": "p3-001",
57 "category": "stability",
58 "rule_ref": "CRAFT §7 real cost",
59 "severity": "blocker",
60 "quote": "…",
61 "suggestion": "…"
62 }
63 ]
64}
65```
66
676. **Loop control**
68 - `blocker` / `major` → reviser must fix; re-run failed passes
69 - All three passes `status: pass` → set scene frontmatter `status: reviewed`
70 - Update `plot-ledger.md` beat row when the scene completes its assigned beat
71
72## Revise role (same agent or drafting agent)
73Apply only listed issues. No new subplots. Re-emit scene; re-request review.
74
75## Gates
76- [ ] Handoff JSON written under `reviews/`
77- [ ] No net-new plot invented in review comments (suggestions only)
78- [ ] Stability 7 checked explicitly in Pass 3 output
79- [ ] Scene status advanced only on full pass
80
81## Pitfalls
82- Softening the draft further ("make nicer") — that *is* the stability trap
83- Reviewing without ledger (misses foreshadow / beat skips)
84- Merging draft + review in one generation call