eigenweltlabs/legalwork/pdf-tools
Claude Code and agent skill by eigenweltlabs/legalwork
- community
Checking that the SKILL.md file is still in the repository.
Firm-owned PDF reading + actions over the in-app PDF viewer. Use whenever the user wants to work with a PDF: read it (extract its text to quote, summarize, or compare), annotate it (sticky notes, highlight boxes), list or fill its form fields (AcroForm), or stamp a signature (typed name + date, or a PNG signature image). Editing always writes a NEW copy (.annotated.pdf / .filled.pdf / .signed.pdf) — the original PDF is never modified. Self-contained; runs on the firm's own infrastructure; pairs…
Install
npx vskill@latest install eigenweltlabs/legalwork/pdf-toolsSKILL.md
PDF actions (annotate / fill-form / sign)
This skill is how this firm annotates, fills, and signs PDFs with AI. It is self-contained: assets/pdf-agent.mjs imports vendored engines (pdf-lib for actions, pdf.js for text — pure JS, no native deps), so it runs in any workspace with no install. Do not hand-edit PDF bytes or reach for python or `pdftotext` (they may not exist on the machine) — use this tool. Every editing command writes a new file next to the source; the original PDF is never touched.
The tool
Coordinates: pages are 1-based; x/y are PDF points (1/72 inch, US Letter is 612×792) with the origin at the BOTTOM-LEFT of the page; (x, y) is the bottom-left corner of the note/highlight/signature. Get each page's size from inspect before placing anything.
Annotate — the plan
- `note` draws a yellow sticky note (text wraps automatically);
textis required. - `highlight` draws a translucent box over existing text;
widthis required,
height defaults to 14 (one text line).
- Optional
coloris"#RRGGBB". A bad page/coordinate fails with a clear error
instead of writing a broken file.
Fill-form
inspect first — fill by the exact `name` it reports. Values by field type: text takes any string, checkbox takes true/false, dropdown / option-list / radio-group take one of the listed `options` (anything else is skipped with the valid options in the reason). The result lists filled and skipped (each skip has a reason) — report skips and retry with corrected names/options rather than dropping them.
Sign
--name is required; --date defaults to today. Default placement is the bottom-right of the LAST page — pass --page/--x/--y to place it elsewhere (e.g. on the signature line inspect showed you). With --image sig.png the PNG is drawn above the signature rule instead of the typed name (--image-width scales it, default 140pt). This is a visible signature stamp, not a cryptographic signature.
Read PDFs and scans
For reading, quoting, summarizing or comparing, call read with filePath. For connected storage use storage_read_file. Neither requires loading this skill, opening a viewer, inspecting fields or running a shell command.
- PDF-capable models always receive the original PDF, including scans. The provider
handles its embedded text and page images; do not extract text or run OCR first.
- Other models receive embedded text when available. Only pages without text use
the configured OCR service automatically. Images, logos and annotations alone do not trigger OCR.
- Request
ocr: truewhen the user explicitly asks for OCR or relevant visual
additions need recognition. Optionally pass pages: [2, 3] to limit the work. PDF-capable models still receive the original PDF alongside explicit OCR text.
- Text results report page coverage, errors and
next_offset. Follow that offset
for more text. page_sources identifies which pages used OCR; a document-level extraction: "ocr" does not mean every page was OCR'd. A page without embedded text is not an empty document. Report unreadable pages or OCR setup errors; do not repeat the same failed call or claim missing content is absent. Never fabricate content.
The legacy script's text subcommand extracts embedded text only. It is not the document reader and cannot establish that a scan is unreadable.
Workflow
- Resolve the target PDF (attached,
@path, named, or in a folder). If the user
points at a scan, remember highlights cover images fine, but form-fill needs real AcroForm fields — inspect reports fields: [] for flat PDFs; say so and offer annotations instead.
- `inspect` and read the JSON: page sizes for placement, field names/options for
filling. To read the document itself, use `read`.
- Run the action (
annotate/fill/sign). The tool refuses to overwrite
the source; output goes to <base>.annotated.pdf / .filled.pdf / .signed.pdf next to it (--out to change).
- Hand back: state the output file by the `name` the tool returns (a plain,
space-free filename — this is what makes it appear as a clickable PDF artifact in the panel). Tell the user to open it in the in-app PDF viewer, summarize what you did, and flag any `skipped` entries with their reasons.
Guardrails
- Non-destructive. Never modify the source PDF in place; there is deliberately no
--in-place.
- Never fabricate form values, names, or dates — ask when a value is missing.
- Encrypted/broken PDFs fail with a clear message; relay it, don't work around it.
- Distribution. Bundled-core: seeded into every workspace via
core-skills.ts
(scripts/gen-core-skills.mjs), alongside the in-app PDF viewer it feeds.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingapps/server/resources/core-opencode/skills/pdf-tools/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/eigenweltlabs/legalwork/pdf-tools)