Skills nature-downloader
๐Ÿ“ฆ

nature-downloader

Content revision r1 High Risk ๐ŸŒ Network access๐Ÿ”‘ Env variables๐Ÿ“ Filesystem accessโš™๏ธ External commandsโšก Contains scripts

Download Lawful Academic Full Text

Finding authorized full text across publishers, repositories, and institutional portals is slow. This skill routes requests and verifies downloaded academic files.

Supports: Claude Codex Code(CC)
โš ๏ธ 38 Poor

Install with my Agent

Copy this request to your Agent. It includes the canonical Skill page and manifest.

Agent request
Review the Skillstore skill "nature-downloader" from https://skillstore.io/skills/yuan1z0825-nature-downloader.md and its manifest at https://skillstore.io/api/skills/yuan1z0825-nature-downloader/manifest. Verify the artifact. Stop and obtain explicit user consent before installing or changing files.

Your Agent should still show its plan and request any confirmation required by the security policy.

Agent-readable resources

Use these links when an AI agent, crawler, or script needs clean context instead of reading the full page.

Test it

Using "nature-downloader". Download DOI 10.xxxx/example without supporting information.

Expected outcome:

The article was downloaded from an open-access repository. The PDF signature and checksum were verified, and the manifest records the source.

Using "nature-downloader". Retrieve three confirmed articles through my library and include supporting information.

Expected outcome:

  • Two main PDFs were downloaded through authorized routes.
  • One article requires user authentication before retrying.
  • Supporting information was found for one completed article.

Using "nature-downloader". Find an open copy of an exact article title.

Expected outcome:

No lawful open copy was confirmed. The result records the attempted repositories and does not claim a successful download.

Security Audit

High Risk
v2 โ€ข 8/18/2026 Open versioned report

Most scanner matches are documentation, tests, fixed imports, status constants, or expected local file operations. Confirmed risks include CAPTCHA circumvention, unrestricted authenticated fetching, arbitrary credential forwarding, command-line secret exposure, and unbounded direct downloads. No prompt injection text was found. Static review was capped at 400/766 representative findings; omitted static matches are unconfirmed, so automatic publishing stays disabled until manual review.

65
Files scanned
8,255
Lines analyzed
7
Review items
0
False positives ignored

Confirmed security concerns (6)

High
Automated CAPTCHA Circumvention
The skill detects CAPTCHA gaps and simulates human-like drags or checkbox clicks to defeat provider verification controls.
The implementation explicitly calculates CAPTCHA gaps, generates human-like movement, retries alternate profiles, and checks whether verification passed.
High
API Key Forwarded to Arbitrary Endpoint
A configured IEEE endpoint accepts any URL, and the downloader appends the stored API key before sending the request.
The endpoint is stored without hostname validation, then converted to a URL and receives the API key as a query parameter.
High
Unrestricted Authenticated URL Fetching
User-supplied URLs are fetched directly or inside an authenticated browser without scheme, hostname, or private-network restrictions.
The CLI accepts arbitrary URL strings and passes them to fetch or browser navigation without an allowlist or private-address check.
High
Command-Line Secret Exposure
API keys and institutional tokens can be passed as command arguments, exposing them through shell history and process listings.
The parser defines API-key, insttoken, and authtoken arguments, and cmd_set stores those argument values as credentials.
Medium
Unbounded Direct Download Buffering
Direct downloads buffer the entire response in memory before validation and writing, with no byte limit.
The response arrayBuffer is fully materialized before content checks, and this path has no Content-Length or streamed byte cap.
Medium
Unrestricted CDP Proxy Destination
The CLI accepts any proxy URL and sends browser-control payloads to it without requiring loopback or explicit trust.
The proxy argument is only trimmed, then receives target identifiers, URLs, selectors, and generated browser JavaScript through HTTP requests.
Capability review items (7)

These are real local capabilities that may be expected for this skill, so they require review but are not counted as confirmed malicious behavior.

High
Generic API/secret keys
api_key = args.api_key or os.environ.get("LIT_DL_API_KEY") or getpass.getpass("API key: ")
The API key may come from --api-key, exposing the secret through shell history and process arguments.
High
Generic API/secret keys
set_cmd.add_argument("--api-key", help="Prefer the hidden prompt or LIT_DL_API_KEY over command-line
This defines a command-line API-key option, which exposes secrets to shell history and local process inspection.
High
Fetch API call
const response = await fetch(pdfUrl, { headers: { Accept: "application/pdf, text/html, application/x
This fetches the user-supplied --pdf-url without protocol, hostname, or private-network validation.
High
Fetch API call
const r = await fetch(${fetchTarget}, { credentials: "include" });
This fetches a supplied URL with credentials inside an authenticated browser context, creating an authenticated request and local-network access risk.
High
Fetch API call
const js = `fetch('http://localhost:0/cdp',{
This request carries raw CDP mouse commands used to imitate human input and defeat verification controls.
High
Fetch API call
const r=await fetch(${JSON.stringify(url)},{credentials:'include'});
This downloads a selected URL with browser credentials and transfers the response from the authenticated page into a local file.
Medium
Fetch API call
const response = await fetch(url, {
This generic fetch sends browser-control requests to a configurable proxy URL without restricting the destination to a trusted local service.

Risk Factors

๐ŸŒ Network access (50)
data/publishers.json:4 data/publishers.json:11 data/publishers.json:18 data/school.schema.json:2 data/schools.yaml:5 docs/nature-downloader-reference-research-2026-07-15.md:23 examples/carsi-retry-template.tsv:2 examples/manifest-template.tsv:2 examples/publisher-verification-template.tsv:2 README_EN.md:32 README_EN.md:33 README_EN.md:53 README_EN.md:119 README.md:44 README.md:45 README.md:65 README.md:135 references/delivery-verification-and-failures.md:48 references/institutional-browser-workflow.md:142 references/institutional-browser-workflow.md:160 references/institutional-browser-workflow.md:160 scripts/batch_download.mjs:379 scripts/batch_download.mjs:13 scripts/batch_download.mjs:14 scripts/batch_download.mjs:235 scripts/batch_download.mjs:309 scripts/batch_download.mjs:425 scripts/batch_download.mjs:14 scripts/browser_pdf_downloader.mjs:88 scripts/browser_pdf_downloader.mjs:17 scripts/browser_pdf_downloader.mjs:18 scripts/browser_pdf_downloader.mjs:17 scripts/browser_pdf_downloader.mjs:18 scripts/cdp_open_url.mjs:6 scripts/cdp_open_url.mjs:6 scripts/configure_credentials.py:89 scripts/configure_credentials.py:110 scripts/configure_credentials.py:14 scripts/configure_credentials.py:89 scripts/configure_credentials.py:96 scripts/configure_credentials.py:99 scripts/configure_credentials.py:101 scripts/configure_credentials.py:110 scripts/configure_credentials.py:92 scripts/configure_credentials.py:98 scripts/configure_credentials.py:100 scripts/lib/anti-bot.mjs:651 scripts/lib/anti-bot.mjs:29 scripts/lib/anti-bot.mjs:651 scripts/lib/anti-bot.mjs:29
๐Ÿ”‘ Env variables (50)
data/publishers.json:7 data/publishers.json:14 data/publishers.json:21 scripts/batch_download.mjs:685 scripts/batch_download.mjs:685 scripts/configure_credentials.py:20 scripts/configure_credentials.py:57 scripts/configure_credentials.py:55 scripts/configure_credentials.py:57 scripts/configure_credentials.py:58 scripts/configure_credentials.py:60 scripts/configure_credentials.py:70 scripts/configure_credentials.py:90 scripts/configure_credentials.py:98 scripts/configure_credentials.py:106 scripts/configure_credentials.py:135 scripts/lib/credentials.mjs:8 scripts/lib/credentials.mjs:13 scripts/lib/credentials.mjs:39 scripts/lib/credentials.mjs:51 scripts/lib/credentials.mjs:58 scripts/lib/credentials.mjs:70 scripts/lib/credentials.mjs:44 scripts/lib/manifest.mjs:4 scripts/lib/manifest.mjs:19 scripts/lib/publisher-providers.mjs:23 scripts/lib/publisher-providers.mjs:31 scripts/lib/publisher-providers.mjs:40 scripts/lib/publisher-providers.mjs:62 scripts/lib/routing.mjs:20 scripts/lib/school-config.mjs:7 scripts/lib/school-config.mjs:12 scripts/lib/school-config.mjs:32 scripts/lib/settings.mjs:5 scripts/lib/settings.mjs:10 src/config.py:22 src/config.py:53 src/config.py:55 src/config.py:60 src/config.py:106 tests/python/test_config_credentials.py:19 tests/python/test_config_credentials.py:36 tests/python/test_config_wizard.py:68 tests/python/test_config_wizard.py:69 tests/python/test_config_wizard.py:89 tests/python/test_config_wizard.py:90 tests/python/test_config_wizard.py:107 tests/python/test_config_wizard.py:122 tests/python/test_config_wizard.py:140 tests/python/test_config_wizard.py:158
๐Ÿ“ Filesystem access (50)
data/school.schema.json:4 data/school.schema.json:4 docs/nature-downloader-reference-research-2026-07-15.md:23 docs/nature-downloader-reference-research-2026-07-15.md:78 docs/nature-downloader-reference-research-2026-07-15.md:23 docs/nature-downloader-reference-research-2026-07-15.md:78 docs/superpowers/plans/2026-06-21-nature-downloader-merge.md:48 docs/superpowers/plans/2026-06-21-nature-downloader-merge.md:48 README_EN.md:38 README_EN.md:65 README_EN.md:73 README_EN.md:155 README_EN.md:38 README_EN.md:65 README_EN.md:73 README_EN.md:155 README.md:50 README.md:79 README.md:87 README.md:160 README.md:50 README.md:79 README.md:87 README.md:160 references/delivery-verification-and-failures.md:117 references/delivery-verification-and-failures.md:124 references/institutional-browser-workflow.md:110 scripts/batch_download.mjs:228 scripts/batch_download.mjs:229 scripts/batch_download.mjs:440 scripts/batch_download.mjs:680 scripts/batch_download.mjs:438 scripts/batch_download.mjs:229 scripts/batch_download.mjs:440 scripts/batch_download.mjs:241 scripts/batch_download.mjs:244 scripts/batch_download.mjs:288 scripts/batch_download.mjs:291 scripts/batch_download.mjs:180 scripts/batch_download.mjs:187 scripts/batch_download.mjs:213 scripts/batch_download.mjs:775 scripts/browser_pdf_downloader.mjs:119 scripts/browser_pdf_downloader.mjs:147 scripts/browser_pdf_downloader.mjs:147 scripts/browser_pdf_downloader.mjs:120 scripts/configure_credentials.py:11 scripts/configure_credentials.py:36 scripts/configure_credentials.py:38 scripts/configure_credentials.py:41
โš™๏ธ External commands (50)
references/delivery-verification-and-failures.md:62-64 references/delivery-verification-and-failures.md:59 references/delivery-verification-and-failures.md:144 references/institutional-browser-workflow.md:110-112 references/institutional-browser-workflow.md:142-144 references/institutional-browser-workflow.md:139 scripts/batch_download.mjs:142 scripts/batch_download.mjs:149 scripts/batch_download.mjs:170 scripts/batch_download.mjs:175 scripts/batch_download.mjs:180 scripts/batch_download.mjs:197 scripts/batch_download.mjs:199 scripts/batch_download.mjs:200 scripts/batch_download.mjs:213 scripts/batch_download.mjs:222 scripts/batch_download.mjs:227 scripts/batch_download.mjs:241 scripts/batch_download.mjs:244 scripts/batch_download.mjs:256 scripts/batch_download.mjs:263 scripts/batch_download.mjs:276-282 scripts/batch_download.mjs:288 scripts/batch_download.mjs:291 scripts/batch_download.mjs:300 scripts/batch_download.mjs:309 scripts/batch_download.mjs:321 scripts/batch_download.mjs:334 scripts/batch_download.mjs:335 scripts/batch_download.mjs:343 scripts/batch_download.mjs:381 scripts/batch_download.mjs:404 scripts/batch_download.mjs:425 scripts/batch_download.mjs:494 scripts/batch_download.mjs:629 scripts/batch_download.mjs:687 scripts/batch_download.mjs:754 scripts/batch_download.mjs:769 scripts/batch_download.mjs:771 scripts/batch_download.mjs:777 scripts/batch_download.mjs:781 scripts/batch_download.mjs:784 scripts/batch_download.mjs:816 scripts/browser_pdf_downloader.mjs:16-21 scripts/browser_pdf_downloader.mjs:50 scripts/browser_pdf_downloader.mjs:86-101 scripts/browser_pdf_downloader.mjs:106 scripts/browser_pdf_downloader.mjs:112 scripts/browser_pdf_downloader.mjs:114 scripts/browser_pdf_downloader.mjs:115
โšก Contains scripts (8)
Audited by: codex View Audit History โ†’
Share & cite this report

Share the versioned assessment report, neutral badge, embed card, and citations. Skillstore reports evidence without deciding whether this Skill is safe.

Open versioned report
Security Assessment

Copy report link

https://skillstore.io/skills/yuan1z0825-nature-downloader/audits/2?utm_source=security_passport&utm_medium=share&utm_campaign=versioned_report

Markdown badge

[![Skillstore security assessment](https://skillstore.io/badges/skills/yuan1z0825-nature-downloader/security.svg)](https://skillstore.io/skills/yuan1z0825-nature-downloader?utm_source=security_passport_badge)

HTML badge

<a href="https://skillstore.io/skills/yuan1z0825-nature-downloader?utm_source=security_passport_badge"><img src="https://skillstore.io/badges/skills/yuan1z0825-nature-downloader/security.svg" alt="Skillstore security assessment" loading="lazy"></a>

Embed card

<iframe src="https://skillstore.io/embed/skills/yuan1z0825-nature-downloader.html" title="Skillstore Security Assessment" sandbox="allow-popups allow-popups-to-escape-sandbox" loading="lazy" referrerpolicy="no-referrer" width="420" height="180"></iframe>
Academic citations (APA ยท BibTeX ยท CFF)

APA citation

yuan1z0825. (2026). nature-downloader security audit report (audit version 2) [Author version unspecified]. Skillstore. https://skillstore.io/skills/yuan1z0825-nature-downloader/audits/2

BibTeX citation

@techreport{yuan1z0825-yuan1z0825-nature-downloader-2026, author = {yuan1z0825}, title = {nature-downloader security audit report (audit version 2)}, institution = {Skillstore}, year = {2026}, number = {2}, url = {https://skillstore.io/skills/yuan1z0825-nature-downloader/audits/2}, note = {Author version unspecified} }

CITATION.cff

cff-version: 1.2.0 message: "If you use this Skill, cite its author and this versioned security audit report." title: "nature-downloader security audit report (audit version 2)" version: "unspecified" type: report authors: - name: "yuan1z0825" date-released: "2026-08-18" url: "https://skillstore.io/skills/yuan1z0825-nature-downloader/audits/2" identifiers: - type: other value: "skillstore:yuan1z0825-nature-downloader:audit:2" description: "Skillstore immutable audit report identifier"

Skillstore Score

Why this score Evidence Confidence: Medium
91
Architecture
85
Maintainability
87
Content
65
Community
91
Spec Compliance

What You Can Build

Retrieve a Known Article

Download one article by DOI or exact title and verify the resulting file.

Collect a Reading List

Process a confirmed DOI list and record each article's route, status, and integrity details.

Access Chinese Literature

Use an authenticated institutional browser session to retrieve authorized CNKI content.

Try These Prompts

Download One Paper
Download the article with DOI [DOI]. Do not download supporting information. Save it in [folder] and report the verified format.
Find an Open Copy
Find a lawful open-access copy of [title]. Download the main article only and explain which source provided it.
Process a DOI List
Process these confirmed DOIs: [list]. Ask once about supporting information, use lawful routes, and summarize every result.
Use Institutional Access
Use my authenticated Chrome session for [articles]. Stop for identity checks, avoid automatic CAPTCHA solving, and produce a verified manifest.

Best Practices

  • Provide exact titles, DOIs, or a confirmed paper list before starting downloads.
  • Use hidden input or standard input for API keys, and review the destination folder first.
  • Confirm supporting-information preferences once, then inspect the manifest and downloaded file signatures.

Avoid

  • Do not request unlimited topic downloads or entire journal issues.
  • Do not paste institutional passwords, session tokens, cookies, or one-time codes into chat.
  • Do not use automated CAPTCHA solving or access content beyond the user's authorization.

Frequently Asked Questions

Does this skill bypass paywalls?
No. It uses lawful open-access sources, configured publisher APIs, or the user's authorized institutional access.
Which identifiers can I provide?
You can provide DOIs, exact titles, PMIDs, article URLs, or a confirmed list.
Where are publisher credentials stored?
They are stored locally in the configured credentials file with restricted permissions.
Can it download supporting information?
Yes. The skill requires an explicit supporting-information choice before creating download output.
Why is Chrome remote debugging required?
Institutional routes need access to the browser session where the user already authenticated.
What happens when access fails?
The skill records a typed failure, preserves attempted routes, and identifies any required user action.

Developer Details

Author

yuan1z0825

License

MIT

Skillstore revision

r1

Version notice

The author did not declare a version.

Ref

e22f0e5c175a84e01097fa734ec2a74420c14771

Maintenance freshness

8/19/2026

Usage

0 downloads ยท 0 views

File structure

๐Ÿ“„ .gitattributes

๐Ÿ“„ .gitignore

๐Ÿ“ agents/

๐Ÿ“„ openai.yaml

๐Ÿ“ assets/

๐Ÿ“„ banner.jpg

๐Ÿ“ data/

๐Ÿ“„ publishers.json

๐Ÿ“„ school.schema.json

๐Ÿ“„ schools.yaml

๐Ÿ“ docs/

๐Ÿ“„ nature-downloader-reference-research-2026-07-15.md

๐Ÿ“ superpowers/

๐Ÿ“ plans/

๐Ÿ“„ 2026-06-21-nature-downloader-merge.md

๐Ÿ“ examples/

๐Ÿ“„ carsi-retry-template.tsv

๐Ÿ“„ manifest-template.tsv

๐Ÿ“„ publisher-verification-template.tsv

๐Ÿ“„ LICENSE

๐Ÿ“„ manifest.yaml

๐Ÿ“„ README_EN.md

๐Ÿ“„ README.md

๐Ÿ“ references/

๐Ÿ“„ delivery-verification-and-failures.md

๐Ÿ“„ institutional-browser-workflow.md

๐Ÿ“„ requirements.txt

๐Ÿ“ scripts/

๐Ÿ“„ batch_download.mjs

๐Ÿ“„ browser_pdf_downloader.mjs

๐Ÿ“„ cdp_open_url.mjs

๐Ÿ“„ configure_credentials.py

๐Ÿ“„ configure_school.py

๐Ÿ“„ extract_pdf_text.py

๐Ÿ“ lib/

๐Ÿ“„ anti-bot.mjs

๐Ÿ“„ cdp-utils.mjs

๐Ÿ“„ cnki.mjs

๐Ÿ“„ credentials.mjs

๐Ÿ“„ direct-download.mjs

๐Ÿ“„ manifest.mjs

๐Ÿ“„ metadata.mjs

๐Ÿ“„ open-access-provider.mjs

๐Ÿ“„ open-access.mjs

๐Ÿ“„ pdf-utils.mjs

๐Ÿ“„ provider-registry.mjs

๐Ÿ“„ provider-utils.mjs

๐Ÿ“„ publisher-providers.mjs

๐Ÿ“„ routing.mjs

๐Ÿ“„ school-config.mjs

๐Ÿ“„ settings.mjs

๐Ÿ“„ status-codes.mjs

๐Ÿ“„ wos-supporting-information.mjs

๐Ÿ“„ retry_elsevier_api.mjs

๐Ÿ“„ SKILL.md

๐Ÿ“ src/

๐Ÿ“„ config.py

๐Ÿ“„ health_check.py

๐Ÿ“„ schools_loader.py

๐Ÿ“„ validators.py

๐Ÿ“„ wizard.py

๐Ÿ“ tests/

๐Ÿ“ python/

๐Ÿ“„ test_config_credentials.py

๐Ÿ“„ test_config_wizard.py

๐Ÿ“ unit/

๐Ÿ“„ batch-cli.test.mjs

๐Ÿ“„ cnki.test.mjs

๐Ÿ“„ credentials.test.mjs

๐Ÿ“„ generic-package.test.mjs

๐Ÿ“„ manifest.test.mjs

๐Ÿ“„ metadata.test.mjs

๐Ÿ“„ open-access-provider.test.mjs

๐Ÿ“„ open-access.test.mjs

๐Ÿ“„ provider-utils.test.mjs

๐Ÿ“„ publisher-providers.test.mjs

๐Ÿ“„ routing.test.mjs

๐Ÿ“„ school-config.test.mjs

๐Ÿ“„ status-codes.test.mjs

๐Ÿ“„ wos-supporting-information.test.mjs

More from yuan1z0825

View all
View all