adjudication-sheets
Build human adjudication / hand-labeling sheets from LLM-pipeline data without evidence truncation. Use when: (1) preparing a CSV/Excel sheet for a human to…
Convert Markdown (.md) files to a polished PDF with ALL images preserved and scaled to the page. Use whenever the user asks to "save this markdown as a PDF", "convert README.md to pdf", "export the .md as a pdf", "turn these notes/docs into a PDF", or wants a PDF deliverable of
$ npx -y skills add kennethkhoocy/applied-micro-skills --skill markdown-to-pdf --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/markdown-to-pdfContext preview
The summary Claude sees to decide when to auto-load this skill.
Convert Markdown (.md) files to a polished PDF with ALL images preserved and scaled to the page. Use whenever the user asks to "save this markdown as a PDF", "convert README.md to pdf", "export the .md as a pdf", "turn these notes/docs into a PDF", or wants a PDF deliverable of
name: markdown-to-pdf description: >- Convert Markdown (.md) files to a polished PDF with ALL images preserved and scaled to the page. Use whenever the user asks to "save this markdown as a PDF", "convert README.md to pdf", "export the .md as a pdf", "turn these notes/docs into a PDF", or wants a PDF deliverable of any GitHub-flavored Markdown document (README, design doc, report, notes) — especially when it contains images or diagrams (remote or local), tables, code blocks, or a linked table of contents. Pipeline: pandoc (GFM → standalone HTML with embedded resources) → headless Chrome print-to-pdf with a GitHub-like print stylesheet → pypdf verification that every referenced image is embedded. Do NOT use for .tex → PDF (use a LaTeX toolchain) or for .docx work (use word-docx / tex2docx). metadata: author: Claude Code date: 2026-06-11 version: 1.1.0
Converting Markdown to PDF through pandoc's default LaTeX route breaks on real-world GitHub-flavored documents: Unicode box-drawing characters in code blocks (`├──`) crash pdflatex, wide GFM tables overflow the page, remote images need manual download, and the output looks nothing like the rendered Markdown the author reviewed. Naive HTML routes drop images or paste them at native resolution so they spill off the page.
fenced code blocks, blockquotes, or `#`-anchor TOC links.
Render the Markdown to HTML exactly as a browser would, then print it.
**One command (preferred):**
python ~/.claude/skills/markdown-to-pdf/scripts/md2pdf.py <input.md> [-o out.pdf]
The script: (1) runs pandoc `-f gfm -t html5 --standalone --embed-resources` with `assets/print.css`, executed from the Markdown's own directory so relative image paths resolve, and with remote images fetched and inlined as data URIs; (2) prints with headless Chrome (Edge/Chromium fallback) using `--no-pdf-header-footer --virtual-time-budget=30000`; (3) verifies with pypdf that the embedded raster-image count is at least the number of image references in the source, printing each image's page and dimensions. Exit code 2 flags a missing-image warning.
**Manual equivalent** (what the script automates):
pandoc input.md -f gfm -t html5 -s --embed-resources -c print.css \
--metadata pagetitle="input" -o /tmp/input.html
"/c/Program Files/Google/Chrome/Application/chrome.exe" --headless \
--disable-gpu --no-pdf-header-footer --virtual-time-budget=30000 \
--print-to-pdf="out.pdf" "file:///tmp/input.html"**Why this works for images.** The stylesheet constrains every image with `max-width: 100%; max-height: 240mm; width/height: auto; break-inside: avoid`, so each image scales to the printable width, a very tall diagram still fits a single page, aspect ratio is preserved, and no image is split across a page break. `--virtual-time-budget` makes Chrome wait for image loading before printing; `--embed-resources` makes the HTML self-contained so nothing depends on the network at print time.
1. The script's pypdf pass: page count, plus one line per embedded image with its page number and pixel dimensions; compare against the source's image count. 2. Visual spot-check: the Read tool renders PDF pages as images — read the pages the verifier listed and confirm each diagram is legible and fits the page.
`style-emulation/README.md` (~800 lines: 4 hosted PNG diagrams up to 1410×2998 px, two request/command tables, a box-drawing module map, a linked TOC) → 19-page, 1.35 MB PDF; all 4 images embedded on pages 6/7/9/10, each scaled to one page; tables bordered with zebra striping; code blocks styled; TOC links live.
image that does not fit the space left on a page pushes to the next page, leaving white space behind. Acceptable for reports; mention it to the user.
ids, so existing `(#section-name)` links keep working in the PDF.
pypdf count then under-reports and the warning is a false positive — check visually.
referenced` check is a heuristic, not an exact equality test.
clip); long table cells wrap inside bordered cells at 8.5pt.
16mm 15mm; }`); pass `--css <file>` for a per-job override (e.g. letter, landscape).
print time — useful if pandoc cannot reach a host that Chrome can.
overwrite a PDF in a Dropbox/OneDrive-synced folder — or one open in Acrobat — while still exiting 0, silently leaving the stale file in place (the byte-identical output size is the tell). The script therefore prints to its temp dir and moves the result over the target with retries; if the target stays locked (e.g. the user has the old PDF open), it saves to `<name>.new.pdf` and says so. The pypdf verification step is what catches this class of failure — keep it on.
generation from scratch). Markdown sources route here instead.
pipelines; use those for
Claude Code and Codex skills for empirical applied-microeconomics research: reproducibility auditing, LLM-assisted classification methods, event studies, data infrastructure (WRDS, Stata, pyfixest), and publication-grade tables, figures, and documents.
Build human adjudication / hand-labeling sheets from LLM-pipeline data without evidence truncation. Use when: (1) preparing a CSV/Excel sheet for a human to…
N-round adversarial review pipeline for empirical research output — the chain from data to LaTeX tables to a manuscript that cites them. A Claude drafter…
Before designing, training, or auditing ANY model that replicates human-annotated labels, audit the annotation protocol's INPUT — the exact document/evidence…
Raise real concurrency in asyncio LLM batch scorers built on the OpenAI SDK (AsyncOpenAI, including OpenAI-compatible providers like DeepSeek). Use when: (1)…
Place pre-screened literature citations into a LaTeX or Word manuscript, or restyle the citations already in one. Three modes: (1) inline placement — inline…
Download the actual PDF binary from bot-gated sites (taxpolicycenter.org, urban.org, SSRN-hosted mirrors, think-tank/publisher sites) via the Wayback Machine…