Source profileQuality 72/100

xuzhougeng/wisp-science/skills/pdf-explore/SKILL.md

pdf-explore

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

Source repository stars
560
Declared platforms
0
Static risk flags
2
Last source update
2026-07-28
Source checked
2026-07-28

Decision brief

What it does—and where it fits

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.

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…

Not for

  • Tasks that require unconfirmed production actions or broad system permissions.
  • Environments where the pinned source and install steps cannot be inspected.

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/xuzhougeng/wisp-science --skill "skills/pdf-explore"
Safe inspection promptEditorial

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

What the source asks the agent to do

  1. 01

    Which helper

    Review the “Which helper” section in the pinned source before continuing.

    Review and apply the “Which helper” source section.
  2. 02

    Recipe — navigate by outline (try this first)

    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.

    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.
  3. 03

    Recipe — read a few pages (≤ 5)

    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.

    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.
  4. 04

    Recipe — pull whole sections for synthesis

    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:

    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: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.
  5. 05

    Recipe — read a figure in detail

    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:

    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:Then call viewimage on figp5.png (or the full imagepath once to locate the figure). Viewed images persist in context until /compact ages them — view the few crops that matter, not every page.

Permission review

Static risk signals and limitations

Writes files

medium · line 49

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**

Reads files

low · line 50

The documentation asks the agent to read local files, directories, or repositories.

call, then `read` that file — `read` results enter context whole:

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score72/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars560SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
xuzhougeng/wisp-science
Skill path
skills/pdf-explore/SKILL.md
Commit
95d2c13d1665d46a388b5bdc998dcce0d5ec2eee
License
AGPL-3.0
Collected
2026-07-28
Default branch
main
View the original SKILL.md

PDF Explore — navigate a PDF without flooding your context

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.

Which helper

whenreturns
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 pagesPNG per page under .cache/pdf-explore/; view via view_image
mode="auto" (default)unknown PDFtext; flips to image when pages have no text layer (scans)

Recipe — navigate by outline (try this first)

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.

Recipe — read a few pages (≤ ~5)

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.

Recipe — pull whole sections for synthesis

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.

Recipe — read a figure in detail

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.

Not available in this host

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

Compare before choosing

Computed 9831,966

K-Dense-AI/scientific-agent-skills

dask

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.

Computed 9831,966

K-Dense-AI/scientific-agent-skills

neurokit2

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.

Computed 9737,126

github/awesome-copilot

geofeed-tuner

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

Computed 9731,966

K-Dense-AI/scientific-agent-skills

biopython

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.