view-pdf — Claude Code skill: view and annotate PDFs
Opens PDFs in an interactive viewer for shared markup, form filling, highlights, stamps, and visual signatures. Use it when text reading alone is not enough.
npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a claude-codeWhat view-pdf does
The skill opens a local PDF or a direct HTTPS PDF URL in an interactive viewer. An agent can navigate pages, search for text, add highlights, notes, stamps, lines, and other annotations, then show a screenshot of the result. It also supports named form fields and visual checks after filling them.
The workflow uses list_pdfs, display_pdf, and interact; the latter handles navigation, text extraction, form filling, and annotations. Open each document with display_pdf once, then pass its returned viewUUID to follow-up actions. The skill works with existing PDFs and does not create new ones, summarize documents, or apply certified digital signatures. A signature is placed as an image, so check the document's legal requirements before relying on it.
What it helps with
- open a PDF for shared visual review
- highlight terms and add review notes
- fill fields in an interactive PDF form
- place a visual signature or initials
- verify markup with a page screenshot
Example prompts for the agent
- Open `contract.pdf`, show the terms page, and highlight the clauses I should review.
- Fill the fields in `application.pdf`, then show a screenshot of the completed page.
- Open `report.pdf`, place a `CONFIDENTIAL` stamp on page 1, and verify its position.
How to install view-pdf
1Skills CLI (Vercel)
npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a claude-code2Manually: put the files in place
~/.claude/skills/view-pdf/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/view-pdf/
1Skills CLI (Vercel)
npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a codex2Manually: put the files in place
.agents/skills/view-pdf/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a cursor2Manually: put the files in place
.cursor/skills/view-pdf/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install anthropics/knowledge-work-plugins view-pdf2Manually: put the files in place
.github/skills/view-pdf/SKILL.md1Skills CLI (Vercel)
npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a gemini-cli2Platform CLI
gemini skills install https://github.com/anthropics/knowledge-work-plugins --path pdf-viewer/skills/view-pdfManually: put the files in place
.devin/skills/view-pdf/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set89
The whole set →Similar
Questions about view-pdf
How do I install view-pdf in Claude Code?
Run npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a claude-code, then run npx skills add anthropics/knowledge-work-plugins --skill view-pdf -a claude-code again. The skill file is at ~/.claude/skills/view-pdf/SKILL.md.
What does view-pdf do?
It opens existing PDFs in an interactive viewer so an agent can help with page navigation, annotations, form filling, and visual signature placement.
Can view-pdf extract text or apply a certified digital signature?
Text extraction is available to understand a document and choose what to annotate, not for summarization. Signatures are placed as images and are not certified or cryptographic digital signatures.
Source text
SKILL.md · Apache-2.0
---
name: view-pdf
description: Interactive PDF viewer. Use when the user wants to open, show, or view a PDF and collaborate on it visually — annotate, highlight, stamp, fill form fields, place signature/initials, or review markup together. Not for summarization or text extraction (use native Read instead).
---
# PDF Viewer — Interactive Document Workflows
You have access to a local PDF server that renders documents in a live
viewer and lets you annotate, fill forms, and place signatures with
real-time visual feedback.
## When to use this skill
**Use the PDF viewer when the user wants interactivity:**
- "Show me this contract" / "Open this paper"
- "Highlight the key terms and let me review"
- "Help me fill out this form"
- "Sign this on page 3" / "Add my initials to each page"
- "Stamp this CONFIDENTIAL" / "Mark this as approved"
- "Walk me through this document and annotate the important parts"
**Do NOT use the viewer for pure ingestion:**
- "Summarize this PDF" → use the native Read tool directly
- "What does page 5 say?" → use Read
- "Extract the table from section 3" → use Read
The viewer's value is showing the user the document and collaborating
on markup — not streaming text back to you.
## Tools
### `list_pdfs`
List available local PDFs and allowed local directories. No arguments.
### `display_pdf`
Open a PDF in the interactive viewer. **Call once per document.**
- `url` — local file path or HTTPS URL
- `page` — initial page (optional, default 1)
- `elicit_form_inputs` — if `true`, prompts the user to fill form
fields before displaying (use for interactive form-filling)
Returns a `viewUUID` — pass this to every `interact` call. Calling
`display_pdf` again creates a **separate** viewer; interact calls with
the new UUID won't reach the one the user is looking at.
Also returns `formFields` (name, type, page, bounding box) if the PDF
has fillable fields — use these coordinates for signature placement.
### `interact`
All follow-up actions after `display_pdf`. Pass `viewUUID` plus one or
more commands. **Batch multiple commands in one call** via the
`commands` array — they run sequentially. End batches with
`get_screenshot` to verify changes visually.
**Annotation actions:**
- `add_annotations` — add markup (see types below)
- `update_annotations` — modify existing (id + type required)
- `remove_annotations` — delete by id array
- `highlight_text` — auto-find text by query and highlight it
(preferred over manual rects for text markup)
**Navigation actions:**
- `navigate` (page), `search` (query), `find` (query, silent),
`search_navigate` (matchIndex), `zoom` (scale 0.5–3.0)
**Extraction actions:**
- `get_text` — extract text from page ranges (max 20 pages). Use for
reading content to decide what to annotate, NOT for summarization.
- `get_screenshot` — capture a page as an image (verify your annotations)
**Form action:**
- `fill_form` — fill named fields: `fields: [{name, value}, ...]`
## Annotation Types
All annotations need `id` (unique string), `type`, `page` (1-indexed).
Coordinates are PDF points (1/72 inch), origin **top-left**, Y increases
downward. US Letter is 612×792pt.
| Type | Key properties | Use for |
|------|----------------|---------|
| `highlight` | `rects`, `color?`, `content?` | Mark important text |
| `underline` | `rects`, `color?` | Emphasize terms |
| `strikethrough` | `rects`, `color?` | Mark deletions |
| `note` | `x`, `y`, `content`, `color?` | Sticky-note comments |
| `freetext` | `x`, `y`, `content`, `fontSize?` | Visible text on page |
| `rectangle` | `x`, `y`, `width`, `height`, `color?`, `fillColor?` | Box regions |
| `circle` | `x`, `y`, `width`, `height`, `color?`, `fillColor?` | Circle regions |
| `line` | `x1`, `y1`, `x2`, `y2`, `color?` | Draw lines/arrows |
| `stamp` | `x`, `y`, `label`, `color?`, `rotation?` | APPROVED, DRAFT, CONFIDENTIAL, etc. |
| `image` | `imageUrl`, `x?`, `y?`, `width?`, `height?` | **Signatures, initials**, logos |
**Image annotations** accept a local file path or HTTPS URL (no data:
URIs). Dimensions auto-detected if omitted. Users can also drag & drop
images directly onto the viewer.
## Interactive Workflows
### Collaborative annotation (AI-driven)
1. `display_pdf` to open the document
2. `interact` → `get_text` on relevant page range to understand content
3. Propose a batch of annotations to the user (describe what you'll mark)
4. On approval, `interact` → `add_annotations` + `get_screenshot`
5. Show the user, ask for edits, iterate
6. When done, remind them they can download the annotated PDF from the
viewer toolbar
### Form filling (visual, not programmatic)
Unlike headless form tools, this gives the user **live visual
feedback** and handles forms with cryptic/unnamed fields where the
label is printed on the page rather than in field metadata.
1. `display_pdf` — inspect returned `formFields` (name, type, page,
bounding box)
2. If field names are cryptic (`Text1`, `Field_7`), `get_screenshot`
the pages and match bounding boxes to visual labels
3. Ask the user for values using the **visual** labels, or infer from
context
4. `interact` → `fill_form`, then `get_screenshot` to show the result
5. User confirms or edits directly in the viewer
For simple well-labeled forms, `display_pdf` with
`elicit_form_inputs: true` prompts the user upfront instead.
### Signing (visual, not certified)
1. Ask for the signature/initials image path
2. `display_pdf`, check `formFields` for signature-type fields or ask
which page/position
3. `interact` → `add_annotations` with `type: "image"` at the target
coordinates
4. `get_screenshot` to confirm placement
**Disclaimer:** This places a visual signature image. It is **not** a
certified or cryptographic digital signature.
## Supported Sources
- Local files (paths under client MCP roots)
- arXiv (`/abs/` URLs auto-convert to PDF)
- Any direct HTTPS PDF URL (bioRxiv, Zenodo, OSF, etc. — use the
direct PDF link, not the landing page)
## Out of Scope
- **Summarization / text extraction** — use native Read instead
- **Certified digital signatures** — image stamping only
- **PDF creation** — this works on existing PDFs only
© anthropics · Apache-2.0 · anthropics/knowledge-work-plugins