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 skills add edg-l/engram-mcp --skill read-handoffsgit clone --depth 1 https://github.com/edg-l/engram-mcpWrote 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/edg-l/engram-mcp/read-handoffs)<a href="https://agentmods.dev/skills/edg-l/engram-mcp/read-handoffs"><img src="https://agentmods.dev/badge/skills/edg-l/engram-mcp/read-handoffs/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/edg-l/engram-mcp/read-handoffs"><img src="https://agentmods.dev/badge/skills/edg-l/engram-mcp/read-handoffs.svg" alt="Reviewed on agentmods" width="80" 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.1 | $0.00036 | $0.01284 |
| Opus 5.5 | $0.00014 | $0.00514 |
| Sonnet 5.5 | $0.00007 | $0.00257 |
| Haiku 4.5 | $0.00004 | $0.00128 |
Grade A, and why
read-handoffs 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 7d 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.
How it starts
The opening of the file, as written. The whole thing — 51 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Load session context from Engram via the mcp__engram__handoff_resume MCP tool. Engram is the canonical store; legacy .claude/handoff/*.md files were ported via engram-port-handoffs and are no longer read.
Steps
-
Call
mcp__engram__handoff_resume, passingbranchfromgit branch --show-current. Other defaults:max_sections: 5,include_off_branch: false.Pass the branch explicitly for the same reason
handoffwrites it explicitly: the server falls back to the branch of the directory it was launched in, so a session started in the main clone but working in a worktree would resume the wrong branch and report "no prior handoffs". Omitbranchonly when not in a git repo. -
Inspect the result. Engram returns:
branch— the resolved branch (ornullif detached HEAD)latest_handoff_id— most recent handoff on this branchchain— handoff ids ordered oldest-to-newest viacontinues_from(capped at depth 5, cycle-detected)open_todos— the project's live open todo list for this branch, from the durable store rather than any handoff, as{id, title}items ordered by importance, then most recently updated. Returned outside the similarity ranking, and present even when no handoff existsopen_todo_count— the true number of open todos;open_todosis capped, so this can be largerstale_todo_count,stale_todo_ids— open todos untouched for 30+ active store-days, oldest first (at most 5 ids)open_blockers— the newest handoff's unresolved blockers verbatim, also outside the rankingtop_sections— highest-scoring sections across the chain, each withhandoff_id,section_name,section_text,scorelinked_memories— decision/pattern/debug memories the latest handoff links to viaderived_frommessage— only present when branch could not be resolved
-
Handle the empty case. If
chainis empty ANDlatest_handoff_idisnull, say "No prior handoffs on this branch." Then callmcp__engram__handoff_resumeagain withinclude_off_branch: trueto surface handoffs from other branches as background. Note thatopen_todosis still meaningful here — a project can have todos before its first handoff, so report them even when no handoff was found. -
Handle detached HEAD. If
messageis set, tell the user no current branch was detected and present whatever off-branch results came back, flagged as such. -
Present to the user, in this order:
- Status line:
Resuming \`, handoff(s) in chain, latest from ` - Open todos / blockers: print
open_todos(title and id) andopen_blockersin full, before anything else. They are the open state of the work and are not subject to the ranking. Whenopen_todo_countexceeds the items returned, say how many more there are and thatmcp__engram__todo_listlists them.open_todosis the durable list — treat it as the authoritative record of outstanding work, and reconcile it withmcp__engram__todo_writeas you go rather than only at session end. - Stale todos: when
stale_todo_countis above 0, name the stale ids and offer to finish, edit, or drop each one (a drop needs a reason). A todo nobody touches for a month of active work is usually done or dead. - Top sections: summarize each
top_sectionsentry. Group byhandoff_idif multiple sections come from the same handoff. Quote the strongest section text verbatim; paraphrase weaker matches. Call out anytriedsection as approaches already ruled out. - Linked memories: bullet list of
linked_memorieswith their type and content preview ("Related decision: ...", "Related debug: ...").
- Status line:
-
Pair with
mcp__engram__memory_context. Call it with a short description of the inferred current task (derived fromtop_sectionsandlinked_memories). Surface any additional memories that didn't come through the handoff chain. -
Closing note. End with a one-liner: which handoff in the chain is the working starting point, and whether you followed any cross-references the user might want expanded.
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.
- 7d ago Changed · +9 lines 1b74ff17dc26
- 1mo ago First seen · 42 lines · 36 tokens per session scan A e9b10c31ec36
read-handoffs is a skill published in the GitHub repository edg-l/engram-mcp (18 stars, last pushed 8d ago), licensed Apache-2.0. It adds 36 tokens to every session and 1,284 once invoked, about $0.0001 per session on Opus 5.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
engrama-onboard
Build a personalized Engrama memory graph for any user through a conversational interview. Use this skill whenever someone says "set up Engrama", "create my graph", "onboard", "build my profile", "configure Engrama for me", or asks how to start using Engrama. Also use when the user mentions they have a different role…
memory-review
Memory hygiene audit -- finds stale facts, contradictions, low-confidence entries, and consolidation candidates in Pensyve memory. Use periodically to maintain memory quality.
session-memory
End-of-session memory capture -- classifies session signals using a tiered taxonomy and stores confirmed items via Pensyve. Use when ending a work session or when the user wants to capture what was learned.
context-loader
Session-start context loading -- loads historical decisions, issues, and patterns from Pensyve to provide cross-session continuity. Use at session start or when switching context.
memory-informed-refactor
Pre-refactor context briefing -- loads relevant prior decisions, failures, and pitfalls from Pensyve memory before refactoring a module. Use before any refactor to avoid repeating past mistakes.
memory-informed-longitudinal-work
Long-running multi-session work (research, eval loops, iterative benchmarks) with continuity -- resume prior lessons, capture per-run outcomes, build up stable truths over time. Use for eval/research/benchmark work that spans sessions.