pdf-recipe

pdf-recipe is a skill for Claude Code from dieter-medium/bidi2pdf. It costs 77 tokens per session (1,070 once invoked), scanned A, original, MIT.

Instructions for writing a bidi2pdf recipe: a short list of browser steps followed by checks on the resulting PDF. A recipe can wait for content, click an element, run a script, and verify the output.

In plain words
What is it for?
Creating PDFs from interactive pages that need waiting, clicking, or other preparation before printing, then checking page count, text, selectors, and browser errors.
Why use it?
It handles pages that cannot be printed correctly in one step, while keeping the process focused on preparing and checking one page.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the bidi2pdf plugin — 6 skills shipped together

Good fit Creating PDFs from interactive pages that need waiting, clicking, or other preparation before printing, then checking page count, text, selectors, and browser errors.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/dieter-medium/bidi2pdf/pdf-recipe
Install

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.

Any agent
npx skills add dieter-medium/bidi2pdf --skill pdf-recipe
Clone the repo
git clone --depth 1 https://github.com/dieter-medium/bidi2pdf

Made for: Claude Code.

Or install bidi2pdf, the plugin that ships this one along with the rest of its 6 skills.

Wrote 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.

agentmods badge for pdf-recipe

README.md
[![agentmods](https://agentmods.dev/badge/skills/dieter-medium/bidi2pdf/pdf-recipe/github.svg)](https://agentmods.dev/skills/dieter-medium/bidi2pdf/pdf-recipe)
Your own site
<a href="https://agentmods.dev/skills/dieter-medium/bidi2pdf/pdf-recipe"><img src="https://agentmods.dev/badge/skills/dieter-medium/bidi2pdf/pdf-recipe/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.

agentmods 80×15 button for pdf-recipe

Your own site · 80×15
<a href="https://agentmods.dev/skills/dieter-medium/bidi2pdf/pdf-recipe"><img src="https://agentmods.dev/badge/skills/dieter-medium/bidi2pdf/pdf-recipe.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 77 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,070 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00077 $0.01070
Opus 5.5 $0.00031 $0.00428
Sonnet 5.5 $0.00015 $0.00214
Haiku 4.5 $0.00008 $0.00107

Measured today against content hash c8257cf48b06, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

pdf-recipe 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 today.

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.

claude-plugin/skills/pdf-recipe/SKILL.md · 93 lines

How it starts

The opening of the file, as written. The whole thing — 93 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Write and run a bidi2pdf recipe

A recipe is a rendering contract: the steps a page needs before it is printed, and what the PDF must be like afterwards. It is not a general automation script. The source of truth for its shape is bidi2pdf schema recipe; read it once before writing one.

Does not: log in through forms, follow links across pages, or extract data. One page, prepared and printed. For a plain page without steps, render is enough (the render-pdf skill).

Ground rules

  • bidi2pdf is the renderer. If it fails, report its error.code, error.hint and exit code; never make the PDF or screenshot another way (Chrome's own print-to-PDF, another PDF engine).
  • Install nothing unasked. Name what is missing and suggest a way (the render-pdf skill's preflight); run nothing that changes the system without the user's yes.
  • bidi2pdf's results first. Read its --json result instead of inspecting the PDF with other tools.

1. Write it

version: 1
source:
  url: https://example.com/invoice/123
actions:
  - wait_for:
      selector: "#invoice"
      timeout: 10
  - click:
      selector: "#show-details"
  - wait_network_idle:
      timeout: 10
assert:
  - selector_exists:
      selector: "#total"
  - no_console_errors: true
  - page_count: 2
  - pdf_text_present:
      text: "Invoice #123"
output:
  pdf: invoice.pdf
  manifest: invoice.manifest.json
  • source: exactly one of url, file, stdin.
  • actions run in order, after the page has loaded:
    • wait_for takes exactly one of selector, paged_js: true (a Paged.js page exists) or script (a JS expression that becomes truthy), plus an optional timeout (default 10 s).
    • click, evaluate (a script, optionally assign: its result), inject_script/inject_style (content: or url:).
    • set_viewport (width, height, optional device_pixel_ratio).
    • wait_network_idle (timeout).
    • emulate_media (media: screen|print, color_scheme: light|dark, reduced_motion) - from the 0.1.23 or later.
  • assert runs after printing. Page checks: selector_exists, text_present, no_console_errors, no_network_failures, fonts_loaded. PDF checks: page_count, pdf_text_present, pdf_not_blank - these need the pdf-reader gem.
  • output needs at least one of pdf, manifest, screenshot.

Read the full file on GitHub · 93 lines

Changes

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.

  1. today Changed · +9 lines c8257cf48b06
  2. yesterday First seen · 84 lines · 77 tokens per session scan A 00b17c4e996d

Subscribe to this mod's changes

pdf-recipe is a skill published in the GitHub repository dieter-medium/bidi2pdf (58 stars, last pushed today), licensed MIT. It adds 77 tokens to every session and 1,070 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.

Related

Other skills, from other repositories

fin-paper-convert

Compile LaTeX to PDF and convert to target journal format.

csmar432/finai-research · 12 tokens

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.

treylom/knowledge-manager · 57 tokens

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…

kdcube/kdcube · 87 tokens

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…

fullbleed-engine/fullbleed-official · 118 tokens

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…

pamelafox/presentation-skills · 111 tokens

export-presentation

Export HTML slide presentations to PDF or PNG screenshots.

jtsternberg/claude-plugins · 14 tokens