editing-obo-ontologies — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited editing-obo-ontologies (Agent Skill) and scored it 92/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 2 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 2 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
This skill provides guidance and tools for editing ontologies in OBO format.
Most OBO ontologies follow a similar structure:
src/ontology/{ontology}-edit.oboterms/ directory for editingUse the obo-grep.pl script for searching OBO files:
obo-grep.pl --noheader -r 'id: ONTO:0004177' src/ontology/{ontology}-edit.oboobo-grep.pl --noheader -r 'ONTO:0004177' src/ontology/{ontology}-edit.oboobo-grep.pl --noheader -r '(hand|foot)' src/ontology/{ontology}-edit.obosrc/ontology/{ontology}-edit.obo)aurelian fulltext PMID:NNNNNNobo-checkout.pl src/ontology/{ontology}-edit.obo ONTO:1234567 [OTHER_IDS]terms/{ontology}_1234567.obo (note: colon replaced with underscore)terms/ folderobo-checkin.pl src/ontology/{ontology}-edit.obo ONTO:1234567 [OTHER_IDS]terms/This skill includes three essential scripts:
obo-grep.pl - Fast searching of OBO filesobo-checkout.pl - Extract terms to individual files for editingobo-checkin.pl - Merge edited terms back into main fileAll scripts are available in your PATH when this skill is loaded.
ONTO:NNNNNNN (check project conventions for number of digits)id: - unique identifiername: - human-readable labelnamespace: - ontology namespacedef: - definition with references in square bracketsis_a, part_of, has_part, etc.ONTO:777xxxx for new termsgrep 'id: ONTO:777' src/ontology/{ontology}-edit.obodef: "..." [PMID:nnnn, doi:mmmm]aurelian fulltext <PMID:nnn> (also works with DOIs and URLs)[] without a sourceSynonyms should include proper attribution:
Correct:
synonym: "alternative name" EXACT [PMID:12345678]
synonym: "abbrev" EXACT ABBREVIATION [PMID:12345678]is_a parentExample of proper intersection_of usage:
[Term]
id: ONTO:0000715
name: specific disease
def: "A general disease that involves specific location." [PMID:12345678]
is_a: ONTO:0001082 ! general disease
intersection_of: ONTO:0004971 ! general disease
intersection_of: disease_has_location UBERON:0000029 ! specific locationNote that in OWL this corresponds to: 'specific disease' EquivalentTo 'general disease' and 'disease has location' some 'specific location'
is_a, relationship, intersection_of)replaced_by tag (exact replacement)consider tags (suggested alternatives)Example of simple obsolescence:
[Term]
id: ONTO:0100334
name: obsolete term name
property_value: IAO:0000231 OMO:0001000
property_value: IAO:0000233 "https://github.com/{project}/issues/XXXX" xsd:anyURI
is_obsolete: true
replaced_by: ONTO:0100321Example with considerations instead of replacement:
[Term]
id: ONTO:0100229
name: obsolete term name
def: "OBSOLETE. Original definition here." [original references]
property_value: IAO:0000231 OMO:0001000
property_value: IAO:0000233 "https://github.com/{project}/issues/XXXX" xsd:anyURI
is_obsolete: true
consider: ONTO:0100259
consider: ONTO:0100260alt_id - use obsolescence with replacement insteadproperty_value: IAO:0000233 "https://github.com/{project}/issues/XXXX" xsd:anyURI property_value: http://purl.org/dc/terms/creator https://orcid.org/0000-0001-2345-6789Validate OBO syntax using ROBOT:
robot convert --catalog src/ontology/catalog-v001.xml \
-i src/ontology/{ontology}-edit.obo \
-f obo \
-o {ontology}-edit.TMP.oboUse -vvv flag for full stack trace if there are errors.
Many OBO ontologies use DOSDP (Dead Simple Ontology Design Patterns):
src/patterns/dosdp-patterns/*.yaml for project-specific patternsaurelian or web search~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.