LaTeX Scaffold
SkillDocs & knowledgeConvert an existing Markdown manuscript draft into a buildable LaTeX project with canonical structure and build configuration. Use when prose already exists but no LaTeX source tree does. Not for checking template drift in an existing project; use $latex-template.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the LaTeX Scaffold skill
What this skill tells your AI
The instructions your AI receives, as published by flonat/flonat-research in skills/latex-scaffold/SKILL.md and read by ahel’s review.
Convert an approved Markdown draft into a minimal, compilable LaTeX project. This is a deterministic format conversion — prose quality should already be addressed in the source draft.
When to Use
- Converting a literature review, survey, or report from Markdown to LaTeX for PDF output
- Turning meeting notes or drafts into a formatted document
- Bootstrapping a LaTeX project from an existing outline
- Any time you need md→tex without rewriting content
Inputs
- A Markdown file (
.md) — the draft to convert - A
.bibfile (optional) — if the draft contains citations
Outputs
- A
.texfile ready to compile withlatex - The fail-closed canonical
.latexmkrcif one does not already exist. Invoke thelatexpre-flight to copy the canonical artifact; never synthesize selected directives.
Workflow
Step 1: Analyse the Draft
Read the Markdown file and inventory:
- Heading structure (determine
\section/\subsectiondepth) - Citations (
[@Key]or[@Key1; @Key2]patterns) - Tables (Markdown pipe tables)
- Math blocks (
$...$inline,$$...$$display) - Figures (
) - Code blocks (fenced with language)
- Whether an abstract section exists
Step 2: Create the LaTeX File
Apply these conversion rules:
| Markdown | LaTeX |
|---|---|
# Title (first H1) | \title{...} |
## Section | \section{...} |
### Subsection | \subsection{...} |
#### Subsubsection | \subsubsection{...} |
## Abstract | \begin{abstract}...\end{abstract} |
Headings starting with Appendix | \appendix once, then \section{...} |
**bold** | \textbf{...} |
*italic* | \emph{...} |
`code` | \texttt{...} |
[@Key] | \citep{Key} |
[@Key1; @Key2] | \citep{Key1,Key2} |
@Key (inline) | \citet{Key} |
$...$ / $$...$$ | Pass through unchanged |
- item | \begin{itemize}\item ...\end{itemize} |
1. item | \begin{enumerate}\item ...\end{enumerate} |
> quote | \begin{quote}...\end{quote} |
 | \begin{figure}[htbp]\includegraphics{path}\caption{caption}\end{figure} |
| Pipe tables | \begin{table}[htbp]\begin{tabular}{...}...\end{tabular}\end{table} |
| Fenced code blocks | \begin{verbatim}...\end{verbatim} |
--- (horizontal rule) | \bigskip\hrule\bigskip or omit |
Preamble Template
\documentclass[a4paper,11pt]{article}
\usepackage[a4paper,margin=1in]{geometry}
\usepackage{hyperref}
\hypersetup{colorlinks=true,linkcolor=blue,citecolor=blue,urlcolor=blue}
\usepackage{booktabs}
\usepackage{tabularx}
\usepackage{graphicx}
\usepackage{amsmath,amssymb}
\usepackage{enumitem}
\usepackage[backend=biber,style=authoryear,natbib=true]{biblatex}
\addbibresource{references.bib}
\title{...}
\author{...}
\date{\today}
\begin{document}
\maketitle
% content here
\printbibliography
\end{document}
Adjust the preamble based on what the draft actually uses (e.g., skip graphicx if no figures). The natbib=true option provides \citet/\citep compatibility. If the project already uses natbib (e.g., with a journal .bst file), keep natbib — but for new scaffolds, biblatex is the default.
Step 3: Strip Markdown Residue
After conversion, scan the .tex file for any remaining Markdown syntax:
##heading markers**bold markers[@citation markers- Pipe
|table syntax ![image markers
These indicate incomplete conversion — fix them.
Step 4: Wire Bibliography
- If a
.bibfile exists in the project, point\addbibresource{}to it - If the project has a
references.bib, use that - If no
.bibexists but citations are present, create placeholder comments:% TODO: create .bib with keys: Key1, Key2, ... - Ensure
\printbibliographyis at the end of the document (not\bibliography{})
Step 5: Compile and Verify
Run latex to compile. Verify:
- Document compiles without errors
- All citations resolve (or are marked as TODO)
- Tables render correctly
- Math renders correctly
- Page count is reasonable
Rules
- No content rewriting — this is format conversion only. Do not improve prose, fix grammar, or reorganise sections.
- Preserve all content — every paragraph, figure reference, and citation in the draft must appear in the
.texoutput. - Strip heading numbering — if the draft has numbered headings like
1.2 Methods, let LaTeX handle the numbering (just use\subsection{Methods}). - Use
latexfor compilation — never barepdflatexorlatexmkwithoutout/directory. - Bold caption lines like
**Table 1. Description**immediately before a pipe table should become\caption{Description}inside atablefloat.
Cross-References
| Skill | When to use alongside |
|---|---|
latex | Compile the scaffolded .tex file |
latex | For manual compilation config and .latexmkrc setup |
bib-validate | After scaffolding to verify all citation keys resolve |
proofread | After scaffolding for grammar and consistency check |
latex-template | After scaffolding to verify preamble aligns with the working paper template |
Citation Contract
- Paperpile is the only source of truth for committed citation keys and BibTeX metadata.
- Before writing
\cite{key}, verify withpaperpile get-item keyandpaperpile export-bib key. - Resolve unknowns in order: DOI lookup → Paperpile substring search →
refpilesemantic search → Paperpile verify. - A DOI miss is not non-membership; continue with title/author search and refpile.
- If unresolved, write
\CiteTodo{slug}{title/author/year/DOI hint}— never a guessed key. - Drafting sub-agents must not write/edit the active
.bib; only the orchestrator regenerates it from Paperpile exports. - Stage genuine new refs under
.paperpile-import/for manual Paperpile import; don't cite until Paperpile mints the key. - Run
scripts/bib/citation_lint.pybefore commit; zero placeholders, zero non-Paperpile keys, zero hand-authored metadata.
See rules/paperpile-citations.md for the full workflow.
Signals
- GitHub stars
- 133
- Forks
- 24
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
latex-scaffold- Source
- github.com/flonat/flonat-research