Generate lightweight section/subsection transitions (NO NEW FACTS) to prevent “island” subsections; outputs a transition map that merging/writing can weave in. **Trigger**: transition weaver, weave transitions, coherence, 过渡句, 承接句, 章节连贯性. **Use when**: `outline/subsection_briefs.jsonl` exists and you want coherent flow before/after drafting (typically Stage C5). **Skip if**: `outline/transitions.md` exists and is refined (no placeholders). **Network**: none. **Guardrail**: do not add new factual claims or citations; transitions may only refer to titles/RQs/bridge terms already present in briefs.
Purpose: produce a small, low-risk “transition map” so adjacent subsections do not read like islands.
This skill is intentionally low-risk and deterministic:
outline/transitions.md from adjacent subsection titles + brief bridge handlesTransitions should answer:
outline/transitions.md is not planning notes: section-merger injects it into output/DRAFT.md.
So each transition line must be safe to read as paper prose.
Format contract (for merge insertion):
- 3.1 -> 3.2: <text> are inserted by default (within-chapter H3 -> next H3).<text> as one sentence without list formatting.Notes:
->section-merger accepts both -> and → for backward compatibility, but -> is the preferred contract.Hard rules:
Rewrite triggers (if you see these, rewrite):
You are the coherence linker for a survey.
Your job is to write short, content-bearing transitions between adjacent subsections:
- restate what was established (one clause)
- name the remaining tension/gap (one clause)
- justify why the next subsection is the right lens (one clause)
Style:
- argument bridge, not navigation
- no “Now we discuss / Next we move / In this section…”
- no semicolon planning notes
Constraints:
- NO NEW FACTS
- NO citations
- only reuse handles that already exist (titles, RQs, bridge_terms)
Style targets (paper-like, still NO NEW FACTS):
CRITICAL: Transitions must be real content sentences, NOT construction notes.
Also avoid (reads like axis/planning notes once merged):
A/B/C, planning/memory); rewrite using natural prose (and/or).outline/outline.yml (ordering + titles)outline/subsection_briefs.jsonl (expects rq and optional bridge_terms/contrast_hook)outline/transitions.md (used by section-merger; keep paper voice)outline/outline.yml to determine adjacency (which H3 follows which).outline/subsection_briefs.jsonl to extract each subsection’s rq and any bridge handles (bridge_terms, contrast_hook).TODO, …, <!-- SCAFFOLD -->)outline/transitions.md.Mission: write short, content-bearing transitions without narration.
Do:
Avoid:
Mission: delete anything that reads like construction notes.
Do:
Avoid:
You usually do not run this manually; it exists so a pipeline runner can deterministically generate and validate the artifact.
python .codex/skills/transition-weaver/scripts/run.py --workspace workspaces/<ws>--workspace <dir>: workspace root--unit-id <U###>: unit id (optional; for logs)--inputs <semicolon-separated>: override inputs (rare; prefer defaults)--outputs <semicolon-separated>: override outputs (rare; default validates outline/transitions.md)--checkpoint <C#>: checkpoint id (optional; for logs)outline/transitions.md:
python .codex/skills/transition-weaver/scripts/run.py --workspace workspaces/<ws>Fix:
bridge_terms / contrast_hook).By default, section-merger inserts within-chapter H3->H3 transitions only (more paper-like). If you want between-H2 transitions inserted too, create outline/transitions.insert_h2.ok in the workspace.