Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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).
.claude/skills/willoscar-transition-weaver/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 91% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 201% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 170% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 33% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 139% | 0% |
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:
-> (not a unicode arrow) to avoid invisible/control-character encoding issues.section-merger accepts both -> and → for backward compatibility, but -> is the preferred contract.Hard rules:
Rewrite triggers (if you see these, rewrite):
textYou 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)1) Read outline/outline.yml to determine adjacency (which H3 follows which). 2) Read outline/subsection_briefs.jsonl to extract each subsection’s rq and any bridge handles (bridge_terms, contrast_hook). 3) For each boundary, write 1–2 transition sentences:
TODO, …, <!-- SCAFFOLD -->)4) Write 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.
uv run python .codex/skills/transition-weaver/scripts/run.py --workspace <workspace>--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:uv run python .codex/skills/transition-weaver/scripts/run.py --workspace <workspace>Fix:
bridge_terms / contrast_hook).By default, section-merger does not insert generated transitions. Create outline/transitions.insert_h3.ok for within-chapter H3 transitions or outline/transitions.insert_h2.ok for between-H2 transitions, then run the post-merge voice gate.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 6,391 | 6,887 | +8% | 1 | 1 | 0% | 936 | 1,903 | +103% | 0 | 0 | — |
case-02 | fail→fail | 12,656 | 5,031 | -60% | 1 | 1 | 0% | 2,159 | 1,699 | -21% | 0 | 0 | — |
case-03 | fail→fail | 5,807 | 13,654 | +135% | 1 | 1 | 0% | 711 | 2,965 | +317% | 0 | 0 | — |
case-04 | fail→pass | 8,522 | 7,433 | -13% | 1 | 1 | 0% | 1,404 | 2,675 | +91% | 0 | 0 | — |
case-05 | fail→pass | 5,015 | 5,939 | +18% | 1 | 1 | 0% | 798 | 2,404 | +201% | 0 | 0 | — |
case-06 | fail→pass | 5,654 | 4,806 | -15% | 1 | 1 | 0% | 828 | 2,235 | +170% | 0 | 0 | — |
case-07 | fail→pass | 13,593 | 7,711 | -43% | 1 | 1 | 0% | 1,915 | 2,541 | +33% | 0 | 0 | — |
case-08 | fail→pass | 6,881 | 6,162 | -10% | 1 | 1 | 0% | 1,003 | 2,402 | +139% | 0 | 0 | — |
case-09 | pass→pass | 6,894 | 4,693 | -32% | 1 | 1 | 0% | 989 | 2,243 | +127% | 0 | 0 | — |
case-10 | pass→pass | 5,504 | 6,754 | +23% | 1 | 1 | 0% | 817 | 2,500 | +206% | 0 | 0 | — |
case-11 | pass→pass | 7,487 | 5,037 | -33% | 1 | 1 | 0% | 1,020 | 2,244 | +120% | 0 | 0 | — |
case-12 | fail→pass | 5,623 | 7,153 | +27% | 1 | 1 | 0% | 841 | 2,572 | +206% | 0 | 0 | — |
case-13 | fail→fail | 5,307 | 11,210 | +111% | 1 | 1 | 0% | 802 | 2,327 | +190% | 0 | 0 | — |
case-14 | fail→pass | 5,046 | 5,525 | +9% | 1 | 1 | 0% | 800 | 2,380 | +198% | 0 | 0 | — |
case-15 | fail→pass | 11,643 | 1,874 | -84% | 1 | 1 | 0% | 1,674 | 1,714 | +2% | 0 | 0 | — |
case-21 | fail→fail | 21,333 | 6,046 | -72% | 1 | 1 | 0% | 2,960 | 1,657 | -44% | 0 | 0 | — |
case-16 | fail→pass | 2,188 | 1,641 | -25% | 1 | 1 | 0% | 157 | 1,680 | +970% | 0 | 0 | — |
case-17 | fail→pass | 27,753 | 1,434 | -95% | 1 | 1 | 0% | 1,869 | 1,668 | -11% | 0 | 0 | — |
case-18 | fail→pass | 12,298 | 1,649 | -87% | 1 | 1 | 0% | 1,936 | 1,729 | -11% | 0 | 0 | — |
case-19 | fail→pass | 16,600 | 9,578 | -42% | 1 | 1 | 0% | 2,376 | 2,977 | +25% | 0 | 0 | — |
case-20 | fail→fail | 8,349 | 5,092 | -39% | 1 | 1 | 0% | 1,420 | 1,694 | +19% | 0 | 0 | — |
case-22 | fail→fail | 2,947 | 3,116 | +6% | 1 | 1 | 0% | 427 | 1,938 | +354% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 16 counted toward the lift figure. The other 6 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +55 percentage points is the difference between those two pass rates over the 16 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.