aperivue/ma-scout
Meta-analysis topic discovery and feasibility assessment. Professor-first (profile → gap) or Topic-first (question → gap → co-author). Pre-protocol phase from idea to ranked topic list.
npx skills add https://github.com/Aperivue/medsci-skills --skill ma-scout
You are helping a medical researcher discover meta-analysis topics.
Two modes are available depending on the starting point.
This skill handles the pre-protocol phase — from idea to ranked topic list.
For actual MA execution (PROSPERO, screening, analysis), hand off to /meta-analysis.
Determine the mode from user input:
| Signal | Mode |
|--------|------|
| Professor name or profile URL provided | A: Professor-first |
| Clinical question, keyword, trend, or "find me a topic" | B: Topic-first |
| Both supplied (e.g., "this topic with this professor") | A (topic as filter) |
If ambiguous, ask the user whether to search by professor (supervisor-first) or by
topic (question-first).
> Mode A (Professor-first): Phase 0 → 1 → 2 → 3 → 4 → 5
> Mode B (Topic-first): T-Phase 0 → T-1 → T-2 → T-3 → T-4 → T-5
> Phase 2 (MA Gap Analysis) and Phase 4 (README template) are shared between both modes.
Goal: Resolve author identity before any search, and confirm user's relationship context.
CRITICAL — Do this BEFORE any PubMed search:
"[Full Name]"[Author] (e.g., "Ha Hyun Kwon"[Author]){detected affiliation} matches the professor's history,and request the user's relationship to the professor so topic proposals can be
tuned accordingly.
"[Full Name]" radiology scholar)"[Full Name]" researchgate radiology)Goal: Identify the professor's 5-6 distinct research pillars using PubMed E-utilities API.
CRITICAL — Use E-utilities API, NOT WebFetch for PubMed:
~/.claude/skills/search-lit/references/pubmed_eutils.sh + parse_pubmed.pyStep 1 — Total publication count + PMID list:
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'"[Full Name]"[Author]' 200 \
| python3 ~/.claude/skills/search-lit/references/parse_pubmed.py esearch
Step 2 — Fetch metadata for MeSH-based clustering (parallel):
# Get PMIDs from Step 1, then fetch summaries
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh fetch_json \
"PMID1,PMID2,..." \
| python3 ~/.claude/skills/search-lit/references/parse_pubmed.py esummary
Step 3 — Topic-specific counts (launch 4-5 searches in parallel via Bash):
# Run these in parallel Bash calls
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'"[Full Name]"[Author] AND "keyword1"' 5
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'"[Full Name]"[Author] AND "keyword2"' 5
# ... repeat for each suspected pillar keyword
Step 4 — MeSH term extraction for automatic pillar clustering:
# Fetch full XML for top-cited papers to extract MeSH headings
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh fetch \
"PMID1,PMID2,...,PMID20" \
| python3 -c "
import sys, xml.etree.ElementTree as ET
from collections import Counter
root = ET.fromstring(sys.stdin.read())
mesh_counts = Counter()
for article in root.findall('.//PubmedArticle'):
for mh in article.findall('.//MeshHeading/DescriptorName'):
mesh_counts[mh.text] += 1
for term, count in mesh_counts.most_common(30):
print(f'{count:3d} {term}')
"
→ Top MeSH terms reveal natural research pillars (e.g., "Colonography, Computed Tomographic" = CTC pillar).
Step 5 — Google Scholar profile (parallel with PubMed calls):
"[Full Name]" radiology scholar google for h-index, citation dataOutput: Pillar Summary Table
| Pillar | Domain | Representative keywords | MeSH terms | Est. # papers |
|--------|--------|-------------------------|-----------|---------------|
| 1 | ... | ... | ... | ~N+ |
Goal: For each pillar, determine if a viable MA topic exists using PubMed + Consensus + Scholar Gateway + bioRxiv.
For each pillar (run in parallel using meta-analyst agents):
# Existing MAs (structured count)
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'[pillar keywords] AND ("meta-analysis"[pt] OR "systematic review"[pt])' 50
# Primary studies with extractable outcomes
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'[pillar keywords] AND ("sensitivity" OR "specificity" OR "accuracy" OR "prognosis" OR "outcome")' 50
Use mcp__claude_ai_Consensus__search to find existing SRs/MAs that PubMed keyword search might miss:
query: "systematic review OR meta-analysis [pillar topic] [imaging modality]"
Consensus returns citation-ranked results — check if any highly-cited MA already covers the proposed scope.
Limit: max 3 Consensus calls per Phase 2 batch (rate limit).
Use mcp__claude_ai_Scholar_Gateway__semanticSearch for:
Use mcp__claude_ai_bioRxiv__search_preprints to catch:
query: "[pillar keywords] meta-analysis OR systematic review"
server: "medrxiv" (for clinical topics)
| Factor | Criteria |
|--------|----------|
| MA gap | 0 existing = best, 1-3 = check scope overlap, >5 = saturated |
| Primary k | ≥8 for DTA, ≥6 for prognostic (minimum), ≥15 ideal |
| Recency | Last MA >5 years old = update opportunity |
| Competition | Check 2024-2026 for very recent MAs that block entry |
site:crd.york.ac.uk/prospero [topic keywords]https://www.crd.york.ac.uk/prospero/#searchadvancedestimated k: ~130 (raw) → ~20–40 (extractable DTA data)Goal: Rank all viable topics by composite score.
Score each candidate on 5 criteria (★1-5):
| Criteria | Weight | Description |
|----------|--------|-------------|
| Professor fit | Highest | Core area of the professor's career, publication count, distinctive contribution |
| MA gap | High | No prior MA > ≥5 yr since last MA > recent MA exists |
| Feasibility (k) | High | Number of includable studies and extractability of 2×2 or HR data |
| Clinical impact | Medium | Whether the topic directly informs clinical decision-making |
| Execution ease | Medium | Completable from literature alone; difficulty of managing heterogeneity |
Output: Ranked Topic Table
| Rank | Topic | Professor's Pillar | Prior MA | Estimated k (raw→realistic) | PROSPERO competition | Verdict |
|------|-------|--------------------|----------|-----------------------------|----------------------|---------|
| 1 | ... | ... | 0 | ~98 → 15–30 | None | ✅ Best fit |
Goal: Create project folders and README for each viable topic.
{working_dir}/ma-scout/{initials}_{professor_name}/{NN}_{topic_slug}/ (within professor folder){initials}_{name} (e.g., KDK_Kim, LKS_Lee)ls before creatingLoad the bilingual template block from
${CLAUDE_SKILL_DIR}/references/project_readme_template.md and copy it into
{topic_folder}/README.md. The reference covers both supervised (Mode A) and
solo-mode (Mode B, no supervisor) variants and contains the PICO/PIRD frame,
preliminary search, target journal table, and backward-planned timeline.
Goal: Persist findings for the user.
/manage-project).When all major pillars are saturated (>5 prior MAs), try these angles:
Before finalizing a topic as viable:
After MA Scout completes:
/meta-analysis: When a topic is approved and ready for PROSPERO protocol (README has PICO + search strategy ready)manage-project: When project folder needs full scaffoldingsearch-lit: When deeper preliminary search is needed before committing/analyze-stats: When feasibility requires power/sample-size calculation for the estimated kFor efficiency, launch multiple agents and API calls in parallel:
Phase 0 (Identity):
"[Full Name]"[Author] → total count + PMIDs (FIRST)Phase 1 (Profile — all parallel):
Phase 2 (MA Gap — multi-source parallel):
Phase 3 (Ranking): Sequential, uses Phase 2 outputs.
Phase 4 (Scaffolding): Sequential, creates folders + PROSPERO-ready READMEs.
Total (Mode A): 5-8 parallel agents per professor, ~8-12 minutes per professor.
T-Phase 0: Sequential (user interaction for scope clarification).
T-Phase 1 (Landscape — all angles in parallel):
T-Phase 2 (Deep-dive): Same as Mode A Phase 2, only for viable angles (typically 1-2).
T-Phase 4 (Co-author — if needed):
Total (Mode B): ~5-8 minutes per topic scan (faster than Mode A — no profile exploration).
server: "medrxiv" for clinical topics, server: "biorxiv" for preclinical.Goal: Refine the user's clinical question into a searchable, PROSPERO-registrable scope.
user input: "AI for lung nodule malignancy prediction"
→ variant 1: AI vs radiologist for lung nodule malignancy prediction (DTA)
→ variant 2: Radiomics for lung nodule malignancy (DTA)
→ variant 3: Deep learning for incidental pulmonary nodule management (prognostic)
→ variant 4: AI-assisted Lung-RADS upgrade accuracy (DTA)
→ variant 5: Low-dose CT AI for lung cancer screening (DTA)
Goal: For each selected angle, rapidly assess the MA landscape.
Run all angles in parallel. For each angle:
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'[topic keywords] AND ("meta-analysis"[pt] OR "systematic review"[pt])' 50
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'[topic keywords] AND ("sensitivity" OR "specificity" OR "hazard" OR "outcome")' 100
query: "systematic review [topic] [modality]"
Check for MAs using different terminology.
query: "[topic] meta-analysis"
server: "medrxiv"
WebSearch: site:crd.york.ac.uk/prospero [topic keywords]
Output: Landscape Summary Table
| Variant | Existing MAs | Primary k (raw) | k (realistic) | PROSPERO | Preprint MA | Verdict |
|---------|--------------|-----------------|---------------|----------|-------------|---------|
| 1 | 3 | 120 | 18-36 | 1 | 0 | ⚠️ Competitive |
| 2 | 0 | 85 | 13-25 | 0 | 0 | ✅ Optimal |
Goal: For viable angles (MA ≤ 2, no PROSPERO conflict), run full gap analysis.
This phase uses the same Phase 2 (MA Gap Analysis) as Mode A — steps 2a through 2h.
The only difference: no "Professor fit" to evaluate, so focus on:
Goal: Rank viable topics with weights adjusted for topic-first approach.
| Criteria | Weight | Description |
|----------|--------|-------------|
| MA gap | Highest | No existing MA > update opportunity > saturated |
| Feasibility (k) | Highest | k_realistic ≥ 8 (DTA) or ≥ 6 (prognostic) |
| User domain fit | High | Does it match the user's area of expertise? |
| Clinical impact | Medium | Potential to change guidelines; directly tied to clinical decisions |
| Co-author availability | Medium | Access to a domain expert (existing relationship or easy to reach) |
| Execution ease | Medium | Can be done solo vs requires expert interpretation |
Output: Ranked Topic Table
| Rank | Topic | Existing MAs | Est. k | PROSPERO | Co-author needed | Overall |
|------|-------|--------------|--------|----------|------------------|---------|
| 1 | ... | 0 | 25 | None | Optional | ✅ Optimal |
Goal: If the user wants a senior co-author, find candidates.
Strategy 1 — Existing network (memory-based):
Strategy 2 — PubMed reverse search:
# Find prolific authors in this specific topic
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'[topic keywords] AND ("{user_country}"[Affiliation])' 100
Then:
Strategy 3 — Self-led (no senior co-author):
Output: Co-author recommendation table or a "solo-viable" judgment.
Goal: Create project folder and PROSPERO-ready README.
{working_dir}/ma-scout/TOPIC/TOPIC/ prefix (not professor initials){NN}_{Topic_Abbreviation}/ (e.g., 01_AI_Lung_Nodule_DTA/)references/project_readme_template.md), with these changes:
Supervisor: → Lead: {user_name} or Lead: {user_name} + {co-author}Domain: {subspecialty} instead.Professor's Authority → Team Expertise (user's credentials + co-author if any)Timeline template (self-led):
| Step | Expected timing | Precondition |
|------|-----------------|--------------|
| PROSPERO registration | {YYYY-MM} | topic confirmed |
| Search complete | +1 week | PROSPERO registration |
| Screening complete | +2 weeks | 2nd reviewer secured |
| Data extraction | +3 weeks | screening consensus |
| Analysis + draft | +5 weeks | data lock |
| Co-author review | +7 weeks | draft complete |
| Submission | +8 weeks | final approval |
When the user asks for topic suggestions without a specific idea:
bash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \
'"no meta-analysis" AND "radiology"[Journal] AND 2024:2026[dp]' 30
"practice guideline" AND "insufficient evidence" AND [radiology subspecialty]Before finalizing a topic-first MA as viable:
After MA Scout identifies viable topics, run the pre-proposal pipeline to prepare
a "ready-to-propose" package before contacting the professor.
[topic] AND [outcome keywords][topic] AND ("meta-analysis"[pt] OR "systematic review"[pt])fetch_json → esummary (batch 40-50 PMIDs)candidates.md — full triage table + PRISMA flow + gap findingREADME.md — updated Preliminary Search section with actual numbersThe pre-proposal gives the professor:
Take aperivue/ma-scout from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.