agentsclimarketplace

Pandoc

Skill eins78/agent-skills/skills/pandoc

Agent skills collection: session management, TypeScript patterns, Chrome CDP, tmux, Apple integrations

Install
npx -y skills add eins78/agent-skills --skill pandoc

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when converting documents between formats — HTML, Markdown, DOCX, PDF, LaTeX, EPUB, reStructuredText, Org, JIRA, CSV, Jupyter notebooks, slides, and 60+ others. Triggers: convert file, export to PDF, make a PDF, print to PDF, printable PDF, A4 print, fold-to-A5 booklet, turn this into markdown, HTML to markdown, DOCX to markdown, markdown to DOCX, generate slides, create EPUB, format conversion, pandoc, document conversion. Always prefer pandoc over ad-hoc conversion scripts.

The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.

SKILL.md

8.5 KB, as published. Nobody here has run it

Pandoc

Universal document converter. Reader → AST → Writer pipeline with 60+ input and 80+ output formats. Prefer pandoc over writing custom conversion scripts — one command replaces most python-docx, beautifulsoup4, or markdown library usage.

Quick Reference

FlagPurpose
-f FORMATInput format (auto-detected from file extension)
-t FORMATOutput format (auto-detected from extension)
-o FILEOutput file (stdout if omitted)
-sStandalone — complete document with header/footer
--wrap=noneDon't rewrap lines (preserve original line breaks)
--extract-media=DIRExtract images from DOCX/EPUB/ODT
--tocGenerate table of contents
--number-sectionsNumber section headings
--pdf-engine=ENGINEPDF backend (default: pdflatex)
--reference-doc=FILEStyle template for DOCX/ODT/PPTX output
--template=FILECustom output template
--embed-resourcesEmbed images/CSS inline (HTML)
-V KEY=VALUESet template variable
-L SCRIPTApply Lua filter
--shift-heading-level-by=NAdjust heading levels
--columns=NLine wrap width (default 72)

Common Recipes

HTML → Markdown

pandoc -f html -t gfm -o output.md input.html
pandoc -f html -t gfm --wrap=none https://example.com/page  # from URL

Markdown → HTML

pandoc -s -o output.html input.md                    # standalone page
pandoc -s --toc --css=style.css -o output.html input.md  # with TOC + CSS
pandoc -t html input.md                              # fragment only (no <head>)

DOCX → Markdown

pandoc --extract-media=media/ --wrap=none -o output.md input.docx

Markdown → DOCX

pandoc -o output.docx input.md
pandoc --reference-doc=template.docx -o output.docx input.md  # styled

Markdown → PDF

Requires a LaTeX engine (or alternative). See ${CLAUDE_SKILL_DIR}/references/pandoc-install.md for setup.

pandoc -o output.pdf input.md                           # default (pdflatex)
pandoc --pdf-engine=xelatex -o output.pdf input.md      # Unicode/custom fonts
pandoc --pdf-engine=typst -o output.pdf input.md        # lightweight, no LaTeX
pandoc --pdf-engine=weasyprint -t html -o output.pdf input.md  # via HTML/CSS

Compact A4 print PDF (Marked-style, with Japanese + emoji)

For printable docs that match the look of Marked 2's GitHub/Swiss styles — 9pt body, bold heading hierarchy, tight A4 margins, full Unicode + emoji support via Apple system font fallback. Uses pandoc → HTML → headless Chrome; no LaTeX needed.

"${CLAUDE_SKILL_DIR}/scripts/md2pdf-print.sh" input.md output.pdf

The wrapper:

  1. Pipes markdown through pandoc with --embed-resources and the bundled themes/marked-print.css.
  2. Renders with chrome --headless=new --print-to-pdf.

Why not pandoc's own PDF engines? xelatex/typst/weasyprint all need extra fonts to render Japanese + emoji together. Headless Chrome already has Apple's full font stack and emoji color font available, so glyph fallback "just works" for any script.

Why not Marked 2's own PDF export? On macOS 26.3.1, Marked's "Export PDF" clips ~5–10pt off the left edge of every page in all styles. This pipeline bypasses the underlying Quartz PDFContext bug entirely.

Trade-off: output PDFs are ~4× larger than LaTeX output because Chrome embeds font subsets. Acceptable for one-shot print; not ideal for distribution-sized PDFs. Page count and density match Marked 2 closely, so it works well for booklet folding (e.g., A4 fold-to-A5).

Long lines in fenced code blocks wrap at the page edge (CSS sets white-space: pre-wrap; overflow-wrap: anywhere) so they don't get silently clipped. If you'd rather keep lines unbroken, break them in the source.

Pandoc has no Chrome --pdf-engine (as of 3.9). Even if one ships later, this wrapper still gives explicit control over headless flags and the print stylesheet, which is the reason to keep it.

Jupyter Notebook ↔ Markdown

pandoc -o output.md notebook.ipynb                    # notebook → markdown
pandoc -o output.ipynb input.md                       # markdown → notebook

Markdown → Slides

pandoc -t revealjs -s -o slides.html input.md         # reveal.js
pandoc -o slides.pptx input.md                        # PowerPoint
pandoc -t beamer -o slides.pdf input.md               # LaTeX Beamer

EPUB

pandoc -o book.epub chapter1.md chapter2.md metadata.yaml

Man page → Markdown

man pandoc | pandoc -f man -t gfm --wrap=none

Batch conversion

for f in *.docx; do pandoc --extract-media=media/ -o "${f%.docx}.md" "$f"; done

Format Detection

Pandoc auto-detects formats from file extensions. Specify -f/-t explicitly when:

  • Reading from stdin or writing to stdout
  • Extension is ambiguous (e.g., .txt → defaults to markdown)
  • You need a specific variant (gfm vs markdown vs commonmark)

Markdown Variants

FormatUse for
gfmGitHub — tables, task lists, strikethrough, autolinks
commonmarkStrict CommonMark spec
commonmark_xCommonMark + pandoc extensions
markdownPandoc's Markdown — most features, default
markdown_strictOriginal Gruber Markdown — minimal

Listing formats

pandoc --list-input-formats
pandoc --list-output-formats
pandoc --list-extensions=gfm          # extensions for a specific format

Standalone vs Fragment

ModeFlagOutputUse when
Fragment(default)Body content onlyEmbedding in another document
Standalone-sComplete document with headersCreating a valid file (HTML, LaTeX, etc.)

Always use -s for HTML files, LaTeX documents, and slide decks. DOCX/PDF/EPUB are always standalone.

When to Use Pandoc vs Other Tools

TaskToolWhy
Document format conversionpandocBuilt for this — one command
Clean HTML → MarkdownpandocHandles structure well
Complex web scrapingDedicated scraperPandoc needs clean HTML input
PDF text extractionpdftotext, pdfplumberPandoc cannot read PDF
Image format conversionImageMagick, sipsNot pandoc's domain
CSV/JSON data processingjq, csvkit, codePandoc reads CSV/JSON but as documents
Markdown rendering in terminalglow, pandoc -t ansiEither works
Office doc creation (complex)python-docx, openpyxlWhen pandoc's model is too simple

Common Mistakes

MistakeFix
Writing a Python script for DOCX → MDUse pandoc --extract-media=media/ -o out.md in.docx
Forgetting -s for standalone HTMLAdd -s when output needs <head> and <body>
PDF fails — no LaTeX installedInstall texlive/mactex, or use --pdf-engine=typst or weasyprint
Losing images from DOCXAdd --extract-media=media/
Wrong markdown flavor in outputSpecify -t gfm or -t commonmark explicitly
Piping binary formats to stdoutUse -o file.docx — DOCX/PDF/EPUB must write to files
Line wrapping mangles outputAdd --wrap=none to preserve original line breaks

References

Consult for deep dives — these are loaded on demand, not auto-included:

  • ${CLAUDE_SKILL_DIR}/references/pandoc-manual.md — Curated option reference, templates, extensions
  • ${CLAUDE_SKILL_DIR}/references/pandoc-install.md — Installation on macOS, Linux, Docker + PDF engines
  • ${CLAUDE_SKILL_DIR}/references/pandoc-advanced.md — Lua filters, citations, slides, custom writers, EPUB

Bundled Assets

  • ${CLAUDE_SKILL_DIR}/themes/marked-print.css — Compact A4 print stylesheet (9pt body, GitHub-like headings, Japanese + emoji)
  • ${CLAUDE_SKILL_DIR}/scripts/md2pdf-print.sh — Markdown → A4 print PDF via pandoc + headless Chrome

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.