plugin/skills/tooluniverse-cancer-classification/SKILL.md
Translate free-text tumor descriptions to OncoTree codes and resolve cancer subtypes/tissue hierarchy. Cross-references UMLS/NCI vocabularies. Use for standardizing cancer-type nomenclature in EHR free-text, building cohorts in OncoKB or GDC, mapping tumor-board notes to ontology codes, and ensuring consistent terminology across cancer-genomics pipelines.
npx skillsauth add mims-harvard/tooluniverse tooluniverse-cancer-classificationInstall 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.
Standardize cancer type nomenclature using the OncoTree ontology. Resolves free-text tumor descriptions to structured codes with UMLS/NCI cross-references, enabling downstream use in OncoKB variant annotation and GDC cohort selection.
Apply when researcher asks about:
| Tool | Purpose | Key Params |
|------|---------|-----------|
| OncoTree_search | Free-text search for cancer types | query (tumor name or description) |
| OncoTree_get_type | Full details for a known OncoTree code | code (e.g., "LUAD", "AML") |
| OncoTree_list_tissues | List all 32 tissue categories | (no params) |
| OncoKB_annotate_variant | Variant annotation using OncoTree code | gene, variant, tumor_type |
| GDC_get_mutation_frequency | Pan-cancer mutation frequency (TCGA) | gene_symbol |
Start with free-text search to find matching OncoTree codes:
OncoTree_search(query="breast cancer")
-> Returns list: code, name, main_type, tissue, parent, level, external_references
Key response fields:
code: OncoTree code (e.g., "BRCA", "IBC") — use this in OncoKB callslevel: hierarchy depth (1=tissue, 2=main type, 3-5=subtypes)parent: parent node code for navigating the hierarchyexternal_references.UMLS: UMLS CUI listexternal_references.NCI: NCI thesaurus code listSearch tips:
Once you have a candidate code, retrieve full details:
OncoTree_get_type(code="LUAD")
-> Returns: name, main_type, tissue, color, parent, level, history, external_references
Note: Not all codes are valid. "GBM" returns 404 — correct code is "GB" (Glioblastoma, IDH-Wildtype).
Always validate via OncoTree_get_type before using in downstream tools.
When the user wants all cancers in a tissue category:
OncoTree_list_tissues()
-> Returns 32 tissue names: "Breast", "CNS/Brain", "Lung", "Myeloid", ...
OncoTree_search(query="CNS/Brain")
-> All cancer types with tissue="CNS/Brain"
Pass validated OncoTree code to OncoKB for cancer-type-specific therapeutic levels:
OncoKB_annotate_variant(gene="EGFR", variant="L858R", tumor_type="LUAD")
-> highestSensitiveLevel: "1" (FDA-approved therapy for this tumor+variant)
Without tumor_type, OncoKB returns pan-cancer levels which may be less specific.
| Tool | Required | Optional | Notes |
|------|---------|---------|-------|
| OncoTree_search | query | — | Free text; returns list sorted by relevance |
| OncoTree_get_type | code | — | Case-sensitive; "BRCA" not "brca". Returns 404 for invalid codes |
| OncoTree_list_tissues | — | — | No params; returns list of 32 tissue strings |
| OncoKB_annotate_variant | gene, variant | tumor_type | tumor_type is OncoTree code; omit for pan-cancer |
| GDC_get_mutation_frequency | gene_symbol | — | Pan-cancer TCGA only; no per-subtype breakdown |
| Code | Name | Tissue |
|------|------|--------|
| BRCA | Invasive Breast Carcinoma | Breast |
| LUAD | Lung Adenocarcinoma | Lung |
| LUSC | Lung Squamous Cell Carcinoma | Lung |
| MEL | Melanoma | Skin |
| CRC | Colorectal Cancer | Bowel |
| PAAD | Pancreatic Adenocarcinoma | Pancreas |
| GBM | (invalid — use GB) | CNS/Brain |
| GB | Glioblastoma, IDH-Wildtype | CNS/Brain |
| AML | Acute Myeloid Leukemia | Myeloid |
| PRAD | Prostate Adenocarcinoma | Prostate |
# Pattern: Resolve free-text to OncoTree code
results = OncoTree_search(query="pancreatic ductal adenocarcinoma")
# Pick result with lowest level number (most specific match)
code = results["data"][0]["code"] # e.g., "PAAD"
# Pattern: Get all subtypes within a main type
results = OncoTree_search(query="Glioma")
subtypes = [r for r in results["data"] if r["main_type"] == "Glioma"]
# Pattern: Validate code before OncoKB call
detail = OncoTree_get_type(code="GB")
if detail["status"] == "success":
OncoKB_annotate_variant(gene="IDH1", variant="R132H", tumor_type="GB")
LOOK UP DON'T GUESS -- tumor classification determines treatment. Always verify codes and biomarker interpretation via tools rather than relying on memory.
Tumors are classified on TWO axes -- both matter for treatment selection:
A tumor can be histologically identical to another but molecularly different, requiring different treatment. Example: two lung adenocarcinomas (both LUAD) but one is EGFR-mutant (targeted therapy) and another is KRAS-mutant (different targeted therapy). Always check both axes.
When interpreting cancer biomarkers, use OncoKB for actionability:
OncoKB_annotate_variant(gene="ERBB2", variant="Amplification", tumor_type="BRCA") for therapeutic levelOncoKB_annotate_variant(gene="Other Biomarkers", variant="TMB-H")OncoKB_annotate_variant(gene="Other Biomarkers", variant="MSI-H")After classifying the tumor, assess whether findings are clinically actionable:
| Grade | Criteria | Example |
|-------|----------|---------|
| Confirmed | Exact OncoTree code validated via OncoTree_get_type, UMLS + NCI cross-refs present | LUAD: validated, UMLS C0152013, NCI C3512 |
| Probable | OncoTree search returns match, but code not yet validated or missing cross-refs | Search for "cholangiocarcinoma" returns CHOL with partial external refs |
| Ambiguous | Multiple OncoTree codes match the description at different hierarchy levels | "Breast cancer" matches BRCA (invasive), BREAST (tissue), IBC (inflammatory) |
| Unresolved | No OncoTree match; tumor type too rare or novel for the ontology | Ultra-rare sarcoma subtype not in OncoTree |
OncoTree_get_type before downstream use. Some common acronyms (e.g., "GBM") are NOT valid OncoTree codes (correct code is "GB"). A validated code with UMLS and NCI cross-references is highest confidence.history field in OncoTree_get_type response shows prior names. Always use the current code.| Primary | Fallback | When |
|---------|---------|------|
| OncoTree_get_type(code="GBM") | OncoTree_search(query="glioblastoma") | 404 for common aliases |
| OncoTree_search (no results) | OncoTree_list_tissues + tissue-level search | Very rare/novel tumor types |
| OncoTree code for OncoKB | Omit tumor_type param | Code not recognized by OncoKB |
tools
PCR / qPCR primer and oligo design — design forward/reverse primers for a target region (SantaLucia nearest-neighbor thermodynamics), compute melting temperature (Tm) and annealing temperature (Ta), check GC content, and screen an oligo for hairpins and primer-dimers. Use when you need primers for a sequence, want to QC an existing primer pair, or need the Tm of an oligo. Covers the primer-design rules (Tm matching, GC clamp, 3'-end, length) and the tools' constraint quirks.
tools
Pharmacokinetic (PK) analysis of concentration-time data — non-compartmental analysis (NCA) for Cmax, Tmax, AUC (0-t and 0-∞), terminal half-life, clearance (CL), volume of distribution (Vd), MRT, and absolute bioavailability (F). Also one-compartment fitting. Use when you have plasma/serum drug concentrations over time after a dose and need PK parameters, or to compute bioavailability from IV + oral AUCs. NOT for ADMET property prediction from structure (use tooluniverse-admet-prediction).
tools
Molecular cloning assembly design — Gibson Assembly (overlap design for seamless multi-fragment joining) and Golden Gate Assembly (Type IIS / BsaI / BbsI design with unique 4-bp fusion overhangs). Use when you need to plan how to join DNA fragments into a construct, design assembly overlaps/overhangs, or decide between cloning methods. Covers the domestication (internal-site removal), overhang-uniqueness, and overlap-Tm rules. For PCR primers to generate the fragments, see tooluniverse-primer-design.
tools
Meta-analysis / evidence synthesis — pool effect sizes across studies (odds ratios, risk ratios, hazard ratios, mean differences, correlations, GWAS betas) with fixed- or random-effects models, quantify heterogeneity (Q, I², τ²), and build a forest plot. Use when you have results from MULTIPLE studies and need a single pooled estimate, or to synthesize evidence from a systematic review / multiple GWAS / replicated experiments. Handles the error-prone effect-size + standard-error preparation (converting OR/HR/CI, two-group means±SD, proportions, and correlations into the (effect, SE) the pooling step needs).