This file is byte-identical to the first copy the registry indexed, one of 10 indexed copies. Same content hash, so the same checks give both the same grade.
pdf from frankxai/claude-skills-library is an agent skill: a SKILL.md folder an AI agent loads when a task calls for it.
Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents, and handling forms. When Claude needs to fill in a PDF form or programmatically process, generate, or analyze PDF documents at scale.
Collected from public GitHub. Every version is saved exactly as it was and never changes. Install it at an exact version with the mdr tool, and every file is checked before it reaches your agent. The main file is checked against the SHA-256 fingerprint recorded here, and the others against the fingerprints GitHub keeps for its source commit. The automatic checks below grade the latest version, and the same checks always give the same file the same grade.
What the file says
# PDF Processing Guide
## Overview
This guide covers essential PDF processing operations using Python libraries and command-line tools. For advanced features, JavaScript libraries, and detailed examples, see reference.md. If you need to fill out a PDF form, read forms.md and follow its instructions.
## Quick Start
```python
from pypdf import PdfReader, PdfWriter
# Read a PDF
reader = PdfReader("document.pdf")
print(f"Pages: {len(reader.pages)}")
# Extract text
text = ""
for page in reader.pages:
text += page.extract_text()
```
## Python Libraries
### pypdf - Basic Operations
#### Merge PDFs
```python
from pypdf import PdfWriter, PdfReader
writer = PdfWriter()
for pdf_file in ["doc1.pdf", "doc2.pdf", "doc3.pdf"]:
reader = PdfReader(pdf_file)
for page in reader.pages:
writer.add_page(page)
with open("merged.pdf", "wb") as output:
writer.write(output)
```
#### Split PDF
```python
reader = PdfReader("input.pdf")
for i, page in enumerate(reader.pages):
writer = PdfWriter()
writer.add_page(page)
with open(f"page_{i+1}.pdf", "wb") as output:
writer.write(output)
```
#### Extract Metadata
```python
reader = PdfReader("document.pdf")
…
The line at the top of this page pins the label git:20260525.468c26e, which is what most people want. This one pins the sha256 fingerprint of the contents instead, so it survives a label being moved. Either way the exact version is written to mdr.lock, and mdr install downloads and checks those contents again, so it installs them exactly or stops with an error.
GET https://markdownregistry.com/api/v1/artifacts/art_5vvqhwo4qmk2c5ub
GET https://markdownregistry.com/api/v1/resolve?ref=frankxai/claude-skills-library/pdf
GET https://markdownregistry.com/api/v1/blob/38d8559d4899602f82f3560052132aa0c40cfca80203037729756bdb4fb8e0cb
Your AI assistant does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.
frankxai/claude-skills-library · .grok/skills/multi-harness-orchestrator/SKILL.md · Automatically detect tasks suited for delegation to other agent harnesses (Claude Code as canonical, agy/antigravity…
frankxai/claude-skills-library · absorbed/harness/agent-harness-construction/SKILL.md · Shape an agent's tools, observations, and recovery without adding a second coordinator. Use when defining a tool, a…
frankxai/claude-skills-library · absorbed/harness/context-budget/SKILL.md · Count what a session loads before adding another skill or MCP server. Use when the default prompt is heavy, a new…
frankxai/claude-skills-library · absorbed/harness/cost-aware-llm-pipeline/SKILL.md · Pick the smallest model that can finish the task, and record the class of work. Use when routing a search, a multi-file…
frankxai/claude-skills-library · absorbed/harness/santa-method/SKILL.md · Send a finished change to two reviewers who did not write it, using one rubric, and stop after three rounds. Use before…
frankxai/claude-skills-library · absorbed/harness/search-first/SKILL.md · Look for an existing repo, package, and skill before writing a new one. Use when starting a feature, adding a…
frankxai/claude-skills-library · absorbed/harness/security-review/SKILL.md · Scan a port or a diff before it lands, and apply the narrow deny list for this machine. Use before copying upstream…
frankxai/claude-skills-library · absorbed/harness/strategic-compact/SKILL.md · Write what worked, what failed, and what is still open to a file, then compact at a phase boundary. Use when a long…
anthropics/skills · skills/pdf/SKILL.md · Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables…
eigent-ai/eigent · resources/example-skills/pdf/SKILL.md · Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables…
thinkinaixyz/deepchat · resources/skills/pdf/SKILL.md · Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents…
zebbern/claude-code-guide · skills/pdf/SKILL.md · Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables…
davepoon/buildwithclaude · plugins/all-skills/skills/pdf/SKILL.md · Comprehensive PDF manipulation toolkit for extracting text and tables, creating new PDFs, merging/splitting documents…
xiaomacoltai/math-modeling-skill · tools/pdf/SKILL.md · Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables…
xiaomacoltai/math-modeling-skill · dsh-plugin/math-modeling-agent/skills/math-modeling/tools/pdf/SKILL.md · Use this skill whenever the user wants to do anything with PDF files. This includes reading or extracting text/tables…