Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Drug and chemical toxicity assessment via adverse outcome pathways (AOPs), real-world FAERS adverse event signals, FDA labels, and toxicogenomic associations. Triangulates molecular initiating event to cellular outcome to organ-level toxicity to clinical adverse event. Use for hepatotoxicity/cardiotoxicity/nephrotoxicity prediction and toxicology reports.
.claude/skills/mims-harvard-tooluniverse-toxicology/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 149% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 88% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 275% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 163% | 0% |
Systematic toxicology analysis that links molecular initiating events (MIEs) through adverse outcome pathways (AOPs) to apical adverse outcomes, then triangulates with real-world FAERS signals, FDA label data, and toxicogenomic associations.
Toxicity has many mechanisms, and the first interpretive question is temporal: is this acute toxicity (immediate effect from a high dose) or chronic toxicity (cumulative damage from long-term low-dose exposure)? Acute and chronic toxicity operate through different mechanisms — acute hepatotoxicity may reflect direct mitochondrial damage, while chronic hepatotoxicity may involve fibrosis from repeated low-level inflammation. They also have different regulatory frameworks: acute toxicity is captured by LD50 and emergency protocols, while chronic toxicity requires long-term carcinogenicity and repeat-dose studies.
AOPWiki_list_aops and AOPWiki_get_aop; do not describe mechanisms from memory.FAERS_count_reactions_by_drug_event and FAERS_calculate_disproportionality; never estimate PRR values.DailyMed_parse_adverse_reactions and related tools; do not state boxed warnings from memory.CTD_get_chemical_gene_interactions and CTD_get_chemical_diseases; do not infer gene targets without database evidence.When analysis requires computation (statistics, data processing, scoring, enrichment), write and run Python code via Bash. Don't describe what you would do — execute it and report actual results. Use ToolUniverse tools to retrieve data, then Python (pandas, scipy, statsmodels, matplotlib) to analyze it.
Triggers:
Use Cases:
| Tier | Symbol | Criteria | |------|--------|----------| | T1 | T1] | FDA boxed warning, clinical trial toxicity finding, regulatory label | | T2 | T2] | FAERS signal PRR > 2, AOP with high biological plausibility, CTD curated | | T3 | T3] | CTD inferred association, AOP annotation with moderate plausibility | | T4 | T4] | Text-mined CTD entry, early-stage AOP annotation |
Chemical/Drug Query
|
+-- PHASE 0: Disambiguation
| Resolve name -> identifiers (ChEMBL, PubChem CID, SMILES)
|
+-- PHASE 1: Adverse Outcome Pathway Mapping (AOPWiki)
| List AOPs by keyword; retrieve key events, MIEs, and biological plausibility scores
|
+-- PHASE 2: Real-World Adverse Event Signals (FAERS)
| Top reactions by drug; disproportionality (PRR); serious event filter
|
+-- PHASE 3: FDA Label Safety Mining
| Boxed warnings, contraindications, nonclinical toxicology, adverse reactions
|
+-- PHASE 4: Toxicogenomics (CTD)
| Chemical-gene interactions; chemical-disease associations
|
+-- SYNTHESIS: Integrated Toxicology Report
AOP-linked mechanism + FAERS signal + CTD gene targets + Risk classificationObjective: Establish compound identity before any database queries.
Tools:
PubChem_get_CID_by_compound_name (name: str) — get CID + SMILESChEMBL_search_drugs (query: str) — get ChEMBL ID and max phaseCapture: generic name, SMILES, PubChem CID, ChEMBL ID, drug class.
Objective: Find AOPs relevant to the chemical's known or suspected toxicity mechanisms.
AOPWiki_list_aops:
keyword (str) — e.g., organ ("liver", "kidney"), effect ("apoptosis", "inflammation"), or target ("AhR", "PPARalpha")AOPWiki_get_aop:
aop_id (int) — ID from list_aops resultAOPWiki_list_aops with organ-level keyword (e.g., "hepatotoxicity", "nephrotoxicity")AOPWiki_get_aop for each selected AOP| AOP ID | Title | MIE | Apical Outcome | Plausibility | |--------|-------|-----|----------------|-------------| | 123 | ... | ... | ... | High |
Objective: Quantify observed adverse events with statistical signal measures.
FAERS_count_reactions_by_drug_event:
drug_name (str), limit (int, default 50)drug_name not drugFAERS_calculate_disproportionality:
drug_name (str), reaction_meddra_pt (str)FAERS_filter_serious_events:
drug_name (str), serious_type (str: "death", "hospitalization", "life-threatening")FAERS_stratify_by_demographics:
drug_name (str), reaction_meddra_pt (str)FAERS_count_reactions_by_drug_eventFAERS_calculate_disproportionality| Signal Strength | PRR | Case Count | |----------------|-----|------------| | Strong | > 3.0 | >= 5 | | Moderate | 2.0-3.0 | >= 3 | | Weak | 1.5-2.0 | >= 3 | | None | < 1.5 | any |
Objective: Extract regulatory safety findings from approved drug labels.
DailyMed_parse_adverse_reactions (drug_name: str)DailyMed_parse_contraindications (drug_name: str)DailyMed_parse_clinical_pharmacology (drug_name: str)DailyMed_parse_drug_interactions (drug_name: str)Note: These tools apply to FDA-approved drugs only. Environmental chemicals will have no label data — document explicitly.
Objective: Map chemical-gene interactions and chemical-disease associations.
CTD_get_chemical_gene_interactions:
input_terms (str) — chemical name or MeSH IDCTD_get_chemical_diseases:
input_terms (str) — chemical name or MeSH IDStructure:
# Toxicology Report: [Compound Name]
**Generated**: YYYY-MM-DD
## Executive Summary
Risk tier: CRITICAL / HIGH / MEDIUM / LOW / INSUFFICIENT DATA
Key finding summary (2-3 sentences)
## 1. Compound Identity
(disambiguation table)
## 2. Adverse Outcome Pathways [T3-T4]
(AOP table; pathway diagrams in text form)
## 3. Real-World Adverse Event Signals [T1-T2]
(FAERS top reactions + PRR table + serious events)
## 4. FDA Label Safety [T1]
(boxed warnings, contraindications, adverse reactions)
## 5. Toxicogenomics [T2-T4]
(CTD gene targets + disease associations)
## 6. Mechanistic Integration
(How AOP key events map to observed FAERS signals and CTD gene targets)
## 7. Risk Classification
(Final tier with rationale)
## Data Gaps & Limitations
(Missing data, confidence caveats)| Tier | Criteria | |------|----------| | CRITICAL | FDA boxed warning OR FAERS PRR > 5 with deaths OR multiple T1 findings | | HIGH | FAERS PRR 3-5 serious events OR FDA warning (non-boxed) OR high-plausibility AOP | | MEDIUM | FAERS PRR 2-3 OR CTD curated associations OR moderate-plausibility AOP | | LOW | All signals < PRR 2; no regulatory warnings; low-plausibility AOP only | | INSUFFICIENT DATA | Fewer than 3 phases returned usable data |
| Primary Tool | Fallback 1 | Fallback 2 | |--------------|------------|------------| | AOPWiki_list_aops | Broaden keyword | Search by organ system | | FAERS_count_reactions_by_drug_event | OpenFDA_search_drug_events | Literature search | | DailyMed_parse_adverse_reactions | OpenFDA_search_drug_events | FAERS serious events | | CTD_get_chemical_diseases | CTD_get_chemical_gene_interactions | PubMed search |
| Tool | WRONG | CORRECT | |------|-------|---------| | FAERS_count_reactions_by_drug_event | drug | drug_name | | AOPWiki_list_aops | query | keyword | | CTD_get_chemical_gene_interactions | chemical | input_terms | | CTD_get_chemical_diseases | chemical | input_terms |
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 34,164 | 7,620 | -78% | 1 | 1 | 0% | 6,241 | 3,996 | -36% | 0 | 0 | — |
case-07 | fail→pass | 24,875 | 2,589 | -90% | 1 | 1 | 0% | 2,446 | 3,792 | +55% | 0 | 0 | — |
case-02 | fail→fail | 29,243 | 8,787 | -70% | 1 | 1 | 0% | 6,226 | 4,021 | -35% | 0 | 0 | — |
case-03 | fail→fail | 24,966 | 8,166 | -67% | 1 | 1 | 0% | 4,748 | 4,131 | -13% | 0 | 0 | — |
case-04 | fail→pass | 7,578 | 1,922 | -75% | 1 | 1 | 0% | 1,469 | 3,659 | +149% | 0 | 0 | — |
case-05 | fail→pass | 10,701 | 1,890 | -82% | 1 | 1 | 0% | 1,941 | 3,640 | +88% | 0 | 0 | — |
case-06 | pass→pass | 9,067 | 2,198 | -76% | 1 | 1 | 0% | 1,689 | 3,662 | +117% | 0 | 0 | — |
case-08 | fail→pass | 13,519 | 4,752 | -65% | 1 | 1 | 0% | 1,127 | 4,228 | +275% | 0 | 0 | — |
case-09 | fail→pass | 12,899 | 10,128 | -21% | 1 | 1 | 0% | 1,990 | 5,238 | +163% | 0 | 0 | — |
case-10 | pass→pass | 8,323 | 8,105 | -3% | 1 | 1 | 0% | 1,671 | 4,966 | +197% | 0 | 0 | — |
case-11 | pass→pass | 3,916 | 5,205 | +33% | 1 | 1 | 0% | 885 | 4,411 | +398% | 0 | 0 | — |
case-12 | pass→pass | 10,495 | 3,215 | -69% | 1 | 1 | 0% | 1,538 | 3,853 | +151% | 0 | 0 | — |
case-13 | pass→fail | 7,416 | 5,271 | -29% | 1 | 1 | 0% | 1,101 | 3,840 | +249% | 0 | 0 | — |
case-14 | fail→pass | 11,844 | 2,094 | -82% | 1 | 1 | 0% | 1,743 | 3,609 | +107% | 0 | 0 | — |
case-15 | pass→pass | 5,149 | 6,481 | +26% | 1 | 1 | 0% | 851 | 3,706 | +335% | 0 | 0 | — |
case-16 | pass→pass | 8,485 | 12,950 | +53% | 1 | 1 | 0% | 1,214 | 5,129 | +322% | 0 | 0 | — |
case-17 | pass→pass | 5,526 | 4,655 | -16% | 1 | 1 | 0% | 888 | 3,873 | +336% | 0 | 0 | — |
case-18 | fail→pass | 6,633 | 2,714 | -59% | 1 | 1 | 0% | 919 | 3,696 | +302% | 0 | 0 | — |
case-19 | pass→fail | 19,298 | 3,898 | -80% | 1 | 1 | 0% | 3,038 | 3,796 | +25% | 0 | 0 | — |
case-20 | pass→fail | 14,121 | 9,544 | -32% | 1 | 1 | 0% | 2,491 | 3,680 | +48% | 0 | 0 | — |
case-21 | pass→fail | 5,817 | 8,645 | +49% | 1 | 1 | 0% | 846 | 3,775 | +346% | 0 | 0 | — |
case-22 | pass→fail | 9,844 | 10,312 | +5% | 1 | 1 | 0% | 1,627 | 3,880 | +138% | 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. 22 cases were attempted, and 15 counted toward the lift figure. The other 7 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 +9 percentage points is the difference between those two pass rates over the 15 comparable cases. 6 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.