{"id":"cmuxiisiy0n95ad07bfs3nbqv","slug":"ontology-term-resolution","publicId":"9fd8996a-8db1-4551-ab04-dd8494f3296c","name":"ontology-term-resolution","description":"Resolves free-text scientific labels to ontology term IDs and validates existing CURIEs against the EBI Ontology Lookup Service (OLS4). Also looks up prefixes in Bioregistry, resolves compact identifiers via Identifiers.org, maps lab shorthand with ZOOMA, and builds Ontobee term pages. 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 deciding HPO vs HP. Triggers include \"ontology term\", \"ontology ID\", \"CURIE\", \"controlled vocabulary\", \"UBERON\", \"CL:\", \"MONDO\", \"HPO\", \"EFO\", \"ChEBI\", \"NCBITaxon\", \"GO term\", \"PATO\", \"Zooma\", \"Bioregistry\", \"Identifiers.org\", \"Ontobee\", \"annotate this tissue/cell type/disease\", and any request to emit or verify an identifier shaped like PREFIX:0001234.","version":"1.4","author":"k-dense-ai","license":"MIT","compatibility":"Requires Python 3.11+. Scripts use only the standard library - no third-party packages. Needs network access to https://www.ebi.ac.uk/ols4, https://bioregistry.io, https://resolver.api.identifiers.org, and https://www.ebi.ac.uk/spot/zooma (all public, no API key).","status":"completed","overallGrade":"C","scannerVersion":11,"fileCount":12,"hasSkillMd":true,"hasScripts":true,"hasReferences":true,"hasEvals":false,"hasAssets":false,"sourceType":"github","sourceUrl":"https://github.com/k-dense-ai/scientific-agent-skills/tree/main/skills/ontology-term-resolution","createdAt":"2026-10-07T02:52:53.758Z","completedAt":"2026-10-07T02:52:53.684Z","visibility":"public","publishedAt":"2026-09-10T21:05:06.407Z","category":"","frameworks":[],"badgeStatus":"conditional","downloadCount":0,"verdictRationale":{"summary":"Skill has warnings: 1 warning in security or structure checks.","verdict":"warn","scanners":[{"source":"vettd","weight":1,"verdict":"warn"},{"source":"cisco","weight":0.8,"verdict":"pass"}],"consensus":"warn","warnTriggers":["References external URL — review for indirect prompt injection risk"],"policyVersion":"consensus-v1","hardFailTriggers":[]},"verdictPolicyVersion":"consensus-v1","skillId":"cmtw0ndo7b9c0ad07fsc6xxyg","findings":[{"id":"cmuxiisiy0n97ad07wgglfc3d","source":"cisco","category":"security","label":"Code makes network requests","detail":"SKILL.md — Skill code makes network requests. While not controlled by allowed-tools, network access should be documented and justified in the skill description.","severity":"medium","ruleId":"VTD-0087","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"bbe419cfb0687c04e7f13893e88c32c2","filepath":"SKILL.md"},{"id":"cmuxiisiy0n99ad07fpcrnrhq","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/id_client.py:68 — Pattern detected: urllib.request.Request(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ffe0888f15714bb50ddebe2b3a49f668","filepath":"scripts/id_client.py"},{"id":"cmuxiisiy0n9aad07sieeoou9","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/id_client.py:72 — Pattern detected: urllib.request.urlopen(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ffe0888f15714bb50ddebe2b3a49f668","filepath":"scripts/id_client.py"},{"id":"cmuxiisiy0n9bad07vslpbm5z","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/ols_client.py:79 — Pattern detected: urllib.request.Request(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ed995ab28fdc8c469f95ad6e6d58d1b1","filepath":"scripts/ols_client.py"},{"id":"cmuxiisiz0n9cad07xoat97uk","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/ols_client.py:86 — Pattern detected: urllib.request.urlopen(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"ed995ab28fdc8c469f95ad6e6d58d1b1","filepath":"scripts/ols_client.py"},{"id":"cmuxiisiz0n9dad07jubhryl7","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/zooma_client.py:78 — Pattern detected: urllib.request.Request(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"bef16dfdda38e4f3eac6f3f4c9f7751b","filepath":"scripts/zooma_client.py"},{"id":"cmuxiisiz0n9ead07s2c3gk4y","source":"cisco","category":"security","label":"Outbound network request primitives that can transmit data externally","detail":"scripts/zooma_client.py:83 — Pattern detected: urllib.request.urlopen(","severity":"medium","ruleId":"DATA_EXFIL_NETWORK_REQUESTS","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"bef16dfdda38e4f3eac6f3f4c9f7751b","filepath":"scripts/zooma_client.py"},{"id":"cmuxiisiy0n96ad07d4xi0yjn","source":"vettd","category":"security","label":"References external URL — review for indirect prompt injection risk","detail":"External URL(s) detected in SKILL.md — referenced content can change after audit","severity":"medium","ruleId":"VTD-0088","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"42638a8b7e9fc5df27449992eaebc724","filepath":"SKILL.md"},{"id":"cmuxiisiy0n98ad07cvi15tk3","source":"cisco","category":"security","label":"Code uses search/grep patterns but Grep tool not in allowed-tools","detail":"SKILL.md — Skill restricts tools to ['Read', 'Write', 'Edit', 'Bash'] but code uses regex search patterns","severity":"low","ruleId":"VTD-0087","owaspLlmCategory":null,"intent":null,"chainId":null,"fingerprint":"bbe419cfb0687c04e7f13893e88c32c2","filepath":"SKILL.md"}],"scannerRuns":[{"source":"cisco","status":"success","verdict":null,"grade":"C","findingCount":8,"criticalCount":0,"highCount":0},{"source":"vettd","status":"success","verdict":null,"grade":"B","findingCount":1,"criticalCount":0,"highCount":0}],"user":{"name":"Kris Mondlane","image":"https://avatars.githubusercontent.com/u/237055?v=4"},"repository":{"owner":"k-dense-ai","name":"scientific-agent-skills"},"freshness":{"status":"verified_unchanged","reason":null,"retryable":false,"renamedTo":null,"lastCheckedAt":"2026-10-22T07:51:40.469Z","lastVerifiedAt":"2026-10-22T07:51:40.469Z","lastChangeDetectedAt":"2026-10-07T08:35:09.307Z","scannedHash":"77506d5d5652fd13599961b4bf61ab0fdf42439e","latestUpstreamHash":"77506d5d5652fd13599961b4bf61ab0fdf42439e","nextCheckDueAt":"2026-10-23T09:29:42.199Z"},"signalCategories":[{"category":"safety","label":"Safety","form":"graded","verdict":null,"rows":[]},{"category":"reliability","label":"Reliability & Quality","form":"graded","verdict":null,"rows":[]},{"category":"performance","label":"Performance","form":"measured","verdict":{"form":"measured","magnitudes":[{"ruleId":"performance/static-context-tokens","label":"Static context tokens","value":3243,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body"}]},"rows":[{"origin":"signal","id":"cmuxiistv0nbead075n3t75ie","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/static-context-tokens","severity":null,"label":"Static context tokens","detail":null,"valueNum":3243,"valueText":null,"unit":null,"method":"tiktoken/cl100k_base/skill-md-body","derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiitzv0nicad07ko94e3af","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"","relatedId":"","dataCategory":"performance","sourceClass":"scan","source":"vettd","ruleId":"performance/progressive-disclosure","severity":null,"label":"Progressive disclosure","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null}]},{"category":"cost","label":"Cost","form":"measured","verdict":null,"rows":[]},{"category":"compatibility","label":"Compatibility","form":"unjudged","verdict":{"form":"unjudged"},"rows":[{"origin":"signal","id":"cmuxiitdd0necad079d5ul4pi","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"declared_tool","relatedId":"Bash","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Bash","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiitp50ng3ad07j6eww9uk","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-name","severity":null,"label":"Declared skill name","detail":null,"valueNum":null,"valueText":"ontology-term-resolution","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiisxe0nc1ad078xm9rry3","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-environment-assumptions","severity":null,"label":"Declared environment assumptions","detail":null,"valueNum":null,"valueText":"Requires Python 3.11+. Scripts use only the standard library - no third-party packages. Needs network access to https://www.ebi.ac.uk/ols4, https://bioregistry.io, https://resolver.api.identifiers.org, and https://www.ebi.ac.uk/spot/zooma (all public, no API key).","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiitgq0nfbad07jyltb1yv","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"declared_tool","relatedId":"Read","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Read","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiitj50nfkad074wlrhdqf","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"declared_tool","relatedId":"Write","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Write","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiiu010nihad07b4cv0a9i","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/cli-help","severity":null,"label":"CLI help","detail":null,"valueNum":null,"valueText":"present","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiiu0b0nioad07ko11begv","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/structured-output","severity":null,"label":"Structured output","detail":null,"valueNum":null,"valueText":"absent","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiiu2d0niuad07rbxo6eqa","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"","relatedId":"","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/unpinned-dependencies","severity":"low","label":"Unpinned dependency versions","detail":"Pin dependency versions for reproducibility (e.g., >=4.12,<5 instead of >=4.12)","valueNum":null,"valueText":null,"unit":null,"method":null,"derivation":null,"confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null},{"origin":"signal","id":"cmuxiitg00neyad072xkxk6gu","subjectType":"skill_audit","subjectId":"cmuxiisiy0n95ad07bfs3nbqv","relatedType":"declared_tool","relatedId":"Edit","dataCategory":"compatibility","sourceClass":"scan","source":"vettd","ruleId":"compatibility/declared-required-tools","severity":null,"label":"Declared required tool","detail":null,"valueNum":null,"valueText":"Edit","unit":null,"method":null,"derivation":"read","confidence":null,"sampleSize":null,"synthetic":false,"firstParty":true,"observedAt":"2026-10-07T02:52:49.000Z","payload":null}]},{"category":"sentiment","label":"Popularity","form":"unjudged","verdict":null,"rows":[]},{"category":"characteristics","label":"Characteristics","form":"unjudged","verdict":null,"rows":[]}],"signalCount":40,"publisherSupplied":["name","description","author","version","license"]}