Food-Fetch — Lawful Full-Text Acquisition
SkillDocs & knowledgeLawfully acquire the full text of academic articles so the research and review skills can read papers, not just abstracts. Routes each article through legal open access (Unpaywall/OpenAlex/PMC/arXiv), the user's own reference-manager library (EndNote/Zotero/Mendeley PDFs), and — only with the user's own logged-in institutional browser session — their library's entitled full text, then extracts the text and writes a manifest of what was and was not obtained. Open-access articles are always downloaded and read, never left at abstract-level. Never bypasses paywalls, DRM, or logins. Use to fetch PDFs for a reference list or DOIs, get full text behind a subscription the user is entitled to, or build a full-text corpus. Triggers: download these papers, get the full text, fetch the PDFs for these DOIs, retrieve full text for my reference list, access the article through my library, build a full-text corpus.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Food-Fetch — Lawful Full-Text Acquisition skill
What this skill tells your AI
The instructions your AI receives, as published by pangenomeai/academic-skills-food-nutrition in food-fetch/SKILL.md and read by ahel’s review.
Turn a list of references or DOIs into read full text, so food-research,
food-deep-research, and food-review build their knowledge base from the actual
papers rather than abstracts. Original work; the routing/manifest architecture is
informed by the open-source nature-downloader skill (see the repo README
Acknowledgements). Legal-access-only, and it never fabricates — a paper that was
not obtained is recorded as not obtained, never summarized as if read.
First-run setup — ask once, remember, remind if skipped
On the first run that needs full text, help the user set up access — this is what
decides whether the review reads real papers. Check
python3 scripts/food_fetch_setup.py status (exit 3 = not set up):
-
If not set up, surface a highlighted request offering the choices, then save the answer so it isn't asked again:
📚 Set up full-text access (one-time). To read papers, not just abstracts, pick one:
- Reference-manager library — send the path to your EndNote
.Datafolder (or Zoterostorage// Mendeley). Best coverage for cited work. - Institutional access — I'll reach entitled full text through your own logged-in library session in the browser when needed.
- Open access only — no setup, but see the warning below.
⚠️ Without access to non-open-access articles, the accuracy of the results is substantially limited — most published papers are paywalled, so the knowledge base and every claim's grounding would rest on abstracts + the ~half of literature that is open access.
Save the choice:
food_fetch_setup.py set --library <path>/--institutional/--open-access-only. - Reference-manager library — send the path to your EndNote
-
If already set up (exit 0), use the saved mode silently — do not re-ask.
-
If the saved mode is
open_access_only, remind at the start of each full-text run — briefly, once — that non-OA access is not configured and that this substantially limits accuracy, and offer to switch (options 1–2). Don't block; proceed at open-access + abstract level.
The store holds only a folder path and a mode — never a password, cookie, or token.
Access ladder (each article, in order) — see references/access-routing.md
- Open access — resolve a legal free PDF (Unpaywall → OpenAlex; PMC/Europe PMC
full text; arXiv/preprints) and download it.
oa_fetcherrunsscripts/fetch_oa.py. Open-access full text is always fetched and read — never left at abstract-level. - The user's reference-manager library —
library_fetcherreads the PDFs the user already downloaded in EndNote (<Library>.Data/PDF/), Zotero (storage/), or Mendeley, mapping each reference by DOI/title. Read-only. - The user's entitled institutional access —
institutional_fetcherreuses the user's own logged-in library session in the browser (Claude-in-Chrome) to open the article through their library resolver / EZproxy / Shibboleth-CARSI / WebVPN and save the entitled PDF. User-driven login only. Seereferences/institutional-access.md. - User-supplied PDFs — anything the user drops in the project folder.
If none reaches it, the article is oa_not_found / library_no_permission — the
user is told plainly, and the source stays unread (not summarized).
Subagents (dispatch via the Agent tool)
fetch_coordinator— takes the reference list / DOIs, confirms the Supporting Information choice once, runs the batch, and returns the manifest + a plain summary of read vs unread.access_router— per article, normalize the DOI/title, detect open-access vs paywalled and publisher, and choose the ladder step (references/access-routing.md).oa_fetcher— download every open-access PDF viascripts/fetch_oa.py; verify each is a real PDF (%PDF); record source + SHA-256.library_fetcher— match references to PDFs in the user's reference-manager library folder and read them (read-only).institutional_fetcher— with the user's own browser session, reach the library-entitled full text and save the PDF; hand off to the user for any login/CAPTCHA/2FA (references/institutional-access.md).content_reader— normalize each obtained article (XML/HTML/PDF) into clean sectioned full text, preferring structured JATS XML over scraped PDF (references/format-reading.md); never treat an abstract or a login page as the paper.
Deliverable — a coverage manifest (references/manifest-and-status.md)
Always return one manifest listing every requested reference with a typed status
(open_access_downloaded · library_pdf_read · institutional_downloaded ·
oa_not_found · library_no_permission · pdf_fetch_failed · not_a_pdf), its
access route, and file/SHA-256 where downloaded — plus a one-line count of how many
were read in full vs not. This is what makes the review's grounding honest and
auditable. Run scripts/privacy_scan.py on anything delivered.
Boundaries (non-negotiable) — references/boundaries.md
Lawful access only: legal OA, the user's own library files, and the user's own authorized institutional session. Never bypass a paywall, DRM, or 2FA; never read, type, export, or ask for passwords / cookies / OTP codes / session tokens; never scrape against a site's terms; no bulk/indiscriminate downloading — only the confirmed list. For a login or verification challenge, hand the browser to the user.
Called by
food-research (screener_appraiser/data_extractor), food-deep-research
(investigator/source_verifier), and food-review (knowledge_builder) call
food-fetch to obtain full text before extracting; the agri-* skills via delegation.
Signals
- GitHub stars
- 31
- Forks
- 3
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
food-fetch- Source
- github.com/pangenomeai/academic-skills-food-nutrition