By toejough
Build persistent, self-correcting memory for Claude Code sessions — capture lessons, corrections, and facts as structured vault notes, then automatically retrieve them at relevant moments to inform multi-step task execution and subagent routing.
Capture lessons from this session as permanent vault notes
Drive an ask end-to-end through the fixed seven-step orchestration workflow
Recall relevant notes from the agent-memory vault
Route a unit of work to an appropriately-scoped subagent (agent type, model, effort)
Use after completing any action we started with a recall call, or after any work that involved more than one tool call or more than quick shallow thinking. Also use immediately on explicit save-requests like "remember this", "remember that X", "save that for later", "note for next time", "don't forget X", "write this down". Also use at session end when a conclusion, design, or finding you presented was later overturned or corrected. Also use when a specific approach was confirmed to work — the user explicitly praised a specific behavior, or a genuine guess or uncertain call you acted on turned out right. This preserves relevant memories that are VITAL to recall for a good user experience and a greater chance at first-pass success for similar work in the future.
Use when the user asks you to take a task end-to-end. Triggers on the explicit slash form `/please <ask>` and on natural-language phrasings of the same intent: "please do X", "please work through X", "please take care of X", "work through X end-to-end", "take this end-to-end", "drive X to completion", "see this through". An `<ask>` argument is required — without one, ask the user a single clarifying question and wait. Do not fire on casual uses of "please" attached to a single trivial action ("please read this file", "please rename this var") — fire only when the user is handing over a multi-step piece of work to be carried end-to-end. The explicit slash form `/please <ask>` is an opt-in and always fires regardless of how trivial the ask looks — the user chose the workflow deliberately.
Use after any user request that might entail more than a single tool call or anything more than quick, shallow thinking. This surfaces relevant memories that are VITAL to recall for a good user experience and a greater chance at first-pass success for the user's request.
Use when you are about to dispatch a subagent and must decide its agent type, model, and effort level. Triggers on any delegation decision, and when you recognize a unit is too large for one focused agent and needs decomposition before dispatch.
Executes a vault write handed off by another skill (recall, learn): composes the engram command from the provided fields, runs it, verifies the result, and reports the written note path. Requires a handoff — do not fire on your own judgment that something is worth remembering.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge. GitHub access is read-only (username + org membership).
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
⚠️ Breaking change. The pre-vault TOML memory-record storage layer (
~/.local/share/engram/memory/) was removed. Engram now writes only to an agent-memory Obsidian vault. Migration from the old layout is not automated. An LLM should be able to migrate easily.
Engram gives Claude Code and OpenCode agents persistent memory via a zettelkasten-style vault. Two skills — recall and learn — read from and write to an agent-memory vault on demand; at their write sites they hand off to write-memory, a worker skill that composes and executes the vault-write commands. A further skill, please, orchestrates end-to-end work by sequencing recall, learn, and other skills around a user's <ask>, and route encodes the delegate-everything doctrine please draws on to staff its subagents. recall, learn, and write-memory shell out to the engram binary; please and route are pure meta-orchestration.
Harness support is asymmetric. engram update installs the skills into both Claude Code and OpenCode (plus the slash commands for OpenCode), and the vault is harness-agnostic — so recall and learn work the same on each. The gap is on the ingest side: automatic sweeping of raw session transcripts into the chunk index currently reads Claude Code JSONL only. OpenCode stores its sessions in a SQLite database that the file-based sweep can't see, so an OpenCode agent's own conversation history is not yet auto-ingested (tracked in #644).
After a few months of use, the vault's wikilink graph looks like this in Obsidian — each dot is a note, each line a [[wikilink]]; the ~25 vocab term-notes form visible hubs (each Vocab: body line points member→term, so term nodes accumulate spokes), dense clusters are groups of related notes, and the connective tissue reflects thematic proximity:

Requires Go 1.25+ on PATH.
Install the binary:
go install github.com/toejough/engram/cmd/engram@latest
Make sure $GOBIN (or $GOPATH/bin, default ~/go/bin) is on your PATH.
Copy the skills and commands into every detected harness's user directory:
engram update # install / refresh
engram update --with-guidance # also deploy guidance docs (recall.md, delegate.md) to ~/.claude/engram/ (Claude Code; opt-in)
engram update --dry-run # show what would change
engram update writes Claude Code skills to ~/.claude/skills/ and OpenCode skills + commands to ~/.config/opencode/{skills,commands}/. Run it again any time to upgrade — it also reinstalls the binary via go install. --with-guidance additionally deploys the guidance docs under guidance/ (recall.md, delegate.md) to ~/.claude/engram/ for CLAUDE.md @import (Claude Code; opt-in). It's a one-time opt-in per file — once your CLAUDE.md imports a guidance file, plain engram update keeps it current (like skills). Until then, plain engram update prints a one-line hint.
npx claudepluginhub toejough/engramUltra-compressed communication mode. Cuts 65% of output tokens (measured) while keeping full technical accuracy by speaking like a caveman.
Comprehensive UI/UX design plugin for mobile (iOS, Android, React Native) and web applications with design systems, accessibility, and modern patterns
Standalone image generation plugin using Nano Banana MCP server. Generates and edits images, icons, diagrams, patterns, and visual assets via Gemini image models. No Gemini CLI dependency required.
Multi-model consensus engine integrating OpenAI Codex CLI, Gemini CLI, and Claude CLI for collaborative code review and problem-solving.
Unified capability management center for Skills, Agents, and Commands.
Write feature specs, plan roadmaps, and synthesize user research faster. Keep stakeholders updated and stay ahead of the competitive landscape.