skills/clinical-guidelines/SKILL.md
ToolUniverse workflow — Clinical Guidelines
npx skillsauth add lamm-mit/scienceclaw clinical-guidelinesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Search and retrieve evidence-based clinical practice guidelines from 12+ authoritative sources spanning 41 tools. Covers disease management guidelines, society recommendations, pharmacogenomics guidance, and patient resources.
KEY PRINCIPLES:
Apply when user asks:
Before searching, verify tools load:
from tooluniverse import ToolUniverse
tu = ToolUniverse()
tu.load_tools()
assert hasattr(tu.tools, 'NICE_Clinical_Guidelines_Search')
Correct call pattern (use either approach):
# Option A: direct attribute access
result = tu.tools.NICE_Clinical_Guidelines_Search(query='diabetes', limit=5)
# Option B: run_one_function
result = tu.run_one_function({'name': 'NICE_Clinical_Guidelines_Search', 'arguments': {'query': 'diabetes', 'limit': 5}})
Determine which tools to use based on the user's question:
| Query type | Primary tools | Secondary tools | |-----------|---------------|-----------------| | General disease guideline | NICE, TRIP, GIN | PubMed, EuropePMC, CMA | | Cardiology | AHA_ACC_search_guidelines, AHA_list_guidelines | NICE, TRIP | | Oncology | NCCN_search_guidelines, NCCN_list_patient_guidelines | NICE, GIN | | Diabetes / endocrinology | ADA_search_standards, ADA_list_standards_sections | NICE, SIGN | | Pharmacogenomics | CPIC_get_gene_drug_pairs, CPIC_list_guidelines | CPIC_get_gene_info | | Canadian guidelines | CMA_Guidelines_Search, CTFPHC_search_guidelines | — | | Scottish/UK guidelines | SIGN_search_guidelines, NICE | CMA | | International guidelines | GIN_Guidelines_Search | OpenAlex, EuropePMC | | Living guidelines | MAGICapp_list_guidelines | GIN | | Full-text retrieval | NICE_Guideline_Full_Text, WHO_Guideline_Full_Text, AHA_ACC_get_guideline | — |
NICE_Clinical_Guidelines_Search ⭐ (Best general source)
query (string, required), limit (integer, required)[{title, url, summary, content, date}, ...]result = tu.tools.NICE_Clinical_Guidelines_Search(...); isinstance(result, list)NICE_Clinical_Guidelines_Search(query='type 2 diabetes management', limit=5)GIN_Guidelines_Search ⭐ (Best multi-society aggregator)
query (string, required), limit (integer, required)[{title, url, description, source, organization}, ...]GIN_Guidelines_Search(query='colorectal cancer screening', limit=5)TRIP_Database_Guidelines_Search
query (string, required), limit (integer, required), search_type (string, required — must be 'guidelines')[{title, url, description, content, publication}, ...]TRIP_Database_Guidelines_Search(query='diabetes', limit=5, search_type='guidelines')WHO_Guidelines_Search ⚠️ (Limited relevance)
query (string, required), limit (integer, required)[{title, url, description, content, source}, ...]WHO_Guidelines_Search(query='diabetes', limit=5)CMA_Guidelines_Search (Canadian)
query (string, required), limit (integer, required)[{title, url, description, content, date}, ...]CMA_Guidelines_Search(query='diabetes', limit=5)SIGN_search_guidelines (Scottish/UK)
query (string, required — NOT q), limit (integer, optional)[{number, title, topic, published, url}, ...]SIGN_search_guidelines(query='diabetes', limit=5)CTFPHC_search_guidelines (Canadian prevention)
query (string, required — NOT q), limit (integer, optional)[{title, url, year}, ...]CTFPHC_search_guidelines(query='colorectal cancer', limit=5)OpenAlex_Guidelines_Search
query (string, required), limit (integer, required), year_from (integer, optional), year_to (integer, optional)[{title, authors, institutions, year, doi}, ...]OpenAlex_Guidelines_Search(query='diabetes management', limit=5) (year params optional)OpenAlex_Guidelines_Search(query='diabetes management', limit=5, year_from=2020, year_to=2024)EuropePMC_Guidelines_Search
query (string, required), limit (integer, required)[{title, pmid, pmcid, doi, authors}, ...]EuropePMC_Guidelines_Search(query='diabetes guideline', limit=5)PubMed_Guidelines_Search
query (string, required), limit (integer, required), api_key (string, optional — use '' for anonymous)[{title, pmid, pmcid, doi}, ...]PubMed_Guidelines_Search(query='diabetes guideline', limit=5) (api_key optional)ADA Standards of Care (Diabetes)
ADA_list_standards_sections() — No parameters. Lists all 19 sections of ADA Standards of Care (2026).
ADA_search_standards(query, limit) — Search within ADA Standards.
[{title, ...}]'glycemic targets', 'pharmacologic approaches', 'cardiovascular risk''first-line medication metformin'ADA_get_standards_section(section_number) — Get metadata for a specific section.
AHA/ACC Cardiology
AHA_ACC_search_guidelines(query, limit) — Search AHA/ACC guidelines.
[{title, ...}]AHA_ACC_search_guidelines(query='heart failure management', limit=5)AHA_list_guidelines(limit) / ACC_list_guidelines(limit) — List recent guidelines.
AHA_ACC_get_guideline(pmid) — Get full text of AHA/ACC guideline by PMID (via PMC).
AHA_ACC_get_guideline(pmid='37952199')NCCN Oncology
NCCN_list_patient_guidelines(limit) — List all NCCN patient guideline resources (up to 74).
[{cancer_type, url, category}, ...]cancer_type, NOT titler[i]['cancer_type'] to get the cancer name, r[i]['url'] for URLNCCN_search_guidelines(query, limit) — Search NCCN publications.
[{title, ...}]NCCN_get_patient_guideline(url) — Get full text of a patient guideline.
url (string) — the full URL from NCCN_list_patient_guidelinesNCCN_get_patient_guideline(url='https://www.nccn.org/patientresources/patient-resources/guidelines-for-patients/guidelines-for-patients-details?patientGuidelineId=61')MAGICapp Living Guidelines
MAGICapp_list_guidelines(limit) — List living guidelines.
r.get('data', []) gives the listname, NOT title; use item['name'] for guideline titleitem['guidelineId'] for follow-up callsMAGICapp_get_guideline(guideline_id) — Get full guideline details.
MAGICapp_get_recommendations(guideline_id) — Get recommendations for a guideline.
MAGICapp_get_sections(guideline_id) — Get sections.
NCI Resources ⚠️ (Research tools catalog, NOT clinical guidelines)
NCI_search_cancer_resources(q, size) — Search NCI Research Resources for Researchers (R4R).
q (NOT query), size (NOT limit — use size for result count)r.get('data', {}).get('results', []) gives the listNCI_search_cancer_resources(q='colorectal cancer screening', size=5)Recommended workflow for gene-drug queries:
Step 1: CPIC_get_gene_info(genesymbol='GENE') → gene overview
Step 2: CPIC_get_gene_drug_pairs(genesymbol='GENE') → all drug pairs + CPIC levels
Step 3: CPIC_list_guidelines(limit=50) → find guideline_id for gene+drug
Step 4: CPIC_get_recommendations(guideline_id=N) → specific dosing recommendations
Step 5: CPIC_get_alleles(genesymbol='GENE') → allele definitions
All CPIC tools return dict-wrapped: use r.get('data', []) to access results.
CPIC_get_gene_info(genesymbol) — Gene overview.
CPIC_get_gene_info(genesymbol='CYP2D6')CPIC_get_gene_drug_pairs(genesymbol, limit) — All gene-drug interactions with CPIC levels.
data = list of {genesymbol, drugid, cpiclevel, pgkbcalevel, usedforrecommendation, ...}cpiclevel A/B/C/D: A = strongest evidenceCPIC_list_guidelines(limit) — All CPIC guidelines.
data = list of {name: 'GENE and Drug', guidelineId, url, ...}guidelineId for a specific gene+drug pairCPIC_get_recommendations(guideline_id, limit) — Get dosing recommendations.
guideline_id (integer), NOT genesymbolCPIC_list_guidelines, then call thisCPIC_get_recommendations(guideline_id=100416, limit=20)CPIC_get_alleles(genesymbol, limit) — Allele definitions.
clinicalfunctionalstatus field (NOT functionalstatus which is always null)CPIC_get_alleles(genesymbol='CYP2D6', limit=10)CPIC_get_drug_info(drugname) — Drug details.
CPIC_get_drug_info(drugname='codeine')CPIC_search_gene_drug_pairs(genesymbol, limit) — Search gene-drug pairs.
genesymbol='eq.CYP2D6' (not just 'CYP2D6')CPIC_search_gene_drug_pairs(genesymbol='eq.CYP2D6', limit=5)NICE_Guideline_Full_Text(url) — Get NICE guideline text.
.../chapter/Recommendations)WHO_Guideline_Full_Text(url) — Get WHO guideline text.
AHA_ACC_get_guideline(pmid) — Get AHA/ACC guideline text via PMC.
# Clinical Guidelines: [Topic]
## Summary
[2-3 sentence overview of what guidelines say]
## Key Recommendations
### [Source 1: NICE/ADA/NCCN/etc.]
[Key recommendations with evidence grade, URL]
### [Source 2]
[Key recommendations]
## Pharmacogenomics (if applicable)
[CPIC phenotype-to-recommendation table]
## References
[All URLs cited]
CPIC returns multiple records for the same phenotype (one per allele combination). Before presenting:
seen_phenotypes = set()
unique_recs = []
for rec in recs:
phenotype = rec.get('phenotype') or rec.get('lookupkey', '')
if phenotype not in seen_phenotypes:
seen_phenotypes.add(phenotype)
unique_recs.append(rec)
query, limit) — UK, high qualityquery, limit) — multi-society aggregator ⭐ best for breadthquery, limit, search_type='guidelines')CPIC_get_gene_info(genesymbol) → overviewCPIC_get_gene_drug_pairs(genesymbol) → all drugs with CPIC levelsCPIC_list_guidelines(limit=50) → find guideline_id for target gene+drugCPIC_get_recommendations(guideline_id=N) → specific recs (deduplicate by phenotype)'pharmacologic approaches' instead of 'metformin first-line')| Tool | CORRECT | WRONG |
|------|---------|-------|
| NICE_Clinical_Guidelines_Search | query='...', limit=N (both required) | ❌ q='...' |
| TRIP_Database_Guidelines_Search | search_type='guidelines' required | ❌ omitting search_type |
| OpenAlex_Guidelines_Search | year_from/year_to are optional | ❌ treating as required |
| PubMed_Guidelines_Search | api_key is optional (omit or use '') | ❌ treating api_key as required |
| GIN_Guidelines_Search | limit=N required | ❌ omitting limit |
| CMA_Guidelines_Search | limit=N required | ❌ omitting limit |
| SIGN_search_guidelines | query='...' (NOT q) | ❌ q='...' |
| CTFPHC_search_guidelines | query='...' (NOT q) | ❌ q='...' |
| NCI_search_cancer_resources | q='...', size=N (NOT limit) | ❌ query=... or limit=N |
| NCCN_list_patient_guidelines | field cancer_type (not title) | ❌ .get('title') |
| NCCN_get_patient_guideline | url='https://...' (full URL string) | ❌ integer patientGuidelineId |
| MAGICapp_list_guidelines | r.get('data', []) for list | ❌ accessing r directly as list |
| MAGICapp_* items | field name (not title) | ❌ .get('title') |
| CPIC_* tools | r.get('data', []) for list | ❌ accessing r directly |
| CPIC_get_recommendations | guideline_id=N (integer) | ❌ genesymbol='CYP2D6' |
| CPIC_search_gene_drug_pairs | genesymbol='eq.CYP2D6' (PostgREST) | ❌ genesymbol='CYP2D6' |
| CPIC_get_alleles | use clinicalfunctionalstatus field | ❌ functionalstatus (always null) |
| NCI_search_cancer_resources | r.get('data',{}).get('results',[]) | ❌ r.get('data', []) |
| Tool | Return type | Access pattern |
|------|-------------|----------------|
| NICE_Clinical_Guidelines_Search | list (raw) | result[0]['title'] |
| GIN_Guidelines_Search | list (raw) | result[0]['title'] |
| TRIP_Database_Guidelines_Search | list (raw) | result[0]['title'] |
| WHO_Guidelines_Search | list (raw) | result[0]['title'] |
| EuropePMC_Guidelines_Search | list (raw) | result[0]['title'] |
| PubMed_Guidelines_Search | list (raw) | result[0]['title'] |
| CMA_Guidelines_Search | list (raw) | result[0]['title'] |
| SIGN_search_guidelines | list (raw) | result[0]['title'] |
| CTFPHC_search_guidelines | list (raw) | result[0]['title'] |
| ADA_search_standards | list (raw) | result[0]['title'] |
| AHA_ACC_search_guidelines | list (raw) | result[0]['title'] |
| NCCN_search_guidelines | list (raw) | result[0]['title'] |
| NCCN_list_patient_guidelines | list (raw) | result[0]['cancer_type'] |
| OpenAlex_Guidelines_Search | list (raw) | result[0]['title'] |
| CPIC_list_guidelines | dict → data | r.get('data', [])[0]['name'] |
| CPIC_get_gene_drug_pairs | dict → data | r.get('data', [])[0]['genesymbol'] |
| CPIC_get_recommendations | dict → data | r.get('data', [])[0] |
| CPIC_get_gene_info | dict → data | r.get('data', {}) |
| MAGICapp_list_guidelines | dict → data | r.get('data', [])[0]['name'] |
| NCI_search_cancer_resources | dict nested | r.get('data',{}).get('results',[])[0]['title'] |
.../chapter/Recommendations) may need direct URLtools
Onboard and manage Paperclip AI for research-paper knowledge and agent orchestration
development
Perform AI-powered web searches with real-time information using Perplexity models via LiteLLM and OpenRouter. This skill should be used when conducting web searches for current information, finding recent scientific literature, getting grounded answers with source citations, or accessing information beyond the model knowledge cutoff. Provides access to multiple Perplexity models including Sonar Pro, Sonar Pro Search (advanced agentic search), and Sonar Reasoning Pro through a single OpenRouter API key.
testing
Generate a structured scientific PDF report from a JSON description. Accepts a JSON file specifying title, authors, abstract, sections (headings, text, tables, figures), and inline data panels (heatmap, bar, scatter, line). Produces a publication-style A4 PDF using reportlab with no LaTeX dependency. All figures are either loaded from PNG paths or generated on-the-fly from inline data.
development
Execute arbitrary Python code and return stdout. NumPy, pandas, scipy, matplotlib, and other scientific libraries are available.