Agent skill

ontology-term-resolution

Resolve free-text scientific labels to ontology term IDs and validate existing CURIEs against the EBI Ontology Lookup Service (OLS4). Use whenever an ontology identifier must be produced or checked - annotating tissue, cell type, disease, phenotype, assay, chemical, organism, sex, or developmental stage fields; preparing metadata for GEO, ENA, BioSamples, CELLxGENE, HCA, or ISA-Tab submission; auditing a metadata table of term IDs; checking whether a term is obsolete and what replaced it; or mapping between ontologies. Triggers include "ontology term", "ontology ID", "CURIE", "controlled vocab

K-Dense-AIgithub.com/K-Dense-AIGitHub ↗
claude-codecan modify filesships scriptsMIT
Install
npx skills add K-Dense-AI/scientific-agent-skills --skill ontology-term-resolution --agent claude-code

Same command for any agent — swap --agent for codex, cursor, copilot.

Facts
Files in the skill folder: 7
SKILL.md size: 7 KB
Bundled scripts: yes
Version: 1.0
Allowed tools: ReadWriteEditBash
Requires: Requires Python 3.11+. Scripts use only the standard library - no third-party packages. Needs network access to…
Path: skills/ontology-term-resolution/SKILL.md
Open the folder on GitHub →
Where it comes from
Stars: 32,619
Language: Python
Read our review of the source →

Weekly change comes from our own snapshots, not the repository page — it measures attention, not adoption.

From the SKILL.md

# Ontology Term Resolution ## When to use Any time an ontology identifier is about to be written down or trusted: annotating a metadata column, filling a submission template, auditing a table someone else produced, or checking whether an ID in an old file is still current. ## The rule **Never write an ontology ID from memory, and never accept one without checking it.** Ontology IDs are memorable in form and arbitrary in detail. A plausible-looking `UBERON:0002108` is a real term (small intestine) that is not the liver, and nothing downstream will catch the substitution — the ID is well-formed, the ontology is right, and the metadata is silently wrong. Reviewers cannot spot it either, which is why these errors persist into published datasets. Every ID this skill emits comes from a live OLS lookup. Every ID it is handed gets verified. ## Two directions | Direction | Script | Question answered | | --- | --- | --- | | text → ID | `scripts/resolve_terms.py` | What is the term for "left ventricle"? | | ID → verdict | `scripts/validate_terms.py` | Is `EFO:0001067` real, current, and labelled what this file claims? | Both take single values or files, emit TSV or JSON, and need no packages

What's inside
Steps it walks through
  1. When to use
  2. The rule
  3. Two directions
  4. Resolve text to terms
  5. Validate existing IDs
  6. API behaviour that will mislead you
  7. Choosing the ontology
  8. Reporting results
  9. References
Ships with 6 files
  • references/curation-rules.md
  • references/ols4-api.md
  • references/ontology-registry.md
  • scripts/ols_client.py
  • scripts/resolve_terms.py
  • scripts/validate_terms.py
Commands it runs
cd skills/ontology-term-resolution/scripts
one string, constrained to the ontology that should define it
python3 resolve_terms.py "liver" --ontology uberon
a column of tissue names; anything not an exact hit is reported, not guessed
python3 resolve_terms.py --input tissues.txt --ontology uberon \
accept fuzzy fallbacks, then review the partial hits by hand
python3 resolve_terms.py "left ventrical of heart" --ontology uberon --top 3
python3 validate_terms.py UBERON:0002107 EFO:0001067 UBERON:9999999
id + label columns; catches IDs that exist but are labelled as something else
python3 validate_terms.py --input metadata.tsv --strict
More from scientific-agent-skills
All skills →
About this skill
What does the ontology-term-resolution skill do?

Resolve free-text scientific labels to ontology term IDs and validate existing CURIEs against the EBI Ontology Lookup Service (OLS4). Use whenever an ontology identifier must be produced or checked - annotating tissue, cell type, disease, phenotype, assay, chemical, organism, sex, or developmental stage fields; preparing metadata for GEO, ENA, BioSamples, CELLxGENE, HCA, or ISA-Tab submission; auditing a metadata table of term IDs; checking whether a term is obsolete and what replaced it; or mapping between ontologies. Triggers include "ontology term", "ontology ID", "CURIE", "controlled vocab

How do I install it?

Run `npx skills add K-Dense-AI/scientific-agent-skills --skill ontology-term-resolution --agent claude-code` — it drops the skill into your project so the agent can pick it up. Swap the --agent value for codex, cursor or copilot if you use one of those.

Where does this skill come from?

From K-Dense-AI/scientific-agent-skills, a repository with 32,619 stars. We read it straight from the repository tree rather than a submitted listing, so what you see here is what is actually published.

Is a popular skill a good skill?

Not necessarily. Stars measure attention, not adoption — a repository can trend for a week and be abandoned. That is why we show the weekly change from our own snapshots next to the total, instead of a single flattering number.

Keep going