crossref-lookup — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited crossref-lookup (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.
Validate DOIs, find DOIs from titles, and audit bibliographies against the Crossref REST API.
scripts/lookup. Paths below are relative to this skill's directory, installed at ~/.agents/skills/crossref-lookup.--doi validates or enriches one DOI.--title returns ranked DOI candidates for a title (--rows, default 5).--validate-file checks one DOI per line.--audit-bibliography extracts DOIs from a .bib or plain-text file and checks each one.10.xxxx/..., doi:10.xxxx/..., and https://doi.org/10.xxxx/... are all accepted, and trailing BibTeX punctuation is removed.--email only with an address the user gave for Crossref's polite pool. Never take an address from the conversation, git config, or system context; without one the CLI uses the public pool. The CLI spaces requests to stay within the limits Crossref reported on 2026-10-01: single-DOI lookups at 5 per second (10 with --email), title searches at 1 per second (3 with --email).--strict for audits that must fail on any invalid, missing, or unresolved record.| Task | Command |
|---|---|
| Validate a DOI | scripts/lookup --doi 10.1038/nature12373 |
| Search by title | scripts/lookup --title "CRISPR-Cas9 genome editing" --rows 5 |
| Validate a DOI list | scripts/lookup --validate-file dois.txt |
| Audit a bibliography | scripts/lookup --audit-bibliography refs.bib |
| Write the report to a file | --output crossref-report.json (refuses to overwrite) |
| Polite pool | --email [email protected] |
| Fail on any unresolved record | --strict |
uv and network access; the wrapper runs the PEP 723 script, which pins requests.--email, --rows, --output, --strict.JSON on stdout, or in the --output file:
--doi: status, doi, detail, title, journal, year--title: query and candidates with doi, title, journal, year--validate-file and --audit-bibliography: records, counts per status (valid, invalid, not_found, transient_error, http_error), and potentially_missing_dois (BibTeX titles without a DOI)Exit codes: 0 on success; 1 for an invalid or missing single DOI, a strict-mode audit failure, or a refused overwrite; 2 for transient service or network failures (HTTP 429, 5xx, timeouts).
transient_error records are reported as unchecked, not as invalid.scripts/lookup --doi "10.1038/nature12373"
scripts/lookup --title "CRISPR-Cas9 genome editing" --email [email protected]
scripts/lookup --audit-bibliography refs.bib --strict --output crossref-audit.jsonIssue: A DOI looks valid but Crossref returns not_found. Solution: Report that Crossref has no record. DataCite and other agencies register DOIs that Crossref does not hold, so check the DOI landing page before calling the citation wrong.
Issue: Many bibliography entries have no DOI. Solution: Treat potentially_missing_dois as a coverage gap, not proof of invalid citations.
Issue: Exit code 2. Solution: Crossref rate-limited the run or was unreachable. Wait and rerun.
/polars-dovmed: full-text PMC Open Access search when the DOI is unknown/arxiv-search and /biorxiv-search: preprint search/scientific-impact-assessment: citation counts and journal impact~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.