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 vasilyu1983/AI-Agents-public --skill document-pdfgit clone --depth 1 https://github.com/vasilyu1983/AI-Agents-publicWrote 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/vasilyu1983/ai-agents-public/document-pdf)<a href="https://agentmods.dev/skills/vasilyu1983/ai-agents-public/document-pdf"><img src="https://agentmods.dev/badge/skills/vasilyu1983/ai-agents-public/document-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/vasilyu1983/ai-agents-public/document-pdf"><img src="https://agentmods.dev/badge/skills/vasilyu1983/ai-agents-public/document-pdf.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- Socket pass
- Snyk pass
- NVIDIA SkillSpector warn
SkillSpector: 1 finding, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium Excessive Agency · line 196 Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.Fix: Add human-in-the-loop confirmation for destructive, irreversible, or high-impact operations. Never auto-execute commands that modify files, send data, or alter system state.
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.00042 | $0.02772 |
| Opus 5.5 | $0.00017 | $0.01109 |
| Sonnet 5.5 | $0.00008 | $0.00554 |
| Haiku 4.5 | $0.00004 | $0.00277 |
Grade A, and why
document-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 20d 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.
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 — 137 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Document PDF Skill — Quick Reference
Boundary: when the official Anthropic pdf skill is available, prefer it for plain create, merge/split, form fill, and CLI (qpdf/pdftotext) work. Use this skill for its unique lanes: accessibility (PDF/UA-1/UA-2, EAA), real redaction and its evidence gate, metadata scrubbing, pyHanko signing, OCR/table extraction discipline, and PyMuPDF/pdf-lib licensing and maintenance risk.
- EU compliance: scope the product/service and national implementation before applying the EAA to a PDF. Verify that any cited harmonised standard supports the specific applicable legislation in the Official Journal; an EN 301 549 citation under another directive is insufficient. Load references/pdf-accessibility-compliance.md for that scoping step.
- Metadata exists in multiple layers: PDF Info/XMP, filesystem dates, and OS extended attributes. Scrubbing one layer leaves the others available.
Core Decision Rules
- First decide: born-digital PDF (selectable text) vs scanned PDF (images). Scanned PDFs usually require OCR; see
references/pdf-extraction-patterns.md. - If the user needs accessibility/compliance, prefer generating from a source format that supports structure (DOCX/HTML + proper export) rather than “post-fixing” an untagged PDF.
- For deterministic ops (merge/split/rotate/scrub), prefer
scripts/helpers over re-implementing ad hoc. - Never treat black rectangles or overlays as redaction. Real redaction removes the content bytes: PyMuPDF
page.add_redact_annot(rect)thenpage.apply_redactions()per page, then save. Prove it with the redaction evidence gate. - Password protection: pypdf
writer.encrypt(..., algorithm='AES-256')(security handler R6). Omittingalgorithmwrites RC4-128, so always pass it; useAES-256-R5only for a named legacy reader. Permission flags are advisory, not security. See references/pdf-security-redaction.md. - Table extraction is probabilistic, not deterministic: run
pdfplumberfirst and spot-check output against the source page; escalate toCamelotonly when columns/rows are visibly wrong, and always inspect Camelot's per-tableaccuracyscore rather than trusting output blindly. PyMuPDF/fitz(used byscrub_metadata.pyand most redaction/OCR-prep code below) is dual-licensed AGPL-3.0 / commercial. Flag this before shipping it inside a closed-source product or SaaS backend — AGPL's network-use clause can trigger a source-disclosure obligation; get a commercial license from Artifex or substitutepypdf/pdfplumberwhere the required functionality overlaps.pdf-lib(Node): check the upstream package's release activity before depending on it. If it is stale and you need ongoing fixes, evaluate a maintained fork before committing, and pin the dependency either way.
What ships with it
18 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/openai.yaml 351 B
- assets/invoice-template.md 9.9 KB
- assets/pdf-release-checklist.md 2.5 KB
- assets/report-template.md 11 KB
- data/sources.json 13 KB
- learnings.consolidated.md 588 B
- learnings.md 306 B
- references/extraction-stack.md 1.9 KB
- references/pdf-accessibility-compliance.md 7.3 KB
- references/pdf-extraction-patterns.md 14 KB
- references/pdf-forms-interactive.md 6.2 KB
- references/pdf-generation-patterns.md 11 KB
- references/pdf-security-redaction.md 11 KB
- scripts/merge_pdfs.py 1.5 KB runs code
- scripts/rotate_pdf.py 1.6 KB runs code
- scripts/scrub_metadata.py 6.0 KB runs code
- scripts/split_pdf.py 3.0 KB runs code
- scripts/test_scrub_metadata.py 7.5 KB runs code
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.
- 20d ago Changed · -114 lines · +10 tokens per session 2871d3acd73f
- 1mo ago Changed · +1 lines 8d3e7f7976c0
- 1mo ago First seen · 250 lines · 32 tokens per session scan A afc793f02a94
document-pdf is a skill published in the GitHub repository vasilyu1983/AI-Agents-public (101 stars, last pushed 10d ago), licensed MIT. It adds 42 tokens to every session and 2,772 once invoked, about $0.0002 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-08-30.
Other skills, from other repositories
Read, create and manipulate PDF files — extract text and tables, merge, split, rotate, reorder and delete pages, read and fill AcroForm fields, add or strip metadata, encrypt and decrypt, and generate new PDFs from HTML or from scratch. Also covers rasterising pages to images so a PDF can actually be looked at, and…
dev-document
Code that generates documents inside an application (PDF, DOCX, XLSX, PPTX) - choose and wire the library for an export endpoint, an invoice, a scheduled report. Trigger when the user wants their app or a script to generate, export or download PDF/Word/Excel/PowerPoint files. For Claude itself to write, read or edit…
paper-orchestra
Orchestrate the full PaperOrchestra (Song et al., 2026, arXiv:2604.05018) five-agent pipeline to turn unstructured research materials (idea, experimental log, LaTeX template, conference guidelines, optional figures) into a submission-ready LaTeX manuscript and compiled PDF. TRIGGER when the user asks to "write a paper…
instrument-data-to-allotrope
Convert laboratory instrument output files (PDF, CSV, Excel, TXT) to Allotrope Simple Model (ASM) JSON format or flattened 2D CSV. Use this skill when scientists need to standardize instrument data for LIMS systems, data lakes, or downstream analysis. Supports auto-detection of instrument types. Outputs include full…
paper-compile
A workflow that turns LaTeX paper files into a PDF and checks whether the build succeeds. It can address compilation errors and verify requirements such as page limits and required files.
PDF files: create, read, merge, fill, OCR, edit text.