Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add hamzabellouch/agent-skills --skill academic-nature-nature-downloadergit clone --depth 1 https://github.com/hamzabellouch/agent-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/hamzabellouch/agent-skills/academic-nature-nature-downloader)<a href="https://agentmods.dev/skills/hamzabellouch/agent-skills/academic-nature-nature-downloader"><img src="https://agentmods.dev/badge/skills/hamzabellouch/agent-skills/academic-nature-nature-downloader/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/hamzabellouch/agent-skills/academic-nature-nature-downloader"><img src="https://agentmods.dev/badge/skills/hamzabellouch/agent-skills/academic-nature-nature-downloader.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00036 | $0.09266 |
| Opus 5 | $0.00018 | $0.04633 |
| Sonnet 5 | $0.00007 | $0.01853 |
| Haiku 4.5 | $0.00004 | $0.00927 |
Grade A, and why
nature-downloader scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
- Runs `fetch(location.href, { credentials: "include" })` inside the page. How it starts
The opening of the file, as written. The whole thing — 624 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Nature Literature Downloader
This skill routes literature through lawful open-access, publisher-API, CNKI institutional, and browser-based institutional providers. scripts/batch_download.mjs is the orchestration entry point; school configuration, publisher credentials, metadata/OA resolution, provider downloads, content validation, and manifests are separate modules.
Verified routes are examples, not defaults. Every institution should start from the user's actual library resource URL, because resource portals, CAS callbacks, EZproxy, WebVPN, IP-authenticated database pages, and database detail pages reveal the live authorization path more reliably than a school name.
SI confirmation gate — do this first. Before downloading any PDF, CAJ, HTML, XML, archive, or attachment, ask whether the user wants Supporting Information. An explicit request for SI counts as yes; an explicit request for正文 only counts as no. Otherwise ask once for the whole batch. Run the downloader with exactly one of
--sior--no-si. Without either flag the script returnssi_confirmation_requiredand does not create the output directory.
Main workflow. Normalize the DOI/title and identify language and publisher before routing. Chinese literature always uses CNKI. For English Elsevier, Springer Nature, and IEEE articles with usable provider credentials, try the publisher API first and do not require an OA determination after a successful API download. If that API attempt fails, automatically check legitimate OA sources. Other English publishers check OA first, then use the institutional Web Access route when OA is unavailable.
规范化 DOI/题名并识别语言、出版商
├─ 中文文献:直接走 CNKI
└─ 英文文献
├─ Elsevier / Springer Nature / IEEE,且已配置有效 Key
│ ├─ 优先通过出版商 API 下载
│ ├─ API 下载成功:结束,不强制判断 OA
│ └─ API 下载失败:检查文章级 OA,再走 PMC / Unpaywall / 合法仓储
└─ 其他出版商
├─ 检查文章级 OA
└─ OA 不可用:走 Web Access 机构授权
Chinese literature is CNKI-only. A Chinese title,
zhmetadata language, explicit CNKI source URL, or--route cnkimust use CNKI even if another OA copy appears to exist. Reuse the user's current Chrome library/CNKI login state and prefer configureddiscovery.cnki_url. Never export cookies or collect the institutional password.
Publisher API fallback. A valid API key does not guarantee full-text entitlement. When an Elsevier, Springer Nature, or IEEE API attempt returns no entitlement or no usable full text, automatically try legitimate OA sources first. Return
api_fallback_confirmation_requiredand ask once whether to use Web Access only after both the publisher API and OA routes fail. Do not switch to institutional Web Access automatically.
Browser-state principle. Authorized downloads depend on the exact browser profile where the user is logged in. If a proxy, CDP session, or browser automation tool opens a fresh profile or a different browser with no login state, do not treat the failure as missing library permission. Switch to a control path that reuses the user's active browser session, or ask the user to authenticate in the controlled browser instance.
Format principle. PDF, HTML full text, and database-native formats such as CAJ are different deliverables. If the user asks for PDF only, require a real PDF link or
no_authorized_pdf_found/pdf_fetch_failedwhen none exists. Do not save CAJ, HTML, or a login page as if it were a PDF.
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- .gitattributes 139 B
- .gitignore 132 B
- agents/openai.yaml 395 B
- assets/banner.jpg 83 KB
- data/publishers.json 885 B
- data/school.schema.json 3.3 KB
- data/schools.yaml 271 B
- docs/nature-downloader-reference-research-2026-07-15.md 21 KB
- docs/superpowers/plans/2026-06-21-nature-downloader-merge.md 2.9 KB
- examples/carsi-retry-template.tsv 406 B
- examples/manifest-template.tsv 494 B
- examples/publisher-verification-template.tsv 425 B
- LICENSE 1.0 KB
- manifest.yaml 1.2 KB
- README_EN.md 3.0 KB
- README.md 5.9 KB
- requirements.txt 64 B
- scripts/batch_download.mjs 35 KB runs code
- scripts/browser_pdf_downloader.mjs 5.4 KB runs code
- scripts/cdp_open_url.mjs 1.7 KB runs code
- scripts/configure_credentials.py 6.7 KB runs code
- scripts/configure_school.py 4.4 KB runs code
- scripts/extract_pdf_text.py 2.8 KB runs code
- scripts/lib/anti-bot.mjs 33 KB runs code
- scripts/lib/cdp-utils.mjs 5.2 KB runs code
- scripts/lib/cnki.mjs 15 KB runs code
- scripts/lib/credentials.mjs 2.5 KB runs code
- scripts/lib/direct-download.mjs 1.4 KB runs code
- scripts/lib/manifest.mjs 1.2 KB runs code
- scripts/lib/metadata.mjs 2.1 KB runs code
- scripts/lib/open-access-provider.mjs 4.4 KB runs code
- scripts/lib/open-access.mjs 4.8 KB runs code
- scripts/lib/pdf-utils.mjs 7.0 KB runs code
- scripts/lib/provider-registry.mjs 365 B runs code
- scripts/lib/provider-utils.mjs 1.9 KB runs code
- scripts/lib/publisher-providers.mjs 4.4 KB runs code
- scripts/lib/routing.mjs 2.4 KB runs code
- scripts/lib/school-config.mjs 1016 B runs code
- scripts/lib/settings.mjs 501 B runs code
- scripts/lib/status-codes.mjs 6.9 KB runs code
- scripts/lib/wos-supporting-information.mjs 8.9 KB runs code
- scripts/retry_elsevier_api.mjs 801 B runs code
- src/config.py 5.2 KB runs code
- src/health_check.py 4.3 KB runs code
- src/schools_loader.py 3.6 KB runs code
- src/validators.py 6.0 KB runs code
- src/wizard.py 23 KB runs code
- tests/python/test_config_credentials.py 1.3 KB runs code
- tests/python/test_config_wizard.py 7.2 KB runs code
- tests/unit/batch-cli.test.mjs 3.1 KB runs code
- tests/unit/cnki.test.mjs 2.6 KB runs code
- tests/unit/credentials.test.mjs 1.2 KB runs code
- tests/unit/generic-package.test.mjs 1.8 KB runs code
- tests/unit/manifest.test.mjs 1.0 KB runs code
- tests/unit/metadata.test.mjs 1.0 KB runs code
- tests/unit/open-access-provider.test.mjs 3.3 KB runs code
- tests/unit/open-access.test.mjs 2.8 KB runs code
- tests/unit/provider-utils.test.mjs 1.4 KB runs code
- tests/unit/publisher-providers.test.mjs 4.9 KB runs code
- tests/unit/routing.test.mjs 3.9 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 624 lines · 36 tokens per session scan A 3ed848f0815c
nature-downloader is a skill published in the GitHub repository hamzabellouch/agent-skills (4 stars, last pushed 1mo ago), licensed MIT. It adds 36 tokens to every session and 9,266 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-03.
Other skills, from other repositories
semantic-scholar-deep
Deep research over the Semantic Scholar Graph API. Covers endpoints missing from allenai's lookup skill — paper references (backward citations), recommendations, batch paper lookup (up to 500 IDs), snippet search, and multi-hop citation graph traversal (BFS forward/backward). Use when the user asks to build a citation…
thesis-control
Use when AI-assisted thesis or manuscript edits risk claim drift, scope creep, loss of intended use, experiment-role promotion, or repeated revisions that fail to converge; provides author-intent control, lightweight or strict contracts, drift audits, revision escalation, and human gates.
manuscript-reframe
Reframe report-like academic drafts into paper-form scientific arguments while preserving or explicitly renegotiating author intent; requires an approved old-versus-proposed spine, evidence and argument baselines, analysis-role control, and post-edit drift review.
aerospace-engineering-technician
Use when a task needs the judgment of an Aerospace Engineering and Operations Technologist/Technician — verifying an installed fastener's preload against a drawing's torque callout via the T=K·D·F relationship, reducing strain-gauge data from a structural proof-load test into stress and checking it against an…
agricultural-engineer
Use when a task needs the judgment of an agricultural engineer — sizing a center-pivot or drip irrigation system's peak capacity against crop water demand, computing lateral grain-bin wall pressure with Janssen's equation, sizing a waterway or tile-drainage system with Manning's equation and an NRCS design-storm…
agricultural-sciences-professor
Use when a task needs the judgment of a tenure-track or tenured Agricultural Sciences faculty member at a land-grant university — deciding whether to submit a grant this cycle versus wait, allocating time across the teaching/research/extension appointment split, diagnosing a stalled graduate student or field trial, or…