Building Agent Memory with the Ontology Skill: A Knowledge Graph for Clawdbot
Ever wanted your AI agent to actually remember things in a structured way? Not just dumping text into a file, but maintaining real relationships between people, projects, tasks, and events? The Ontology skill from ClawdHub gives you exactly that - a typed knowledge graph that lives in your workspace.
What Problem Does This Solve?
Most agent memory solutions are either too simple (append-only text logs) or too complex (full database setups). The Ontology skill hits a sweet spot: structured enough to enforce constraints and query relationships, simple enough to run as flat files without infrastructure.
If you have ever wanted your agent to:
- Remember that Alice works on Project X
- Track which tasks block other tasks
- Query all open tasks for this project
- Link email commitments to actual TODO items
...this skill is for you.
Installation
npx clawdhub@latest install ontologyThen initialize your ontology storage:
mkdir -p memory/ontology
touch memory/ontology/graph.jsonlCore Concepts
Everything in Ontology is an entity with:
- A type (Person, Task, Project, Event, etc.)
- Properties (name, status, due date)
- Relations to other entities (has_owner, blocks, depends_on)
The data lives in memory/ontology/graph.jsonl as append-only JSONL - easy to inspect, version control, and debug.
Configuration: Schema Constraints
The real power comes from constraints. Create memory/ontology/schema.yaml:
types:
Task:
required: [title, status]
status_enum: [open, in_progress, blocked, done]
Project:
required: [name]
Person:
required: [name]
relations:
has_owner:
from_types: [Project, Task]
to_types: [Person]
cardinality: many_to_one
blocks:
from_types: [Task]
to_types: [Task]
acyclic: trueNow every mutation gets validated before committing. Try to create a Task without a title? Rejected. Try to make Task A block Task B which blocks Task A? Caught.
Usage Examples
Example 1: Create People and Projects
python3 scripts/ontology.py create --type Person --props '{"name": "Alice"}'
python3 scripts/ontology.py create --type Project --props '{"name": "Website Redesign"}'Example 2: Link Entities with Relations
python3 scripts/ontology.py relate --from proj_001 --rel has_owner --to p_001
python3 scripts/ontology.py create --type Task --props '{"title": "Design mockups", "status": "open"}'
python3 scripts/ontology.py relate --from proj_001 --rel has_task --to task_001Example 3: Query the Graph
python3 scripts/ontology.py query --type Task --where '{"status": "open"}'
python3 scripts/ontology.py related --id proj_001 --rel has_task
python3 scripts/ontology.py validatePro Tips
-
Append-only is your friend. The skill preserves history. Never overwrite graph.jsonl - always use the CLI to add operations.
-
Cross-skill communication. Other skills can read and write ontology objects. Your email skill can create Commitment entities when you promise something, and your task skill picks them up automatically.
-
Plan as graph transformations. Model multi-step work as a sequence of creates and relates. Each step validates before execution with rollback on constraint violation.
-
Start with the schema. Define your types and constraints upfront. Much easier than cleaning up malformed data later.
-
For larger graphs, migrate to SQLite. The JSONL format is great for getting started, but the skill supports SQLite migration for complex use cases.
Conclusion
The Ontology skill brings real knowledge graph capabilities to Clawdbot without requiring a database server or complex setup. Perfect for agents that need structured memory about people, projects, tasks, and their relationships.
Links:
- Ontology on ClawdHub
- Author: @oswalpalash
Give it a try and let your agent actually remember things!
Comments (0)
No comments yet. Be the first to comment!