engram

A project memory tool that stores decisions, principles, cautions, problems, and useful insights in a local graph. It keeps the reasons behind important choices available across work sessions.

In plain words
What is it for?
Recalling project reasoning before substantial work and recording important decisions, solutions, warnings, and insights.
Why use it?
It reduces repeated discussions and helps future sessions avoid known problems while keeping the memory focused on durable, useful knowledge.

Skill for Claude CodeCodex

Install

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.

agentmods
npx agentmods add skills/techtheist/engram/normal
Any agent
npx skills add techtheist/engram --skill normal
Clone the repo
git clone --depth 1 https://github.com/techtheist/engram

Made for: Claude Code, Codex.

Per session 72 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 6,411 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin 92% copy Near-identical to another mod in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00072 $0.06411
Opus 5 $0.00036 $0.03206
Sonnet 5 $0.00014 $0.01282
Haiku 4.5 $0.00007 $0.00641

Measured yesterday against content hash e4e4a25cee3e, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

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 yesterday.

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.

Origin

This is a copy

92% identical to engram — 30 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.

skills/engram/normal/SKILL.md · 193 lines

How it starts

The opening of the file, as written. The whole thing — 193 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Engram — project memory (Normal)

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 Normal variant: balanced capture. Save what a future session would genuinely want to know; skip noise.

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).

  • At the start of a session, call brief once: 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 search with a natural-language description of what you're about to do. Hits carry their 1-hop neighbors, conflicts-with/replaces first — read those especially. Search takes a detail level — start compact (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 confidence verdict. 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 weak or none verdict, 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", or during_version when 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. search takes after / 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) — plus during_version ("0.8.4", resolved from the graph's own recorded version switches) and order (chronological to read how something developed, recent for 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 on scope: "memory" and scope: "history". Hits carry created_at, so a result's place in time is always visible.
  • Use get_node / traverse to pull the reasoning around a hit (e.g. a Decision and the Principle it stands on).
  • For history: timeline walks a node's replaces chain oldest-first, each retired generation carrying the note that explains why it was replaced. audit pages the mutation journal — "what changed while I was away", "who wrote this".
  • For whole-graph work: list_nodes pages complete nodes (full bodies, filters by type/status/tag) — the lossless read for reviews and exports like a decisions.md; update_nodes / add_notes batch a curation sweep or a multi-note capture into one call (same per-item dupe checks and warnings).
  • list_open shows the live worklist (open Problems and Intents) — check it when picking up work.

Read the full file on GitHub · 193 lines

Changes

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.

  1. yesterday First seen · 193 lines · 72 tokens per session scan A e4e4a25cee3e

Subscribe to this mod's changes

engram is a skill published in the GitHub repository techtheist/engram (17 stars, last pushed yesterday), licensed MIT. It adds 72 tokens to every session and 6,411 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. It is 92% identical to engram, differing in 30 lines, and is treated as a copy.

Related

Other skills, from other repositories

runaway-context

Use this skill when working in a project that has a RunawayContext v3 install. It loads the project's brief from the auto-generated Tier 3 markdown, queries knowledge.db for relevant lessons and chunks, and routes writes through the contract-enforced Client (HR-2 / HR-3 / HR-9). Trigger when the conversation enters a…

sms021/RunawayContext · 111 tokens

memory

Unified project memory management: update, prune, reflect, and maintain knowledge. Combines conversation scanning, deduplication, contradiction detection, confidence scoring, and consistency checks in a single skill. Usage: /memory update [topic] — scan conversation, persist learnings /memory prune [type] — find…

SomeStay07/claude-memory-skill · 130 tokens

thoughtline-memory

Persistent, project-aware memory for AI coding agents. Use thoughtline whenever you make a decision, fix a bug, learn something non-obvious, or need to recall prior work.

AgusLoza2021/Thoughtline · 40 tokens

weekly-digests

Generate a serial week-by-week narrative digest of a project's full claude-mem timeline. Splits the timeline into per-ISO-week files, then runs one consecutive subagent per week — each receiving the prior week's carry-forward block — to produce one chapter per ISO week of data. Use when asked for "weekly digests"…

thedotmack/claude-mem · 93 tokens

browserwing-admin

Manage and operate BrowserWing — an intelligent browser automation platform. Install dependencies, configure LLM, create/manage/execute automation scripts, use AI-driven exploration to generate scripts, browse the script marketplace, and troubleshoot issues.

MemTensor/MemOS · 47 tokens

review-offered-task

Review a task that has been offered to you and decide whether to accept or reject it.

desplega-ai/agent-swarm · 22 tokens