Borrowing it
Nothing to install: this file belongs to Chrisissorry/lazyslides. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/Chrisissorry/lazyslides/develop/.claude/skills/pdf-export/SKILL.mdgit clone --depth 1 https://github.com/Chrisissorry/lazyslidesWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/chrisissorry/lazyslides/pdf-export)<a href="https://agentmods.dev/skills/chrisissorry/lazyslides/pdf-export"><img src="https://agentmods.dev/badge/skills/chrisissorry/lazyslides/pdf-export.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00055 | $0.01083 |
| Opus 5 | $0.00028 | $0.00541 |
| Sonnet 5 | $0.00011 | $0.00217 |
| Haiku 4.5 | $0.00006 | $0.00108 |
Grade A, and why
pdf-export scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 7d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Runs shell commandslowCapability
Expected in a hook, worth knowing in a rule or an instructions file.
After writing files, the eleventy build process sometimes stays alive with 0% CPU — a lingering async handle (d2 WASM worker, chokidar, etc.) keeps the event loop open. This used to hang the export forever because `execS How it starts
The opening of the file, as written. The whole thing — 84 lines — stays where its author put it; the contents beside it link to each section on GitHub.
LazySlides PDF Export
Command
From /Users/john_cusack/Documents/projects/presentations/:
pnpm run pdf <presentation-name> # single presentation
pnpm run pdf # all presentations (skips _-prefixed dirs)
Output lands in _pdfs/<presentation-name>.pdf.
Pipeline (what the script actually does)
Source: /Users/john_cusack/projects/lazyslides/lib/export-pdf.js (editable; lazyslides is a linked/installed local package).
pnpm run build— validate, build CSS, run eleventy. Builds all presentations, not just the requested one.- Spawn
npx eleventy --serve --port 4100as a child. - Poll
http://127.0.0.1:4100/until the server responds (60s timeout). - For each target presentation:
npx decktape reveal --size 1920x1080 --pause 1000 --load-pause 2000 http://127.0.0.1:4100/presentations/<name>/?pdf _pdfs/<name>.pdf. - Kill the server, print summary.
Known gotcha: eleventy doesn't always exit cleanly
After writing files, the eleventy build process sometimes stays alive with 0% CPU — a lingering async handle (d2 WASM worker, chokidar, etc.) keeps the event loop open. This used to hang the export forever because execSync blocked waiting for the child.
The hardened script handles this via an idle-timeout: if the build child emits no stdout for 15s, we force-kill and proceed. You'll see:
Build child idle for 15s — assuming done and force-exiting.
That line is expected and harmless. The _site/ has already been written.
Verifying the pipeline is healthy
There's a one-slide smoke-test presentation at presentations/_test-pdf/. To confirm the export pipeline works in isolation (no d2, no real content):
pnpm run pdf _test-pdf
If that produces _pdfs/_test-pdf.pdf, the pipeline is fine. Any subsequent failure on a real deck is deck-specific — check that deck's content, images, or diagrams.
Debugging a failure
- Nothing visible happens: In the hardened script, decktape's stdout is inherited — you should see
Printing slide 1/N…live. If you don't, the build or server-start phase stalled. Read the printed output carefully; the build log is now inline. - Process leftovers:
ps aux | grep -E "lazyslides|eleventy|decktape" | grep -v grep— kill anything stale before retrying. - Port 4100 in use:
lsof -nP -iTCP:4100. Kill the holder. - Do NOT run
pnpm run devfirst —pdfspawns its own server on a different port (4100 vs 8080), but leftover dev-server processes can confuse things. - Decktape fails with a clear exit code — the script now surfaces it. Common causes: the slide HTML didn't render, an image URL is unreachable, or a d2 diagram failed.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 7d ago First seen · 84 lines · 55 tokens per session scan A cf9c1fe258b8
pdf-export is a skill published in the GitHub repository Chrisissorry/lazyslides (5 stars, last pushed 2mo ago), licensed MIT. It adds 55 tokens to every session and 1,083 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 1 finding (runs shell commands). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
pydicom
Use pydicom to read, inspect, write, transform, and safely preflight local DICOM datasets and pixel data. Applies to DICOM metadata, transfer syntaxes, compression plugins, frames, private elements, JSON, and bounded de-identification review.
foundry-hosted-agent-validation
Step-by-step process for validating a Python Foundry hosted agent sample (under python/samples/04-hosting/foundry-hosted-agents/) end to end — running it locally (native runtime and azd ai agent run) and after deploying it to an Azure AI Foundry project with azd. Use this when asked to validate a hosted agent sample.
skill-doc-delivery
Convert markdown to DOCX, PPTX, XLSX, PDF office documents — use when you need exportable deliverables.
pdf-extract-create-workflow
Complete PDF lifecycle: download, extract, and generate structured documents with reportlab.
document-direct-python
Use direct Python execution for reliable document creation including spreadsheets, PDFs, and structured reports.
pdf-verification-cli
Verify PDF page count and content using command-line tools when Python libraries unavailable.