litreview — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited litreview (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The goal is to give the user a high-signal, ranked, deduped paper list with enough takeaway per item that they can decide which to read, which to cite, and which to skip — all in one pass. The output is the input to /draft (when writing a lit review) and to /cite (when batch-adding the best hits to Zotero).
/cite handoff — use the composite as a drop-in replacement for the single score, so the composite >= 4 cutoff matches the default score >= 4 cutoff exactly. Default behavior is unchanged unless --four-axis appears in the invocation.The user invokes /litreview <query> with a topic, paper, or research question. Common shapes:
/litreview discrimination in online labor markets using AI-generated profile images/litreview sparse autoencoder steering for text generation/litreview meta-science applied to social media engagement prediction/litreview cite-by-DOI 10.1287/mksc.2023.1234 (anchor mode — seed paper)/litreview "moral outrage" Brady PNAS replications/litreview generative AI in product design since 2022 open access n=30Loosely-stated flags inside the query — interpret them, don't require a CLI:
| Phrase | Action |
|---|---|
| "since YYYY", "last N years", "post-2022" | year filter |
| "open access only", "OA only" | filter to OA papers (has openAccessPdf) |
| "n=N", "top N", "give me N" | result cap (default 25) |
| "add to zotero", "file these", "send to /cite" | hand off step 5 |
| "in collection X" | propagate to /cite |
| "marketing only", "MKSCI/JMR/JCR/MS only" | venue filter |
| "exclude preprints" | filter out arXiv-only / unpublished |
Run these in parallel for source coverage. If a server is down, continue with whichever responded.
mcp__arxiv__search_papers — primary for recent ML/CS/preprints.mcp__arxiv__semantic_search — embedding-similarity within a local arXiv corpus (if pre-indexed). Useful for "papers similar to <seed arXiv ID>".mcp__arxiv__get_abstract — fetch abstract by ID after a hit.mcp__semantic-scholar__search_papers — primary for published / peer-reviewed work and citation counts.mcp__semantic-scholar__get_paper_details — full metadata + DOI + venue + OA link.mcp__semantic-scholar__get_paper_references / mcp__semantic-scholar__get_paper_citations — for seed-paper expansion ("papers like X", "papers citing Y").mcp__semantic-scholar__get_recommendations — Semantic Scholar's recommendation engine.mcp__openalex__openalex_search_entities — broadest interdisciplinary venue coverage, best for social-science / marketing / policy work that Semantic Scholar misses.mcp__openalex__openalex_analyze_trends — only when the user asks "how has the literature evolved" or similar trend question.Fallback (manual) when all three MCPs miss something specifically expected: Crossref REST API via Invoke-WebRequest (https://api.crossref.org/works?query=<terms>&rows=20) — no auth, no MCP needed.
Out-of-loop tools: Zotero MCP (mcp__zotero__zotero_search_items) only for deduping against the existing library; the Zotero MCP is read-only — adds go through /cite, which uses the Zotero Web API directly.
Translate the natural-language query into 1–3 targeted search strings per source. Don't echo the exact phrase — strip filler ("can you find", "I'm interested in"), pull out the substantive nouns, expand acronyms (e.g. SAE → "sparse autoencoder"; but don't expand acronyms that are project shorthand for a topic — search the topic, not the acronym).
Tailor per source:
cs.LG, econ.EM, stat.ME).year>=2020 filter parameter if the user asked for recent work.Run all three searches in parallel with limit=20 to 30 each so dedupe has headroom.
Build a unified candidate list. Dedupe in this order:
https://doi.org/, lowercase).2403.12345 and arXiv:2403.12345v2).When the same paper appears in multiple sources, merge metadata:
For each unique paper, score against the query using abstract + venue + year:
Be honest. If only 8 papers score >=3, return 8 — not 25 padded with score-2 noise. Padding wastes the user's time and credibility.
Before output, for the score >=4 papers, call mcp__zotero__zotero_search_items(query="<short title>", qmode="titleCreatorYear", limit=3) to check if it's already there. Flag as [in Zotero] in output — saves the /cite step on those.
Order by score (descending), then year (newest within score). Format per paper:
**[1] (score=5, 2024) Athey, Imbens et al. — *Title in italics*. *Marketing Science*. doi:10.xxx
Why relevant: <one sentence anchoring to the query>
Key finding/contribution: <one short sentence>
Method/identification: <one phrase — RDD, RCT, DiD, structural, observational, etc.>
arXiv:24xx.xxxxx | OA: yes | citations: 142 | [in Zotero: existing-key | not yet]After the list, give a 3–5 sentence synthesis through a quantitative-marketing / causal-inference lens:
If the user asked for "add to zotero" or "send to /cite", proceed to step 6. Otherwise stop here and ask: "Add the score >=4 hits to Zotero via /cite?"
For each paper with score >=4 (or whatever cap was given), pass DOI or arXiv ID to /cite in one batch. /cite handles:
mcp__semantic-scholar__get_paper_details.mcp__zotero__zotero_search_items (read-only MCP).?format=bibtex)..bib.zotero_collection_key from personal_config.projects[].Don't re-implement that logic here — invoke /cite and surface its summary back.
get_paper_references / get_paper_citations once you've identified a seed paper.author.id filter; or Semantic Scholar search_authors → get_author_top_papers.get_paper_recommendations first, then get_paper_citations for forward, get_paper_references for backward.<abstract not accessible> and lower-bound the score at 3 (don't auto-promote it). Note OA status no.[v1 — superseded by entry N]./draft. This skill returns the input; /draft writes the section./cite. This skill is for batches discovered through search.review-paper-code if it's a methods reference.~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.