skills/markdown-to-pdf/SKILL.md
Renders a markdown report to a PDF using pandoc with xelatex (11pt serif body, 1-inch margins, numbered footnotes, formal heading hierarchy). Requires a one-time install of pandoc and a LaTeX engine on the user's machine — basictex on macOS or texlive-xetex on Linux. Does not attempt automatic install. Fails loudly with the exact install commands if pandoc or xelatex is missing on the user's PATH. Use when producing a finished strategist or analyst report PDF from a polished markdown source.
npx skillsauth add lyndonkl/claude markdown-to-pdfInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Converts a finished markdown report to a PDF using pandoc and the xelatex engine, with formatting tuned for analyst-style output.
This skill assumes pandoc and a LaTeX engine are already on the user's PATH. It does not install anything. If either tool is missing, the render command exits with the exact install instructions and the user installs once.
macOS:
brew install pandoc basictex
sudo tlmgr update --self
sudo tlmgr install xetex
basictex is about 90 MB. Do not install mactex unless the user specifically needs the full LaTeX stack (~5 GB).
Linux (Debian/Ubuntu):
sudo apt install pandoc texlive-xetex texlive-fonts-recommended
After installation, open a new shell so xelatex is on PATH.
Copy this checklist into the working response and tick each step as it completes:
Markdown-to-PDF render:
- [ ] Step 1: Verify the input markdown file exists.
- [ ] Step 2: Verify pandoc is on PATH. If missing, print the pandoc install block and stop.
- [ ] Step 3: Verify xelatex is on PATH. If missing, print the xelatex install block and stop.
- [ ] Step 4: Create the output directory if it does not already exist.
- [ ] Step 5: Run the pandoc command exactly as specified below.
- [ ] Step 6: Confirm the output PDF file exists. Report its path.
command -v pandoc
If this exits non-zero, print the block in "Failure messages" labelled pandoc-missing and stop. Do not proceed to Step 5.
command -v xelatex
If this exits non-zero, print the block in "Failure messages" labelled xelatex-missing and stop. Do not proceed to Step 5.
Substitute the input and output paths but do not modify any flag:
pandoc <INPUT_MD> \
--from markdown+footnotes+yaml_metadata_block \
--pdf-engine=xelatex \
--output <OUTPUT_PDF> \
--variable geometry:margin=1in \
--variable papersize=letter \
--variable fontsize=11pt \
--variable linestretch=1.2 \
--variable colorlinks=true \
--variable linkcolor=black \
--variable urlcolor=black \
--variable toccolor=black
The variables are tuned for analyst-style output: letter-size paper, 1-inch margins, 11pt body at 1.2 line height, all hyperlinks rendered in black so the printed page reads cleanly.
test -s <OUTPUT_PDF> && echo "PDF rendered: <OUTPUT_PDF>"
If the output file does not exist or is empty after pandoc returns success, treat that as a render failure and surface the pandoc stderr to the user.
Print these blocks exactly as written. They are the contract with the user.
ERROR: pandoc is not installed.
This skill requires pandoc and a LaTeX engine.
Install on macOS:
brew install pandoc basictex
sudo tlmgr update --self
sudo tlmgr install xetex
Install on Linux (Debian/Ubuntu):
sudo apt install pandoc texlive-xetex texlive-fonts-recommended
Open a new shell after installing so the new binaries are on PATH, then re-run.
ERROR: xelatex is not installed.
pandoc is present, but the LaTeX engine (xelatex) is missing.
Install on macOS:
brew install basictex
sudo tlmgr update --self
sudo tlmgr install xetex
Install on Linux (Debian/Ubuntu):
sudo apt install texlive-xetex texlive-fonts-recommended
Open a new shell after installing, then re-run.
text.[^1] in the body with [^1]: ... definitions later in the file. These render as proper LaTeX footnotes.title:, subtitle:, and date: fields, those will appear in the rendered title block.testing
--- name: advisory-edit description: A strict advisory-only editing discipline for a writer who dictates ("speaks out") essays and wants help WITHOUT having their voice changed. The editor directs structure, flags grammar, and suggests strategic language — but never modifies the writer's text unless the writer explicitly says "apply" / "make that change" / "rewrite this." Produces a line-referenced, suggestion-only critique where every item is marked the writer's call. Four passes: structural, l
testing
Provides the house style for analyst-grade strategist writing — third-person register with sparing first-person, no em dashes, no "not X, not Y, not Z" negation cascades, numbered footnote citations rather than inline source parentheticals, specific opinion-signaling phrases, and topic-forward paragraph structure modeled on voice patterns observed in Damodaran's Musings on Markets and Thompson's Stratechery. Use when consolidating working notes into a finished long-form strategist or analyst report that must read as written by a senior human analyst rather than an AI assistant.
testing
Produces step-by-step computational walkthroughs of vector and matrix operations as a sequence of numbered "frames", showing the explicit state at each step. The text-equivalent of a 3Blue1Brown animation — each frame shows what changed and why, so the learner can re-trace the operation by hand. Use when the learner needs to *see* a computation unfold (eigenvalue computation, attention with 3 tokens, gradient descent step, SVD on a 2×2, layer norm on a 3-vector, softmax of a small input), when an explanation has been given but the learner needs to ground it in a worked example, or when introducing an operation that's intimidating in symbol form but trivial in pencil-and-paper form.
development
Domain-neutral methodology for evaluating completeness and logical soundness of an extracted set of components, then transforming them into actionable guidance. Runs the "is it true / is it complete / what of it" critical evaluation pass before any final artifact is built. Checks for completeness gaps, logical consistency, contradictions, and practical applicability. Reusable across any extraction workflow - skill creation (evaluating extracted components before building SKILL.md), paper extraction (evaluating Pass 2 extraction notes before deep reading), report writing (evaluating gathered evidence before synthesis). Use when an agent has extracted structured components from a source and needs to gate-check before downstream commitment. Trigger keywords - synthesis evaluation, completeness check, logic check, critical evaluation, fact-check before synthesis, gap analysis, what is not said.