Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Polish a single H3 unit file under `sections/` into survey-grade prose (de-template + contrast/eval/limitation), without changing citation keys. **Trigger**: subsection polisher, per-subsection polish, polish section file, 小节润色, 去模板, 结构化段落. **Use when**: `sections/S*.md` exists but reads rigid/template-y; you want to fix quality locally before `section-merger`.
.claude/skills/willoscar-subsection-polisher/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 327% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 233% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 224% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 573% | 0% |
| case-17 | ✗→✓ | ▲ Improved | 98% | 0% |
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:
textYou 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.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 12,447 | 5,546 | -55% | 1 | 1 | 0% | 1,786 | 2,387 | +34% | 0 | 0 | — |
case-02 | fail→fail | 2,826 | 4,452 | +58% | 1 | 1 | 0% | 416 | 2,337 | +462% | 0 | 0 | — |
case-03 | fail→fail | 4,943 | 12,021 | +143% | 1 | 1 | 0% | 277 | 4,067 | +1368% | 0 | 0 | — |
case-04 | fail→fail | 9,655 | 11,140 | +15% | 1 | 1 | 0% | 1,684 | 4,205 | +150% | 0 | 0 | — |
case-05 | fail→fail | 3,455 | 13,433 | +289% | 1 | 1 | 0% | 333 | 4,380 | +1215% | 0 | 0 | — |
case-06 | pass→pass | 18,354 | 25,232 | +37% | 1 | 1 | 0% | 3,322 | 6,106 | +84% | 0 | 0 | — |
case-07 | fail→pass | 9,218 | 20,614 | +124% | 1 | 1 | 0% | 1,221 | 5,209 | +327% | 0 | 0 | — |
case-08 | pass→fail | 11,644 | 1,521 | -87% | 1 | 1 | 0% | 1,742 | 2,323 | +33% | 0 | 0 | — |
case-09 | pass→fail | 8,176 | 2,608 | -68% | 1 | 1 | 0% | 1,089 | 2,507 | +130% | 0 | 0 | — |
case-10 | pass→pass | 12,506 | 9,374 | -25% | 1 | 1 | 0% | 1,741 | 3,460 | +99% | 0 | 0 | — |
case-11 | fail→pass | 5,283 | 4,150 | -21% | 1 | 1 | 0% | 844 | 2,807 | +233% | 0 | 0 | — |
case-12 | fail→pass | 5,784 | 3,881 | -33% | 1 | 1 | 0% | 849 | 2,748 | +224% | 0 | 0 | — |
case-13 | fail→pass | 2,750 | 3,612 | +31% | 1 | 1 | 0% | 397 | 2,673 | +573% | 0 | 0 | — |
case-14 | fail→fail | 8,015 | 5,477 | -32% | 1 | 1 | 0% | 1,189 | 2,886 | +143% | 0 | 0 | — |
case-15 | pass→pass | 8,344 | 5,456 | -35% | 1 | 1 | 0% | 1,134 | 2,865 | +153% | 0 | 0 | — |
case-16 | pass→pass | 7,293 | 5,859 | -20% | 1 | 1 | 0% | 1,017 | 2,837 | +179% | 0 | 0 | — |
case-17 | fail→pass | 10,252 | 6,741 | -34% | 1 | 1 | 0% | 1,533 | 3,033 | +98% | 0 | 0 | — |
case-18 | fail→pass | 6,324 | 4,677 | -26% | 1 | 1 | 0% | 942 | 2,734 | +190% | 0 | 0 | — |
case-19 | fail→pass | 8,044 | 7,868 | -2% | 1 | 1 | 0% | 1,104 | 3,326 | +201% | 0 | 0 | — |
case-20 | fail→pass | 9,248 | 5,794 | -37% | 1 | 1 | 0% | 1,198 | 2,979 | +149% | 0 | 0 | — |
case-21 | fail→pass | 10,886 | 3,636 | -67% | 1 | 1 | 0% | 1,567 | 2,662 | +70% | 0 | 0 | — |
case-22 | pass→pass | 9,970 | 6,346 | -36% | 1 | 1 | 0% | 1,494 | 3,075 | +106% | 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 19 counted toward the lift figure. The other 3 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 +32 percentage points is the difference between those two pass rates over the 19 comparable cases. 2 cases got worse with the skill loaded, and they are 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.