| name | pandoc |
| description | Universal document conversion with Pandoc. Use when converting between document formats (Markdown, DOCX, HTML, LaTeX, PDF, EPUB, PPTX, reveal.js, CSV, RST, Org), generating polished deliverables from plain text, batch-converting files, applying custom templates or Lua filters, or producing slide decks from Markdown. |
Pandoc Skill
Universal document converter — transforms content between 40+ formats while preserving structure, metadata, and styling.
When to Use
- Convert Markdown → DOCX, PDF, HTML, EPUB, PPTX, or slides
- Convert DOCX/HTML → Markdown (for ingestion into repos or KBs)
- Batch-convert multiple files in one pass
- Generate professional reports with custom templates
- Build reveal.js slide decks from Markdown
- Extract structured content from HTML or EPUB
- Apply Lua filters for custom transformations (citation rewriting, heading renumbering, metadata injection)
- Produce camera-ready LaTeX or PDF from Markdown drafts
Core Commands
pandoc input.md -o output.docx
pandoc input.md -o output.pdf --pdf-engine=lualatex
pandoc input.md -t html5 -o output.pdf --pdf-engine=wkhtmltopdf
pandoc slides.md -t revealjs -s -o slides.html
pandoc input.md -o output.pptx
pandoc input.md --metadata title="My Book" -o output.epub
pandoc input.docx -t markdown -o output.md
pandoc input.html -t markdown -o output.md
pandoc input.csv -f csv -t html -o table.html
pandoc input.md --template=template.tex -o output.pdf
pandoc input.md --lua-filter=filter.lua -o output.docx
for f in *.md; do pandoc "$f" -o "${f%.md}.docx"; done
Workflow
- Identify source and target formats — determine the conversion path.
- Check if extras are needed:
- PDF output → needs a LaTeX engine (
lualatex, xelatex) or wkhtmltopdf
- Styled DOCX → use
--reference-doc=reference.docx
- Slides → choose
revealjs (HTML) or pptx (PowerPoint)
- Citations → use
--citeproc with a .bib file
- Run the conversion — use the simplest command that achieves the goal.
- Verify output:
- For DOCX/PPTX: open or use the
doc/pptx skill for visual QA
- For PDF: use the
pdf skill to render pages and inspect
- For HTML: open in browser or use
agent-browser skill
- Iterate — adjust metadata, templates, or filters as needed.
- Clean up — remove intermediate files.
Key Options
| Flag | Purpose |
|---|
-f FORMAT | Input format (auto-detected from extension if omitted) |
-t FORMAT | Output format (auto-detected from extension if omitted) |
-s / --standalone | Produce complete document (not fragment) |
--template=FILE | Custom template for output |
--reference-doc=FILE | Style reference for DOCX/PPTX output |
--pdf-engine=ENGINE | PDF engine: lualatex, xelatex, wkhtmltopdf, weasyprint |
--toc | Generate table of contents |
--number-sections | Number headings |
--metadata KEY=VAL | Set metadata (title, author, date) |
--lua-filter=FILE | Apply Lua filter for custom transforms |
--citeproc | Process citations from bibliography |
--bibliography=FILE | BibTeX/CSL JSON bibliography |
--highlight-style=STYLE | Code syntax highlighting theme |
--columns=N | Line wrap width for plain text output |
--wrap=none | No line wrapping (useful for Markdown output) |
--extract-media=DIR | Extract images to directory |
YAML Metadata Block
Place at the top of Markdown files for rich output:
---
title: "Document Title"
author: "Author Name"
date: 2026-05-16
abstract: "Brief summary"
lang: en
toc: true
number-sections: true
geometry: margin=1in
fontsize: 12pt
---
Lua Filters (Advanced)
Pandoc supports Lua scripting for custom transformations. Save as .lua:
function Header(el)
el.content = pandoc.walk_inline(el.content, {
Str = function(s) return pandoc.Str(s.text:upper()) end
})
return el
end
Use with: pandoc input.md --lua-filter=uppercase-headings.lua -o output.docx
Temp and Output Conventions
- Intermediate files:
tmp/pandoc/ — delete when done
- Final deliverables:
output/pandoc/ or alongside source file
- Templates: store in
~/.pandoc/templates/ or project-local templates/
- Lua filters: store in
~/.pandoc/filters/ or project-local filters/
Dependencies
Pandoc is installed via the system package manager (brew install pandoc on macOS, apt install pandoc on Linux).
For PDF output, one of:
brew install --cask mactex
brew install basictex
brew install wkhtmltopdf
Format Quick Reference
| Input | Best Output Targets |
|---|
| Markdown | docx, pdf, html, epub, pptx, revealjs, latex |
| DOCX | markdown, html, plain |
| HTML | markdown, docx, epub, pdf |
| LaTeX | pdf, html, docx |
| CSV | html (tables), markdown |
| EPUB | markdown, html, docx |
| Org-mode | markdown, html, docx, pdf |
| RST | markdown, html, docx, pdf |
Integration with Other Skills
- doc/docx skill — use pandoc to generate DOCX, then
doc skill for visual QA
- pdf skill — use pandoc for PDF generation, then
pdf skill to render and verify
- pptx skill — use pandoc for slide generation, then
pptx skill for refinement
- deep-research — convert research outputs to polished deliverables
- hyperframes — convert Markdown scripts to HTML for video compositions