From researcher
Search academic literature across multiple databases. Triggers when user says: 'search literature', 'find papers', 'literature review', 'what does research say about', 'find related work', 'search PubMed', 'search arXiv', 'find citations', 'related papers', 'prior work on', 'explore this topic in the literature', 'give me the key papers on this topic'. Searches PubMed, Semantic Scholar, arXiv, Scite, Google Scholar, and CrossRef. Use this skill whenever the user needs to find, discover, or explore academic papers on any topic.
How this skill is triggered — by the user, by Claude, or both
Slash command
/researcher:literature-searchThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Multi-source academic literature search with deduplication and ranking.
Multi-source academic literature search with deduplication and ranking.
NEVER fabricate or hallucinate citations. Every result must come from an actual search query to a real source. If a search returns no results, say so. Do not invent papers, authors, DOIs, or abstracts under any circumstances.
core/ kernel (see Deterministic backend below), which
queries the sources, isolates per-source errors, dedupes, and ranks in one call. When the
Scite MCP server is connected, it enriches the top results with citation context.dedup_decisions[] and the ranked
records[] from its JSON rather than re-implementing either.Retrieval, deduplication, and ranking route through the core/ evidence kernel, not hand-built
API calls. One fan-out call queries the sources, isolates per-source errors, dedupes, and ranks,
returning CSL-JSON records with kernel metadata (source provenance, citation count, OA URL, rank
score) under the custom extension.
uv run --project "${CLAUDE_PLUGIN_ROOT}/core" python -m researcher_core search "<query>" --sources openalex,crossref,arxiv --json
Consume from the JSON:
records[]: the deduped, ranked results, already in CSL-JSON.counts{retrieved, deduplicated, duplicates_removed}: the tallies to report to the user.dedup_decisions[]: which records collapsed into which, and why.warnings[]: a source that timed out or was rate-limited lands here. One failing source never
fails the search; name the sources that were not reached and never read a downed index as
"no results".sources[]: which sources actually answered.Add --limit N to cap results and --since YEAR to bound recency. Full command, flag, and JSON
reference: references/core-cli.md.
The kernel is optional; state which tier produced the results:
core/ present: deterministic fan-out as above.uv or core/: fall back to connected MCP servers (Scite for citation context, Zotero for
the user's library), and say the kernel was unavailable.When a result is checked for identity (a known-item lookup, or a paper about to be added to the
bibliography), consume the FOUR-STATE identity verdict from verify-ref
(verified / mismatch / unresolvable / inconclusive), never a true/false. The kernel
carries refusal_grade per entry so this rule is not re-derived:
unresolvable, mismatch, plus
retracted on status (axis b) and contradicted on faithfulness (axis c).inconclusive (a source errored, or only one
index holds the paper) and insufficient-passage (no OA full text to anchor a claim). Reading
either as fabrication accuses an honest author of inventing a real citation, the worst failure
this system can make.Abstracts and "what does the research say" snippets are the ABSTRACT layer unless OA full text
was retrieved and indexed as M2 passages. Faithfulness (axis c) anchors on those passages; when
full text is unavailable the verdict is insufficient-passage, never clean or faithful, and each
verdict names its layer (abstract vs full-text). Axis (c) is a LEXICAL baseline (BM25 plus
token-overlap and polarity heuristics) that can miss overstatements, so a supported read off an
abstract is weak evidence, not a fact-check.
For each paper found:
[1] Title of the Paper
Authors: First A., Second B., Third C.
Year: 2024 | Journal: Nature Machine Intelligence
Citations: 142 | DOI: 10.1234/example
Abstract: First 2-3 sentences of abstract...
Source: Semantic Scholar
Scite Tallies: 89 supporting | 12 contrasting | 41 mentioning (when Scite available)
Identity: verified (2+ sources) | Layer: abstract (when checked via core)
[Add to bibliography]
Default mode. Searches all available sources, returns top 10-20 results.
Triggered by: "systematic review", "PRISMA", "comprehensive search"
Runs the fan-out search per protocol query. In systematic mode the kernel feeds the
append-only provenance ledger: a retrieval event per source query, a record_lineage event
per retained record, and a dedup_decision event per collapse (the dedup_decisions[] the
search output carries).
Reports PRISMA counts DERIVED from those events, never a stored total:
uv run --project "${CLAUDE_PLUGIN_ROOT}/core" python -m researcher_core provenance prisma --json
Read identified, identified_by_source{}, duplicates_removed, deduplicated, screened,
included, and excluded straight from the derived object; the PRISMA flow diagram is built
from these counts. Do not recompute, store, or cache a total.
Documents the search strategy (databases, queries, date ranges) and exports the search log for reproducibility.
Triggered by: "papers that cite this", "references of this paper"
The kernel owns retrieval, so results stay deduped, ranked, and snapshot-reproducible; do not
hand-build API calls here. The default fan-out covers OpenAlex, Crossref, and arXiv; add others
with --sources (semantic_scholar, pubmed, datacite, unpaywall, opencitations). An
unknown source name is an argument error, never a silent skip. Per-source mechanics, env vars,
and fallbacks live in references/core-cli.md and connectors/.
When the Scite MCP server is connected, this skill gains citation context superpowers.
When the Scite MCP connector is available, it enriches the kernel's top results with citation context (and serves as a degradation tier when the kernel is unavailable). The following capabilities activate:
records[], enrich the TOP results with Scite: pull
citation context and tallies for the highest-ranked papers.For every paper found (from any source), retrieve Scite citation tallies when available:
For each result, retrieve Scite smart citation snippets showing HOW the paper is being cited by others:
Triggered by: "citation landscape", "citation network", "how is this paper cited", "map citations"
For a given paper or topic, map the citation network:
This analysis helps authors position their work accurately within the existing discourse and avoid misrepresenting the state of consensus.
When user selects papers, generate BibTeX entries and append to manuscript/references/library.bib. Validate each entry has:
authorYear or authorYearKeyword)Before appending, run verify-ref on each entry and read its four-state identity verdict:
withhold only refusal-grade entries (unresolvable, mismatch, retracted), and surface
inconclusive or insufficient-passage as open items rather than dropping a real citation.
For advanced search strategies, read references/search-strategies.md. For the full core CLI
(every command, flag, JSON shape, and the four verification axes), read references/core-cli.md.
Canonical copy: references/integrity-constraints.md.
npx claudepluginhub sokolmarek/researcherSynthesizes existing knowledge, identifies research gaps, and traces scientific idea evolution using OpenAlex and systematic literature review methods.
Searches PubMed, Semantic Scholar, and bioRxiv/medRxiv with verified citations. Generates BibTeX entries. Anti-hallucination — every reference verified via API before inclusion.
Conducts systematic literature reviews across PubMed, arXiv, bioRxiv, and Semantic Scholar, producing markdown and PDF output with verified citations. Use for meta-analysis, research synthesis, or broad literature searches in biomedical and scientific domains.