A pairing of a Python MCP server of atomic ontology-engineering tools and a Claude Code plugin
that encodes the Ontology Development 101 seven-step methodology as slash commands, SKILL.md prose, sub-agents,
and hooks. A non-expert customer — a technical lead working alongside an async domain SME — drives the
whole workflow inside Claude Code and ships a validated canonical ontology (OWL + SHACL + docs)
for their business domain. There is no custom UI: Claude Code is the UI. The methodology is what we're proving.
A GSD-style plugin: /ontology:* slash commands, SKILL.md prose, two sub-agents,
and fail-closed hooks. The conversation is real; the human confirms every gray area. Shipped via an
npx installer.
Atomic tools behind a stable wire contract. A three-phase prepare/submit/finalize_locked
handler; deterministic server-side engines return severity-tagged findings. rdflib + pyshacl, LOCAL-only.
State persists to a durable session store.
A canonical 14-slot bundle tree in a Neuroplast-hosted repo. Every step writes real Turtle,
SHACL, SPARQL, and docs. Five CI gates decide publishability. rm -rf .ontology-builder/ leaves a
tool-agnostic, repatriation-safe bundle.
Findings by 4-level severity. A class cycle is a HARD_FAIL halt; count ≥ 250 is a
HARD_PAUSE; missing owl:inverseOf partners and non-most-general attachment are WARN.
Vendored owl2shacl rules run via pyshacl advanced=True to materialize shapes, then partition into
structural.ttl (auto) + policy.ttl (SME-confirmed). 14-construct gap report seeds manual.ttl.
On regeneration, a triple-set diff detects tightened constraints (maxCount lowered, facet narrowed) across every policy-routed predicate and demands a justification note before re-lock.
Every class gets a conforming gold instance; every CQ yields a non-empty answer; every policy shape gets an edge-case that trips it with the expected violation.
A 5-component score ranks reuse candidates per scoped term; a license-incompatibility detector gates each accept. Server-verified provenance on every term.
Each CQ-NNN.rq runs against gold instances; byte-exact compare to expected/CQ-NNN.json.
Per-CQ answerable flag + coverage %, kept distinct from regression.
Any SHACL violation on the customer's own gold fixtures, or any CQ regression failure, makes finalize
raise and the validate step is not recorded. Zero violations on publish, or publish is blocked.
Every rdflib/pyshacl parse uses source=, never location=<URL>; owl2shacl rules load from
vendored local TTL. An AST lock keeps the whole package outbound-clean.
Hand-authored shapes the generator can't produce — the credit LTV ≤ 0.8 / DTI ≤ 0.43 xsd
facets — live in manual.ttl, which regeneration is forbidden to overwrite. Byte-identity tested.
A structured checklist scores "concepts I'd have included" vs "concepts present", plus predicate-coverage and CQ-answerability — ≥ 80% on both test domains. Tooling ships; real-SME sign-off is human-gated.
Hard 500-line cap per file, split before crossing. Tests, types, error handling, and metadata-only structured logging on every commit — no MVP shortcuts.
Opt-in only, and it never captures customer-private content — no extracted terms, no document text, no SME replies. Only methodology-friction signals, behind a pydantic field-allowlist.
/ontology:resume recovers the reply days later ↓ontology.ttl + ontology.owl RDF/XML mirrorshapes.ttl + valid/invalid fixturesgold/ conforming + edge-cases/ must-violatesparql/CQ-NNN.rq + expected/CQ-NNN.jsonrm -rf → tool-agnostic, repatriation-safe bundle/ontology:scope reads the bundle's sources/, proposes 8–15 competency questions, locks the ORSD, and fires the first SME review on the channel.reuse-scout ranks LOV/schema.org/Wikidata candidates with license gates; extract_terms + term-clusterer triage the inventory and cluster synonyms.finalize_locked emits the map then ontology.ttl.owl:inverseOf partner; owl2shacl materializes shapes, partitioned + SME-confirmed.run_validation composes the shapes, runs conformance + CQ regression, and hard-blocks on any violation./ontology:resume renders the OD101 step map from session state and captures pending SME replies from the recorded channel anchor — any session resumable cold by session_id./ontology:publish renders docs + the eval report, commits the complete bundle, and pushes — triggering the 5 real CI gates that decide publishability (Phase 8).scope + HITL resilienceReal RAG competency-question proposal · ORSD emission · absolute-message-ID channel persistencereuse + license disciplineReal reuse-scout across LOV/schema.org/Wikidata · 5-component ranking · per-term provenance · license-incompatibility detectorterms + classesReal term extraction + synonym clustering + OD101 hygiene hooks + concept-map render before RDFproperties + real SHACLFused slots+facets · generate_shacl_shapes via owl2shacl+pyshacl · structural/policy partition · 14-construct gap report + manual.ttlinstances + validate + CI gates + sign-offReal instance coverage · run_validation hard-block · both bundles ship · SME ≥80% tooling · ONBD-04 reproducibility — 5/6 plans done, live two-bundle dogfood pendingpublish + telemetry + M4 plasticityWidoco/AR2DTool/OOPS! docs pipeline · opt-in telemetry with field-allowlist · /ontology:translate-to-plasticity stretch