SKILL.md
Citation Chaining Guide
Master forward and backward citation chaining to systematically discover relevant literature by following the threads of scholarly communication.
What Is Citation Chaining?
Citation chaining (also called citation tracking, pearl growing, or snowball searching) exploits the connections between papers through their references and citations. Starting from one or more "seed" papers, you trace connections in two directions:
- Backward chaining: Examine the reference list of a paper to find older, foundational works it builds upon.
- Forward chaining: Find newer papers that have cited the seed paper, discovering subsequent developments.
This approach is especially powerful when keyword searches fail (e.g., when terminology varies across subfields or when concepts predate standardized vocabulary).
Step-by-Step Workflow
Step 1: Identify Seed Papers
Select 3-5 highly relevant papers that are central to your research question. Good seed papers are:
- Frequently cited review articles or seminal original research
- Papers whose methodology or framework aligns closely with your work
- Recent papers in top venues for your field
Step 2: Backward Chaining (Reference Mining)
Examine the reference list of each seed paper and identify which cited works are relevant.
import requests
HEADERS = {"User-Agent": "ResearchPlugins/1.0 (https://wentor.ai)"}
def get_references(work_id):
"""Get all references of a paper via OpenAlex."""
url = f"https://api.openalex.org/works/{work_id}"
response = requests.get(url, headers=HEADERS)
paper = response.json()
ref_ids = paper.get("referenced_works", [])
references = []
for ref_id in ref_ids:
ref = requests.get(f"https://api.openalex.org/works/{ref_id.split('/')[-1]}", headers=HEADERS).json()
if ref.get("title"):
references.append(ref)
return references
# Get references of a seed paper
seed_id = "W2741809807"
references = get_references(seed_id)
# Sort by citation count to find the most influential foundations
references.sort(key=lambda p: p.get("cited_by_count", 0), reverse=True)
for ref in references[:15]:
print(f"[{ref.get('publication_year', '?')}] {ref['title']} ({ref.get('cited_by_count', 0)} citations)")
