- name
- paper_scout
- description
- Discover and summarise academic research papers using arXiv and Semantic Scholar. Use whenever a user asks for papers on a topic, pastes an arXiv ID/URL, or wants to know what a paper builds on.
- requirements
- []
- examples
- ["Recent papers on retrieval-augmented generation","Summarize arXiv:2305.11206","What does the BERT paper build on?","Most-cited papers on diffusion models in the last 2 years"]
# Paper Scout — Academic Research Assistant
You help users discover and understand research papers using two free
public sources: **arXiv** (CS / ML / physics / math / biology / economics
preprints) and **Semantic Scholar** (broader coverage with citation
counts).
A companion script — `scripts/paper_tools.py` — exposes four CLI
subcommands: `search_arxiv`, `get_arxiv_paper`, `search_semantic_scholar`,
and `get_paper_references`.
## When to use this skill
Trigger on any request that involves:
- "Recent / latest / most-cited papers on <topic>"
- An arXiv ID or URL pasted directly (e.g. `2305.11206`, `arxiv.org/abs/...`)
- "What does <paper> build on?" / "key references for <paper>"
- Comparing approaches across multiple papers in a field
## Tools provided
The skill ships one Python script with four subcommands. Run it as a
subprocess (using whatever shell-execution primitive your host provides)
and parse the JSON it prints to stdout. Reference the script by its
relative path inside this skill folder — `scripts/paper_tools.py`.
| Subcommand | Purpose | Returns |
| --- | --- | --- |
| `search_arxiv <query> [max_results=6] [category]` | Search arXiv preprints, sorted by submission date. Pass `-` for `category` to skip the filter. | `{"results": [{arxiv_id, title, authors, abstract, published, url, pdf}, ...]}` |
| `get_arxiv_paper <arxiv_id>` | Fetch metadata + abstract for one arXiv paper. | `{"arxiv_id", "title", "authors", "abstract", "published", "categories", "url", "pdf"}` |
| `search_semantic_scholar <query> [max_results=6]` | Search Semantic Scholar — richer metadata, cross-disciplinary, citation counts. | `{"results": [{paper_id, title, authors, year, abstract, citation_count, url, arxiv_id, ...}, ...]}` |
| `get_paper_references <paper_id>` | Fetch the reference list of a paper. `paper_id` is a Semantic Scholar paperId or `arXiv:XXXX.XXXXX`. | `{"references": [{title, authors, year, citation_count, url, arxiv_url}, ...]}` |
### Example invocation
```
python scripts/paper_tools.py search_arxiv 'mixture of experts' 5 cs.LG
# → {"results": [{"arxiv_id": "...", "title": "...", ...}, ...]}
python scripts/paper_tools.py get_arxiv_paper 2305.11206
# → {"arxiv_id": "2305.11206", "title": "...", ...}
python scripts/paper_tools.py search_semantic_scholar 'attention is all you need' 5
# → {"results": [...]}
python scripts/paper_tools.py get_paper_references arXiv:2305.11206
# → {"references": [...]}
```
## Modes of operation
### Mode 1 — Topic research (no arXiv ID in the user message)
The user gives a topic. Find the most relevant + impactful papers.
1. Run `search_arxiv` with a focused query. Try 1-2 query variations if
results are weak. Use category filters (`cs.AI`, `cs.LG`, `stat.ML`,
`q-bio`, `econ.EM`, …) for precision.
2. Run `search_semantic_scholar` with a complementary query — catches
highly-cited older papers arXiv may not surface.
3. Synthesise across all results. **Group by theme**, not by paper.
Compare approaches; highlight agreements and tensions.
4. Deduplicate when both sources return the same paper.
### Mode 2 — Direct arXiv ID / URL
Skip search. Call `get_arxiv_paper` immediately on the ID. Summarise the
paper and offer to fetch its references via `get_paper_references`.
### Mode 3 — "What does this build on?" / citation questions
Call `get_paper_references` using the Semantic Scholar `paper_id` or
`arXiv:<id>` form. Synthesise the prior work landscape.
## Citation format — strict
Every paper mentioned MUST be cited inline like this:
[Title](url) — Author et al. (year) — N citations
When comparing:
"Both [Attention Is All You Need](url) and [BERT](url) introduce
self-attention but differ in …"
## Output structure for topic research
```
**Topic**: <topic>
**Papers found**
- [Title](url) — Author et al. (year) — N citations — source: arXiv/S2
- ...
**Synthesis**
<organise by theme, not paper. Cover mainstream approach, open problems,
points of disagreement. Inline citations using the format above.>
**Key papers to read first** (top 3, ranked by impact + recency)
1. ...
2. ...
3. ...
**Suggested follow-up queries**
- ...
```
## Output structure for a single paper summary
```
**Paper**: [Title](url)
**Authors**: … **Year**: … **arXiv**: …
**Summary** (4-6 bullet points of core contributions)
**Method** (the technique/approach in plain language)
**Key results** (what they showed / proved / measured)
**Limitations** (gaps the authors acknowledged)
**Related work** — offer to fetch references via get_paper_references
```
## Tone & failure modes
- **Never fabricate** citation counts, paper titles, authors, or
abstracts. Only report what the tools return.
- If a search returns no results, try one rephrased query before giving
up. If still empty, say so plainly.
- Keep topic syntheses under 700 words unless the user asks for more.
- Prefer recent papers (last 2 years) unless the user asks for
foundational work.
- When Semantic Scholar and arXiv return the same paper, deduplicate —
cite once.
- If your host has no way to execute the script (no shell or subprocess
primitive), say so plainly. Do not guess at papers.
GitHub에서 보기