Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add dieter-medium/bidi2pdf --skill render-pdfgit clone --depth 1 https://github.com/dieter-medium/bidi2pdfWrote 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/dieter-medium/bidi2pdf/render-pdf)<a href="https://agentmods.dev/skills/dieter-medium/bidi2pdf/render-pdf"><img src="https://agentmods.dev/badge/skills/dieter-medium/bidi2pdf/render-pdf/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/dieter-medium/bidi2pdf/render-pdf"><img src="https://agentmods.dev/badge/skills/dieter-medium/bidi2pdf/render-pdf.svg" alt="Reviewed on agentmods" width="80" 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.00084 | $0.01585 |
| Opus 5.5 | $0.00034 | $0.00634 |
| Sonnet 5.5 | $0.00017 | $0.00317 |
| Haiku 4.5 | $0.00008 | $0.00159 |
Grade A, and why
render-pdf scanned grade A with 0 findings 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 yesterday.
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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 119 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Render a PDF with the bidi2pdf CLI
bidi2pdf prints a page in a real Chrome over WebDriver BiDi. This skill is the order of work and the
pitfalls; the exact options are in bidi2pdf help render, the exact result shape in
bidi2pdf schema render. Read those instead of guessing an option.
Does not: scrape page content or automate a site (log in, click through). bidi2pdf is a
renderer; for a page that needs steps before printing, write a recipe (the pdf-recipe skill).
1. Check what you have
bidi2pdf version --json
--media, --color_scheme and --reduced_motion, and a clean stdout for --json and --output -,
need 0.1.23 or later. If bidi2pdf help render does not list
an option, the installed gem is older - say so instead of working around it.
Where Chrome runs:
- A shared browser (a chromedriver container): pass
--remote-browser-url http://<host>:3000/sessionto every command. Theremote-chromeskill sets one up. - Local: bidi2pdf starts chromedriver itself; Chrome or Chromium must be installed. Inside a
container add
--no-sandbox(or setDISABLE_CHROME_SANDBOX=true).
2. Look before you print
bidi2pdf diagnose --url https://example.com/invoice/123 --json
diagnose loads the page like render and prints no PDF. Read console, network_failures,
fonts.status, print_media and paged_js first: a failed stylesheet or a font still loading is
the usual reason a PDF looks wrong. Add --screenshot page.png to see what Chrome saw, or --pdf try.pdf to render once and get its page count. Something wrong here: the diagnose-pdf skill.
3. Render
bidi2pdf render --url https://example.com/invoice/123 --output invoice.pdf \
--wait-network-idle --json --manifest invoice.manifest.json
- Waits. Without one, bidi2pdf prints as soon as the page's load event fired.
--wait-network-idlewaits for late requests (lazy images, fetched data).--wait-window-loadedwaits until the page's own script setswindow.loaded = true- use it for Paged.js or any page that finishes rendering itself, never for a page that does not set it: that one waits the whole--default-timeout(60 s) and fails withCOMMAND_TIMEOUT. - Input.
--url,--html-file, or--stdinfor HTML on standard input - exactly one. - Output.
--output file.pdf;--output -writes the PDF bytes to stdout and nothing else (it cannot be combined with--json). --manifestrecords what was rendered with which options, to reproduce or debug it later (cookie values and secret headers are left out).- Cookies, headers, basic auth:
--cookie name=value,--header Name=value,--auth user:pass.
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.
- yesterday First seen · 119 lines · 84 tokens per session scan A 698adc2a9847
render-pdf is a skill published in the GitHub repository dieter-medium/bidi2pdf (58 stars, last pushed 9d ago), licensed MIT. It adds 84 tokens to every session and 1,585 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-10-26.
Other skills, from other repositories
fin-paper-convert
Compile LaTeX to PDF and convert to target journal format.
km-content-extraction
Content extraction routing for KM - local documents (HWP/HWPX/PDF/DOCX/XLSX), web, and vault sources. Use when input is a local file or when km-workflow reaches Phase 2 with a non-URL input.
svg-press
Teaches agents how to hand-craft self-contained SVG diagrams that render correctly in browsers, tags, and Playwright PDF/PNG. Covers containment math, viewBox sizing, arrow construction, text hierarchy, KDCube brand color tokens, semantic zone fills, badges, the PNG inspection loop, writepng parameters, multi-diagram…
fullbleed
Use Fullbleed PDF Engine to create or modify document-generation projects for PDFs, reports, invoices, statements, forms, certificates, letters, accessible PDF/PDF-UA, archival PDF/PDF-A, print-ready PDF/PDF-X, transactional output, and fixed or reflowing variable-data/VDP jobs from structured content using Python and…
thumbnail-of-pptx
Capture a thumbnail image of a slide from a OneDrive/Office presentation link. Opens the PowerPoint web viewer in a headless browser and screenshots the slide canvas, producing a clean 16:9 image with no viewer chrome. Works even when the PPTX is not downloadable (e.g. personal OneDrive shares), since it screenshots…
export-presentation
Export HTML slide presentations to PDF or PNG screenshots.