Part 5 of a series on giving AI coding agents shared organizational memory. Previously: Part 1 — Your AI coding agent has amnesia · Part 2 — I was measuring the wrong thing · Part 3 — No vector DB. No embeddings. No RAG. · Part 4 — Knowledge, not logs.
Two files define what a note is. Two skills do the writing and reading.
/memorize and /recall. That’s the whole interface to Cortex. They’re Claude Code skills. Markdown files in .claude/skills/, ~50 lines each. Prompts, not code. No retrieval pipeline. No daemon. Two slash commands and the agent does the rest.
/memorize — distills the session into a note
Run it at session end. The skill scans what got touched, what got decided, what gotchas surfaced. Drafts a note matching _conventions.md. Shows the engineer for review. On approval, commits and pushes (soon: opens a PR for a curator to review — more on that in a later post).
The agent does the writing. The engineer reviews and edits. That inverts how people usually think about documentation, where the human writes and the tool stores. Here the tool drafts and the human gates. Drafting is the friction. Gating is the part humans are actually good at.
The output is shaped before the agent starts. /memorize loads _taxonomy.md and _conventions.md first, then drafts. Tags come from the taxonomy. Sections come from the conventions. “Knowledge, not logs” is in the prompt. So is “short beats long.” The note that comes out fits the vault because the rules are loaded before anything is written.
/recall — pulls in what’s already known
Run it at session start. Or in the first prompt: “recall anything about the service-alpha billing endpoint.” The skill greps the vault on tags, services, and file paths from the current repo, ranks by recency and confidence, presents matches, loads the ones the engineer accepts into context.
It loads on accept, not by default. Grep returns filenames and frontmatter — cheap to scan, small footprint. Only the notes the engineer picks get their full bodies pulled in. Twelve candidates plus three accepted notes costs a fraction of pulling all twelve. Keeps the engineer in the loop on what their agent is being told about their codebase.
Filename is the first-pass filter. service-alpha--rate-limiting-middleware--2026-03-14.md tells you what it’s about before you open it. Engineers skim filenames the way they skim PR titles. Saves the agent from loading a note nobody wanted.
The query is structured, not semantic. grep -l "tool/datadog" memory/ | xargs grep -l "pattern/monitoring" returns every Datadog monitoring note, deterministically. No “the embedding kind of agreed.” Either the tag is there or it isn’t.
Examples
Real notes from Cortex. Sanitized, not dressed up. Three excerpts.
Datadog custom-metrics cost audit. The kind of thing nobody writes a Confluence page about because it’s “just operations”:
The “Metrics without Limits” UI control does nothing for Istio. Istio, Redis integration, etcd, etc. are integration metrics — allowlisting tags via the UI/API on them silently no-ops. You must use
exclude_labelsat the agent level.
Twelve months from now nobody will remember this. The note costs five minutes to write. Saves the next engineer two hours of why-isn’t-my-fix-doing-anything debugging. Precious.
Service Beta CI integration tests. The convention behind a one-line decision:
httpx against a container, not TestClient. TestClient skips middleware and env-dependent routing. Got burned on both in prod.
Cold Claude Code defaults to TestClient because that’s the FastAPI standard. Memory Claude Code uses httpx because the note tells it to. That single line was a chunk of the correctness gap in Part 2’s experiment. Specific.
Dagster Pipes migration. The kind of note you sigh while writing:
Don’t put stateful logic in op decorators. Ops re-run on server restarts and partial sensor evaluations. Anything stateful goes in a Resource.
Not interesting. Not a hot take. The next person migrating a pipeline skips a half-day of debugging. Unglamorous.
That’s the vault. Not architecture diagrams. Not best practices. Not careers page material. The stuff that leaks out when people leave or change teams.
Skills are thin because the convention does the work. /memorize is a prompt that loads two files and drafts. /recall is grep with a presentation layer. The “intelligence” people expect of a memory system isn’t in the skills. It’s in the rules the skills carry into the model’s context.
Two slash commands. The vault does the rest.
Next post: how it got installed. One bash command, no path config, real adoption numbers.