pdf – Documents & Office skill for AI agents
Use when tasks involve reading, creating, or reviewing PDF files where rendering and layout matter; prefer visual checks by rendering pages (Poppler) and use Python tools such as `reportlab`, `pdfplumber`, and `pypdf` for generation and extraction.
Install the pdf skill with one command
Pick the tool you use, copy the command and paste it in your terminal. The skill lands in that tool's skills folder and is ready in your next session.
Claude Code
mkdir -p ~/.claude/skills && curl -fsSL https://skill.dn1nguoi.com/z/pdf-d823d.tgz | tar xz -C ~/.claude/skills
Call it in Claude Code: /pdf – then describe the task you want done.
Codex
mkdir -p ~/.codex/skills && curl -fsSL https://skill.dn1nguoi.com/z/pdf-d823d.tgz | tar xz -C ~/.codex/skills
Call it in Codex: $pdf – then describe the task you want done.
Hermes Agent
mkdir -p ~/.hermes/skills && curl -fsSL https://skill.dn1nguoi.com/z/pdf-d823d.tgz | tar xz -C ~/.hermes/skills
Call it in Hermes Agent: /pdf – then describe the task you want done.
DeepSeek
mkdir -p ~/.deepcode/skills && curl -fsSL https://skill.dn1nguoi.com/z/pdf-d823d.tgz | tar xz -C ~/.deepcode/skills
Call it in DeepSeek: /pdf – then describe the task you want done.
SKILL.md content
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
pdftoppmif 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 pypdfIf uv is unavailable:
python3 -m pip install reportlab pdfplumber pypdfSystem tools (for rendering):
# macOS (Homebrew)
brew install poppler
# Ubuntu/Debian
sudo apt-get install -y poppler-utilsIf 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_PREFIXQuality 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.
Related skills
- dcf-model – Build discounted cash flow valuation workbooks in Excel.
- document-to-action-items – Extract cited obligations, deadlines, tasks from documents.
- astro – Build content-focused websites with Astro — zero JS by default, islands architecture…
- audio-transcriber – Transform audio recordings into professional Markdown documentation with intelligent…
- histolab – Extracts and preprocesses whole-slide histology image tiles with Histolab. Use for WSI…
- hads – Use when writing technical documentation that needs to be readable by both humans and AI…
- excel-author – Build auditable financial workbooks headless via openpyxl.
- liteparse – Local document and PDF parsing that returns spatial text with bounding boxes. Use for…