Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Scaffold a LaTeX project (`latex/main.tex`, optional bibliography wiring, structure) from an existing Markdown draft. **Trigger**: latex scaffold, md→tex, LaTeX 项目骨架, 生成 main.tex. **Use when**: 需要 LaTeX/PDF 交付(例如 arxiv-survey-latex pipeline),且 draft 已生成/已进入写作阶段。
.claude/skills/willoscar-latex-scaffold/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-16 | ✗→✓ | ▲ Improved | -30% | 0% |
| case-19 | ✗→✓ | ▲ Improved | 5% | 0% |
| case-04 | ✓→✗ | ▼ Worse | -41% | 0% |
| case-05 | ✓→✗ | ▼ Worse | -41% | 0% |
| case-07 | ✓→✗ | ▼ Worse | -48% | 0% |
Convert the approved Markdown draft into a minimal, buildable LaTeX project.
This is a deterministic conversion step; prose quality should already be addressed in output/DRAFT.md.
output/DRAFT.md or output/TUTORIAL.mdcitations/ref.biblatex/main.tex (and any required LaTeX support files)The machine-readable layout contract lives in assets/layout_profiles.json. The default profile uses a 1in A4 margin, includes a table of contents, and may split large tables. The bounded course_paper profile uses a documented 0.9in A4 margin, omits the table of contents, keeps a compact table whole when possible, and sets only the bibliography in \small. Body text remains 11pt. This profile is intended to respect an explicit page range, not to manufacture substantive completeness by shrinking the paper.
latex/ directory if missing.latex/main.tex with sections matching the outline.citations/ref.bib when that file exists.latex/main.tex exists.citations/ref.bib exists, latex/main.tex references it.uv run python .codex/skills/latex-scaffold/scripts/run.py --helpuv run python .codex/skills/latex-scaffold/scripts/run.py --workspace <workspace>--help (inputs/outputs are taken from the unit runner when used via pipeline)latex/main.tex from output/DRAFT.md or output/TUTORIAL.md:uv run python .codex/skills/latex-scaffold/scripts/run.py --workspace <workspace>latex/main.tex includes a table of contents (tocdepth=2) for readability.course_paper profile omits that table of contents according toassets/layout_profiles.json; other profiles include it by default.
article (English-looking front matter). If the draft contains CJK characters, it switches to ctexart so the PDF renders correctly.##/###/#### → \section/\subsection/\subsubsection (strips leading numeric prefixes like 1.2).Appendix / 附录 trigger \appendix once, then render as appendix sections.**Table 1. ...** / **Appendix Table A1. ...** immediately before a Markdown table become a LaTeX table float with \caption{...} and a stable \label{tab:...}.## Abstract → abstract environment.[@Key] or [@Key1; @Key2] → \citep{Key} / \citep{Key1,Key2}.**bold** / *italic* / code → \textbf{} / \emph{} / \texttt{}.latex/main.tex still contains Markdown markersFix:
latex-scaffold and ensure the input output/DRAFT.md is clean (no ##, no **, no [@...] syntax that isn""t handled).Fix:
citations/ref.bib exists and the scaffold points bibliography to it; then compile with latex-compile-qa.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 19,107 | 5,002 | -74% | 1 | 1 | 0% | 4,041 | 1,183 | -71% | 0 | 0 | — |
case-02 | fail→fail | 16,673 | 5,483 | -67% | 1 | 1 | 0% | 2,644 | 1,164 | -56% | 0 | 0 | — |
case-03 | fail→fail | 12,064 | 4,699 | -61% | 1 | 1 | 0% | 2,060 | 1,065 | -48% | 0 | 0 | — |
case-04 | pass→fail | 10,008 | 5,406 | -46% | 1 | 1 | 0% | 1,924 | 1,144 | -41% | 0 | 0 | — |
case-05 | pass→fail | 9,903 | 5,183 | -48% | 1 | 1 | 0% | 1,877 | 1,102 | -41% | 0 | 0 | — |
case-06 | pass→pass | 8,946 | 4,296 | -52% | 1 | 1 | 0% | 1,719 | 1,690 | -2% | 0 | 0 | — |
case-07 | pass→fail | 10,048 | 5,122 | -49% | 1 | 1 | 0% | 2,121 | 1,108 | -48% | 0 | 0 | — |
case-08 | fail→fail | 5,504 | 5,573 | +1% | 1 | 1 | 0% | 904 | 1,112 | +23% | 0 | 0 | — |
case-09 | pass→fail | 3,750 | 5,812 | +55% | 1 | 1 | 0% | 544 | 1,186 | +118% | 0 | 0 | — |
case-10 | pass→pass | 8,566 | 5,125 | -40% | 1 | 1 | 0% | 1,569 | 1,828 | +17% | 0 | 0 | — |
case-11 | pass→fail | 7,968 | 5,881 | -26% | 1 | 1 | 0% | 1,581 | 1,100 | -30% | 0 | 0 | — |
case-12 | pass→fail | 7,111 | 5,484 | -23% | 1 | 1 | 0% | 1,215 | 1,132 | -7% | 0 | 0 | — |
case-17 | pass→fail | 4,394 | 1,922 | -56% | 1 | 1 | 0% | 690 | 1,063 | +54% | 0 | 0 | — |
case-13 | pass→pass | 8,898 | 3,089 | -65% | 1 | 1 | 0% | 1,304 | 1,330 | +2% | 0 | 0 | — |
case-14 | pass→pass | 12,139 | 3,610 | -70% | 1 | 1 | 0% | 2,191 | 1,506 | -31% | 0 | 0 | — |
case-15 | pass→pass | 8,904 | 2,001 | -78% | 1 | 1 | 0% | 1,389 | 1,216 | -12% | 0 | 0 | — |
case-16 | fail→pass | 10,076 | 1,696 | -83% | 1 | 1 | 0% | 1,646 | 1,154 | -30% | 0 | 0 | — |
case-18 | fail→fail | 12,674 | 6,649 | -48% | 1 | 1 | 0% | 1,899 | 2,136 | +12% | 0 | 0 | — |
case-19 | fail→pass | 11,415 | 7,084 | -38% | 1 | 1 | 0% | 2,030 | 2,136 | +5% | 0 | 0 | — |
case-20 | fail→fail | 4,443 | 6,520 | +47% | 1 | 1 | 0% | 161 | 1,243 | +672% | 0 | 0 | — |
case-21 | fail→fail | 14,587 | 9,183 | -37% | 1 | 1 | 0% | 2,458 | 2,736 | +11% | 0 | 0 | — |
case-22 | fail→fail | 3,087 | 5,313 | +72% | 1 | 1 | 0% | 593 | 1,128 | +90% | 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 11 counted toward the lift figure. The other 11 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 -23 percentage points is the difference between those two pass rates over the 11 comparable cases. 8 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.