Claude Code, Skill
Ultimate Scraper Agent
A research skill for Claude Code that treats web research like engineering: several search engines behind one interface, parallel agent waves that never duplicate each other's work, and a verify gate that refuses to call a report done while any citation lacks a verbatim quote fro
Compatibility: Not stated.
Grade C
One Medium finding. Read the findings before installing.
Not a guarantee. A hygiene check of the source at the commit shown, not a security audit.
NETWORK_HOST_FROM_INPUT
Why this grade
- NETWORK_HOST_FROM_INPUT Medium
A file takes a URL or endpoint as input and has no fixed host list.
skills/research-agent/references/search.py, line 96
with urllib.request.urlopen(req, timeout=TIMEOUT) as r:
Any High, or two or more Medium findings, give D. One Medium gives C. Low findings or a security Note give B. Each code names a finding behind the letter.
Grades are a hygiene check of the source at the commit shown, on the date checked, not a security audit or a guarantee. The free directory grades are automated. Before release, a PlugVet engineer reviews every paid report and any grade we hold back, including all F grades, against the source code and the evidence we quote.
What was checked
Plain notes from the hygiene checks.
Permissions
Concern
can delete files.
PERMISSION_DELETE_FILES
evals/gate_mutations.py, line 42
return subprocess.run([sys.executable, CLI, "--ledger", ledger, *args], capture_output=True, text=True)
evals/gate_mutations.py, line 95
os.remove(os.path.join(site, "deadline.html"))
evals/gate_mutations.py, line 132
shutil.rmtree(work)
Show more
evals/gate_mutations.py, line 133
shutil.rmtree(site)
skills/research-agent/references/fetch_hard.py, line 61
p = subprocess.run(cmd, capture_output=True, text=True, timeout=150)
skills/research-agent/references/search.py, line 176
p = subprocess.run(["mcporter", "call", "exa.web_search_exa", "--args", args],
skills/research-agent/references/search.py, line 214
p = subprocess.run(["mcporter", "call", "hound.mcp_smart_search", "--args", args,
skills/research-agent/references/search.py, line 228
p = subprocess.run(["mcporter", "call", tool, "--args", json.dumps(args),
Install and update
Pass
No install-time script found, and dependencies are pinned or absent.
Network
Serious
accepts a host from input, with no fixed list in this file.
NETWORK_HOST_FROM_INPUT
skills/research-agent/references/search.py, line 96
with urllib.request.urlopen(req, timeout=TIMEOUT) as r:
skills/research-agent/references/sources.py, line 105
with urllib.request.urlopen(req, timeout=timeout) as resp:
Secrets
Concern
reads a credential or environment file.
SECRETS_PATH_DOTENV
skills/research-agent/references/search.py, line 30
Keys: Umgebung, dann <skill>/.env. Keys werden nie ausgegeben.
skills/research-agent/references/search.py, line 48
os.path.join(SKILL_DIR, ".env"),
README.md, line 53
- **Keys** come from the environment, then from a local `.env` (gitignored). Inline comments in `.env` are stripped, a bug that once sent a comment as an API key.
Show more
README.md, line 86
19 tests, no network, no keys, about one second. CI runs them on Linux and macOS with Python 3.10, 3.12 and 3.13. Covered: URL canonicalisation, merge ranking, fallback order and e
README.md, line 94
3. Optional: copy `skills/research-agent/.env.example` to `.env` and add the free-tier keys you have (Tavily, Exa, Serper, Jina). Missing keys are skipped.
SECURITY.md, line 10
| Key leakage | Keys come from the environment or a gitignored `.env`. `--status` reports presence only, never values. Keys are never written to reports, ledgers or the seen list.
skills/research-agent/.env.example, line 1
# Keys für den research-agent. ECHTE Werte gehören in eine .env (nicht committen)
skills/research-agent/.gitignore, line 1
# Falls dieses Skill in ein Git-Repo gespiegelt wird: echte Secrets nie mit.
Agent instructions
Pass
No instruction to ignore earlier instructions or to hide a step.
Obfuscation
Pass
No encoded or minified payload found.
Licence
Pass
A licence file is present (LICENSE).
Maintainer activity
Pass
The latest commit is within the last 365 days.
Note
Hygiene check of commit be03bf543c0e. can delete files. accepts a host from input, with no fixed list in this file. reads a credential or environment file.
Date and source
Date checked:
github.com
Commit graded: be03bf543c0e16986eef4dd7af92c367294dd6cb
This link goes to the original host. PlugVet does not host or check what you download from there, and installing it is your own decision and risk.