
Generate, extract, and visually verify PDFs in agent-driven doc and report workflows without layout surprises at delivery.
Overview
pdf is an agent skill most often used in Build (also Validate, Ship) that reads, creates, and reviews PDFs using Poppler visual renders plus reportlab, pdfplumber, and pypdf.
Install
npx skills add https://github.com/openai/skills --skill pdfWhat is this skill?
- Render pages to PNG with Poppler (`pdftoppm`) for layout-first visual review before sign-off
- Create new PDFs with `reportlab` for programmatic formatting and stable typography
- Extract text with `pdfplumber` or `pypdf` for quick checks—not for fidelity validation
- Four-step workflow: visual review → generate → extract → re-render after each meaningful change
- Conventions: `tmp/pdfs/` for scratch work, `output/pdf/` for finals; install via `uv pip` or pip plus Poppler
- 4-step workflow with re-render after each meaningful update
- 3 Python packages: reportlab, pdfplumber, pypdf
Adoption & trust: 5.3k installs on skills.sh; 21.7k GitHub stars; 1/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need reliable PDF output but text-only extraction hides broken margins, overlaps, and fonts that only show up when the file is actually rendered.
Who is it for?
Solo builders shipping layout-sensitive PDFs from Python in a repo with optional Poppler installed and a place under `output/pdf/` for finals.
Skip if: Bulk OCR-only pipelines, interactive PDF forms as the primary focus, or teams that refuse local Poppler/visual review and only want quick text scraping.
When should I use this skill?
Tasks involve reading, creating, or reviewing PDF files where rendering and layout matter.
What do I get? / Deliverables
You get programmatic PDF generation and extraction with a repeatable render-to-PNG verification loop before you hand files to users or stakeholders.
- Final PDF under output/pdf/
- PNG page renders for visual QA
- Intermediate files cleared from tmp/pdfs/ when done
Recommended Skills
Journey fit
Spans multiple journey phases - primary shelf plus alternate fits below.
Document artifacts are produced most often during Build when specs, invoices, and reports ship as PDFs. Docs subphase is where formatted deliverables and layout-sensitive exports live in solo-builder repos.
Where it fits
Render a pricing PDF prototype to PNGs to confirm tables do not clip before sharing with early users.
Generate a technical PDF from reportlab and re-render after each template tweak.
Visually verify release notes or license PDFs bundled with a shipping build.
How it compares
Use this skill package for layout-aware PDF workflows—not ad-hoc “dump text with pypdf” chat without visual verification.
Common Questions / FAQ
Who is pdf for?
Solo and indie builders using coding agents to produce or QA PDF deliverables where how the page looks matters as much as the words on it.
When should I use pdf?
During Build when writing docs exports; during Validate when reviewing prototype PDFs; during Ship when validating final report or invoice rendering before release.
Is pdf safe to install?
Review the Security Audits panel on this Prism page and treat installs like any third-party skill: verify repo source, pinned deps, and what shell/filesystem access your agent grants.
SKILL.md
READMESKILL.md - Pdf
# PDF Skill ## When to use - Read or review PDF content where layout and visuals matter. - Create PDFs programmatically with reliable formatting. - Validate final rendering before delivery. ## Workflow 1. Prefer visual review: render PDF pages to PNGs and inspect them. - Use `pdftoppm` if available. - If unavailable, install Poppler or ask the user to review the output locally. 2. Use `reportlab` to generate PDFs when creating new documents. 3. Use `pdfplumber` (or `pypdf`) for text extraction and quick checks; do not rely on it for layout fidelity. 4. After each meaningful update, re-render pages and verify alignment, spacing, and legibility. ## Temp and output conventions - Use `tmp/pdfs/` for intermediate files; delete when done. - Write final artifacts under `output/pdf/` when working in this repo. - Keep filenames stable and descriptive. ## Dependencies (install if missing) Prefer `uv` for dependency management. Python packages: ``` uv pip install reportlab pdfplumber pypdf ``` If `uv` is unavailable: ``` python3 -m pip install reportlab pdfplumber pypdf ``` System tools (for rendering): ``` # macOS (Homebrew) brew install poppler # Ubuntu/Debian sudo apt-get install -y poppler-utils ``` If installation isn't possible in this environment, tell the user which dependency is missing and how to install it locally. ## Environment No required environment variables. ## Rendering command ``` pdftoppm -png $INPUT_PDF $OUTPUT_PREFIX ``` ## Quality expectations - Maintain polished visual design: consistent typography, spacing, margins, and section hierarchy. - Avoid rendering issues: clipped text, overlapping elements, broken tables, black squares, or unreadable glyphs. - Charts, tables, and images must be sharp, aligned, and clearly labeled. - Use ASCII hyphens only. Avoid U+2011 (non-breaking hyphen) and other Unicode dashes. - Citations and references must be human-readable; never leave tool tokens or placeholder strings. ## Final checks - Do not deliver until the latest PNG inspection shows zero visual or formatting defects. - Confirm headers/footers, page numbering, and section transitions look polished. - Keep intermediate files organized or remove them after final approval. interface: display_name: "PDF Skill" short_description: "Create, edit, and review PDFs" icon_large: "./assets/pdf.png" default_prompt: "Create, edit, or review this PDF and summarize the key output or changes." Apache License Version 2.0, January 2004 http://www.apache.org/licenses/ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION 1. Definitions. "License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. "Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. "Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. "You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. "Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. "Object" form shall mean any form resulting from mechanical tr