agentleFS
fmschulzfmschulz/omics-skills/skills/crossref-lookup/SKILL.md

crossref-lookup

Skill9 starsChanged 4 months agoMITView on GitHub

Query Crossref to validate DOIs, match titles to DOIs, fetch citation metadata, and audit bibliographies. Use when resolving references or cleaning citation records.

The file

We split this skill into the rules it gives an agent

4 rules. About 0 are common, 1 is distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈1

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Run the bundled CLI, scripts/lookup.

    line 12
  2. Distinctive:

    When a title search returns several plausible records, show the candidates instead of choosing one silently.

    line 20
  3. Very specific:

    Use --strict for audits that must fail on any invalid, missing, or unresolved record.

    line 22
  4. Very specific:

    Solution: Treat potentially_missing_dois as a coverage gap, not proof of invalid citations.

    line 76

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Crossref Lookup

Validate DOIs, find DOIs from titles, and audit bibliographies against the Crossref REST API.

Instructions

  1. Run the bundled CLI, scripts/lookup. Paths below are relative to this skill's directory, installed at ~/.agents/skills/crossref-lookup.
  2. Choose the narrowest mode:
    • --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.
  3. DOI inputs are normalized before lookup. 10.xxxx/..., doi:10.xxxx/..., and https://doi.org/10.xxxx/... are all accepted, and trailing BibTeX punctuation is removed.
  4. Pass --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).
  5. When a title search returns several plausible records, show the candidates instead of choosing one silently.
  6. Crossref holds citation metadata, not full text. When exact wording, pagination, or publisher formatting matters, check the DOI landing page.
  7. Use --strict for audits that must fail on any invalid, missing, or unresolved record.

Quick Reference

TaskCommand
Validate a DOIscripts/lookup --doi 10.1038/nature12373
Search by titlescripts/lookup --title "CRISPR-Cas9 genome editing" --rows 5
Validate a DOI listscripts/lookup --validate-file dois.txt
Audit a bibliographyscripts/lookup --audit-bibliography refs.bib
Write the report to a file--output crossref-report.json (refuses to overwrite)
Polite pool--email you@example.org
Fail on any unresolved record--strict

Input Requirements

  • uv and network access; the wrapper runs the PEP 723 script, which pins requests.
  • One of: a DOI, a title, a DOI list file, or a bibliography file.
  • Optional: --email, --rows, --output, --strict.

Output

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).

Quality Gates

  • The lookup mode matches the request.
  • DOIs were normalized before any was reported as invalid.
  • Ambiguous title matches are shown as candidates.
  • transient_error records are reported as unchecked, not as invalid.
  • The answer separates Crossref metadata from publisher full text; reference formatting is left to the citation manager.

Examples

scripts/lookup --doi "10.1038/nature12373"

scripts/lookup --title "CRISPR-Cas9 genome editing" --email you@example.org

scripts/lookup --audit-bibliography refs.bib --strict --output crossref-audit.json

Troubleshooting

Issue: 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.

Related Skills

  • /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

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.