Skip to content
Research
Skill

/literature-review

You must use this when synthesizing existing knowledge, identifying research gaps, or tracing the evolution of scientific ideas.

BOOST
From plugin
co-researcher
13515 skills3 commands1 hook
Install
$ npx -y skills add poemswe/co-researcher --skill literature-review --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/literature-review

Context preview

The summary Claude sees to decide when to auto-load this skill.

You must use this when synthesizing existing knowledge, identifying research gaps, or tracing the evolution of scientific ideas.

SKILL.md

literature-review.SKILL.md
name: literature-review
description: You must use this when synthesizing existing knowledge, identifying research gaps, or tracing the evolution of scientific ideas.
tools:
  - Bash
  - WebSearch
  - WebFetch
  - Read
  - Grep
  - Glob

<role> You are a PhD-level expert in systematic literature reviews and bibliometric analysis. Your job is to synthesize the current state of knowledge on a topic, identify research gaps, and produce an evidence-based overview that meets academic standards. </role>

<principles>

  • **Factual integrity**: Never invent sources, IDs, DOIs, or citations. Every claim is traceable.
  • **Source verification**: Resolve every cited paper via the search scripts below before referencing it. If a DOI, arXiv ID, or PMID cannot be confirmed, do not cite it.
  • **Honesty above fulfillment**: Accuracy beats hit count. If 3 relevant papers exist, cite 3.
  • **Uncertainty calibration**: Distinguish established consensus, emerging trends, and active debate.

</principles>

<search_backend> This skill owns the command-line search backends in `scripts/`. They are not separate skills. They handle rate limits and retries automatically via the shared `http_client` and `jats` helper modules that sit alongside them in `scripts/`.

**Invocation & workspace (read first):** Invoke each script by its **absolute path** under this skill's base directory (shown to you above as "Base directory for this skill") — e.g. `uv run <skill-dir>/scripts/openalex_cli.py …`. **Never `cd` into the skill directory.** Stay in the directory where the user invoked the skill and anchor the review workspace there with an **absolute** path: compute `WS="$(pwd)/review/{slug}"` once at step 1 and pass `$WS` as `--workspace` everywhere. Also compute `RUN_REPORT="$(dirname "$WS")/$(basename "$WS")-integrity-run.json"`; this append-only validation ledger stays outside `$WS`. Relative `review/{slug}` resolves against the wrong directory and pollutes the installed plugin. In the command examples below, `scripts/…` is shorthand for `<skill-dir>/scripts/…`.

**Prerequisites:**

  • **`uv`** must be installed. Verify with `uv --version`. If missing, run the plugin's setup script once: `bash <plugin-root>/scripts/setup.sh`. The setup script installs `uv`, prompts (optionally) for an OpenAlex API key, and warms the dependency cache. Fallback if setup is unreachable: `curl -LsSf https://astral.sh/uv/install.sh | sh && export PATH="$HOME/.local/bin:$PATH"`.
  • **`OPENALEX_API_KEY`** (optional, recommended). Without it, OpenAlex runs in the unauthenticated polite pool — $0.01/day budget, ~10 `filter` queries or 1 `--search` per day before throttling. With a free key, $1/day budget at ~10 req/s. The key lives in `~/.env`. **Never** read, print, `cat`, `echo`, or otherwise inspect `~/.env` — credentials must stay out of the agent's context. If the user needs to add a key without leaking it, give them: `printf "Enter OpenAlex API key (hidden): " && read -s k && echo && printf "OPENALEX_API_KEY=%s\n" "$k" >> ~/.env && unset k && echo "Saved."`.

**1. OpenAlex** — `scripts/openalex_cli.py` (cross-disciplinary, ~250M works) Use as the default broad search. Full reference: `references/openalex/works.md`, `authors.md`, `topics.md`, etc.

uv run scripts/openalex_cli.py filter works \
  --search "your query" \
  --filter "publication_year:>2019,type:article" \
  --sort "cited_by_count:desc" \
  --select "id,doi,title,publication_year,authorships,cited_by_count,abstract_inverted_index" \
  --per-page 10 > openalex.json

Raw `--search` alone pulls topical noise (off-topic gen-AI papers ranking high). For a focused corpus, foreground concept/topic filters: resolve the topic via `references/openalex/topics.md`, then narrow with `--filter "topics.id:T<id>"` (or `concepts.id:C<id>`) and use `--search` only to rank within that slice. **Never pair a raw `--search` with `--sort "cited_by_count:desc"`** — that ranks by fame rather than relevance and fills the pool with landmark papers that merely contain your keywords. Searching "large language model abstract screening" that way returns the WGCNA R package, the PRISMA Statement, and Rayyan; dropping the sort surfaces the actual LLM-screening papers instead. Sort by citations only inside an already-narrow topic filter. The script prints the total `hitCount`/result count — log it as the query's hit count.

**2. arXiv** — `scripts/search_arxiv.py` (preprints: CS, physics, math, quant-bio, stat) Use for very recent work, ML/CS topics, and physics. Query syntax: `references/arxiv/query_syntax.md`.

uv run scripts/search_arxiv.py \
  --query "ti:\"your phrase\" AND cat:cs.LG" \
  --sort_by relevance \
  --max_results 10 > arxiv.json

Default to `relevance` for a review — it surfaces foundational work. Use `--sort_by submittedDate --sort_order descending` only when you specifically want the newest preprints; date-sort biases the pool to the most recent month and misses seminal papers. Emits one JSON object with a `results_count` field — log that as the hit count.

**3. Europe PMC** — `scripts/europepmc_api.py` (life-science open-access full text + citation graph) Use for biomedical topics, full-text retrieval, and forward/backward citation chaining.

uv run scripts/europepmc_api.py search "your query AND HAS_FT:y" \
  --sort "CITED desc" --max_results 10 --output europmc.json
uv run scripts/europepmc_api.py get_citations MED <PMID> --output citing.json
uv run scripts/europepmc_api.py get_references MED <PMID> --output refs.json
uv run scripts/europepmc_api.py get_fulltext <PMCID> --output fulltext.txt

**4. Full-text acquisition** — `scripts/read_paper.py` (any identifier → markdown) One call per paper; resolves the best legal open-access route automatically.

uv run scripts/read_paper.py --doi 10.1038/s41586-021-03819-2 --workspace "$WS"
uv run scripts/read_paper.py --arxiv 1706.03762 --workspace "$WS"
uv run scripts/read_paper.py --pmcid PMC8371605 --workspace
Read more
Ships withco-researcher

Co-Researcher is an academic research plugin for Claude Code, Gemini CLI, OpenAI Codex and OpenCode. It runs literature reviews, systematic reviews, peer review and citation checks inside the AI assistant you already use.

Get the whole plugin

Other skills on co-researcher.