Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Semantic literature discovery and synthesis using embeddings
.claude/skills/brycewang-stanford-semantic-paper-radar/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | -7% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 62% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 27% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 38% | 0% |
Traditional literature search relies on keyword matching—you find papers that contain the exact terms you search for. Semantic paper discovery goes further by understanding the meaning of research content and finding papers that are conceptually related, even when they use different terminology. This is especially powerful for interdisciplinary research, where the same idea may be expressed in completely different vocabularies across fields.
The Semantic Paper Radar skill provides methods for using embedding-based semantic search, vector databases, and AI-powered synthesis to build a comprehensive, continuously updated view of the literature relevant to your research. It enables you to discover papers you would never find through keyword search alone and to synthesize findings across large bodies of work.
This skill covers setting up a personal semantic search index over your paper collection, querying public semantic search APIs, and using LLM-powered analysis to extract themes and connections from clusters of related papers.
Semantic search represents both your query and each paper as dense numerical vectors (embeddings) in a high-dimensional space. Papers whose embeddings are close to your query's embedding are semantically similar, regardless of the specific words used.
Key components:
text-embedding-3-small work well for academic text.OpenAlex indexes 250M+ works and supports search queries across all disciplines:
bash# Search works via the OpenAlex API curl "https://api.openalex.org/works?search=attention+mechanisms+for+graph+neural+networks&per_page=20"
The search endpoint uses relevance-ranked matching. Combine with concept filters and citation data for more targeted discovery. For true semantic matching, build a local embedding index (see below).
For deeper control, build a local semantic search index over your own paper collection:
pythonimport chromadb from sentence_transformers import SentenceTransformer # Initialize model = SentenceTransformer("allenai/specter2") client = chromadb.PersistentClient(path="./paper_index") collection = client.get_or_create_collection( name="my_papers", metadata={"hnsw:space": "cosine"} ) # Index a paper abstract = "We propose a novel attention mechanism for graph neural networks..." embedding = model.encode(abstract).tolist() collection.add( documents=[abstract], embeddings=[embedding], metadatas=[{"title": "Graph Attention v2", "year": 2025, "arxiv_id": "2501.xxxxx"}], ids=["paper_001"] ) # Query results = collection.query( query_embeddings=[model.encode("message passing in GNNs").tolist()], n_results=10 )
This local index lets you search across all papers you have collected using natural language queries. As you add more papers, the index becomes a personalized discovery tool tuned to your specific research interests.
Use semantic search to expand your awareness beyond your current reading:
Semantic search excels at finding papers from other fields that address similar problems:
Set up periodic semantic searches to detect new papers in your area:
Once you have discovered a cluster of related papers, use AI-assisted synthesis to extract insights across the collection:
Feed the abstracts of a cluster of papers to an LLM and ask for:
Create a structured evidence map from your semantic cluster:
| Theme | Supporting Papers | Contradicting Papers | Strength of Evidence | |-------|-------------------|----------------------|---------------------| | Theme A | 1], 3], 7] | 5] | Strong | | Theme B | 2], 4] | None | Moderate | | Theme C | 6] | 1], 8] | Contested |
This provides a bird's-eye view of where consensus exists and where debates remain open.
Compare your research question against the semantic landscape of existing work. Regions of embedding space where your query falls but few papers exist represent potential research gaps—areas where your contribution would be most novel.
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 24,926 | 24,695 | -1% | 1 | 1 | 0% | 3,679 | 4,604 | +25% | 0 | 0 | — |
case-02 | pass→pass | 13,654 | 10,622 | -22% | 1 | 1 | 0% | 2,215 | 3,262 | +47% | 0 | 0 | — |
case-11 | pass→fail | 15,586 | 15,870 | +2% | 1 | 1 | 0% | 2,359 | 3,816 | +62% | 0 | 0 | — |
case-03 | pass→pass | 16,535 | 12,747 | -23% | 1 | 1 | 0% | 2,495 | 3,612 | +45% | 0 | 0 | — |
case-04 | pass→pass | 14,732 | 11,609 | -21% | 1 | 1 | 0% | 2,339 | 3,426 | +46% | 0 | 0 | — |
case-05 | fail→pass | 15,641 | 5,996 | -62% | 1 | 1 | 0% | 2,515 | 2,328 | -7% | 0 | 0 | — |
case-06 | fail→fail | 14,765 | 14,676 | -1% | 1 | 1 | 0% | 2,110 | 3,747 | +78% | 0 | 0 | — |
case-07 | fail→pass | 20,328 | 19,352 | -5% | 1 | 1 | 0% | 2,619 | 4,235 | +62% | 0 | 0 | — |
case-08 | pass→pass | 15,708 | 11,374 | -28% | 1 | 1 | 0% | 2,029 | 3,035 | +50% | 0 | 0 | — |
case-09 | fail→pass | 17,275 | 13,129 | -24% | 1 | 1 | 0% | 2,469 | 3,302 | +34% | 0 | 0 | — |
case-10 | pass→fail | 25,688 | 18,333 | -29% | 1 | 1 | 0% | 3,469 | 4,307 | +24% | 0 | 0 | — |
case-12 | pass→pass | 15,001 | 6,040 | -60% | 1 | 1 | 0% | 2,207 | 2,385 | +8% | 0 | 0 | — |
case-13 | pass→pass | 24,434 | 22,928 | -6% | 1 | 1 | 0% | 3,726 | 4,826 | +30% | 0 | 0 | — |
case-14 | pass→pass | 8,941 | 4,953 | -45% | 1 | 1 | 0% | 1,500 | 2,202 | +47% | 0 | 0 | — |
case-15 | pass→pass | 5,689 | 2,899 | -49% | 1 | 1 | 0% | 966 | 1,875 | +94% | 0 | 0 | — |
case-16 | fail→pass | 10,888 | 4,076 | -63% | 1 | 1 | 0% | 1,508 | 1,908 | +27% | 0 | 0 | — |
case-17 | pass→pass | 13,782 | 3,697 | -73% | 1 | 1 | 0% | 821 | 1,897 | +131% | 0 | 0 | — |
case-18 | fail→pass | 8,691 | 2,282 | -74% | 1 | 1 | 0% | 1,241 | 1,714 | +38% | 0 | 0 | — |
case-19 | pass→pass | 14,459 | 4,561 | -68% | 1 | 1 | 0% | 2,184 | 2,093 | -4% | 0 | 0 | — |
case-20 | pass→pass | 10,434 | 4,883 | -53% | 1 | 1 | 0% | 1,767 | 2,294 | +30% | 0 | 0 | — |
case-21 | pass→pass | 14,379 | 12,247 | -15% | 1 | 1 | 0% | 2,366 | 3,327 | +41% | 0 | 0 | — |
case-22 | pass→pass | 34,325 | 18,586 | -46% | 1 | 1 | 0% | 5,440 | 5,003 | -8% | 0 | 0 | — |
case-23 | pass→pass | 22,721 | 20,676 | -9% | 1 | 1 | 0% | 3,542 | 4,883 | +38% | 0 | 0 | — |
case-24 | pass→pass | 14,410 | 20,459 | +42% | 1 | 1 | 0% | 2,677 | 5,296 | +98% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 24 cases were attempted. The headline lift of +13 percentage points is the difference between those two pass rates over the 24 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.