Best for
- Use this skill when the user has attached a PDF, paper, report, or other document and the answer needs its content: summarize a section, compare sections, read specific pages, check the table of contents, or read a valu…
xuzhougeng/wisp-science/skills/pdf-explore/SKILL.md
Use this skill when the user has attached a PDF, paper, report, or other document and the answer needs its content: summarize a section, compare sections, read specific pages, check the table of contents, or read a value off a figure. The `read` tool cannot parse PDF binary — python is the extraction path. Provides `pdf_pages` (pages as text or rendered PNGs, cached) and `pdf_outline` (embedded-bookmark TOC) in the persistent python kernel; load them once via the Kernel Sidecar exec line that `u
Decision brief
The read tool cannot parse PDFs (binary), and a 50-page PDF pasted wholesale is 40K+ tokens. This skill parses the PDF once in the persistent python kernel (disk + memory cached) so you load only the pages that matter.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/xuzhougeng/wisp-science --skill "skills/pdf-explore"Inspect the Agent Skill "pdf-explore" from https://github.com/xuzhougeng/wisp-science/blob/95d2c13d1665d46a388b5bdc998dcce0d5ec2eee/skills/pdf-explore/SKILL.md at commit 95d2c13d1665d46a388b5bdc998dcce0d5ec2eee. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
Review the “Which helper” section in the pinned source before continuing.
Free and instant when the PDF has embedded bookmarks (most LaTeX-compiled papers do). No LLM fallback in this host: if it returns [], skim pdfpages(path, mode="text") first lines per page to build your own map.
Printing is fine at this scale (2–4KB/page). Python output beyond the context budget (16KB) gets head/tail-truncated at ingestion — so for anything bigger, use the next recipe instead of printing.
For "summarize the methods" / "compare section 3 and 5" / anything drawing on several page ranges, write the pages to a file in one call, then read that file — read results enter context whole:
A full page render is too low-res to read axis labels off a dense figure. Render high-DPI, crop the figure region with PIL, then view the crop:
Permission review
The documentation asks the agent to create, modify, or delete local files.
drawing on several page ranges, write the pages to a file in **one**The documentation asks the agent to read local files, directories, or repositories.
call, then `read` that file — `read` results enter context whole:Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 72/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 560 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
The read tool cannot parse PDFs (binary), and a 50-page PDF pasted
wholesale is ~40K+ tokens. This skill parses the PDF once in the
persistent python kernel (disk + memory cached) so you load only the
pages that matter.
Load first (once per session): run the exec(...) line from the
"Python Kernel Sidecar" section this skill's use_skill output ends
with. Definitions persist across cells; re-run only after a kernel
restart. Requires pypdfium2 (plus pillow for image mode) — if the
first call raises ImportError, install per its hint and re-run.
| when | returns | |
|---|---|---|
pdf_outline(path) | structured doc (paper, report, book) — try this first | [{page, heading, level}, ...] from embedded bookmarks; [] + hint if none |
pdf_pages(path, pages=[...], mode="text") | the pages/sections you actually need | [{page, text, n_chars}, ...] |
pdf_pages(path, mode="image", dpi=200, pages=[N]) | figures, scanned pages | PNG per page under .cache/pdf-explore/; view via view_image |
mode="auto" (default) | unknown PDF | text; flips to image when pages have no text layer (scans) |
for e in pdf_outline("paper.pdf"):
print(f"p{e['page']:>3} {' ' * (e['level'] - 1)}{e['heading']}")
Free and instant when the PDF has embedded bookmarks (most
LaTeX-compiled papers do). No LLM fallback in this host: if it returns
[], skim pdf_pages(path, mode="text") first lines per page to build
your own map.
for p in pdf_pages("paper.pdf", pages=[3, 4, 5], mode="text"):
print(f"\n── page {p['page']} ──\n{p['text']}")
Printing is fine at this scale (~2–4KB/page). Python output beyond the context budget (~16KB) gets head/tail-truncated at ingestion — so for anything bigger, use the next recipe instead of printing.
For "summarize the methods" / "compare section 3 and 5" / anything
drawing on several page ranges, write the pages to a file in one
call, then read that file — read results enter context whole:
wanted = [5, 21, 22, 23, 24, 25, 62, 63, 64] # from pdf_outline
with open("sections.txt", "w") as f:
for p in pdf_pages("paper.pdf", pages=wanted, mode="text"):
f.write(f"\n── page {p['page']} ──\n{p['text']}")
import os; print(f"wrote {os.path.getsize('sections.txt'):,} bytes")
Then read sections.txt (with offset/limit if it is large).
~800 tokens/page as text vs ~8K tokens as an attached image — and you
pay it once.
A full page render is too low-res to read axis labels off a dense figure. Render high-DPI, crop the figure region with PIL, then view the crop:
p = pdf_pages("paper.pdf", mode="image", pages=[5], dpi=200)[0]
from PIL import Image
Image.open(p["image_path"]).crop((x0, y0, x1, y1)).save("fig_p5.png")
Then call view_image on fig_p5.png (or the full image_path once to
locate the figure). Viewed images persist in context until /compact
ages them — view the few crops that matter, not every page.
The upstream skill's LLM fan-out helpers (pdf_scan semantic page
ranking, pdf_extract structured sweeps, pdf_map per-page summaries)
need an in-kernel model-call bridge wisp doesn't provide; they were
removed rather than left to NameError. For an exhaustive sweep, dump all
pages to files (recipe above, chunked) and work through them — or
delegate the reading to the explore subagent once the text is on disk.
Alternatives
K-Dense-AI/scientific-agent-skills
Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.
K-Dense-AI/scientific-agent-skills
Use NeuroKit2 to build or audit reproducible research workflows for physiological time-series preprocessing, event/interval analysis, multimodal alignment, variability, and complexity. Trigger when code imports neurokit2 or needs its current APIs, schemas, and method-aware validation—not for diagnosis or device validation.
github/awesome-copilot
Use this skill whenever the user mentions IP geolocation feeds, RFC 8805, geofeeds, or wants help creating, tuning, validating, or publishing a self-published IP geolocation feed in CSV format. Intended user audience is a network operator, ISP, mobile carrier, cloud provider, hosting company, IXP, or satellite provider asking about IP geolocation accuracy, or geofeed authoring best practices. Helps create, refine, and improve CSV-format IP geolocation feeds with opinionated recommendations beyon
K-Dense-AI/scientific-agent-skills
Comprehensive molecular biology toolkit. Use for sequence manipulation, file parsing (FASTA/GenBank/PDB), phylogenetics, and programmatic NCBI/PubMed access (Bio.Entrez). Best for batch processing, custom bioinformatics pipelines, BLAST automation. For quick lookups use gget; for multi-service integration use bioservices.