Updated April 2026Cookbook19 min read

Claude literature-review skill: 10 PRISMA pipelines (2026)

Ten real systematic-review pipelines — PRISMA scaffold, Semantic Scholar query, triple-database Boolean merge, BibTeX export, methods extraction, gap analysis, citation graph, snowball, summary table, thesis-chapter draft — each as a single Claude prompt with the exact Python it produces.

Already know what skills are? Skip to the cookbook. First time? Read the explainer then come back. Need the install? It’s on the /skills/literature-review page.

Editorial illustration: a fanned stack of three translucent paper-card glyphs on the left, connected by a teal flow arc to a luminous magnifying-glass glyph on the right, on a midnight navy background.
On this page · 21 sections
  1. What this skill does
  2. The cookbook
  3. Install + README
  4. Watch it built
  5. 01 · PRISMA flow scaffold (search → screen → eligibility → included)
  6. 02 · Semantic Scholar full-text query → ranked list
  7. 03 · Boolean search across arXiv + OpenAlex + PubMed
  8. 04 · BibTeX export with consistent citation style
  9. 05 · Auto-extract methods sections from N papers
  10. 06 · Find-the-gap analysis (compare 5 papers' contributions)
  11. 07 · Citation graph (paper A → cited by N → cited by M)
  12. 08 · Snowball search from a seed paper
  13. 09 · Auto-summary table (Author / Year / Method / Sample / Finding)
  14. 10 · Export full review as a markdown thesis-chapter draft
  15. Community signal
  16. The contrarian take
  17. Real pipelines shipped
  18. Gotchas
  19. Pairs well with
  20. FAQ
  21. Sources

What this skill actually does

Sixty seconds of context before the cookbook — what the literature-review skill is, what Claude returns when you invoke it, and the one thing it does NOT do for you.

What this skill actually does

Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.).

K-Dense-AI / claude-scientific-skills, the skill author · /skills/literature-review

What Claude returns

You ask in natural language; Claude returns a deterministic pipeline — Python scripts that hit Semantic Scholar (api.semanticscholar.org/graph/v1), arXiv (export.arxiv.org/api/query), OpenAlex, and PubMed E-utilities, save raw JSON per stage to ./review/, deduplicate by DOI then by title-hash, run scripts/verify_citations.py against CrossRef, and emit a refs.bib + a markdown synthesis. The whole pipeline plugs into pandoc with --citeproc for APA, Nature, Vancouver, Chicago, or IEEE PDFs.

What it does NOT do

It does not retrieve paywalled full-text PDFs, does not perform meta-analysis statistics, and does not replace expert judgment in quality assessment — those stay yours.

How you trigger it

systematic literature review on transformer time-series forecastingcomprehensive lit review with PRISMA flow and BibTeX exportsnowball search from this DOI two hops out

Cost when idle

~120 tokens at idle (the skill name + description sit in the system prompt). The seven scripts and citation-style templates load only when a query triggers the skill.

The cookbook

Each entry below is a literature-review pipeline you could run this week. They’re ordered the way I’d teach them — the early ones (PRISMA scaffold, Semantic Scholar ranked list, triple-merge) sit on the corpus side; the middle set (BibTeX, methods extraction, gap analysis) does the synthesis; the last three (citation graph, snowball, summary table) cover the supplementary search PRISMA explicitly asks for. Use case 10 stitches the artifacts into a chapter draft — that’s the only one you can’t skip.

One trade-off worth naming up front: this skill is a competitor to the arxiv-mcp-server and the pubmed MCP server. The skill is ~120 idle tokens and ships seven scripts. Each MCP server keeps a tool schema in your context window every turn. Pick the skill when each review is a one-shot pipeline and idle cost matters; pick the MCP when one agent needs to drive long-lived database sessions across many turns. The contrarian section below covers the one threat model both routes share — hallucinated citations — and how the skill engineers around it.

Install + README

If the skill isn’t on your machine yet, here’s the one-liner. The full install panel (Codex, Copilot, Antigravity variants) lives on the skill page. The README below is the raw SKILL.md from K-Dense-AI/claude-scientific-skills — same source the install pulls from.

One-line install · by K-Dense-AI

Open skill page

Install

mkdir -p .claude/skills/literature-review && curl -L -o skill.zip "https://mcp.directory/api/skills/download/89" && unzip -o skill.zip -d .claude/skills/literature-review && rm skill.zip

Installs to .claude/skills/literature-review

Watch it built

Andy Stapleton has spent the last year stress-testing every AI literature-review tool from inside academia. This comparison is useful before the cookbook because it shows where the Claude skill route sits relative to the SaaS UI tier (Elicit, Consensus, Scite, ResearchRabbit) — one layer below, hitting the same APIs directly, with your data staying local.

01

PRISMA flow scaffold (search → screen → eligibility → included)

Stand up the four-stage PRISMA pipeline with an auditable count at every step — identification, screening, eligibility, included.

ForAnyone writing a thesis chapter, journal-grade systematic review, or grant report.

The prompt

Use the literature-review skill to scaffold a PRISMA 2020 review on 'transformer architectures for time-series forecasting'. Run the multi-database search (arXiv, Semantic Scholar, OpenAlex). Save the raw hits to ./review/01-identified.json, deduplicate to ./review/02-deduped.json, then screen titles+abstracts to ./review/03-screened.json. For each stage emit a count (n=) so I can render the PRISMA flow diagram with the scientific-schematics skill afterwards.

What slides.md looks like

# scripts/prisma_pipeline.py
import json, requests
QUERY = "transformer time series forecasting"
S2 = "https://api.semanticscholar.org/graph/v1/paper/search"

# 1. identification
r = requests.get(S2, params={"query": QUERY, "limit": 100,
    "fields": "title,abstract,year,authors,externalIds,citationCount"})
hits = r.json()["data"]
json.dump(hits, open("review/01-identified.json", "w"))
print(f"n_identified={len(hits)}")

# 2. dedupe by DOI then by title-hash
seen, uniq = set(), []
for p in hits:
    key = p.get("externalIds",{}).get("DOI") or p["title"].lower().strip()
    if key not in seen: seen.add(key); uniq.append(p)
json.dump(uniq, open("review/02-deduped.json", "w"))
print(f"n_deduped={len(uniq)}")

One-line tweak

Add a fourth stage `04-included.json` after a manual full-text pass — Claude can pre-fill an inclusion-rationale column you tick off in review.

02

Semantic Scholar full-text query → ranked list

Hit the Semantic Scholar Graph API once, return a ranked table (title · year · citations · venue · DOI) for the top 20 hits.

ForResearchers who want a citation-weighted starting set in under a minute.

The prompt

Use the literature-review skill. Query Semantic Scholar's /graph/v1/paper/search endpoint for 'retrieval-augmented generation evaluation'. Sort the top 20 by citationCount descending. Return a markdown table with columns: Title | Year | Cites | Venue | DOI. Save raw JSON to ./review/s2-rag.json so I can re-rank locally if needed.

What slides.md looks like

import requests, json
URL = "https://api.semanticscholar.org/graph/v1/paper/search"
params = {"query": "retrieval augmented generation evaluation",
          "limit": 20,
          "fields": "title,year,citationCount,venue,externalIds"}
r = requests.get(URL, params=params, timeout=30); r.raise_for_status()
data = sorted(r.json()["data"],
              key=lambda p: p.get("citationCount", 0),
              reverse=True)
json.dump(data, open("review/s2-rag.json", "w"), indent=2)
for p in data:
    doi = p.get("externalIds",{}).get("DOI","–")
    print(f"| {p['title'][:60]} | {p['year']} | {p.get('citationCount',0)} | {p.get('venue','')[:24]} | {doi} |")

One-line tweak

The free public endpoint allows ~1 req/sec shared across users. Set `x-api-key` from a partner key when you scale past 50 papers per query.

03

Boolean search across arXiv + OpenAlex + PubMed

Run the same Boolean expression against three databases in parallel and merge results into one deduplicated CSV.

ForCross-disciplinary reviews where one corpus is never enough (CS + biology, ML + medicine).

The prompt

Use the literature-review skill. For the query ("large language model" AND ("clinical" OR "medical")) AND year:2024-2026, hit arXiv (export.arxiv.org/api/query), OpenAlex (api.openalex.org/works) and PubMed (eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi). Merge by DOI, save to ./review/triple-merge.csv with columns: doi, title, source, year, citations.

What slides.md looks like

import requests, csv, urllib.parse as u
Q = '"large language model" AND ("clinical" OR "medical")'
endpoints = {
  "arxiv":    f"http://export.arxiv.org/api/query?search_query=all:{u.quote(Q)}&max_results=50",
  "openalex": f"https://api.openalex.org/works?search={u.quote(Q)}&filter=publication_year:2024-2026&per-page=50",
  "pubmed":   f"https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed&term={u.quote(Q)}&retmode=json&retmax=50",
}
rows = []
for src, url in endpoints.items():
    rows += parse(src, requests.get(url, timeout=30))   # parse() returns dicts
# dedupe by DOI, fall back to lowercased title
seen, out = set(), []
for r in rows:
    k = r["doi"] or r["title"].lower();
    if k not in seen: seen.add(k); out.append(r)
csv.DictWriter(open("review/triple-merge.csv","w"), fieldnames=out[0].keys()).writerows(out)

One-line tweak

Add bioRxiv via api.biorxiv.org/details/biorxiv when your topic skews preprint — same merge step, one extra source row.

04

BibTeX export with consistent citation style

Convert the included-set into a clean references.bib with APA / Nature / Vancouver / Chicago / IEEE templates ready for pandoc.

ForAnyone whose journal target dictates the citation style and rejects messy BibTeX.

The prompt

Use the literature-review skill. Take ./review/04-included.json, fetch BibTeX from doi.org for each entry (Accept: application/x-bibtex), normalize keys to AuthorYearKeyword format, write ./review/refs.bib. Emit a second file ./review/style-block.tex selecting the natbib style my journal wants (default: nature.bst).

What slides.md looks like

import json, requests, re
included = json.load(open("review/04-included.json"))
out = []
for p in included:
    doi = p["externalIds"]["DOI"]
    bib = requests.get(f"https://doi.org/{doi}",
        headers={"Accept": "application/x-bibtex"}, timeout=20).text
    # normalize cite-key: First-author surname + year + first-keyword
    first = p["authors"][0]["name"].split()[-1].lower()
    key  = f"{first}{p['year']}{p['title'].split()[0].lower()}"
    bib  = re.sub(r"@(\w+)\{[^,]+,", f"@\\1{{{key},", bib, count=1)
    out.append(bib)
open("review/refs.bib","w").write("\n\n".join(out))
open("review/style-block.tex","w").write(r"\bibliographystyle{nature}\bibliography{refs}")

One-line tweak

Swap nature.bst for apalike.bst, vancouver.bst, chicago.bst, or ieeetr.bst. The skill's SKILL.md ships templates for all five — the FAQ below covers which one your target wants.

05

Auto-extract methods sections from N papers

Read the methods section of every included paper and emit a comparison table — sample size, model, dataset, evaluation metric.

ForAnyone synthesising methodology trends across a field (the meat of a thesis chapter).

The prompt

Use the literature-review skill on ./review/04-included.json. For each PDF, locate the Methods/Methodology section, extract: (a) sample size, (b) model architecture or technique, (c) dataset name, (d) primary evaluation metric. Write a markdown table to ./review/methods-table.md with one row per paper. If a paper has no PDF, fall back to its Semantic Scholar abstract.

What slides.md looks like

import json, requests
from pathlib import Path
included = json.load(open("review/04-included.json"))
rows = ["| Paper | n | Model | Dataset | Metric |", "|---|---|---|---|---|"]
for p in included:
    pdf = Path(f"pdfs/{p['paperId']}.pdf")
    text = read_section(pdf, heading="Methods") if pdf.exists() else p["abstract"]
    fields = claude_extract(text, schema={"n":"int","model":"str",
                                          "dataset":"str","metric":"str"})
    rows.append(f"| {p['title'][:40]} | {fields['n']} | {fields['model']} "
                f"| {fields['dataset']} | {fields['metric']} |")
open("review/methods-table.md","w").write("\n".join(rows))

One-line tweak

Pipe the same table into a Pareto plot (sample size vs. citation count) with the data-analysis skill — surfaces which methods are over- or under-evaluated.

06

Find-the-gap analysis (compare 5 papers' contributions)

Cluster the contributions of the top 5 most-cited papers, then surface the open questions none of them answers — the literature gap.

ForPhD students writing the 'Why this thesis?' opening of chapter one.

The prompt

Use the literature-review skill on the top 5 papers in ./review/03-screened.json (sorted by citationCount). For each, extract its single-sentence contribution. Cluster the five contributions into themes. Then write a 200-word 'Gap analysis' section to ./review/gap.md naming three open questions that none of the five papers tackles — cite each claim.

What slides.md looks like

import json
top5 = sorted(json.load(open("review/03-screened.json")),
              key=lambda p: p.get("citationCount",0), reverse=True)[:5]

prompt = """For each paper, in 1 sentence: what is its central contribution?
Then group contributions into 2-3 themes.
Then list 3 open questions that NONE of the five address.
Cite every claim with [SmithYearKeyword]. Output markdown."""

# claude_call() is the literature-review skill helper
md = claude_call(prompt, attachments=[p["abstract"] for p in top5])
open("review/gap.md","w").write(md)

One-line tweak

Set `top10` instead of `top5` for a research proposal — three gaps from five papers is a chapter; three gaps from ten is a grant section.

07

Citation graph (paper A → cited by N → cited by M)

Snowball outward two hops from a seed paper, render a citation graph, save as Graphviz DOT plus a CSV of edges.

ForAnyone tracing the lineage of an idea — 'who has built on Vaswani 2017 in the last 18 months?'

The prompt

Use the literature-review skill. Seed = DOI 10.48550/arXiv.1706.03762 (Attention is All You Need). Walk Semantic Scholar's /paper/{id}/citations endpoint two hops. Cap at 50 nodes per hop. Save the edge list to ./review/cite-graph.csv (src_id, dst_id, year) and a Graphviz DOT file to ./review/cite-graph.dot.

What slides.md looks like

import requests, csv
S2 = "https://api.semanticscholar.org/graph/v1/paper"
seed = "10.48550/arXiv.1706.03762"
edges, frontier, depth = [], [seed], 0
while depth < 2:
    next_front = []
    for pid in frontier:
        r = requests.get(f"{S2}/{pid}/citations",
            params={"limit": 50, "fields": "paperId,year"}).json()
        for c in r["data"]:
            cp = c["citingPaper"]
            edges.append((pid, cp["paperId"], cp.get("year","")))
            next_front.append(cp["paperId"])
    frontier, depth = next_front, depth + 1
csv.writer(open("review/cite-graph.csv","w")).writerows(
    [("src","dst","year"), *edges])
with open("review/cite-graph.dot","w") as f:
    f.write("digraph G {\n")
    for s,d,_ in edges: f.write(f'  "{s[:8]}" -> "{d[:8]}";\n')
    f.write("}\n")

One-line tweak

Render the DOT to PNG with `dot -Tpng cite-graph.dot -o cite-graph.png`, then drop the image into the gap-analysis section from use case 6 to make 'who built on whom' visible.

08

Snowball search from a seed paper

Backward + forward snowball: pull every reference of the seed, then every paper that cites the seed, dedupe to one CSV.

ForCochrane-style reviewers who need supplementary search to clear the PRISMA 'records identified through other sources' box.

The prompt

Use the literature-review skill. Seed paperId = 6b85b63579a916f705a8e10a49bd8d849d91b1fc. Hit /paper/{id}/references and /paper/{id}/citations. Save backward+forward into ./review/snowball.csv. Tag each row with origin='backward' or origin='forward' so I can audit which arm contributed which paper.

What slides.md looks like

import requests, csv
S2  = "https://api.semanticscholar.org/graph/v1/paper"
SEED = "6b85b63579a916f705a8e10a49bd8d849d91b1fc"

def fetch(arm):
    url = f"{S2}/{SEED}/{'references' if arm=='backward' else 'citations'}"
    r = requests.get(url, params={"limit": 200,
        "fields":"paperId,title,year,externalIds"}).json()
    key = "citedPaper" if arm=="backward" else "citingPaper"
    return [(arm, p[key]["paperId"], p[key]["title"],
             p[key].get("year",""),
             p[key].get("externalIds",{}).get("DOI","–"))
            for p in r["data"]]

rows = fetch("backward") + fetch("forward")
csv.writer(open("review/snowball.csv","w")).writerows(
    [("origin","paperId","title","year","doi"), *rows])
print(f"backward={sum(1 for r in rows if r[0]=='backward')} "
      f"forward={sum(1 for r in rows if r[0]=='forward')}")

One-line tweak

Set `limit=1000` and paginate with `offset` once your seed has more than 200 cites; the API caps at 1000 per page.

09

Auto-summary table (Author / Year / Method / Sample / Finding)

Render the canonical literature-review summary table — one row per included paper, five columns the reviewers expect to see.

ForAnyone whose chapter / journal section opens with the 'Table 1: summary of included studies' grid.

The prompt

Use the literature-review skill on ./review/04-included.json. For each paper extract: first-author surname, year, method (one phrase), sample size or dataset, primary finding (one sentence). Output a sortable markdown table to ./review/summary-table.md AND a tidy CSV to ./review/summary-table.csv that I can pivot in pandas.

What slides.md looks like

import json, csv
included = json.load(open("review/04-included.json"))
header = ["author","year","method","sample","finding"]
rows = []
for p in included:
    fields = claude_extract(p["abstract"], schema={
        "method":"str","sample":"str","finding":"str"})
    rows.append({
      "author": p["authors"][0]["name"].split()[-1],
      "year":   p["year"],
      "method": fields["method"],
      "sample": fields["sample"],
      "finding": fields["finding"],
    })
# markdown
with open("review/summary-table.md","w") as f:
    f.write("| " + " | ".join(header) + " |\n")
    f.write("|" + "|".join(["---"]*len(header)) + "|\n")
    for r in rows: f.write("| " + " | ".join(str(r[h]) for h in header) + " |\n")
# csv
csv.DictWriter(open("review/summary-table.csv","w"),
               fieldnames=header).writerows(rows)

One-line tweak

Add a sixth column 'risk-of-bias' and have Claude grade each study against the Cochrane RoB-2 tool — turns the table into a Cochrane-grade artifact.

10

Export full review as a markdown thesis-chapter draft

Stitch the cookbook outputs into one publication-shaped chapter — abstract, search strategy, PRISMA flow, summary table, gap analysis, references.

ForPhD students at the 'I have all the artifacts, now write chapter 2' moment.

The prompt

Use the literature-review skill. Read ./review/{gap.md, summary-table.md, methods-table.md, refs.bib, prisma.png}. Write ./review/chapter-2.md with sections: 1) 250-word abstract, 2) Search strategy (Boolean string + databases + dates), 3) PRISMA flow (![](prisma.png)), 4) Summary table, 5) Methodology synthesis, 6) Gap analysis, 7) References. Use natbib \\citep keys from refs.bib.

What slides.md looks like

# scripts/stitch_chapter.py
import pathlib
chapter = []
chapter.append("# Chapter 2 — Systematic Literature Review\n")
chapter.append("## 2.1 Abstract\n" +
    pathlib.Path("review/abstract.md").read_text())
chapter.append("## 2.2 Search strategy\n" +
    pathlib.Path("review/search-strategy.md").read_text())
chapter.append("## 2.3 PRISMA flow\n![PRISMA](prisma.png)\n")
chapter.append("## 2.4 Summary of included studies\n" +
    pathlib.Path("review/summary-table.md").read_text())
chapter.append("## 2.5 Methodology synthesis\n" +
    pathlib.Path("review/methods-table.md").read_text())
chapter.append("## 2.6 Gap analysis\n" +
    pathlib.Path("review/gap.md").read_text())
chapter.append("## 2.7 References\n\\bibliography{refs}\n")
pathlib.Path("review/chapter-2.md").write_text("\n\n".join(chapter))
# pandoc -> PDF: pandoc chapter-2.md --citeproc --bibliography=refs.bib -o ch2.pdf

One-line tweak

Append `--csl=nature.csl` to the pandoc call to lock the citation style. The skill's `scripts/generate_pdf.py` wraps this so you don't fight pandoc flags.

Community signal

Three voices that frame why a Claude skill is the right shape for this problem. The first is the Allen Institute’s own framing of the corpus the skill leans on. The second is the publisher-coverage problem that forces you to merge databases in the first place. The third is the methodological floor every systematic review has to clear.

Most Semantic Scholar endpoints are available to the public without authentication, but they are rate-limited to 1000 requests per second shared among all unauthenticated users.

Allen Institute for AI · Semantic Scholar · Blog

The reason use cases 2, 3, 7, 8 hit the API directly: it's free, public, and 214 million papers wide. The skill is the orchestrator; this is the corpus.

Source
Unfortunately the big publishers (Elsevier and Springer) are forcing other indices like OpenAlex, etc. to remove abstracts so they're harder to get.

shishy (HN, ex-scite.ai) · Hacker News

Why a single-database review will under-cover: Elsevier-side coverage is contracting in OpenAlex. Use case 3 (triple-merge) exists for exactly this reason.

Source
A systematic review cannot be done with semantic search and should never be done in a preprint collection.

tokai (HN) · Hacker News

The methodological floor: Boolean expansion plus PRISMA stages — not vibes-based vector retrieval — is what separates a review from a vibe.

Source

The contrarian take

Not everyone is sold on AI-driven literature reviews. The most cited critique — both in academia and in the popular press — comes from the bibliographic-fabrication literature itself. Roger Watson · Enago Academy (citing Deakin University study) summarised the headline number:

ChatGPT (GPT-4o) fabricated roughly one in five academic citations, with more than half (56%) of citations either fake or containing errors. Among fabricated citations that included DOIs, 64% linked to real but completely unrelated papers — making the errors harder to spot without careful verification.

Roger Watson · Enago Academy (citing Deakin University study) · Blog

Synthesising the Deakin University and multi-model citation-fabrication studies.

Source

He's right, and the literature-review skill is built around this exact failure mode. The skill never trusts a model-generated citation: every reference goes through scripts/verify_citations.py which round-trips the DOI through CrossRef and the originating database (PubMed / arXiv / Semantic Scholar). Anything that doesn't resolve gets dropped. The contrarian critique is the entire reason the skill exists as a deterministic pipeline — and why use case 4 (BibTeX export) explicitly fetches BibTeX from doi.org rather than asking Claude to type one out.

The honest framing: a vanilla LLM prompt “write me a literature review on X” is dangerous — the fabrication rate sits between 20% and 56% depending on topic. A pipeline that (a) hits real database APIs, (b) verifies every DOI through CrossRef, and (c) fetches BibTeX from doi.org rather than generating it, is a different artifact. The literature-review skill is the second thing, not the first. If you’re doing the first, stop.

Real pipelines shipped

Concrete sources the cookbook depends on. None of these are marketing — they cite endpoint URLs, paper counts, and the explicit methodology the skill implements.

Gotchas (the four that bite)

Sourced from the Semantic Scholar API docs, the PRISMA 2020 Statement, and the citation-fabrication literature flagged in the contrarian section.

Never trust a model-typed citation — always round-trip the DOI

The Deakin / Enago studies put fabrication at 20–56% for raw LLM citations, with 64% of fake DOIs pointing at real-but-unrelated papers. The skill's verify_citations.py is non-negotiable; if you bypass it, you ship fabricated references.

Semantic Scholar's free tier shares 1000 req/sec across all anonymous users

Translation: at peak hours you'll see 429s. Add `time.sleep(0.5)` between calls in long-running snowball jobs (use case 8), or apply for a partner API key and set the `x-api-key` header.

OpenAlex is shedding Elsevier abstracts — coverage is contracting

Per the HN thread cited above, big publishers are forcing OpenAlex to remove abstracts. A single-database review on OpenAlex alone will systematically miss recent Elsevier work. Use case 3 (triple-merge) is the mitigation.

PRISMA 2020 requires a flow diagram — generate it, don't fudge it

Reviewers count nodes. The skill emits per-stage n= counts so the scientific-schematics skill can render the flow with real numbers. Skip this and your review fails the methods check at desk-review.

Pairs well with

Curated to match the cookbook’s actual integrations: the research-side skills (arxiv-search, academic-researcher, citation-management, systematic-literature-review), the synthesis-side skills (research-paper-writer, summarize, data-analysis, pdf-to-markdown), and the long-running MCP servers for when an agent needs persistent database sessions (arxiv-mcp-server, pubmed, zotero, citeassist-citation-retrieval, search-papers). The natural cross-link is the pdf-to-markdown skill cookbook — you’ll need it for use case 5 (methods extraction) the moment your corpus has more than ten PDFs.

Two posts that compose well with this cookbook: What are Claude Code skills? covers the underlying mechanism, and Claude Code best practices covers the orchestration patterns the longer use cases (6, 10) lean on.

Frequently asked questions

What is the literature-review skill, and how is it different from the deep-research skill?

The literature-review skill is K-Dense-AI's PRISMA-grade systematic-review pipeline: it queries academic databases (Semantic Scholar, arXiv, OpenAlex, PubMed, bioRxiv), enforces the four-stage screening flow, and verifies every citation against CrossRef before writing the BibTeX. The deep-research skill is a generic web-research wrapper — broader, faster, no PRISMA contract, no citation verification. Reach for literature-review when the output has to clear journal review; reach for deep-research when you want a quick scan.

Does the literature-review skill hallucinate citations like ChatGPT?

It is engineered specifically not to. The skill never trusts a model-generated reference: every entry round-trips through scripts/verify_citations.py against CrossRef and the originating database. Use case 4 (BibTeX export) fetches the BibTeX from doi.org with `Accept: application/x-bibtex` rather than asking the model to compose one. Anything that fails to resolve is dropped from the bibliography. The Enago / Deakin University study found 56% of raw ChatGPT citations are fabricated or wrong — that's the bar this pipeline is designed to clear.

Which databases does the literature-review skill query?

Semantic Scholar Graph API (~214M papers, the cross-disciplinary backbone), arXiv (preprints across CS / physics / quant-bio / econ), bioRxiv + medRxiv (biomedical preprints), PubMed via NCBI E-utilities (biomedical, clinical), and OpenAlex (250M+ works, open-license). Specialized scientific lookups go via ChEMBL, KEGG, UniProt, AlphaFold, and PDB. Use case 3 above runs the same Boolean expression in parallel across arXiv + OpenAlex + PubMed and dedupes the merge — that's the canonical pattern.

literature-review skill vs the arxiv-search skill — which one do I want?

arxiv-search is single-corpus and fast: it hits export.arxiv.org/api/query and returns ranked preprints. The literature-review skill orchestrates arxiv-search-style queries across four databases plus Semantic Scholar plus citation verification plus PRISMA stages plus BibTeX export. Pair them: write the arXiv-only Boolean with arxiv-search, then promote it into a multi-database systematic review with literature-review when you need journal-grade rigor.

Which citation styles does the BibTeX export support?

APA (7th ed.), Nature, Vancouver, Chicago, and IEEE — selected via the `--citation-style` flag on scripts/generate_pdf.py. The skill ships the matching .bst (or .csl) files and writes a tiny style-block.tex you include in your pandoc invocation. Use case 4 above demonstrates the natbib variant; for CSL-driven pandoc-citeproc workflows, swap nature.bst for nature.csl and add `--csl=nature.csl --citeproc` to the pandoc call.

Is PRISMA 2020 actually supported, or just claimed?

Actually supported. The SKILL.md mandates the four-stage flow (identification → screening → eligibility → included) with explicit n= counts at every stage and a generated PRISMA flow diagram. The flow diagram is rendered by the sibling scientific-schematics skill — so install both. Use case 1 above is the literal scaffold the SKILL.md describes; use case 10 stitches the diagram, summary table, gap analysis, and BibTeX into a single chapter draft.

Why is the literature-review skill page getting impressions for 'openalex skill'?

Because the skill ships a working OpenAlex query path (use case 3 in the cookbook) and is currently one of the only Claude skills that does. The dedicated openalex-database skill is the lower-level alternative if you only need raw OpenAlex hits; the literature-review skill is the right answer when OpenAlex is one of three or four corpora you want to merge inside a PRISMA pipeline. Both pages link to each other so the long-tail OpenAlex traffic finds whichever lane it actually wanted.

Sources

Primary

Community

Critical and contrarian

Internal

Keep reading