Install
$ agentstack add skill-bigbio-sdrf-skills-sdrf-terms ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ● Network access Used
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
SDRF Ontology Term Lookup
You are helping the user find the correct ontology term for an SDRF column.
Step 1: Identify the Column and Ontology
Read spec/sdrf-proteomics/TERMS.tsv and find the row for the column the user is asking about. The values field tells you which ontology(ies) to search.
Examples from TERMS.tsv:
organism→ values:NCBITaxon→ search OLS with ontologyIdncbitaxondisease→ values:MONDO, EFO, DOID, PATO→ search these ontologiesorganism part→ values:UBERON, BTO→ search UBERON first, BTO as fallbackcell type→ values:CL, BTO→ search CL first, BTO as fallbackinstrument→ values:MS→ search MS ontologymodification parameters→ values:UNIMOD→ use UNIMOD accessionscleavage agent details→ values:MS→ search MS ontology
Always read TERMS.tsv rather than relying on memorized ontology mappings — the spec may add new columns or change ontology sources.
Step 2: Search OLS
Use the OLS MCP tools to find the term:
Primary search:
mcp OLS → searchClasses(query="", ontologyId="")
If no results or too many:
mcp OLS → search(query="")
Filter results to the correct ontology manually
For broader semantic search:
mcp OLS → searchClassesWithEmbeddingModel(query="", model="")
(Call listEmbeddingModels first to get available models with can_embed=true)
Step 3: Evaluate Specificity
When presenting results, assess specificity:
Too Generic (suggest more specific)
- "cancer" → suggest "breast carcinoma", "lung adenocarcinoma", etc.
- "tissue" → suggest the actual tissue name
- "cell" → suggest the actual cell type
- "brain" might be OK, but "temporal cortex" is better if known
Appropriately Specific
- "breast carcinoma" (EFO:0000305) — good for a breast cancer study
- "liver" (UBERON:0002107) — good for tissue-level studies
- "T cell" (CL:0000084) — good if subtype unknown
Too Specific (might be too narrow)
- "left breast upper inner quadrant" — probably too specific for most studies
To check specificity, use hierarchy navigation:
mcp OLS → getAncestors(ontologyId="", classIri="")
mcp OLS → getChildren(ontologyId="", classIri="")
Step 4: Cross-Ontology Mapping
When the user has a term from one ontology but needs another:
Example: User has DOID term, needs EFO equivalent
1. Get the DOID term details: mcp OLS → fetch(id="doid+")
2. Search EFO for the same concept: mcp OLS → searchClasses(query="", ontologyId="efo")
3. Present both options with accessions
For disease terms, SDRF accepts EFO, MONDO, or DOID. Recommend:
- EFO as first choice (most commonly used in SDRF)
- MONDO as second choice (good cross-references)
- DOID as third choice
Step 5: Present Results
For each term found, present:
Term: breast carcinoma
Accession: EFO:0000305
Ontology: Experimental Factor Ontology (EFO)
Definition: A carcinoma that arises in the breast region.
Synonyms: breast cancer, mammary carcinoma
Parent: carcinoma (EFO:0000228)
SDRF format: breast carcinoma
Column: characteristics[disease]
Alternative terms:
- invasive breast carcinoma (EFO:0010132) — more specific, if applicable
- breast ductal carcinoma (EFO:0000298) — subtype-specific
Special Cases
"Normal" / "Healthy" / "Control"
- For disease: use
normalwith accession PATO:0000461 - Do NOT use: "healthy", "control", "none", "N/A"
"Not Available" vs "Not Applicable"
not available— the information exists but wasn't capturednot applicable— the property doesn't apply (e.g., cell line for a tissue sample)- Check TERMS.tsv
allow_not_availableandallow_not_applicablefor the specific column
Cell Lines
- Use the Cellosaurus database (https://www.cellosaurus.org/) for cell line identification
- SDRF uses three columns for cell lines:
characteristics[cell line]— name from CLO, BTO, or EFO ontologycharacteristics[cellosaurus accession]— format: CVCLXXXX (e.g., CVCL0030 for HeLa)characteristics[cellosaurus name]— official Cellosaurus name- Common examples: HeLa (CVCL0030), HEK293 (CVCL0045), MCF7 (CVCL0031), A549 (CVCL0023)
- To find a Cellosaurus accession: search https://www.cellosaurus.org/search (not OLS)
- Cross-reference Cellosaurus for: species of origin, disease, tissue of origin, STR profile
Instruments
- Format in SDRF:
AC=MS:1001911;NT=Q Exactive HF - Search MS ontology for the instrument model
- Include manufacturer in search if needed
Modifications
- ALWAYS use UNIMOD accessions, not PSI-MOD
- The format is:
NT=;AC=UNIMOD:;TA=;MT= - Double-check the UNIMOD:1/UNIMOD:21 swap (Acetyl vs Phospho)
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: bigbio
- Source: bigbio/sdrf-skills
- License: MIT
- Homepage: https://sdrf.quantms.org
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.