Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Planner-pass coverage + redundancy report for an outline+mapping, producing `outline/coverage_report.md` and `outline/outline_state.jsonl`. **Trigger**: planner, dynamic outline, outline refinement, coverage report, 大纲迭代, 覆盖率报告. **Use when**: you have `outline/outline.yml` + `outline/mapping.tsv` and want a verifiable, NO-PROSE planner pass before writing.
.claude/skills/willoscar-outline-refiner/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 408% | 0% |
| case-05 | ✗→✓ | ▲ Improved | -10% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 3% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -56% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -33% | 0% |
Goal: make the outline auditable by adding an explicit planner stage that answers:
This is a deterministic “planner” unit: it must not write survey prose.
Required:
outline/outline.ymloutline/mapping.tsvOptional (best-effort diagnosis; may be missing early in the pipeline):
outline/OUTLINE_BUDGET_REPORT.md (if present: explains recent merges; helps interpret mapping/coverage changes)papers/paper_notes.jsonl (for evidence levels)outline/subsection_briefs.jsonl (for axis specificity)GOAL.md (for scope drift hints)outline/coverage_report.md (bullets + small tables; NO PROSE)outline/outline_state.jsonl (append-only JSONL; one record per run)outline/outline.yml to enumerate H2 sections + H3 subsections (section sizing / budget).outline/OUTLINE_BUDGET_REPORT.md exists, use it as the merge/change log so the coverage report can explain why structure changed.outline/mapping.tsv and compute per-H3 coverage and reuse hotspots.papers/paper_notes.jsonl exists, summarize evidence levels (fulltext/abstract/title) for mapped papers.outline/subsection_briefs.jsonl exists, compute axis specificity (generic vs specific axes) per H3.GOAL.md to flag obvious scope drift (keywords not reflected in outline).outline/coverage_report.md and append a run record to outline/outline_state.jsonl.outline/coverage_report.refined.ok exists, the script will not overwrite outline/coverage_report.md.uv run python .codex/skills/outline-refiner/scripts/run.py --helpuv run python .codex/skills/outline-refiner/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; prefer defaults)--checkpoint <C#>: checkpoint id (optional; for logs)section-mapper:uv run python .codex/skills/outline-refiner/scripts/run.py --workspace <workspace>Cause:
papers/paper_notes.jsonl and/or no outline/subsection_briefs.jsonl).Fix:
paper-notes and/or subsection-briefs, then rerun outline-refiner.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 5,515 | 6,331 | +15% | 1 | 1 | 0% | 193 | 1,041 | +439% | 0 | 0 | — |
case-02 | fail→fail | 5,720 | 5,094 | -11% | 1 | 1 | 0% | 275 | 1,009 | +267% | 0 | 0 | — |
case-03 | fail→fail | 5,912 | 6,376 | +8% | 1 | 1 | 0% | 228 | 1,051 | +361% | 0 | 0 | — |
case-04 | fail→pass | 5,426 | 3,756 | -31% | 1 | 1 | 0% | 276 | 1,401 | +408% | 0 | 0 | — |
case-05 | fail→pass | 9,427 | 2,742 | -71% | 1 | 1 | 0% | 1,395 | 1,262 | -10% | 0 | 0 | — |
case-06 | fail→pass | 8,698 | 3,135 | -64% | 1 | 1 | 0% | 1,246 | 1,279 | +3% | 0 | 0 | — |
case-07 | pass→pass | 9,048 | 3,604 | -60% | 1 | 1 | 0% | 1,187 | 1,364 | +15% | 0 | 0 | — |
case-08 | fail→pass | 15,197 | 1,505 | -90% | 1 | 1 | 0% | 2,258 | 997 | -56% | 0 | 0 | — |
case-09 | fail→pass | 11,068 | 1,894 | -83% | 1 | 1 | 0% | 1,522 | 1,016 | -33% | 0 | 0 | — |
case-10 | fail→pass | 7,702 | 1,515 | -80% | 1 | 1 | 0% | 1,169 | 969 | -17% | 0 | 0 | — |
case-11 | fail→pass | 22,963 | 1,486 | -94% | 1 | 1 | 0% | 1,957 | 998 | -49% | 0 | 0 | — |
case-12 | fail→pass | 11,168 | 1,810 | -84% | 1 | 1 | 0% | 1,828 | 1,081 | -41% | 0 | 0 | — |
case-13 | fail→pass | 10,134 | 1,834 | -82% | 1 | 1 | 0% | 1,489 | 1,041 | -30% | 0 | 0 | — |
case-14 | fail→pass | 8,371 | 2,345 | -72% | 1 | 1 | 0% | 1,414 | 1,202 | -15% | 0 | 0 | — |
case-15 | pass→pass | 5,346 | 1,867 | -65% | 1 | 1 | 0% | 868 | 1,125 | +30% | 0 | 0 | — |
case-16 | fail→pass | 10,169 | 1,595 | -84% | 1 | 1 | 0% | 1,485 | 1,015 | -32% | 0 | 0 | — |
case-17 | fail→pass | 12,313 | 1,544 | -87% | 1 | 1 | 0% | 1,933 | 995 | -49% | 0 | 0 | — |
case-18 | fail→pass | 10,320 | 1,711 | -83% | 1 | 1 | 0% | 1,592 | 1,022 | -36% | 0 | 0 | — |
case-19 | pass→pass | 13,308 | 7,503 | -44% | 1 | 1 | 0% | 2,079 | 1,974 | -5% | 0 | 0 | — |
case-20 | pass→fail | 15,684 | 10,450 | -33% | 1 | 1 | 0% | 2,391 | 2,371 | -1% | 0 | 0 | — |
case-21 | pass→fail | 25,024 | 4,922 | -80% | 1 | 1 | 0% | 4,419 | 996 | -77% | 0 | 0 | — |
case-22 | pass→fail | 19,113 | 4,762 | -75% | 1 | 1 | 0% | 3,246 | 974 | -70% | 0 | 0 | — |
case-23 | fail→fail | 4,956 | 4,465 | -10% | 1 | 1 | 0% | 735 | 980 | +33% | 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. 23 cases were attempted, and 16 counted toward the lift figure. The other 7 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 +43 percentage points is the difference between those two pass rates over the 16 comparable cases. 3 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.