Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Convert a taxonomy (`outline/taxonomy.yml`) into a bullet-only outline (`outline/outline.yml`) with sections/subsections. **Trigger**: outline builder, bullet outline, outline.yml, 大纲生成, bullets-only. **Use when**: structure 阶段(NO PROSE),已有 taxonomy,需要生成可映射/可写作的章节与小节骨架(每小节≥3 bullets)。 **Skip if**: 已经有批准过且可映射的 outline(避免无意义 churn)。 **Network**: none. **Guardrail**: bullets-only;移除 TODO/模板语句;每小节至少 3 个可检查 bullets。
.claude/skills/willoscar-outline-builder/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | -44% | 0% |
| case-08 | ✗→✓ | ▲ Improved | -22% | 0% |
| case-09 | ✗→✓ | ▲ Improved | -45% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 11% | 0% |
outline/outline.refined.ok freezes a reviewed outline only while the marker is newer than the outline, all declared inputs, the defaults asset, and the generator. Upstream changes invalidate the marker and trigger a backed-up regeneration.
Build outline/outline.yml from either:
outline/taxonomy.yml (legacy H3-first compatibility path)outline/chapter_skeleton.yml + outline/section_briefs.jsonl (section-first transition path)Compatibility mode is active: this migration keeps the current output contract while moving intro/related defaults, Stage A bullet templates, and domain-specific comparison framing into references/ and assets/.
Always read:
references/overview.mdreferences/stage_a_contract.mdRead by task:
references/intro_related_patterns.md when changing Introduction / Related Work defaultsreferences/examples_good.md and references/examples_bad.md for bullet calibrationMachine-readable asset:
assets/outline_defaults.yamlRequired:
outline/taxonomy.ymlOptional human calibration only:
ref/agent-surveys/STYLE_REPORT.mdref/agent-surveys/text/Keep the current output contract:
outline/outline.ymlCurrent mode is reference-first with script compatibility:
assets/outline_defaults.yamlassets/outline_defaults.yamlreferences/scripts/run.py still owns outline materialization, section-first input selection, and placeholder-safe overwrite behaviorUse scripts/run.py only for:
Do not treat the script as the main place for:
Introduction / Related WorkKeep these stable:
outline/outline.yml is a YAML listIntroduction and Related Work remain the first two H2 sectionsIntent: / RQ: / Evidence needs: / Expected cites:uv run python .codex/skills/outline-builder/scripts/run.py --helpuv run python .codex/skills/outline-builder/scripts/run.py --workspace <workspace>When running this skill in compatibility mode, scripts/run.py currently reads:
outline/taxonomy.yml, oroutline/chapter_skeleton.yml + outline/section_briefs.jsonlassets/outline_defaults.yamlThe optional style references under ref/agent-surveys/ are for human calibration only:
ref/agent-surveys/STYLE_REPORT.md to sanity-check chapter counts / thicknessref/agent-surveys/text/ only to calibrate structure rather than wordinguv run python .codex/skills/outline-builder/scripts/run.py --workspace <workspace>--workspace <dir>--unit-id <id>--inputs <path1;path2>--outputs <path1;path2>--checkpoint <C*>uv run python .codex/skills/outline-builder/scripts/run.py --workspace <workspace>Related Work still carries domain-specific framing, patch assets/outline_defaults.yaml before changing Python.references/stage_a_contract.md and references/examples_good.md.outline-budgeter rather than expanding this script.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 26,736 | 5,097 | -81% | 1 | 1 | 0% | 4,603 | 1,294 | -72% | 0 | 0 | — |
case-02 | fail→fail | 18,236 | 5,192 | -72% | 1 | 1 | 0% | 2,945 | 1,211 | -59% | 0 | 0 | — |
case-03 | fail→fail | 13,050 | 5,686 | -56% | 1 | 1 | 0% | 2,392 | 1,228 | -49% | 0 | 0 | — |
case-04 | pass→pass | 13,455 | 3,001 | -78% | 1 | 1 | 0% | 2,550 | 1,466 | -43% | 0 | 0 | — |
case-05 | fail→fail | 2,861 | 5,937 | +108% | 1 | 1 | 0% | 383 | 1,296 | +238% | 0 | 0 | — |
case-06 | fail→fail | 6,813 | 6,456 | -5% | 1 | 1 | 0% | 992 | 1,245 | +26% | 0 | 0 | — |
case-07 | fail→pass | 27,899 | 1,264 | -95% | 1 | 1 | 0% | 2,096 | 1,168 | -44% | 0 | 0 | — |
case-08 | fail→pass | 10,739 | 1,703 | -84% | 1 | 1 | 0% | 1,631 | 1,271 | -22% | 0 | 0 | — |
case-09 | fail→pass | 13,349 | 1,910 | -86% | 1 | 1 | 0% | 2,400 | 1,310 | -45% | 0 | 0 | — |
case-10 | fail→pass | 8,533 | 1,840 | -78% | 1 | 1 | 0% | 1,111 | 1,274 | +15% | 0 | 0 | — |
case-11 | fail→pass | 7,183 | 1,353 | -81% | 1 | 1 | 0% | 1,054 | 1,168 | +11% | 0 | 0 | — |
case-12 | fail→pass | 7,477 | 1,679 | -78% | 1 | 1 | 0% | 1,019 | 1,228 | +21% | 0 | 0 | — |
case-13 | fail→pass | 12,575 | 2,584 | -79% | 1 | 1 | 0% | 1,888 | 1,421 | -25% | 0 | 0 | — |
case-14 | fail→pass | 14,355 | 2,181 | -85% | 1 | 1 | 0% | 2,083 | 1,341 | -36% | 0 | 0 | — |
case-15 | fail→pass | 12,338 | 2,321 | -81% | 1 | 1 | 0% | 1,881 | 1,339 | -29% | 0 | 0 | — |
case-16 | fail→fail | 11,961 | 3,684 | -69% | 1 | 1 | 0% | 1,961 | 1,628 | -17% | 0 | 0 | — |
case-17 | fail→pass | 10,117 | 1,712 | -83% | 1 | 1 | 0% | 1,487 | 1,223 | -18% | 0 | 0 | — |
case-18 | pass→pass | 12,204 | 3,914 | -68% | 1 | 1 | 0% | 1,923 | 1,720 | -11% | 0 | 0 | — |
case-19 | fail→pass | 13,912 | 3,752 | -73% | 1 | 1 | 0% | 1,917 | 1,610 | -16% | 0 | 0 | — |
case-20 | fail→pass | 11,555 | 1,707 | -85% | 1 | 1 | 0% | 1,870 | 1,245 | -33% | 0 | 0 | — |
case-21 | fail→pass | 8,020 | 1,531 | -81% | 1 | 1 | 0% | 1,120 | 1,179 | +5% | 0 | 0 | — |
case-22 | pass→pass | 12,498 | 3,789 | -70% | 1 | 1 | 0% | 1,879 | 1,592 | -15% | 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 16 counted toward the lift figure. The other 6 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 +59 percentage points is the difference between those two pass rates over the 16 comparable cases. 1 case got worse with the skill loaded, and it is 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.