Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/aperivue-ma-scout/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 320% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 278% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 307% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 459% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 352% | 0% |
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:
bashbash ~/.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):
bash# 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):
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:
bash# 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):
bash# 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:
bashbash ~/.claude/skills/search-lit/references/pubmed_eutils.sh search \ '[topic keywords] AND ("meta-analysis"[pt] OR "systematic review"[pt])' 50
bashbash ~/.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:
bash# 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 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:
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 29,842 | 8,815 | -70% | 1 | 1 | 0% | 5,399 | 7,906 | +46% | 0 | 0 | — |
case-08 | pass→pass | 15,870 | 8,245 | -48% | 1 | 1 | 0% | 2,587 | 8,704 | +236% | 0 | 0 | — |
case-19 | pass→pass | 11,360 | 11,865 | +4% | 1 | 1 | 0% | 1,802 | 9,252 | +413% | 0 | 0 | — |
case-07 | fail→pass | 13,982 | 11,791 | -16% | 1 | 1 | 0% | 2,195 | 9,209 | +320% | 0 | 0 | — |
case-02 | fail→fail | 26,490 | 35,827 | +35% | 1 | 1 | 0% | 4,404 | 8,165 | +85% | 0 | 0 | — |
case-03 | fail→fail | 33,101 | 11,319 | -66% | 1 | 1 | 0% | 6,209 | 8,225 | +32% | 0 | 0 | — |
case-04 | pass→pass | 10,210 | 7,669 | -25% | 1 | 1 | 0% | 1,650 | 8,771 | +432% | 0 | 0 | — |
case-05 | pass→pass | 16,855 | 5,526 | -67% | 1 | 1 | 0% | 2,461 | 8,221 | +234% | 0 | 0 | — |
case-06 | fail→pass | 14,472 | 7,759 | -46% | 1 | 1 | 0% | 2,282 | 8,633 | +278% | 0 | 0 | — |
case-09 | pass→pass | 10,956 | 10,400 | -5% | 1 | 1 | 0% | 1,744 | 9,001 | +416% | 0 | 0 | — |
case-10 | fail→fail | 17,340 | 6,179 | -64% | 1 | 1 | 0% | 2,623 | 8,479 | +223% | 0 | 0 | — |
case-11 | fail→pass | 16,342 | 17,664 | +8% | 1 | 1 | 0% | 2,487 | 10,118 | +307% | 0 | 0 | — |
case-12 | pass→fail | 14,386 | 9,779 | -32% | 1 | 1 | 0% | 2,311 | 9,204 | +298% | 0 | 0 | — |
case-13 | fail→pass | 8,914 | 6,467 | -27% | 1 | 1 | 0% | 1,534 | 8,580 | +459% | 0 | 0 | — |
case-14 | pass→pass | 5,442 | 4,858 | -11% | 1 | 1 | 0% | 867 | 8,177 | +843% | 0 | 0 | — |
case-15 | pass→pass | 3,765 | 2,379 | -37% | 1 | 1 | 0% | 530 | 7,750 | +1362% | 0 | 0 | — |
case-16 | pass→pass | 12,103 | 8,459 | -30% | 1 | 1 | 0% | 2,019 | 8,707 | +331% | 0 | 0 | — |
case-17 | fail→fail | 16,071 | 11,566 | -28% | 1 | 1 | 0% | 2,494 | 9,234 | +270% | 0 | 0 | — |
case-18 | fail→pass | 12,929 | 10,754 | -17% | 1 | 1 | 0% | 2,030 | 9,176 | +352% | 0 | 0 | — |
case-20 | pass→fail | 3,497 | 9,742 | +179% | 1 | 1 | 0% | 551 | 8,986 | +1531% | 0 | 0 | — |
case-21 | fail→pass | 16,074 | 8,395 | -48% | 1 | 1 | 0% | 2,966 | 8,834 | +198% | 0 | 0 | — |
case-22 | pass→pass | 7,986 | 9,995 | +25% | 1 | 1 | 0% | 1,301 | 9,004 | +592% | 0 | 0 | — |
case-23 | fail→pass | 10,441 | 10,859 | +4% | 1 | 1 | 0% | 1,733 | 9,087 | +424% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +22 percentage points is the difference between those two pass rates over the 20 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.