There has been a bunch of discourse in the AI space about how to get agents the correct context. Following along with those discussions, I’ve built a system that seems to work quite well for me and thought others may find it interesting.

I have a CLI called knowledge which is a frontend for authoring and querying small facts. An example fact from my personal corpus is:

❯ knowledge get rootly-channel-created-with-incident
---
id: rootly-channel-created-with-incident
topic: rootly
scope: parloa-org
learned_at: '2026-06-10'
last_verified_at: '2026-06-10'
valid_until: null
invalidated_at: null
invalidation_reason: null
confidence: high
source: session-2026-06-10
---

Rootly creates the Slack incident channel at the moment of incident creation.
The channel's earliest message timestamp equals incident.created_at, so
per-incident Slack channel content cannot reveal any pre-creation routing or
ack latency.

This isn’t particularly exciting on its own. It’s more interesting in how it integrates with my local coding harness setup. When a session is started, I have a Claude hook which will dump the topic list into the session with a message like ‘Hey.. if you want any information about these topics.. you can do a knowledge list --topic <topic> to get more info’. 61% of my last ~1500 sessions did a fetch for fact details after listing a topic. 35% of all reads happen in the first quarter of a session while it’s priming information. This is approximately what I’d expect/hope for, so I take both of these as positive signals. The robot is correctly gathering information from the skill and doing so at the correct time.

As the sessions run, there are periodic nudges from hooks that encourage the agent to file some facts (but not too many) that it notices. These go into a “pending verification” queue, and there’s a small UI for me to review those. There’s duplication checking as well to ensure we don’t get too many differently worded but semantically identical facts.

The natural extension is to make the skill multi-player instead of single-player. This is a trap, at least at the scale I’m operating on. My system doesn’t solve many important things like access controls, different perspectives on the data (e.g. in a multi-player system, two people can believe two conflicting things about a topic). It doesn’t proactively gather facts. It doesn’t proactively seek to disprove facts or keep them fresh. This goes much deeper than I’ve gone, but where I’ve gone is still useful.

I’m also not entirely sure how well this scales. I’m at 277 facts after using it for a few months.

You can find the knowledge-skill on GitHub.