kthorn/research-superpower/traversing-citations
Claude Code and agent skill by kthorn/research-superpower
- community
Checking that the SKILL.md file is still in the repository.
Smart backward and forward citation following via Semantic Scholar, with relevance filtering and deduplication
Install
npx vskill@latest install kthorn/research-superpower/traversing-citationsSKILL.md
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:
Response:
Save paperId - needed for citations/references queries
2. Backward Traversal (References)
Get references from paper:
Response format:
Filter for relevance:
For each reference, check:
- Context keywords: Do citation contexts mention user's query terms?
- Example: If user asks about "IC50 values", look for contexts mentioning "IC50", "activity", "potency"
- Title match: Does title contain relevant keywords?
- 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:
Response format:
Filter for relevance:
For each citing paper:
- Title match: Keywords present in title?
- Abstract match: User's query terms in abstract?
- Recency: Newer papers often build on findings (prioritize < 2 years)
- 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:
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:
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:
Then:
- Evaluate using
evaluating-paper-relevanceskill - 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:
- Get all references + citations for current paper
- Filter and score them
- Add high-scoring ones to queue
- Process next paper in queue
- Repeat until queue empty or hit limit
Progress Reporting
Report as you traverse:
API Rate Limiting
Semantic Scholar limits:
- Free tier: 100 requests per 5 minutes
- With API key: 1000 requests per 5 minutes
Be efficient:
- Request multiple fields in one call (
?fields=title,abstract,externalIds,year) - Use
limit=100to get more results per request - Cache responses - don't re-fetch same paper
If rate limited:
- Wait 5 minutes
- Report to user: "⏸️ Rate limited by Semantic Scholar API. Waiting 5 minutes..."
- Consider getting API key for higher limits
Integration with Other Skills
After traversing citations:
- Queue now has N new papers to evaluate
- For each, use
evaluating-paper-relevanceskill - If relevant, extract to SUMMARY.md
- If highly relevant (≥9), traverse its citations too
- Update citation-graph.json to track relationships
Quick Reference
| Task | API Endpoint | |
|---|---|---|
| Get paper by DOI | GET /graph/v1/paper/DOI:{doi}?fields=paperId,title | |
| Get references | GET /graph/v1/paper/{paperId}/references?fields=contexts,title,abstract,externalIds | |
| Get citations | GET /graph/v1/paper/{paperId}/citations?fields=title,abstract,externalIds | |
| Check if processed | Look up DOI in papers-reviewed.json | |
| Filter relevance | Score based on context/title/intent/recency |
Relevance Filtering Checklist
Before adding citation to queue:
- [ ] Check if already in papers-reviewed.json (skip if yes)
- [ ] Score based on context/title keywords (need ≥ 5)
- [ ] Verify external ID (DOI or PMID) exists
- [ ] Add source tracking ("backward_from:DOI" or "forward_from:DOI")
- [ ] Add to queue with metadata
Common Mistakes
Not tracking all evaluated papers: Only adding relevant papers to papers-reviewed.json → Add EVERY paper after evaluation to prevent re-review Creating custom analysis files: Making forward_citation_pmids.txt, CITATION_ANALYSIS.md, etc. → Use ONLY citation-graph.json and SUMMARY.md Following all citations: Exponential explosion → Filter before adding to queue Ignoring context: Citation might be tangential → Read context strings Not deduplicating: Re-process same papers → Always check papers-reviewed.json before and after evaluation Too deep: Following 5+ levels → Limit to 2 levels, check with user Missing forward citations: Only checking references → Use both backward and forward No rate limiting awareness: API blocks you → Add delays, handle 429 errors
Example Workflow
Next Steps
After traversing citations:
- Process queued papers with
evaluating-paper-relevance - Update SUMMARY.md with new findings
- Check if reached checkpoint (50 papers or 5 minutes)
- If checkpoint: ask user to continue or stop
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/research/traversing-citations/SKILL.md
Popularity
- 7-day trend score
- 0
Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/kthorn/research-superpower/traversing-citations)