Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add skills/obneyai/grain/event-modelnpx skills add ObneyAI/grain --skill event-modelgit clone --depth 1 https://github.com/ObneyAI/grainWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00065 | $0.00532 |
| Opus 5 | $0.00032 | $0.00266 |
| Sonnet 5 | $0.00013 | $0.00106 |
| Haiku 4.5 | $0.00006 | $0.00053 |
Grade A, and why
event-model scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 3d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
What it actually says
Event Model
An Event Model is {area -> service-area} EDN. Areas contain :commands,
:events, :read-models, :queries, :todo-processors, :periodic-tasks,
:screens, and :flows. Blocks use :<area>/<name> keys; identity is
[kind name] because kinds come from structural position.
Legal flow adjacency:
command -> event -> read-model -> query -> screen
query -> todo-processor -> command
screen -> command
read-model -> command
periodic-task -> command | event
Processor :subscribes is event trigger wiring, not a flow input. Commands and
queries :reads target read models. Production/read declarations at def* sites
use :grain.event-model/produces and :grain.event-model/reads.
Behavioural trace
Commands must link to at least one Allium rule and screens to at least one Allium surface for the dev/CI composition gate:
:grain/allium
[{:spec "components/orders/orders.allium"
:kind :rule
:name "PlaceOrder"}]
Paths are safe repository-relative .allium paths. Optional references on other
blocks and flows must also resolve. Never add :given-when-thens; behavior lives
in Allium.
Oracle
Over the project nREPL, require:
[ai.obney.grain.event-model.interface :as em]
[ai.obney.grain.event-model-validator.interface :as emv]
[ai.obney.grain.code-agent-tools.interface :as tools]
Use (em/registered-model), (tools/catalog),
(emv/validate-event-model model {:strict true}),
(tools/event-model-coverage model), and
(tools/validate-spec-composition model {:project-root "." :event-model-opts {:strict true}}).
The last call requires the Allium CLI and is dev/CI-only. Production boot uses
emv/verify-or-throw! and never requires Allium source or tooling.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 3d ago First seen · 60 lines · 65 tokens per session scan A 9d09040407d8
event-model is a skill published in the GitHub repository ObneyAI/grain (118 stars, last pushed 4d ago), licensed MIT. It adds 65 tokens to every session and 532 once invoked, about $0.0003 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
project-graveyard
Scans the developer's machine for dead side projects, autopsies each one from its git history (died at the payments wall, killed by a newer project, finished but never shipped), surfaces their personal death patterns, and picks the corpse most worth resurrecting — then helps ship it. Use when the user mentions…
web-app-penetration-testing
Pentest a web app or website end to end — black-box testing of a live URL, staging environment, or local dev server that finds and exploits real vulnerabilities (auth bypass, broken access control, IDOR, injection, XSS, SSRF, business logic) and proves each one with a working proof-of-concept instead of a signature…
haiku
When writing a haiku for this bot, follow these conventions.
deploy-docker-compose
Run the Omnigent server as a Docker compose stack (server + Postgres) on any Docker host — your laptop, a VPS, EC2 by hand, or as the base layer of any container-platform deploy. Invoke when the user wants to build the image, bring up the compose stack, debug the stack on a host they already have, or extend the stack…
azure-mgmt-botservice-dotnet
Azure Resource Manager SDK for Bot Service in .NET. Management plane operations for creating and managing Azure Bot resources, channels (Teams, DirectLine, Slack), and connection settings. Triggers: "Bot Service", "BotResource", "Azure Bot", "DirectLine channel", "Teams channel", "bot management .NET", "create bot".
babysit
Same-session monitoring loop for PRs, CI runs, tickets, and deployments using the monitorstart / monitorupdate / autonudgestop MCP tools. The loop re-injects your check instructions into THIS session on an idle interval — same context, same tools — and works from dashboard chat, Slack threads, and Discord DMs. Use…