Inspect graph changes over time and ontology version diffs in Semantica. Uses ContextGraph.state_at for point-in-time graph state and change_management.VersionManager for ontology versioning.
61
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./plugins/skills/change/SKILL.mdTrack what changed. Usage: /semantica:change <task> [args]
Two distinct mechanisms cover this, and they are not interchangeable:
Question Tool "What did the graph look like on date X?" ContextGraph.state_at()"What changed between ontology versions?" change_management.VersionManager
graph-at <timestamp> — point-in-time graph stateimport os
from semantica.context import ContextGraph
graph = ContextGraph()
graph.load_from_file(os.path.expanduser("~/.semantica/kg.json")) # load_from_file does not expand ~
snapshot = graph.state_at("2026-06-01") # str | int | float | datetimeDiff two moments by comparing node IDs — state_at()["nodes"] is a list of
dicts (unhashable), so compare the id fields, not the dicts themselves:
before = graph.state_at("2026-06-01")
after = graph.state_at("2026-09-01")
before_ids = {n["id"] for n in before["nodes"]}
after_ids = {n["id"] for n in after["nodes"]}
added = after_ids - before_idsFor richer temporal work (scrubbing, evolution, temporal patterns) use
/semantica:temporal, which wraps the same layer.
node-history <node_id> — who touched this nodeNode-level history is provenance, not change management:
import os
from semantica.provenance import ProvenanceManager
db_path = os.path.expanduser("~/.semantica/prov.db") # storage_path is passed to
os.makedirs(os.path.dirname(db_path), exist_ok=True) # sqlite3.connect() unexpanded
pm = ProvenanceManager(storage_path=db_path)
history = pm.revision_history(node_id)
log = pm.audit_log(since="2026-01-01")versions / diff <v1> <v2> — ontology versioningfrom semantica.change_management import VersionManager
vm = VersionManager()
vm.create_version("1.1.0", ontology)
vm.list_versions()
vm.get_latest_version()
delta = vm.compare_versions("1.0.0", "1.1.0")
delta = vm.diff_ontologies(base_ontology, target_ontology)
migrated = vm.migrate_ontology("1.0.0", "1.1.0", ontology)TemporalVersionManager and OntologyVersionManager are also exported for
time-scoped and ontology-specific variants.
05aec19
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.