Chapter Lead Writer
Purpose
This skill writes the body-only lead block that sits under an H2 heading and makes a chapter with multiple H3 subsections read like one argument.
This SKILL.md is now the package router, not the full method manual.
Migration status
This package is in P0 compatibility-preserving migration:
references/andassets/now hold the intended knowledge and contract layers.scripts/run.pyremains in compatibility mode for active generation.- a later script-thinning pass should move more judgment and exemplars out of Python and leave the script with deterministic execution and validation only.
For now, preserve the existing output contract and treat scripts/run.py as the execution source of truth.
Inputs
Required:
outline/outline.ymloutline/chapter_briefs.jsonlcitations/ref.bib
Optional:
outline/writer_context_packs.jsonl
Outputs
For each H2 section with H3 subsections:
sections/S<sec_id>_lead.md
Output contract
Keep these file-shape rules stable:
- each lead file is body-only and contains no headings
- each lead file previews the chapter lens and connects multiple H3s as one argument
- each lead file stays within the chapter's existing citation scope
- each lead file adds no new facts that are not supported later in the chapter
Load Order
Always read:
references/overview.mdreferences/lead_block_archetypes.md
Read by task:
references/throughline_patterns.md— when chapter briefs are thin or hard to convert into a throughlinereferences/bridge_examples.md— when the lead needs stronger H3 transitions without slide narrationreferences/bad_narration_examples.md— when removing table-of-contents narration, planner talk, count-based openers
Machine-readable assets:
assets/lead_block_contract.json— stable package contract for lead-block shapeassets/lead_block_compatibility_defaults.json— fallback phrasing, item limits, joiners, sentence cadence
Routing rules
Use this skill in the following order:
- Confirm the chapter is eligible
- identify H2 sections with H3 subsections from
outline/outline.yml - locate the corresponding chapter brief in
outline/chapter_briefs.jsonl
- Load the method
- read
references/overview.md - read
references/lead_block_archetypes.md - load the other reference files only if the chapter brief or current prose needs them
- Check citation scope
- if
outline/writer_context_packs.jsonlexists, use it for cross-cutting chapter citations - keep any citations inside the existing chapter scope and validate keys against
citations/ref.bib
- Execute
- current phase: use
scripts/run.pyin compatibility mode to preserve active behavior and output shape - future phase: keep
scripts/run.pyfor deterministic execution only, with the writing method and anti-pattern inventory living inreferences/
Compatibility mode note
scripts/run.py still contains active lead-generation logic.
That is temporary. For now:
- do not treat the current script wording as the target architecture
- do treat
assets/lead_block_compatibility_defaults.jsonas the primary compatibility-mode wording source - do not copy large prose instructions back into
SKILL.md - do preserve the current output contract while reducing obvious narration stems in the active path
What this skill should guarantee
Regardless of where the detailed method lives, this skill should produce chapter leads that:
- state the chapter's comparison lens rather than narrating the outline
- connect the H3 subsections as one argument, not as isolated stops on a tour
- introduce recurring contrasts without slash-list jargon
- keep the evaluation or calibration lens visible at a high level
- avoid slide narration, planner talk, and repeated stock openers
- choose from multiple candidate lead frames when possible (lens-first / sequence-first / comparison-first) and keep the least narrated option instead of reusing one stock cadence everywhere
Block conditions
Stop and route upstream if any of these are true:
outline/chapter_briefs.jsonlis missing- the target H2 section has no H3 subsections
- the chapter brief is too incomplete to infer a throughline safely
- the requested lead would require new facts or out-of-scope citations
Script role
scripts/run.py should currently be treated as a compatibility executor.
Its long-term role after script thinning is narrower:
- chapter discovery
- brief loading and normalization
- contract validation
- deterministic report writing
It is not the long-term home for lead archetypes, bridge examples, or narration anti-patterns.
Script
Quick Start
python .codex/skills/chapter-lead-writer/scripts/run.py --workspace <workspace_dir>
All Options
--workspace <dir>--unit-id <id>--inputs <a;b;...>--outputs <a;b;...>--checkpoint <C*>
Examples
python .codex/skills/chapter-lead-writer/scripts/run.py --workspace workspaces/<ws>
Troubleshooting
- If
outline/chapter_briefs.jsonlis missing or too thin, rebuild chapter briefs first. - If
outline/writer_context_packs.jsonlis missing, the script will still run but with a thinner citation pool. - If a generated lead sounds narrated, patch the compatibility asset and references before changing Python.