# Paper Scout

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

- Skill: `cuga-project/paper-scout` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add cuga-project/paper-scout`
- Raw SKILL.md: https://api.skillmd.com/api/skills/cuga-project/paper-scout/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Research & Search
- Author: cuga-project (https://skillmd.com/u/cuga-project)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/cuga-project/paper-scout

---


# 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 &lt;topic&gt;"
- An arXiv ID or URL pasted directly (e.g. `2305.11206`, `arxiv.org/abs/...`)
- "What does &lt;paper&gt; build on?" / "key references for &lt;paper&gt;"
- 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.

