memory-engine

Memory management system for Claude Code — Student Loop, Smart Context, Auto Learn, Session Handoff, Correction Cycle. Triggered by memory commands (/save, /reflect, /handoff, /check) or memory-related questions. Not for general programming tasks.

install
source · Clone the upstream repo
git clone https://github.com/HelloRuru/claude-memory-engine
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HelloRuru/claude-memory-engine "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skill" ~/.claude/skills/helloruru-claude-memory-engine-memory-engine && rm -rf "$T"
manifest: skill/SKILL.md
source content

Memory Engine v1.6

A memory and learning system for Claude Code, built with hooks and markdown.

Modules

1. Smart Context

Auto-detects the current project from your working directory and loads its memory.

  • Resolves per-project memory directory automatically — no hardcoded paths
  • Implementation:
    ~/.claude/scripts/hooks/session-start.js
  • Config:
    references/smart-context.md

2. Auto Learn (Pitfall Detection)

Detects pitfall patterns before context compression — retries, errors followed by fixes, user corrections.

  • Saves both the problem and the fix to
    ~/.claude/skills/learned/
  • Same mistake 3+ times across different days → suggests writing it into permanent rules
  • Implementation:
    shared-utils.js
    detectPitfalls()
    +
    savePitfalls()

3. Student Loop (/reflect)

8-step learning cycle. First 3 steps are automatic (every session). Last 5 via

/reflect
.

  1. Takes notes — records what was done, files changed, decisions made
  2. Links them — tags the project, connects to previous notes
  3. Spots patterns — scans for pitfall signals

There is no real "end" to a Claude Code conversation. Memory Engine saves at three points:

  • Every 20 messages (
    mid-session-checkpoint
    ) — most reliable, self-counted
  • Before context compression (
    pre-compact
    ) — pitfall detection runs here, context is fullest
  • When conversation ends (
    session-end
    ) — best-effort, not guaranteed to fire

You don't need to remember to run any command before closing. 4. Review — read past 7 days, mark useful vs outdated 5. Refine — 4-question decision tree (Keep? Condense? Already covered? Delete as last resort) 6. Re-study — re-analyze cleaned data for buried patterns 7. Slim down — list removable items, wait for user confirmation 8. Wrap up — produce a report

4. Session Handoff (/handoff)

Pass context between Claude Code windows without losing progress.

  • /handoff
    saves a
    handoff-*.md
    file with progress, decisions, unfinished tasks
  • Next session auto-detects it on startup (
    session-start.js
    )
  • Mid-conversation detection via
    memory-sync.js
  • Each handoff is shown once, tracked by
    .handoff-read.json

5. Correction Cycle (/analyze)

Learns from user corrections — mistakes that don't show up in error logs.

  • Analyze (
    /analyze
    ) — compare user's edits against rules, log missed rules, distill new ones
  • Correct (auto, before tasks) — scan the error list as a reminder
  • Reflect (
    /reflect
    step 6) — same mistake 3+ times → upgrade to hard rule

Hooks

HookFileWhat it does
SessionStartsession-start.jsLoad last summary + project memory + pending handoffs + pitfall review + /reflect reminder
SessionEndsession-end.jsSave summary + project index + backup (best-effort, may not fire)
PreCompactpre-compact.jsSnapshot + pitfall detection + backup — the real safety net
UserPromptSubmitmemory-sync.jsCross-session memory change detection + handoff detection
UserPromptSubmitmid-session-checkpoint.jsCheckpoint every 20 messages
PreToolUse(Write)write-guard.jsSensitive file write warning
PreToolUse(Bash)pre-push-check.jsSafety check before git push
memory-backup.shBidirectional sync script (push/pull/sync) — v1.6

Shared logic between

session-end.js
and
pre-compact.js
is extracted into
shared-utils.js
.

Commands (36 files, 18 pairs EN + ZH)

ENZHFunction
/save/存記憶Save memory — auto-dedup, route to correct file
/reload/讀取Load memory into current conversation
/todo/待辦Cross-project task tracking
/backup/備份Push local memory to GitHub (
memory-backup.sh push
)
/sync/同步Bidirectional sync (
memory-backup.sh sync
) — v1.6 pull+push
/handoff/交接Session handoff — pass progress to next window
/diary/回顧Generate reflection diary
/reflect/反思Analyze pitfalls, find patterns
/learn/學習Manually save a pitfall
/analyze/分析Record corrections into error notebook
/correct/訂正Review error notebook anytime
/check/健檢Quick health scan
/full-check/大健檢Full audit
/memory-health/記憶健檢Memory file stats + capacity warnings
/memory-search/搜尋記憶Keyword search across all memory files
/recover/想起來Restore memory from GitHub (
memory-backup.sh pull
) — v1.6 auto-distribute
/compact-guide/壓縮建議When to compact and when not to
/overview/全覽List all available commands

File Structure

~/.claude/
  scripts/hooks/
    session-start.js         # Load recall + smart-context + handoff
    session-end.js           # Save summary + backup (best-effort)
    pre-compact.js           # Pre-compression snapshot + pitfall detection + backup
    shared-utils.js          # Shared functions (transcript, pitfall, backup)
    memory-sync.js           # Cross-session sync + handoff detection
    mid-session-checkpoint.js
    write-guard.js
    pre-push-check.js
    memory-backup.sh         # Bidirectional sync (push/pull/sync) — v1.6
  sessions/
    {date}-{id}-session.md   # Session summaries
    {date}-{id}-compact.md   # Pre-compact snapshots
    diary/                   # Reflection diaries
  commands/
    save.md / 存記憶.md       # ...15 pairs
    handoff.md / 交接.md
  skills/learned/memory-engine/
    SKILL.md                 # This file
    references/
      smart-context.md       # Project detection rules
      auto-learn.md          # Pitfall detection rules

Core Principles

Test what you build

  • After creating any hook or feature, always run a test to confirm it works
  • "Written" does not mean "done" — see actual output before marking complete

/reflect 4-question decision tree

  1. Does it serve the main purpose? → No → remove
  2. Can it be condensed? → Yes → replace with refined version
  3. Already covered by an existing rule? → Yes → don't duplicate
  4. Delete is the last resort → only if Q1-Q3 don't apply

Troubleshooting

MEMORY.md over 200 lines with no warning

  • Cause: Didn't check line count before writing
  • Fix: Run
    wc -l
    before every write. Over 170 lines → move old content to standalone files first

Memory saved but next session doesn't know

  • Cause: Content written directly into MEMORY.md instead of creating a pointer
  • Fix: MEMORY.md holds pointers only. Details go in
    memory/*.md

Backup push fails

  • Cause: Conflicts in the memory repo or expired auth
  • Fix: Run
    git pull
    first, resolve conflicts if any

Memory from another device not showing up

  • Cause: Backup was push-only. Device A pushes to GitHub, but Device B never pulls it back into its local
    projects/
    directories
  • Fix: v1.6 adds
    pull
    and
    sync
    modes to
    memory-backup.sh
    . The pull distributes global memory files from the backup repo into every local project directory that has a
    memory/
    folder (newer file wins, won't overwrite local changes)
  • Root cause: Each device has different working directories, so
    projects/
    paths differ. Global memory must be actively distributed, not just stored in one place

References

  • references/smart-context.md
    — Project detection rules
  • references/auto-learn.md
    — Pitfall detection rules + auto-learn flow