agents/skills/pdf-viewing/SKILL.md
OCR PDFs with docling while tracking per-page text and rasterize PDFs to images. Use for PDF ingestion, page-aware text extraction, rendering pages to images, or inspecting PDF metadata, with outputs saved under a local project directory.
npx skillsauth add jxnl/dots pdf-viewingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Use this skill to OCR PDFs with docling and preserve page numbers, rasterize pages into images, or inspect PDF metadata. Always save outputs under a local project directory (default: ./.pdf-artifacts/<pdf-stem>).
uv venv
uv add --dev docling typer pymupdf
uv run python scripts/pdf_tools.py ocr path/to/file.pdf --out-dir ./.pdf-artifacts/<pdf-stem>
uv run python scripts/pdf_tools.py rasterize path/to/file.pdf --out-dir ./.pdf-artifacts/<pdf-stem>
uv run python scripts/pdf_tools.py ocr <pdf-path>./.pdf-artifacts/<pdf-stem>/ocr-pages.json and ocr-pages.txtExplicit flags
--out-dir <dir>: output directory (relative paths are rooted at the project root)--project-root <dir>: base path for relative output paths--copy-pdf / --no-copy-pdf: control whether the input PDF is copied into the output dir--pages <ranges>: page ranges like 1-3,5,8-10--pages-json <name>: JSON filename for per-page text--pages-text <name>: TXT filename for per-page text--manifest <name>: manifest filename (default manifest.json)--overwrite / --no-overwrite: overwrite existing outputs--dry-run: show what would be writtenuv run python scripts/pdf_tools.py rasterize <pdf-path>./.pdf-artifacts/<pdf-stem>/images/page-0001.jpg (etc.)Explicit flags
--out-dir <dir>: output directory (relative paths are rooted at the project root)--project-root <dir>: base path for relative output paths--copy-pdf / --no-copy-pdf: control whether the input PDF is copied into the output dir--pages <ranges>: page ranges like 1-3,5,8-10--dpi <int>: rasterization DPI--format <jpg|png|webp>: output image format--quality <1-100>: for jpg/webp--images-dir <name>: directory for output images--images-manifest <name>: JSON manifest name with image paths--manifest <name>: manifest filename (default manifest.json)--overwrite / --no-overwrite: overwrite existing outputs--dry-run: show what would be writtenuv run python scripts/pdf_tools.py inspect <pdf-path>manifest.json unless --no-manifestuv run python scripts/pdf_tools.py clean <pdf-path>--out-dir.scripts/pdf_tools.py: Typer CLI with ocr, rasterize, inspect, and clean commands.tools
Use only when the user explicitly asks to stage, commit, push, and open a GitHub pull request in one flow using the GitHub CLI (`gh`).
development
Use when Codex needs to write, rewrite, critique, or reply on Twitter/X in Jason Liu's personal voice. Trigger for requests like "tweet like me", "write this in my style", "make this sound like Jason", "draft a reply", or when Jason asks for Twitter copy about Codex, product building, feedback, launches, quote-tweets, or operator/value takes.
development
Build or refine single-file information-first HTML artifacts, especially index.html or text.html pages, with strong information hierarchy, restrained styling, accessible semantics, and minimal AI-generated frontend tells. Use when creating static HTML reports, research pages, explainers, briefs, dashboards, note indexes, or simple front ends whose goal is comprehension rather than marketing conversion.
development
Codex-specific, session-driven self-improvement for Codex behavior and project instructions. Use when the user asks to inspect past Codex sessions, run a "dream" pass over prior interactions, mine repeated user corrections/preferences, improve or draft skills, update repo/project `AGENTS.md` guidance, or propose durable edits to global `~/.codex/AGENTS.md`.