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/techtheist/engram/relaxednpx skills add techtheist/engram --skill relaxedgit clone --depth 1 https://github.com/techtheist/engramWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/techtheist/engram/relaxed)<a href="https://agentmods.dev/skills/techtheist/engram/relaxed"><img src="https://agentmods.dev/badge/skills/techtheist/engram/relaxed.svg" alt="Measured on agentmods" height="20"></a>What 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.00078 | $0.06647 |
| Opus 5 | $0.00039 | $0.03324 |
| Sonnet 5 | $0.00016 | $0.01329 |
| Haiku 4.5 | $0.00008 | $0.00665 |
Grade A, and why
engram 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 4d 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.
This is a copy
100% identical to engram — 0 lines differ, which has more behind it and is treated as the original. This page carries a canonical link to it rather than competing with it.
How it starts
The opening of the file, as written. The whole thing — 197 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Engram — project memory (Relaxed)
Engram is a local, user-owned graph of why things are the way they are in this project: decisions and their reasons, gotchas that bit us, problems and how they were solved, stable preferences. Not code structure, not implementation detail — the codebase already holds those.
What good capture buys. A session that recalls well starts where the last one stopped: settled decisions don't get relitigated, known rakes don't get stepped on twice, and "why is it like this?" gets a real answer instead of archaeology. A session that captures well pays that forward. And because the graph is a pane the user curates — not hidden plumbing — every node you write is something they will see. That's also the failure mode to respect: a graph that's noisy or wrong stops being trusted, and an untrusted graph stops being read. Quality of nodes, honesty of edges, and closed loops matter more than volume.
This is the Relaxed variant: capture only durable, high-value, non-obvious knowledge. When in doubt, prefer fewer, better nodes.
Claude Code already has memory of its own (CLAUDE.md, auto-memory) — don't mirror it. Engram is additional: it holds the project's reasoning — decisions with reasons, conflicts, gotchas — not user preferences, session workflow, or code structure.
You interact with it through the engram MCP tools. Three jobs: recall (read before you act), capture (write durable knowledge after you act), and maintenance (keep what's already there honest).
Recall — brief first, then search
- At the start of a session, call
briefonce: a compact digest of the canon — unresolved conflicts, suspects to judge, recent changes, the open worklist, principles, decisions, cautions. Every record carries its node id; act on ids directly. If the session already opens with an injected "# Engram brief" (the session-start hook provides it), that IS the brief — read it and don't call the tool again. - Before any non-trivial decision, call
searchwith a natural-language description of what you're about to do. Hits carry their 1-hop neighbors,conflicts-with/replacesfirst — read those especially. Search takes adetaillevel — startcompact(id/title/score only) when scanning broadly, default snippet when working,full(bodies attached) only for the hits you'll actually act on: expand on demand instead of paying for depth up front. If a prior Decision or Caution covers your situation, follow it or, if you're about to contradict it, surface that to the user. - Respect the reply's
confidenceverdict.strong— the top hit cleared the calibrated line; act on it.weak— likely not in memory: nothing cleared this graph's calibrated line (auto-tune fits it per graph), so the hits are the nearest candidates rather than a found answer — they are never cut, but verify against the code or the user before relying on one.none— the graph is silent: say so instead of inventing a memory, and capture the fact once this session establishes it. Weak tail hits and the noise past the score cliff are already trimmed before delivery, so what arrives is what deserves your attention. - On a
weakornoneverdict, reformulate before concluding absence. One phrasing is one probe, and the graph's register is rarely the user's: try two or three angles before deciding the memory isn't there — entity-first (name the thing: "tepin store lock", not "why won't the daemon start"), paraphrased into the graph's vocabulary (the words a note would have used, not the words the question used), and date-anchored (after: "last week", orduring_versionwhen you roughly know the cycle). Each is one cheap call. Only after that is "the graph is silent" an honest answer rather than a failed first guess. - Scope in time when the question is temporal.
searchtakesafter/before— a day (2026-08-14), an ISO instant, or a relative expression the daemon resolves (today,yesterday,last week,last 3 days,2 hours ago,a month ago,this year) — plusduring_version("0.8.4", resolved from the graph's own recorded version switches) andorder(chronologicalto read how something developed,recentfor the current value of something that changed). Don't compute dates yourself — pass the expression and let the daemon resolve it against one clock. The window filters before the confidence verdict, so a scoped verdict describes the scoped set, and the same grammar works onscope: "memory"andscope: "history". Hits carrycreated_at, so a result's place in time is always visible. - Use
get_node/traverseto pull the reasoning around a hit (e.g. a Decision and the Principle it stands on). - For history:
timelinewalks a node'sreplaceschain oldest-first, each retired generation carrying the note that explains why it was replaced.auditpages the mutation journal — "what changed while I was away", "who wrote this". - For whole-graph work:
list_nodespages complete nodes (full bodies, filters by type/status/tag) — the lossless read for reviews and exports like a decisions.md;update_nodes/add_notesbatch a curation sweep or a multi-note capture into one call (same per-item dupe checks and warnings). list_openshows the live worklist (open Problems and Intents) — check it when picking up work.
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.
- 4d ago First seen · 197 lines · 78 tokens per session scan A e711f0d529fa
engram is a skill published in the GitHub repository techtheist/engram (18 stars, last pushed yesterday), licensed MIT. It adds 78 tokens to every session and 6,647 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 100% identical to engram, differing in 0 lines, and is treated as a copy.
Other skills, from other repositories
garden-tending
Tend the knowledge garden — diagnose vault health, condense project memos into project.md overviews, create/merge cross-project topics, fix broken links, archive superseded notes, extend trails. Trigger on "tend the garden", "condense", "update project overview", "check vault health", "where are we with X?", "what…
curator-practice
Operating philosophy for autonomous memex curator tending — orientation protocol, signal triage, bounded work units, initiative thresholds, logging conventions. Trigger on cron-launched runs with no user prompt, "use your judgment", "tend without instructions", "do a pass on the vault", "I'll be away — do what needs…
recall
Retrieve session memory across 4 modes — TEMPORAL (date browsing), KEYWORD (FTS lookup), DEEP (cross-session synthesis), LOAD (specific file). Trigger on "what did I do yesterday/last week", "why did we...", "remind me...", "find the memo about...", "last time we...", "patterns across projects", "load the X topic". Do…
memo-writing
How to write effective session memos — format, frontmatter schema, observation extraction, topic-signal append. Trigger on /memex:save, "save this for later", "remember this", "save what we discussed", "document this session", "create a memo", or when the [memex] activity nudge appears in context. Do NOT trigger for…
health
Vault health audit — orphans, broken links, type-aware stale-review candidates, growth stats. Use whenever the user mentions vault maintenance, orphans, broken links, 'is my vault clean', 'проверь vault', 'сироты', 'битые ссылки', 'здоровье базы знаний', 'здоровье памяти', 'здоровье обсидиана', or asks for vault…
save
Use right after something worth keeping appears — you solved a tricky bug, made a non-obvious decision, hit a gotcha, or the user voiced a business rule, a pain, or how they think/decide — proactively, without being asked, so a future session doesn't relearn it. Also when the user says 'remember this', 'save this'…