scientific-research — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited scientific-research (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Bundled commands use $PLUGIN_ROOT ($env:PLUGIN_ROOT in PowerShell; same path suffix) for the plugin root. Set it once: use the host's plugin-root variable when defined (Claude Code: PLUGIN_ROOT="$CLAUDE_PLUGIN_ROOT"), otherwise the absolute path of this plugin's root directory.
Use this skill for scholarly research that needs source traceability, not just web summaries. The default posture is public, read-only, bounded, provenance-preserving research.
download_status.csv but does not download files; retrieve them yourself only from those recorded URLs. python3 "$PLUGIN_ROOT/skills/scientific-research/scripts/scholarly_research.py" source-status \
--out-dir research-corpus python3 "$PLUGIN_ROOT/skills/scientific-research/scripts/scholarly_research.py" plan \
--topic "retrieval augmented generation evaluation" \
--question "Which evaluation methods are source-grounded?" \
--out research-plan.json python3 "$PLUGIN_ROOT/skills/scientific-research/scripts/scholarly_research.py" validate-plan research-plan.json python3 "$PLUGIN_ROOT/skills/scientific-research/scripts/scholarly_research.py" search \
--plan research-plan.json \
--out-dir research-corpus \
--per-source 20Repeated searches into the same --out-dir merge into the existing index:
total_records cap;03_runs/records-pre-search-*.jsonl;03_runs/dropped-over-limit.jsonl, never silently discarded. python3 "$PLUGIN_ROOT/skills/scientific-research/scripts/scholarly_research.py" screening-summary \
--records research-corpus/01_index/records.jsonl \
--decisions screening-decisions.jsonl \
--out research-corpus/05_reports/screening_summary.jsonciting excluded records fail and the plan's own thresholds are enforced:
python3 "$PLUGIN_ROOT/skills/scientific-research/scripts/scholarly_research.py" quality-gate \
--records research-corpus/01_index/records.jsonl \
--claims claims.jsonl \
--decisions screening-decisions.jsonl \
--plan research-plan.json \
--out quality_gate.jsonThe gate fails on zero claims, missing claim text, claims citing excluded or unknown records, invalid confidence, or missing limitations. A passing gate proves traceability, not truth: spot-check load-bearing claims against source text before promoting them.
403 or 429, arXiv 429 or 503, timeouts, and rate-limit text are cooldown signals. Record them in 01_index/query_log.jsonl and 03_runs/source-status.json, then use fallbacks instead of retry-looping.400 is a malformed-query signal (query_error), not capacity: fix the query instead of cooling down. The helper strips OpenAlex wildcard characters (?, *) from search queries automatically, so question-form queries are safe.409 is undocumented but observed; treat it defensively as a key/quota signal (documented exhaustion signals are 403/429). Mark it auth_required, name OPENALEX_API_KEY as optional configuration, and continue through Crossref, Semantic Scholar, or Europe PMC when they are in scope.OPENALEX_API_KEY when configured, keep quick searches bounded to per_page <= 100, and inspect X-RateLimit-* headers/status before expanding.mailto when available and keep list queries paced; public list-query limits are tighter than single-record lookups.Default discovery sources:
OPENALEX_API_KEY when configured; anonymous requests may work for small tests.mailto when a real contact email is available.SEMANTIC_SCHOLAR_API_KEY when configured.Additional sources, selected with --source per plan:
ncbi): PubMed search and summaries. NCBI_API_KEY optional (raises rate limits); sends tool and email.dblp): computer-science bibliography, strong for CS/ML venues; no key.doaj): open-access journal articles with full-text links; no key.core): open-access repository aggregation; requires free CORE_API_KEY, fails as auth_required without it.opencitations): DOI-only metadata lookup for targeted enrichment. OPENCITATIONS_ACCESS_TOKEN optional.query_error.Optional source profiles are in references/source-profiles.md.
For reusable research outputs, use this layout:
01_index/records.csv
01_index/records.jsonl
01_index/download_status.csv
01_index/query_log.jsonl
02_sources/pdf/
02_sources/metadata/
03_runs/
04_knowledge_base/cards/
05_reports/
runtime_distillation/Deduplicate records by DOI, PMID, PMCID, normalized title, open-copy URL, and content hash when present.
For corpus-scale work, read references/workflow-contracts.md before executing. For source API details, read references/source-profiles.md. For evidence thresholds, read references/quality-gates.md. For design notes behind this skill, read references/design-notes.md.
include, exclude, maybe, and duplicate; include a short reason for every exclusion.Research answers should include:
Do not cite a claim unless it has a record key, DOI/PMID/PMCID/arXiv id, or stable URL.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.