willoscar/subsection-polisher
| Polish a single H3 unit file under `sections/` into survey-grade prose (de-template + contrast/eval/limitation), without changing citation keys.
npx skills add https://github.com/WILLOSCAR/research-units-pipeline-skills --skill subsection-polisher
Purpose: upgrade one sections/S<sub_id>.md (H3 body-only) so it reads like survey prose before you merge into output/DRAFT.md.
This is intentionally local: fix one unit at a time, rerun gates, and converge without rewriting the whole paper.
Mission: improve one H3’s argument density and paper voice without changing citation keys.
Do:
Avoid:
Mission: prevent polishing from turning into invention when evidence is thin.
Do:
Avoid:
You are editing one survey subsection to make it read like paper prose.
Your goal is to remove generator voice and strengthen argument moves without changing citation keys:
- opener: tension + why-it-matters + thesis (no narration)
- add explicit contrasts and an evaluation anchor if missing
- make at least one cross-paper synthesis paragraph (>=2 citations)
- add a subsection-specific limitation (not boilerplate)
Constraints:
- do not add/remove citation keys
- do not invent facts
- keep scope local to this H3
sections/S<sub_id>.md (H3 body-only)outline/writer_context_packs.jsonloutline/subsection_briefs.jsonl + outline/evidence_drafts.jsonlcitations/ref.bibsections/S<sub_id>.md (same path; citation keys unchanged)[@BibKey] markers.outline/evidence_bindings.jsonl / writer pack allowed_bibkeys_*).section-merger adds headings.A polished H3 reads like an argument, not a topic list:
Delete / rewrite these (they read like a generator):
This subsection ..., In this subsection, we ....Next, we move ..., We now turn to ..., In the next section ....survey synthesis/comparisons should ....abstract-only/title-only/provisional boilerplate inside H3.Prefer these (paper voice):
A central tension is ..., In practice, ..., One recurring pattern is ....This contrast matters because ..., These assumptions shape ....1) Load the subsection contract
outline/writer_context_packs.jsonl.outline/subsection_briefs.jsonl (thesis/tension/paragraph_plan) + outline/evidence_drafts.jsonl (comparisons/eval/limitations).tension_statement + thesiscomparison_cards you will use for A-vs-B contrastsevaluation_anchor_minimal (task/metric/constraint)2) Preflight (kept out of the final prose)
If you cannot write these without guessing, stop and push the gap upstream (paper-notes / evidence-draft).
3) Opener rewrite (paragraph 1)
Bad:
This subsection surveys tool interfaces for agents.Better:
A central tension in tool interfaces is balancing expressive action spaces with verifiable execution; interface contracts largely determine which evaluation claims are meaningful.4) Paragraph pass (argument moves > listing)
grad-paragraph micro-structure:5) Citation embedding pass (no dumps)
[@a; @b; @c].citations/ref.bib.Bad (dump):
Many systems adopt tool schemas. [@a; @b; @c]Better (cite-as-evidence):
Systems such as X [@a] and Y [@b] formalize tool schemas to reduce action ambiguity, whereas Z [@c] keeps the interface looser and shifts the burden to validation.6) Rhythm + de-template pass
Taken together).7) Recheck (do not skip)
section-logic-polisher and address FAILs (thesis + connector density) without changing citation keys.writer-selfloop (or the strict quality gate) and fix only what the report flags.Use these as rewrite *intentions*, not copy-paste templates.
1) Narration opener -> content claim
This subsection surveys ... -> A central tension is ...; this matters because ... (end paragraph 1 with the thesis).2) Slide navigation -> argument bridge
Next, we move from planning to memory. -> Planning specifies how decisions are made; memory determines what information those decisions can reliably condition on under a fixed protocol.3) Disclaimer spam -> one policy paragraph + local caveat only
abstract-only evidence boilerplate.4) Meta “survey should” -> literature-facing observation
Therefore, survey comparisons should control for tool access. -> Across reported protocols, tool access and budget assumptions vary widely, making head-to-head comparison fragile unless those constraints are normalized.5) Too-vague quantitative claim -> add minimal context (or weaken)
Stop and go upstream if:
section-logic-polisher and writer-selfloop no longer flag this file.Take willoscar/subsection-polisher 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.