# Opener Variator

> Rewrite subsection openers so they stop reading like a generated table-of-contents: remove \"overview/narration\" stems and reduce repeated opener cadences across H3s.

- Skill: `willoscar/opener-variator` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds add willoscar/opener-variator`
- Raw SKILL.md: https://api.skillmd.com/api/skills/willoscar/opener-variator/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: WILLOSCAR (https://skillmd.com/u/willoscar)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/willoscar/opener-variator

---


# Opener Variator (H3 first paragraph rewrite)

## Triggers & routing

- **Trigger**: opener variator, opener rewrite, rewrite openers, overview opener, 开头改写, 小节开头, 去overview, 去旁白.


Purpose: fix a high-signal automation tell that survives structural gates:
- many H3s begin with the same rhetorical shape
- \"overview\" narration replaces content-bearing framing

This skill is intentionally narrow:
- only rewrite the first paragraph (or first 2–4 sentences) of the flagged H3 files
- keep the argument moves and citations intact

## Inputs

Required:
- `output/WRITER_SELFLOOP_TODO.md` (Style Smells section)
- the referenced `sections/S<sub_id>.md` files

Optional (helps you stay aligned):
- `outline/writer_context_packs.jsonl` (use `opener_mode`, `tension_statement`, `thesis`)

## Outputs

Run this targeted pass immediately after `style-harmonizer` and before logic
polish. The deterministic script is a certification adapter: it refuses to
create the marker while the latest `writer-selfloop` report still names flagged
files or predates any `sections/*.md` file. Perform the semantic rewrite through
this Skill or the responsible upstream writer, rerun `writer-selfloop`, then
retry the adapter. A passing marker records the certified Section-tree SHA256.

- Updated `sections/S<sub_id>.md` files (still body-only; no headings)

## Workflow (route from the self-loop report)

1) Open `output/WRITER_SELFLOOP_TODO.md` and locate `## Style Smells`.
2) Treat the flagged `sections/S*.md` list as the *only* scope for this pass.
3) For each flagged file:
   - Optional: look up its entry in `outline/writer_context_packs.jsonl` and read `opener_mode` / `tension_statement` / `thesis` to stay aligned.
   - Do the real rewrite upstream in `subsection-writer` or `chapter-lead-writer`; do not rely on blind local regex passes.
   - Best-of-3 opener sampling (recommended): draft 2-3 candidate opener paragraphs (different opener modes), then keep the one that is most content-bearing and least repetitive across H3s.
4) Rerun `writer-selfloop` and confirm the Style Smells list shrinks.

## Role prompt: Opener Editor (paper voice)

```text
You are rewriting the opening paragraph of a survey subsection.

Goal:
- replace narration/overview openers with a content-bearing framing
- vary opener cadence across subsections so the paper reads authored

Constraints:
- do not invent facts
- do not add/remove/move citation keys
- do not change the subsection’s thesis

Checklist:
- sentence 1 is content-bearing (tension/decision/failure/protocol/contrast), not “what we do in this section”
- paragraph 1 ends with a clear thesis/takeaway
- no slide navigation (“Next, we…”, “In this subsection…”, “This section provides an overview…“)
```

## What to delete (high-signal narration)

Rewrite immediately if the opener contains any of:
- “This section/subsection provides an overview …”
- “In this section/subsection, we …”
- “This subsection surveys/argues …”
- “Next, we move/turn …”
- repeated opener labels (“Key takeaway:” spam)

## What to replace with (opener moves)

Pick one opener mode per H3 (the writer pack may suggest `opener_mode`).
Do not copy labels; write as natural prose.

Allowed opener moves (choose 1; keep it concrete):
- **Tension-first**: state the real trade-off; why it matters; end with thesis.
- **Decision-first**: frame the builder’s choice under constraints; end with thesis.
- **Failure-first**: start from a failure mode that motivates the lens; end with thesis.
- **Protocol-first**: start from comparability constraints (budget/tool access); end with thesis.
- **Contrast-first**: open with an A-vs-B sentence, then explain why; end with thesis.
- **Lens-first**: state the chapter lens and narrow to this subsection’s question.

## Mini examples (paraphrase; do not copy)

Bad (overview narration):
- `This subsection provides an overview of tool interfaces for agents.`

Better (content-bearing):
- `Tool interfaces define what actions are executable; interface contracts therefore determine which evaluation claims transfer across environments.`

Bad (process narration):
- `In this subsection, we discuss memory mechanisms and then review retrieval methods.`

Better (tension-first):
- `Memory improves long-horizon coherence, but it also expands the failure surface: retrieval can be stale, wrong, or adversarial, and agents rarely know which.`

## Done checklist

- [ ] No flagged file starts with “overview/narration” stems.
- [ ] Paragraph 1 ends with a thesis/takeaway (same meaning).
- [ ] Citation keys are unchanged (no adds/removes/moves).
- [ ] `writer-selfloop` still PASSes and Style Smells shrink.

## Script

### Quick Start

- `uv run python .codex/skills/opener-variator/scripts/run.py --workspace <workspace>`

### All Options

- `--workspace <dir>` (required)
- `--unit-id <U###>`
- `--inputs <semicolon-separated>`
- `--outputs <semicolon-separated>`
- `--checkpoint <C#>`

### Examples

- Rewrite openers in a survey workspace:
  - `uv run python .codex/skills/opener-variator/scripts/run.py --workspace workspaces/survey-llm-agents`

