Agent skill
Subagent-Driven Literature Review
Use parallel subagents for large-scale paper screening and deep dive analysis
Install this agent skill to your Project
npx add-skill https://github.com/kthorn/research-superpower/tree/main/skills/research/subagent-driven-review
SKILL.md
Subagent-Driven Literature Review
Overview
Core principle: Fresh subagent per batch + consolidation between batches = fast parallel screening with quality control
For large literature reviews (50+ papers), dispatching parallel or sequential subagents dramatically speeds up screening while maintaining quality through consolidation checkpoints.
When to Use
Use subagent-driven approach when:
- Large searches: 50+ papers to screen
- Parallelizable work: Papers are independent, can be screened separately
- Deep dive tasks: Multiple papers need detailed extraction (data tables, methods, datasets)
- Citation exploration: Following citation networks recursively
- Context management: Main context getting full, need fresh context
- Time pressure: Need results faster than sequential screening
Do NOT use when:
- Small searches (<20 papers) - overhead not worth it
- Need real-time user visibility into every paper
- Papers require cross-comparison during screening
- Simple, fast screening tasks
Use Cases
1. Parallel Paper Screening (Most Common)
Scenario: You have 100 papers from PubMed search to screen for relevance
Pattern:
Main agent:
1. Splits 100 papers into 5 batches of 20
2. Dispatches 5 subagents IN PARALLEL (single message, multiple Task calls)
3. Each subagent:
- Fetches abstracts for its batch
- Scores using rubric
- Returns JSON with results
4. Main agent consolidates results into papers-reviewed.json
Time savings: 5x faster than sequential!
Prompt template for subagent:
I need you to screen papers 1-20 from this PMID list for relevance to [QUERY].
PMIDs to screen: [PMID list]
Use the evaluating-paper-relevance skill to:
1. Fetch abstract for each PMID
2. Score 0-10 based on:
- Keywords: [list]
- Data types needed: [measurements, protocols, datasets, etc.]
3. Return JSON:
{
"screened_papers": [
{"pmid": "12345", "score": 8, "status": "relevant", "reason": "..."},
...
],
"stats": {"highly_relevant": 3, "relevant": 5, "not_relevant": 12}
}
Do NOT update papers-reviewed.json - return results only.
**Rate limiting (CRITICAL - PubMed limits are SHARED across all parallel subagents):**
- If you are the ONLY subagent running: Use 500ms delays (2 req/sec, safe)
- If running with OTHER parallel subagents: Use longer delays to share capacity
- You are 1 of 2 parallel: Use 1 second delays
- You are 1 of 3 parallel: Use 1.5 second delays
- You are 1 of 5 parallel: Use 2.5 second delays
- If you get HTTP 429 errors: Wait 5 seconds, then use 5-second delays for remaining requests
2. Deep Dive on Priority Papers
Scenario: Initial screening identified 15 highly relevant papers, need detailed data extraction from each
Pattern:
Main agent:
1. Creates TodoWrite with 15 tasks (one per paper)
2. For each paper, dispatches subagent to:
- Fetch full text (PMC, Unpaywall)
- Extract relevant data (tables, figures, methods)
- Identify key findings
- Return structured findings
3. Main agent consolidates into SUMMARY.md
4. Reviews and adds to papers-reviewed.json
Can dispatch in parallel (5 at a time) or sequentially
Prompt template for subagent:
Deep dive analysis for paper PMID [12345] / DOI [10.xxxx/yyyy]
Use evaluating-paper-relevance skill to:
1. Check for curated data sources (if applicable to domain)
2. Fetch full text (try PMC, then Unpaywall if paywalled)
3. Extract relevant data based on research domain:
- Data tables and measurements
- Methods and protocols
- Key results and findings
- Figures with relevant information
4. Return structured JSON:
{
"pmid": "12345",
"doi": "10.xxxx/yyyy",
"full_text_source": "PMC" or "Unpaywall" or "paywalled",
"data_sources": ["Table 1", "Figure 3", "Supplementary Data"],
"key_measurements": ["specific values or ranges found"],
"methods_summary": "Brief description of methods",
"key_findings": ["Finding 1", "Finding 2", ...],
"data_availability": "GEO: GSE12345" or "Code: github.com/..." or null
}
Do NOT update papers-reviewed.json - return findings only.
3. Citation Network Exploration
Scenario: Found one highly relevant paper, need to explore forward and backward citations
Pattern:
Main agent:
1. Dispatches two subagents IN PARALLEL:
- Subagent A: Fetch and screen forward citations
- Subagent B: Fetch and screen backward citations
2. Each returns list of promising PMIDs with scores
3. Main agent:
- Consolidates results
- Removes duplicates
- Adds to screening queue
- Updates papers-reviewed.json
Prompt template for subagent:
Find and screen forward citations for PMID [12345].
Use traversing-citations skill to:
1. Fetch forward citations from PubMed or OpenCitations
2. Screen abstracts for relevance to [QUERY]
3. Score each citation (0-10)
4. Return JSON with promising papers (score ≥7):
{
"seed_pmid": "12345",
"direction": "forward",
"citations_found": 45,
"relevant_citations": [
{"pmid": "67890", "score": 8, "title": "...", "reason": "..."},
...
]
}
Do NOT update papers-reviewed.json - return results only.
4. Domain-Specific Extraction
Examples by domain:
Genomics:
Subagent extracts:
- GEO/SRA/ENA accessions
- Sample sizes and conditions
- Sequencing methods (RNA-seq, WGS, etc.)
- Analysis pipelines
- Differential expression results
Computational methods:
Subagent extracts:
- Algorithm descriptions
- Code repositories (GitHub, GitLab, etc.)
- Benchmark datasets used
- Performance metrics
- Implementation details
Clinical research:
Subagent extracts:
- Study design (RCT, cohort, etc.)
- Sample size and demographics
- Intervention details
- Primary outcomes
- Statistical methods
Ecology/Environmental:
Subagent extracts:
- Study sites and coordinates
- Sampling methods
- Species/taxa studied
- Environmental measurements
- Data repositories
Workflow: Parallel Screening
Step 1: Plan and Split
Main agent tasks:
- Load PMID list from search results
- Decide on batch size (typically 15-25 papers per subagent)
- Create TodoWrite with batches
- Prepare subagent prompts
Example TodoWrite:
- Screen papers batch 1 (PMIDs 1-20)
- Screen papers batch 2 (PMIDs 21-40)
- Screen papers batch 3 (PMIDs 41-60)
- Screen papers batch 4 (PMIDs 61-80)
- Screen papers batch 5 (PMIDs 81-100)
- Consolidate all subagent results
- Generate SUMMARY.md from consolidated data
Step 2: Dispatch Subagents
CRITICAL: Dispatch all subagents in PARALLEL using single message with multiple Task calls
Example:
I'm dispatching 5 subagents in parallel to screen 100 papers.
[Uses Task tool 5 times in single message]
Why parallel: 5x speed improvement vs sequential!
Step 3: Collect Results
Main agent:
- Wait for all subagents to complete
- Collect JSON results from each
- Validate format and completeness
Check for:
- All PMIDs were screened
- Scoring rubric was applied consistently
- No papers missing
Step 4: Consolidate
Main agent:
- Merge all subagent results
- Remove duplicates (if any overlap between batches)
- Sort by relevance score
- Add ALL papers to papers-reviewed.json:
{
"10.1234/example.2023": {
"pmid": "12345",
"status": "highly_relevant",
"score": 9,
"source": "pubmed_search_batch1",
"screened_by": "subagent",
"timestamp": "2025-10-11T14:30:00Z",
"found_data": ["measurements", "methods", "datasets"]
}
}
Mark source as "subagent" or "pubmed_search_batch1" etc.
Step 5: Review Quality
Main agent checks:
- Scoring appears consistent across batches
- No batch has dramatically different hit rate (could indicate problem)
- Highly relevant papers make sense
- Any papers needing manual re-review?
Red flags:
- One batch found 10 relevant papers, others found 0-1 (inconsistent scoring?)
- Papers marked "highly relevant" don't match keywords
- Missing expected papers
If issues found: Re-screen problematic batch manually or with fresh subagent
Step 6: Generate Summary
Main agent:
- Create SUMMARY.md with all highly relevant and relevant papers
- Sort by score
- Add statistics
- Note which papers need deep dive
Step 7: Optional Deep Dive
For highly relevant papers (score ≥8):
Option A: Dispatch subagents sequentially
For each highly relevant paper:
- Dispatch one subagent per paper
- Subagent does deep dive extraction
- Main agent consolidates findings immediately
- Updates SUMMARY.md progressively
Option B: Dispatch subagents in parallel batches
Batch 1: Papers 1-5 (dispatch 5 subagents in parallel)
Wait for completion, consolidate
Batch 2: Papers 6-10 (dispatch 5 subagents in parallel)
Wait for completion, consolidate
...
Workflow: Citation Exploration
Step 1: Identify Seed Papers
Find 2-3 highly relevant papers from initial screening
Step 2: Dispatch Citation Subagents
For each seed paper, dispatch TWO subagents in parallel:
- Forward citations (who cited this paper?)
- Backward citations (what did this paper cite?)
Prompt each subagent with:
- Seed PMID
- Relevance criteria
- Return only papers scoring ≥7
Step 3: Consolidate Citations
Main agent:
- Collects all citation results
- Removes duplicates
- Removes papers already in papers-reviewed.json
- Creates new screening queue
Step 4: Screen New Papers
Option A: Dispatch new batch screening subagents for citation results Option B: Main agent screens smaller batch manually
Step 5: Iterate
If citation exploration found many new relevant papers:
- Consider exploring citations from those papers too
- Be careful of exponential growth!
- Set stopping criteria (e.g., max 3 levels deep, max 200 total papers)
Integration with Other Skills
Works with:
- evaluating-paper-relevance: Subagents use this for individual paper screening
- traversing-citations: Subagents use this for citation exploration
- finding-open-access-papers: Subagents check Unpaywall for paywalled papers
- checking-chembl: Subagents can check curated databases (when applicable)
Combines with:
- writing-plans: Create screening plan before dispatching subagents
- TodoWrite: Track batches and consolidation progress
Consolidation Patterns
Pattern 1: JSON Aggregation
Subagents return structured JSON, main agent merges:
# Pseudo-code for consolidation
all_results = []
for subagent_output in subagent_results:
results = parse_json(subagent_output)
all_results.extend(results['screened_papers'])
# Sort by score
all_results.sort(key=lambda x: x['score'], reverse=True)
# Update papers-reviewed.json
for paper in all_results:
papers_reviewed[paper['doi']] = {
'pmid': paper['pmid'],
'status': paper['status'],
'score': paper['score'],
'source': f"subagent_batch_{paper['batch_id']}",
'timestamp': now()
}
Pattern 2: Progressive Consolidation
Consolidate after each subagent completes (sequential dispatch):
Dispatch subagent 1 → wait → consolidate → dispatch subagent 2 → wait → consolidate → ...
Advantage: See progress incrementally Disadvantage: Slower than full parallel
Pattern 3: Batch Consolidation
Dispatch N subagents in parallel, consolidate batch, repeat:
Dispatch 5 subagents → wait for all 5 → consolidate → dispatch next 5 → ...
Advantage: Balance between speed and manageable consolidation Disadvantage: More complex than full parallel or sequential
Common Mistakes
Not dispatching in parallel: Sending Task calls sequentially wastes time → Use single message with multiple Task calls Subagents updating tracking files: Causes conflicts → Subagents return JSON only, main agent updates files Inconsistent scoring: Different subagents use different rubrics → Provide clear rubric in prompt No quality review: Blindly trusting subagent results → Always review consolidated results Too many parallel subagents: Dispatching 20+ at once → Keep to 5-10 parallel max Forgetting rate limits: Subagents hit API limits → Include rate limiting in prompts (500ms for single agent, 2.5 seconds for 5 parallel agents) No source tracking: Can't tell which batch found which papers → Add batch_id or source field Duplicate work: Multiple subagents screen same papers → Carefully split PMID lists with no overlap
Cost Considerations
Subagent usage has cost implications:
Token usage per subagent:
- Screening 20 papers: ~10-15K tokens per subagent
- Deep dive 1 paper: ~5-10K tokens per subagent
- Citation exploration: ~8-12K tokens per subagent
Trade-off:
- Parallel screening: Higher cost, much faster (5x speed)
- Sequential screening: Lower cost, slower
- Consider for time-sensitive research
Cost-saving strategies:
- Use subagents for large batches only (50+ papers)
- Screen manually for small searches (<20 papers)
- Parallel dispatch for initial screening (speed matters)
- Sequential dispatch for deep dive (can review progressively)
Examples
Example 1: Screen 80 Papers in Parallel
Initial state: Have 80 PMIDs from PubMed search
Main agent:
I'll dispatch 4 subagents in parallel to screen these 80 papers.
Batch 1: PMIDs 1-20 [dispatches subagent with prompt]
Batch 2: PMIDs 21-40 [dispatches subagent with prompt]
Batch 3: PMIDs 41-60 [dispatches subagent with prompt]
Batch 4: PMIDs 61-80 [dispatches subagent with prompt]
[Uses Task tool 4 times in single message]
Now waiting for all subagents to complete...
After subagents complete:
All 4 subagents have completed. Consolidating results:
Batch 1: 3 highly relevant, 5 relevant, 12 not relevant
Batch 2: 2 highly relevant, 7 relevant, 11 not relevant
Batch 3: 4 highly relevant, 6 relevant, 10 not relevant
Batch 4: 1 highly relevant, 4 relevant, 15 not relevant
Total: 10 highly relevant, 22 relevant, 48 not relevant
Updating papers-reviewed.json with all 80 papers...
Generating SUMMARY.md with 32 relevant papers...
Next: Deep dive on 10 highly relevant papers?
Example 2: Deep Dive on 12 Papers
Initial state: Have 12 highly relevant papers needing data extraction
Main agent:
I'll dispatch 12 subagents (in 3 batches of 4) to do deep dive analysis.
Batch 1 papers: PMID 12345, 23456, 34567, 45678
[Dispatches 4 subagents in parallel with deep dive prompts]
Waiting for batch 1 to complete...
[Consolidates batch 1 results into SUMMARY.md]
Batch 2 papers: PMID 56789, 67890, 78901, 89012
[Dispatches 4 subagents in parallel]
...
Result: All 12 papers analyzed with structured data in ~10-15 minutes vs 1-2 hours sequential
Example 3: Citation Exploration
Initial state: Found key paper PMID 12345
Main agent:
I'll explore citations from this key paper.
Dispatching 2 subagents in parallel:
1. Forward citations (who cited PMID 12345?)
2. Backward citations (what did PMID 12345 cite?)
[Uses Task tool twice in single message]
Waiting for citation exploration...
Forward citations: Found 34 citations, 8 appear relevant
Backward citations: Found 42 references, 6 appear relevant
New papers to screen: 14 (after removing duplicates)
Now dispatching screening subagent for these 14 papers...
Quick Reference
| Task | Subagent Pattern | Parallel? | Consolidation |
|---|---|---|---|
| Screen 100 papers | 5 batches of 20 | Yes (5 parallel) | Merge JSON, update papers-reviewed.json |
| Deep dive on 15 papers | 15 individual tasks | Yes (batches of 5) | Add findings to SUMMARY.md progressively |
| Citation exploration | 2-3 citation tasks | Yes | Merge, dedupe, add to screening queue |
| Data extraction | 1 per paper | Sequential or batched | Update papers-reviewed.json with findings |
Decision Tree
Have literature review task?
├─ <20 papers?
│ └─ Screen manually (no subagents)
├─ 20-50 papers?
│ ├─ Time-sensitive? → Use subagents (2-3 batches)
│ └─ Not urgent? → Screen manually
└─ 50+ papers?
├─ Initial screening → Use parallel subagents (5-10 batches)
├─ Deep dive needed? → Use sequential or batched subagents
└─ Citation exploration? → Use parallel subagents per seed paper
Advanced: Recursive Citation Exploration
For exhaustive citation network analysis:
Level 0: Seed paper (PMID 12345)
├─ Level 1: Forward + backward citations (dispatch 2 subagents)
│ ├─ Find 12 relevant papers
│ └─ Add to papers-reviewed.json
├─ Level 2: For each of 12 papers, explore citations (dispatch 24 subagents)
│ ├─ Find 43 new relevant papers
│ └─ Add to papers-reviewed.json
└─ Level 3: For top 10 papers from Level 2, explore citations
├─ Find 28 new relevant papers
└─ STOP (reaching diminishing returns)
Total: 83 papers discovered through citation network
Stopping criteria:
- Max depth (e.g., 3 levels)
- Max total papers (e.g., 200)
- Diminishing returns (fewer relevant papers per level)
- Time/cost budget
Next Steps After Subagent Review
- Review consolidated results for quality and consistency
- Identify gaps - any expected papers missing?
- Deep dive on highly relevant papers (if not already done)
- Generate final summary with statistics and key findings
- Plan next actions - citation exploration? Specific data extraction?
See Also
- evaluating-paper-relevance: Core screening methodology
- traversing-citations: Citation exploration techniques
- finding-open-access-papers: Unpaywall integration for paywalled papers
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
Getting Started with Research Superpowers
Introduction to literature search & review skills - systematic paper finding, screening, extraction, and citation traversal
Cleaning Up Research Sessions
Safely remove intermediate files from completed research sessions while preserving important data
Building Paper Screening Rubrics
Collaboratively build and refine paper screening rubrics through brainstorming, test-driven development, and iterative feedback
Searching Scientific Literature
PubMed search with keyword optimization, result parsing, and metadata extraction
Checking ChEMBL for Structured SAR Data
Check if medicinal chemistry papers are in ChEMBL database to access curated bioactivity data
Answering Research Questions
Main orchestration workflow for systematic literature research - search, evaluate, traverse, synthesize
Didn't find tool you were looking for?