plugin/skills/tooluniverse-gwas-drug-discovery/SKILL.md
Transform GWAS signals into drug targets and repurposing opportunities. Connects GWAS-significant loci to causal genes via fine-mapping/eQTL, then to druggable proteins via DGIdb/OpenTargets, then to existing drugs via ChEMBL. Use for GWAS-to-target hypothesis generation, druggable-fraction analysis of disease loci, and human-genetics-validated drug-repurposing prioritization.
npx skillsauth add mims-harvard/tooluniverse tooluniverse-gwas-drug-discoveryInstall 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.
Transform genome-wide association studies (GWAS) into actionable drug targets and repurposing opportunities.
IMPORTANT: Always use English terms in tool calls. Respond in the user's language.
This skill bridges genetic discoveries from GWAS with drug development by:
Key insight: Targets with genetic support have 2x higher probability of clinical approval (Nelson et al., Nature Genetics 2015).
GWAS-to-drug translation succeeds when you think causally. A genetic association provides causal direction that observational data cannot: if a loss-of-function variant protects against disease, an inhibitor of that gene's product is the hypothesis to test. The direction of effect (LOF vs. GOF) determines whether you need an inhibitor or an agonist — get this wrong and the drug works backwards. GWAS effect sizes are small (odds ratios of 1.1–1.5 are typical), but the drug effect may be much larger or smaller than the genetic effect; the genetic signal validates the target, not the dose. Always integrate multiple lines of evidence (eQTL colocalization, pQTL, L2G score) before committing to a target, because many GWAS variants tag the causal gene only indirectly.
LOOK UP DON'T GUESS: Do not assume which gene a GWAS variant implicates — use OpenTargets_get_variant_credible_sets or gwas_get_associations_for_snp to get the actual mapped gene and L2G score. Do not guess the direction of effect, odds ratio, or whether a drug already exists for the target; always query the tools.
Input: Disease/trait name (e.g., "type 2 diabetes", "Alzheimer disease")
Process: Query GWAS Catalog for associations, filter by significance (p < 5x10^-8), map variants to genes, aggregate evidence.
Tools:
gwas_get_associations_for_trait - Get associations by diseasegwas_search_associations - Flexible searchgwas_get_associations_for_snp - SNP-specific associationsOpenTargets_search_gwas_studies_by_disease - Curated GWAS dataOpenTargets_get_variant_credible_sets - Fine-mapped loci with L2G predictionsInput: Gene list from Step 1
Process: Check target class, assess tractability, evaluate safety, check for tool compounds or structures.
Tools:
OpenTargets_get_target_tractability_by_ensemblID - Druggability assessmentOpenTargets_get_target_classes_by_ensemblID - Target classificationOpenTargets_get_target_safety_profile_by_ensemblID - Safety dataOpenTargets_get_target_genomic_location_by_ensemblID - Genomic contextScoring Formula:
Target Score = (GWAS Score x 0.4) + (Druggability x 0.3) + (Clinical Evidence x 0.2) + (Novelty x 0.1)
Rank targets by composite score. Generate target dossiers.
Process: Search drug-target associations, find approved drugs and clinical candidates, get MOA and indication data.
Tools:
OpenTargets_get_associated_drugs_by_disease_efoId - Known drugs for diseaseOpenTargets_get_drug_mechanisms_of_action_by_chemblId - Drug MOAChEMBL_get_target_activities - Bioactivity dataChEMBL_get_drug_mechanisms / ChEMBL_search_drugs - Drug dataTools:
FDA_get_adverse_reactions_by_drug_name - Safety dataFDA_get_active_ingredient_info_by_drug_name - Drug compositionOpenTargets_get_drug_warnings_by_chemblId - Drug warningsMatch drug targets to new disease genes, assess mechanistic fit, check contraindications, estimate repurposing probability.
from tooluniverse import ToolUniverse
tu = ToolUniverse(use_cache=True)
tu.load_tools()
# Step 1: Get GWAS associations (use disease_trait not trait; no p_value_threshold param)
associations = tu.tools.gwas_get_associations_for_trait(disease_trait="type 2 diabetes")
# Step 2: Assess druggability (ensemblId lowercase d)
tractability = tu.tools.OpenTargets_get_target_tractability_by_ensemblID(ensemblId="ENSG00000148737")
# Step 3: Find existing drugs per target via DGIdb (OpenTargets drug query may return HTTP 400)
drugs = tu.tools.DGIdb_get_drug_gene_interactions(genes=["TCF7L2"])
GWAS & Genetics:
gwas_get_associations_for_trait / gwas_search_associations / gwas_get_associations_for_snpOpenTargets_search_gwas_studies_by_disease / OpenTargets_get_variant_credible_setsTarget Assessment:
OpenTargets_get_target_tractability_by_ensemblID / OpenTargets_get_target_classes_by_ensemblIDOpenTargets_get_target_safety_profile_by_ensemblID / OpenTargets_get_target_genomic_location_by_ensemblIDDrug Discovery:
OpenTargets_get_associated_drugs_by_disease_efoId / OpenTargets_get_drug_mechanisms_of_action_by_chemblIdChEMBL_get_target_activities / ChEMBL_get_drug_mechanisms / ChEMBL_search_drugsSafety & Clinical:
FDA_get_adverse_reactions_by_drug_name / FDA_get_active_ingredient_info_by_drug_nameOpenTargets_get_drug_warnings_by_chemblIdLiterature:
PubMed_search_articles / EuropePMC_search_articles / ClinicalTrials_search_studiestu.run_batch() for parallel queries across targets| Issue | Wrong | Correct |
|-------|-------|---------|
| GWAS trait param | gwas_get_associations_for_trait(trait=...) | disease_trait=... (no trait param exists) |
| GWAS p-value filter | p_value_threshold=5e-8 | No such param; filter client-side after fetching results |
| OpenTargets ensembl case | ensemblID="ENSG..." | ensemblId="ENSG..." (lowercase 'd') |
| ClinicalTrials tool name | ClinicalTrials_search_studies(...) | ClinicalTrials_search_studies(...) |
| DGIdb tool name | DGIdb_get_drug_gene_interactions(...) | DGIdb_get_drug_gene_interactions(genes=[...]) |
| OpenTargets disease drugs | OpenTargets_get_associated_drugs_by_disease_efoId may return HTTP 400 | Fall back to DGIdb_get_drug_gene_interactions per gene |
| GWAS study search param | gwas_search_studies(disease_trait=...) | Use efo_trait=... for studies (disease_trait works for associations only) |
| Signal Quality | Criteria | Drug Discovery Value | |---------------|---------|---------------------| | Gold standard | Genome-wide significant (p < 5e-8), replicated across ancestries, L2G > 0.5, eQTL colocalized | Highest priority — genetic causality established | | Strong | Genome-wide significant, L2G > 0.3, biological plausibility | High priority — pursue with functional validation | | Moderate | Suggestive (p < 1e-5), or significant but no fine-mapping | Medium — needs additional evidence before investment | | Weak | Single study, no replication, low L2G, no functional support | Low — hypothesis generating only |
After identifying GWAS-linked genes, rank them by answering:
Is the gene druggable? (DGIdb category: kinase/GPCR/ion channel = yes; transcription factor/scaffold = harder)
Is the genetic direction clear?
What's the effect size? (Odds ratio from GWAS)
Is there clinical precedent?
| Problem | Solution | |---------|----------| | No GWAS hits for disease | Try broader trait name, check synonyms, use OpenTargets | | Gene not in druggable class | Consider antibody/antisense modalities, check pathway neighbors | | No existing drugs for target | Target may be novel - check tool compounds in ChEMBL | | Low L2G score | Variants may be regulatory - check eQTL/pQTL evidence |
tools
Post-market safety surveillance and recall/adverse-event RETRIEVAL across the full spectrum of FDA-regulated products that are NOT covered by the drug-AE signal skills: medical devices, food / dietary supplements / cosmetics, veterinary drugs, and drug supply (shortages). Orchestrates openFDA endpoints (MAUDE device adverse events + device recalls + 510(k), CAERS food/supplement/ cosmetic adverse events, veterinary adverse events, drug shortages, and cross-product enforcement/recall reports). USE WHEN the user asks: "are there adverse events for [device / pacemaker / infusion pump / insulin pump]", "device recalls for [firm/product]", "supplement / vitamin / cosmetic adverse reactions", "is [drug] in shortage", "what injectables are on shortage", "veterinary / animal adverse events for [drug] in [dog/cat/horse]", "food recall for listeria", "MAUDE report for [device]", "CAERS reactions for [brand]". DO NOT USE for drug adverse-event SIGNAL detection or disproportionality (PRR / ROR / IC) or drug-AE association scoring — that is `tooluniverse-pharmacovigilance` / `tooluniverse-adverse-event-detection`. This skill is multi-product surveillance and retrieval, not drug-AE statistical signal mining.
tools
--- name: tooluniverse-phewas description: Cross-ancestry / cross-biobank phenome-wide association (PheWAS) and replication. Given ONE variant (rsID) or ONE gene, look up every phenotype it associates with across European/UK (UKB-TOPMed), Finnish (FinnGen), Japanese (BioBank Japan), and Taiwanese (TPMI) biobanks, plus exome-wide gene-burden PheWAS (Genebass), then judge whether an association replicates across ancestries or is population-specific. Use whenever the user asks "what else is this va
tools
Dereplicate a putative natural product and assign its chemical taxonomy. Use to answer "is [compound] a known natural product", "what microbe/organism produces [compound]", "what chemical class is [compound]", "dereplicate this metabolite (by formula/exact mass/InChIKey/SMILES)", or "classify this molecule into ChemOnt". Searches NPAtlas for known microbial natural products (producing organism + literature reference), assigns the ChemOnt kingdom→superclass→class→subclass hierarchy via ClassyFire, resolves systematic IUPAC names to structure via OPSIN, and cross-references identity in PubChem. NOT for general drug/compound identity or ADMET (use tooluniverse-chemical-compound-retrieval / tooluniverse-small-molecule-discovery) and NOT for metabolomics pathway/enrichment analysis (use tooluniverse-metabolomics skills).
tools
Genome-ASSEMBLY discovery, QC, and replicon mapping for any organism (bacteria, archaea, fungi, and beyond) using NCBI Datasets. Resolves an organism name or taxid to assemblies, picks the reference/representative or best-quality assembly, pulls assembly QC metrics (total length, contig/scaffold N50, contig count, GC%, assembly level, RefSeq category), enumerates chromosomes and plasmids via per-replicon sequence reports, and compares candidate assemblies on quality. Use for "what genomes are available for [organism]", "assembly stats / N50 / GC content for [GCF_/GCA_ accession]", "how many plasmids does [strain] have", "compare assemblies for [species]", "find the reference genome for [taxon]", "is this assembly Complete Genome or just contigs". NOT for gene-level orthology/synteny (use tooluniverse-comparative-genomics), plant gene structure (use tooluniverse-plant-genomics), de novo assembly from raw reads (no tool exists), or taxonomy-only name/lineage lookups.