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 agentmods add skills/unclutter-pro/atlas/pdfnpx skills add unclutter-pro/atlas --skill pdfgit clone --depth 1 https://github.com/unclutter-pro/atlasWrote 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/unclutter-pro/atlas/pdf)<a href="https://agentmods.dev/skills/unclutter-pro/atlas/pdf"><img src="https://agentmods.dev/badge/skills/unclutter-pro/atlas/pdf.svg" alt="Measured on agentmods" 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 | $0.00243 | $0.03518 |
| Opus 5 | $0.00121 | $0.01759 |
| Sonnet 5 | $0.00049 | $0.00704 |
| Haiku 4.5 | $0.00024 | $0.00352 |
Grade A, and why
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 4d 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 — 250 lines — stays where its author put it; the contents beside it link to each section on GitHub.
PDF Generation Skill
Produces professional, brand-consistent PDFs with Typst as the primary engine. Optimized for fast iteration: write .typ source, run one build-pdf command, get a polished PDF.
When to use this skill
Create new PDFs from scratch:
- Reports — market research, status reports, deliverables (template:
report) - Invoices — Rechnungen mit USt-konformer Struktur (template:
invoice) - Letters — DIN-5008 Geschäftsbriefe (template:
letter) - Memos — Single-page interne Notizen / Recaps (template:
memo) - Custom PDFs — own
.typsource with full Typst flexibility
Work with existing PDFs:
- Fill PDF forms — text fields, checkboxes, radio buttons → references/forms.md
- Merge, split, rotate — combine, extract page ranges, rotate pages → references/existing-pdfs.md
- Watermark, encrypt, repair — qpdf and pypdf one-liners → references/existing-pdfs.md
Form-filling decision tree
python scripts/check_fillable_fields.py <file.pdf>— does the PDF have AcroForm fields?- Has fillable fields →
scripts/extract_form_field_info.pyto inspect, thenscripts/fill_fillable_fields.pyto fill. - No fillable fields (flat scan or rendered form) → fall back to the visual estimation path in references/forms.md.
When NOT to use this skill
- Reading or extracting text from existing PDFs →
document-parseskill - OCR on scanned documents →
document-parseskill
Quick start
# Pick a template and pipe in your data:
build-pdf report \
--title "Markt-Recherche DACH" \
--subtitle "Tech / Beratung / Agentur" \
--author "Atlas" \
output/report.pdf
build-pdf invoice --data examples/invoice-sample.json output/invoice.pdf
build-pdf letter --data my-letter.json output/letter.pdf
build-pdf memo \
--title "Sprint Recap KW 22" \
--to "Team" \
--from "Max" \
output/memo.pdf
# Custom template? Just pass the .typ path:
build-pdf path/to/custom.typ output/custom.pdf
What ships with it
28 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.
- examples/invoice-sample.json 1.1 KB
- examples/letter-sample.json 1.1 KB
- LICENSE.txt 1.4 KB
- references/charts.md 3.5 KB
- references/existing-pdfs.md 3.8 KB
- references/forms.md 12 KB
- references/themes-and-fonts.md 4.9 KB
- references/typst-cheatsheet.md 3.6 KB
- references/writing-memos.md 3.5 KB
- references/writing-reports.md 4.6 KB
- references/zugferd.md 5.6 KB
- scripts/build-pdf 4.6 KB
- scripts/check_bounding_boxes.py 2.7 KB runs code
- scripts/check_fillable_fields.py 824 B runs code
- scripts/convert_pdf_to_images.py 1008 B runs code
- scripts/create_validation_image.py 1.2 KB runs code
- scripts/extract_form_field_info.py 4.2 KB runs code
- scripts/extract_form_structure.py 3.9 KB runs code
- scripts/fill_fillable_fields.py 3.7 KB runs code
- scripts/fill_pdf_form_with_annotations.py 3.2 KB runs code
- scripts/invoice-zugferd 13 KB
- templates/custom-templates.md 9.3 KB
- templates/i18n.typ 6.5 KB
- templates/invoice.typ 8.7 KB
- templates/letter.typ 2.7 KB
- templates/memo.typ 3.2 KB
- templates/report.typ 5.9 KB
- templates/themes.typ 4.5 KB
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.
- 4d ago First seen · 250 lines · 243 tokens per session scan A a012e7fa2379
pdf is a skill published in the GitHub repository unclutter-pro/atlas (2 stars, last pushed 15d ago), licensed MIT. It adds 243 tokens to every session and 3,518 once invoked, about $0.0012 per session on Opus 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-31.
Other skills, from other repositories
foundry-hosted-agent-validation
Step-by-step process for validating a Python Foundry hosted agent sample (under python/samples/04-hosting/foundry-hosted-agents/) end to end — running it locally (native runtime and azd ai agent run) and after deploying it to an Azure AI Foundry project with azd. Use this when asked to validate a hosted agent sample.
paper-reader
Use when user asks to "read paper", "analyze paper", "summarize paper", "读论文", "分析文献", "帮我看一下这篇paper", "论文笔记", or provides a PDF file that appears to be an academic paper. Specialized for CV/DL papers. Also supports Zotero integration: "读一下这篇论文 ...", "快速看一下这篇论文 ...", "批判性分析这篇论文 ...", "读一下 Zotero 里的 XXX", "批量读一下 Zotero…
citra
Skill "citra" from SylphxAI/pdf-reader-mcp, covering citra — pdf evidence for agents, install, or, tools and sdk.
graphic-ebook
Creates professionally designed B2B SaaS e-books in HTML + CSS, exported as print-ready PDF. 3–10 pages, 9 style presets, 11 page layout types. Trigger when user says "create an ebook", "design a lead magnet", "make a PDF guide", "build a gated content piece", "write a B2B ebook", "design a white paper", "create a…
pdf-fill
Fill PDF form fields from a data dict.
pdf-annotations
Use when reading, adding, updating, or removing PDF annotations (highlight, free-text, stamp) or page objects (path/text/image) with Android's platform PDF APIs, or when saving those edits back to disk — the editing surface added in API 36.1 (PdfRenderer.Page) and SDK extension 18 (PdfRendererPreV.Page on API 31+)…