fetch-paper
Skill59 starsChanged 5 months agoApache-2.0View on GitHub
Fetches a legal open-access copy of a paper from its DOI or arXiv ID — resolves through Unpaywall, arXiv PDF/HTML, and the open-access ACM Digital Library. Use when the user wants to fetch, download, read, or get the PDF or full text of a specific paper. Single polite fetch, transient processing only: it never stores paper text in the repo, never bypasses paywalls, and never uses shadow libraries. For finding papers by topic or venue, use find-papers first; this skill starts from an identifier.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- arthur-plautz/research-toolkittheir own version, first seen Oct 15, 2026
- aryankeluskar/skillstheir own version, first seen Jul 7, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- aryankeluskar/skills★ 1same name
- arthur-plautz/research-toolkit★ 0same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository43 other files it gives its agents.
- docs/llms-full.txtllms.txt
- docs/llms.txtllms.txt
- add-venue-profileSkill
- anonymize-paperSkill
- assess-paperSkill
- benchmark-paperSkill
- check-originalitySkill
- draft-related-workSkill
- draft-surveySkill
- find-papersSkill
- fit-page-limitSkill
- literature-reviewSkill
- make-posterSkill
- make-slidesSkill
- match-styleSkill
- orchestrate-paperSkill
- paper-profileSkill
- parse-cfpSkill
- plan-submissionSkill
- polish-proseSkill
- polish-tables-figuresSkill
- preflight-checkSkill
- prepare-artifactsSkill
- prepare-camera-readySkill
- refactor-research-codeSkill
- refactor-structureSkill
- reflect-and-improveSkill
- reflect-paperSkill
- rehearse-qaSkill
- render-workspace-htmlSkill
- select-venueSkill
- simulate-reviewersSkill
- study-exemplarsSkill
- tailor-to-venueSkill
- test-research-codeSkill
- triage-reviewsSkill
- verify-citationsSkill
- verify-claimsSkill
- verify-resultsSkill
- work-with-overleafSkill
- write-abstractSkill
- write-rebuttalSkill
- write-talk-scriptSkill
The file
We split this skill into the rules it gives an agent
5 rules. About 0 are common, 3 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 25
NOT for topic/title/venue search — run find-papers first to get the identifier.
- Distinctive: line 38
Resolve the identifier: Run:
- Very specific: line 52
Prefer html_url (arXiv HTML) when present — easiest to read directly.
- Distinctive: line 75
Never write paper text, abstracts, or the PDF into the repository or any committed file.
- Distinctive: line 95
Never submit anything to any system on the user's behalf.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Fetch Paper
Resolves one DOI or arXiv ID to a legal open-access copy (PDF URL, arXiv
HTML rendering, landing page) and optionally downloads it for transient
reading. This is the fetch layer that find-papers, literature-review,
study-exemplars, and draft-related-work build on.
When to use
- The user has a DOI, doi.org URL, arXiv ID, or arxiv.org URL and wants the paper.
- Another skill needs full text for a paper it found (lit review, exemplar study).
- The user asks "is there an open-access version of this paper?"
- NOT for topic/title/venue search — run
find-papersfirst to get the identifier.
Inputs
- Exactly one identifier per fetch: a DOI (
10.1145/3589132.3625571,https://doi.org/...) or an arXiv ID (2403.12345,arXiv:2403.12345v2,cs/0309136, or any arxiv.org URL). arXiv-issued DOIs (10.48550/arXiv.*) are auto-converted. UNPAYWALL_EMAIL(orCONTACT_EMAIL) env var — a real address; Unpaywall rejects placeholders with HTTP 422. The script prompts if unset.
Process
Resolve the identifier. Run:
python3 scripts/resolve_oa.py <DOI-or-arXiv-ID> --jsonThe script handles everything deterministic: identifier normalization, Unpaywall
best_oa_locationlookup, arXiv PDF/HTML URLs, the post-2026 ACM DL open-access fallback for10.1145/*DOIs, rate limiting, 429 backoff, and response caching under.cache/fetch-paper/. Never hand-roll these API calls.- Interpret the result (exit codes: 0 = OA found, 3 = no legal OA copy,
2 = bad input/config, 1 = network failure):
- Prefer
html_url(arXiv HTML) when present — easiest to read directly. - Otherwise use
pdf_url. Read the meaning ofoa_status,version, andlicensein references/oa-sources.md. version: submittedVersionmeans a preprint — warn the user that the published version may differ before they quote or cite page numbers.
- Prefer
Fetch the full text transiently. Either read the URL directly, or:
python3 scripts/resolve_oa.py <ID> --downloadwhich saves the PDF to a fresh temp directory (never the repo). Read it, extract what the task needs, then delete it.
dl.acm.orgblocks scripted downloads — give the user the URL to open in a browser instead.- If exit code is 3 (no legal OA copy): relay the script's suggestions —
author homepages / institutional repositories (search via
find-papers), arXiv by title, the user's library access, or emailing the authors. Never suggest Sci-Hub, LibGen, or any shadow library, and never try to bypass a paywall. Full rules: references/copyright-and-politeness.md. - Process, don't persist. Quote at most short excerpts in your analysis. Never write paper text, abstracts, or the PDF into the repository or any committed file. Metadata (DOI, title, BibTeX fields) is always fine.
Output
- A resolution report (human-readable, or JSON with
--json):is_oa,oa_status,license,version,pdf_url,html_url,landing_url,source, plus notes. - With
--download: a transient PDF in a temp directory, path printed to stderr. - Nothing is ever written into the repository.
Guardrails
- One identifier per invocation — never loop this script over a list of DOIs for bulk harvesting (ACM ToU and arXiv policy both prohibit it). For a handful of papers in a session, run it one at a time and let the built-in rate limits breathe.
- Legal sources only; transient processing only; no storage, no redistribution.
- Cite the published DOI, not the preprint, when both exist — and verify every
citation with
verify-citationsbefore it lands in a bibliography. - Never submit anything to any system on the user's behalf.
References
- references/oa-sources.md — Unpaywall fields and errors, arXiv URL patterns, ACM DL open access, troubleshooting.
- references/copyright-and-politeness.md — what is safe to keep vs. transient-only, politeness contract.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

