Find papers, download PDFs, traverse citation graphs, and resolve publication venues across arXiv, IACR ePrint, Semantic Scholar, DBLP, and OpenAlex. Use when you need to find papers, trace citations, or determine where a paper was published.
A single skill that wraps five platform drivers — two preprint archives (arXiv, IACR ePrint) and three metadata services (Semantic Scholar, DBLP, OpenAlex). The SKILL.md itself acts as the orchestrator: each script does one thing per platform, and the agent chains them.
Invoke this skill by name. On slash-command hosts: /search-paper "<query>".
search-paper "post-quantum threshold signatures" --source iacr --max-results 15
This skill ships five Python scripts in the same directory as this SKILL.md. The placeholder {{SKILL_DIR}} below is a template token — you MUST substitute it with the absolute install path of this skill before invoking, or the exec will fail. Common install locations:
~/.claude/skills/search-paper/ (Claude Code)~/.cursor/skills/search-paper/ (Cursor)~/.agents/skills/search-paper/ (Codex CLI, Cline, Gemini CLI, Copilot, OpenCode, Warp, Goose, Replit — universal target)~/.continue/skills/search-paper/ (Continue)~/.windsurf/skills/search-paper/ (Windsurf)<repo-root>/skills/search-paper/ (during repo development)This skill has no sibling-skill dependencies — it ships its own scripts.
Run via Bash. All scripts emit JSON on stdout.
arxiv.py — arXiv preprint serverpython {{SKILL_DIR}}/arxiv.py search "BFT consensus communication complexity" --max-results 10 --categories cs.CR,cs.DC
python {{SKILL_DIR}}/arxiv.py recent "threshold signatures" --max-results 10 --categories cs.CR
python {{SKILL_DIR}}/arxiv.py download 2305.12345 --output-dir reaper-workspace/papers/
python {{SKILL_DIR}}/arxiv.py journal-ref 2305.12345
search — array of {arxiv_id, title, authors, year, abstract, categories, pdf_url, published, journal_ref} sorted by relevance.recent — same fields, sorted by submission date (newest first). Requires a query and/or --categories.download — saves PDF, returns {path, title}.journal-ref — author-supplied venue (sparse but authoritative when present).iacr.py — IACR ePrint archivepython {{SKILL_DIR}}/iacr.py search "threshold signatures" --max-results 10
python {{SKILL_DIR}}/iacr.py recent --max-results 10
python {{SKILL_DIR}}/iacr.py download 2024/1234 --output-dir reaper-workspace/papers/
python {{SKILL_DIR}}/iacr.py url 2024/1234
python {{SKILL_DIR}}/iacr.py pubinfo 2024/1234
search — array of {eprint_id, title, authors, year, abstract, publication_info, venue, pdf_url, url}. Top 5 results are enriched with metadata from the paper page (including publication_info).recent — most-recently-posted ePrint papers.download / url — PDF download and URL resolution.pubinfo — scrapes the "Publication info" line from the paper page (e.g. "A major revision of CRYPTO 2023") and best-effort parses out the venue acronym + year.semantic_scholar.py — Semantic Scholar metadatapython {{SKILL_DIR}}/semantic_scholar.py venue --arxiv 2305.12345
python {{SKILL_DIR}}/semantic_scholar.py venue --title "HotStuff: BFT Consensus in the Lens of Blockchain"
python {{SKILL_DIR}}/semantic_scholar.py citations 2305.12345 --max-results 20
venue — looks up the publication venue by arXiv ID (preferred when available — exact match) or by title (fuzzy match via /paper/search/match). Returns {found, venue, venue_full, venue_type, year, title, authors}.citations — forward (who cites this) + backward (what this builds on) citations. Each entry includes venue when known.dblp.py — DBLP (CS-focused)python {{SKILL_DIR}}/dblp.py venue "HotStuff: BFT Consensus" --author "Yin"
venue — title (+ optional author surname) lookup. DBLP is authoritative for CS conference and journal venues.openalex.py — OpenAlex (broad coverage)python {{SKILL_DIR}}/openalex.py venue "HotStuff: BFT Consensus in the Lens of Blockchain"
venue — title-based lookup. Use when DBLP doesn't cover the venue (non-CS, niche workshops, books)./review-literature and /investigate for structured paper search and venue resolution.When invoked directly:
iacr.py search AND arxiv.py search --categories cs.CR.arxiv.py search with appropriate categories.semantic_scholar.py citations <arxiv_id>.| # | Title | Authors | Year | Venue | ID | Link |
|---|-------|---------|------|-------|----|------|
| 1 | ... | ... | ... | ... | arXiv:XXXX.XXXXX | [arXiv](https://arxiv.org/abs/XXXX.XXXXX) |
A paper's archive ID (arXiv, ePrint) is not its publication venue. Resolve the actual venue (CRYPTO, S&P, PODC, …) for every paper that goes into a literature review or report references section. Run the layers in order and stop at the first success:
# arXiv-known papers
python {{SKILL_DIR}}/semantic_scholar.py venue --arxiv <arxiv_id>
# ePrint-only papers
python {{SKILL_DIR}}/semantic_scholar.py venue --title "<exact title>"
If found: true and venue is non-empty → done. Record source = "semantic_scholar".
Authors sometimes mark the venue on their own preprint:
# arXiv: the journal_ref field
python {{SKILL_DIR}}/arxiv.py journal-ref <arxiv_id>
# ePrint: the "Publication info" line
python {{SKILL_DIR}}/iacr.py pubinfo <eprint_id>
If a non-empty journal_ref / publication_info is returned → done. Record source = "arxiv_journal_ref" or "iacr_pubinfo".
python {{SKILL_DIR}}/dblp.py venue "<title>" --author "<first author surname>"
If found: true → done. Record source = "dblp".
python {{SKILL_DIR}}/openalex.py venue "<title>"
If found: true → done. Record source = "openalex".
If all four layers fail, label the entry (preprint) rather than silently omitting. Do not guess a venue from the topic or author affiliation — an unverified guess is worse than an honest "preprint only".
publicationVenue.name over DBLP's terse acronym, etc.). Record both if confidence is low.(preprint) label — no entry shows only an arXiv/ePrint ID where a venue is expectedpip install arxiv requests beautifulsoup4