academic-writing
You must use this when producing any research prose — literature reviews, syntheses, analyses, methodology descriptions,…
You must use this when synthesizing existing knowledge, identifying research gaps, or tracing the evolution of scientific ideas.
$ npx -y skills add poemswe/co-researcher --skill literature-review --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/literature-reviewContext 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.
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>
</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:**
**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
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.
You must use this when producing any research prose — literature reviews, syntheses, analyses, methodology descriptions,…
You must use this when analyzing claims, evaluating evidence, or Identifying logical fallacies in research.
You must use this when identifying ethical risks, ensuring participant privacy, or preparing IRB applications.
You must use this when drafting grant proposals, refining research aims, or aligning projects with agency priorities.
You must use this when formulating testable hypotheses, designing experimental controls, or defining falsification criteria.
You must use this when investigating complex claims across diverse sources or fact-checking contradictory information.