willoscar/opener-variator
|
npx skills add https://github.com/WILLOSCAR/research-units-pipeline-skills --skill opener-variator
Purpose: fix a high-signal automation tell that survives structural gates:
This skill is intentionally narrow:
Required:
output/WRITER_SELFLOOP_TODO.md (Style Smells section)sections/S<sub_id>.md filesOptional (helps you stay aligned):
outline/writer_context_packs.jsonl (use opener_mode, tension_statement, thesis)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.
sections/S<sub_id>.md files (still body-only; no headings)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:
outline/writer_context_packs.jsonl and read opener_mode / tension_statement / thesis to stay aligned.subsection-writer or chapter-lead-writer; do not rely on blind local regex passes.4) Rerun writer-selfloop and confirm the Style Smells list shrinks.
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…“)
Rewrite immediately if the opener contains any of:
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):
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.writer-selfloop still PASSes and Style Smells shrink.uv run python .codex/skills/opener-variator/scripts/run.py --workspace <workspace>--workspace <dir> (required)--unit-id <U###>--inputs <semicolon-separated>--outputs <semicolon-separated>--checkpoint <C#>uv run python .codex/skills/opener-variator/scripts/run.py --workspace workspaces/survey-llm-agentsTake willoscar/opener-variator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.