Skip to content
Automation
Skill

/traversing-citations

Smart backward and forward citation following via Semantic Scholar, with relevance filtering and deduplication

From plugin
auto-empirical-research-skills
3.3k200 skills146 agents
Install
$ npx -y skills add brycewang-stanford/Auto-Empirical-Research-Skills --skill traversing-citations --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/traversing-citations

Context preview

The summary Claude sees to decide when to auto-load this skill.

Smart backward and forward citation following via Semantic Scholar, with relevance filtering and deduplication

SKILL.md

traversing-citations.SKILL.md
name: Traversing Citation Networks
description: Smart backward and forward citation following via Semantic Scholar, with relevance filtering and deduplication
when_to_use: After finding relevant paper. When need to find related work. When following references or citations. When building citation graph. When exploring paper connections.
version: 1.0.0

<!-- ╔══════════════════════════════════════════════════════════════╗ ║ 本文件为开源 Skill 原始文档,收录仅供学习与研究参考 ║ ║ CoPaper.AI 收集整理 | https://copaper.ai ║ ╚══════════════════════════════════════════════════════════════╝

来源仓库: https://github.com/kthorn/research-superpower 项目名称: research-superpower 开源协议: MIT License 收录日期: 2026-04-02

声明: 本文件版权归原作者所有。此处收录旨在为社会科学实证研究者 提供 AI Agent Skills 的集中参考。如有侵权,请联系删除。 -->

Traversing Citation Networks

Overview

Intelligently follow citations backward (references) and forward (citing papers) using Semantic Scholar API.

**Core principle:** Only follow citations relevant to user's query. Avoid exponential explosion by filtering before traversing.

When to Use

Use this skill when:

  • Found a highly relevant paper (score ≥ 7)
  • Need to find related work
  • User asks "what papers cite this?"
  • Building comprehensive understanding of a topic

**When NOT to use:**

  • Paper scored < 7 (not relevant enough to follow)
  • Already at 50 papers (check with user first)
  • Citations look off-topic from abstract

Citation Traversal Strategy

1. Get Paper ID from Semantic Scholar

**Lookup by DOI:**

curl "https://api.semanticscholar.org/graph/v1/paper/DOI:10.1234/example.2023?fields=paperId,title,year"

**Response:**

{
  "paperId": "abc123def456",
  "title": "Paper Title",
  "year": 2023
}

**Save paperId** - needed for citations/references queries

2. Backward Traversal (References)

**Get references from paper:**

curl "https://api.semanticscholar.org/graph/v1/paper/abc123def456/references?fields=contexts,intents,title,year,abstract,externalIds&limit=100"

**Response format:**

{
  "data": [
    {
      "citedPaper": {
        "paperId": "xyz789",
        "title": "Referenced Paper Title",
        "year": 2020,
        "abstract": "...",
        "externalIds": {
          "DOI": "10.5678/referenced.2020",
          "PubMed": "87654321"
        }
      },
      "contexts": [
        "...as described in previous work [15]...",
        "...we used the method from [15] to..."
      ],
      "intents": ["methodology", "background"]
    }
  ]
}

**Filter for relevance:**

For each reference, check: 1. **Context keywords**: Do citation contexts mention user's query terms?

  • Example: If user asks about "IC50 values", look for contexts mentioning "IC50", "activity", "potency"

2. **Title match**: Does title contain relevant keywords? 3. **Intent**: Is intent "methodology" or "result" (more relevant) vs "background" (less relevant)?

**Scoring:**

  • Context keywords match: +3 points
  • Title keywords match: +2 points
  • Intent is methodology/result: +2 points
  • Recent (< 5 years old): +1 point

**Only add to queue if score ≥ 5**

3. Forward Traversal (Citations)

**Get papers citing this one:**

curl "https://api.semanticscholar.org/graph/v1/paper/abc123def456/citations?fields=title,year,abstract,externalIds&limit=100"

**Response format:**

{
  "data": [
    {
      "citingPaper": {
        "paperId": "def456ghi",
        "title": "Newer Paper Citing This",
        "year": 2024,
        "abstract": "We extended the work of [original paper]...",
        "externalIds": {
          "DOI": "10.9012/citing.2024"
        }
      }
    }
  ]
}

**Filter for relevance:**

For each citing paper: 1. **Title match**: Keywords present in title? 2. **Abstract match**: User's query terms in abstract? 3. **Recency**: Newer papers often build on findings (prioritize < 2 years) 4. **Citation count**: If Semantic Scholar provides, highly cited papers more likely relevant

**Scoring:**

  • Title keywords match: +3 points
  • Abstract keywords match: +2 points
  • Recent (< 2 years): +2 points
  • Moderate recency (2-5 years): +1 point

**Only add to queue if score ≥ 5**

4. Deduplication

**Before adding to queue:**

Check papers-reviewed.json:

doi = paper["externalIds"].get("DOI")
if doi in papers_reviewed:
    skip  # Already processed
else:
    add to queue

**CRITICAL: After evaluating any paper from citation traversal, add it to papers-reviewed.json regardless of score. This prevents re-processing the same paper from multiple sources.**

**Track citation relationship** in citations/citation-graph.json:

{
  "10.1234/example.2023": {
    "references": ["10.5678/ref1.2020", "10.5678/ref2.2021"],
    "cited_by": ["10.9012/cite1.2024", "10.9012/cite2.2024"]
  }
}

**CRITICAL: Use ONLY citation-graph.json for citation tracking. Do NOT create custom files like forward_citation_pmids.txt or citation_analysis.md. All findings go in SUMMARY.md.**

5. Process Queue

**Add relevant citations to processing queue:**

{
  "doi": "10.5678/referenced.2020",
  "title": "Referenced Paper",
  "relevance_score": 7,
  "source": "backward_from:10.1234/example.2023",
  "context": "Method citation - describes IC50 measurement protocol"
}

**Then:**

  • Evaluate using `evaluating-paper-relevance` skill
  • If relevant, extract data and potentially traverse its citations too

Smart Traversal Limits

**To avoid explosion:**

  • Only traverse papers scoring ≥ 7 in initial evaluation
  • Only follow citations scoring ≥ 5 in relevance filtering
  • Limit traversal depth to 2 levels (original → references → references of references)
  • Check with user after every 50 papers total

**Breadth-first strategy:** 1. Get all references + citations for current paper 2. Filter and score them 3. Add high-scoring ones to queue 4. Process next paper in queue 5. Repeat until queue empty or hit limit

Progress Reporting

**Report

Read more
Ships withauto-empirical-research-skills

📌 文档结构(2026-07-22 起): 本文件是中文默认入口 —— banner + badges + 信任面 + 9 阶段流水线速览 + 76 行合集总表。 每个合集的完整描述、按用途分组、精确数字、验证方法在 docs/CONTENT_ZH.md(扩展正文,总表行内的 → 直接跳转到对应锚点)。 English version: README-en.md · 中文扩展正文:docs/CONTENT_ZH.md · README-zh-CN.md 已弃用(重定向占位) 🌐 语言: English |

Get the whole plugin