Claude forgets everything between sessions by default. LearnLoop closes that loop — every correction, every error, every preference is captured into Claude Code's native auto-memory and auto-loaded next time.
Without persistent learning, every session starts from zero:
The result: smart in the moment, amnesic over time. Your time is spent re-teaching, not advancing.
LearnLoop writes directly to Claude Code's auto-memory system at ~/.claude/projects/<project-id>/memory/:
[[slug]] for graph-style recallNo .learnings/ folder to maintain, no separate file to read, no "did I check the log?" overhead.
Trigger LearnLoop on any of these moments:
TriggerSave AsExampleUser corrects Claude ("No, that's wrong", "Actually...")feedback"Don't use git add . — too broad"Command or tool fails unexpectedlyproject or feedback" npm test requires Node 20+ in this repo"User shares role, expertise, or preferenceuser"Senior backend dev, new to React"External system referencedreference"Bugs tracked in Linear project INGEST"Knowledge turned out to be outdatedfeedback"API moved from v1 to v2 in March"Better approach discovered for recurring taskfeedback"Use rg not grep — 10x faster in this monorepo"Project deadline or constraint mentionedproject"Mobile freeze starts 2026-03-05"
If you'd otherwise say "I'll keep that in mind for next time" — that's the trigger. You can't keep it in mind. Save it.
Watch for the seven moments above. The two strongest signals:
Save from failure AND success. Saving only corrections produces a fearful agent; saving validated wins keeps you bold.
TypeUse ForuserRole, expertise, goals, communication preferencesfeedbackBehavioral rules: do this, don't do that, whyprojectOngoing initiatives, deadlines, who/why contextreferencePointers to external systems (Linear, Grafana, Slack channels)
If unsure, ask: does this guide my future behavior? (feedback) or describe a person? (user) or a workstream? (project) or point elsewhere? (reference).
Path: ~/.claude/projects/<project-id>/memory/<short-kebab-slug>.md
Frontmatter format:
yaml
---
name: short-kebab-slug
description: one-line summary, specific enough to judge relevance later
metadata:
type: feedback
---
Body structure for feedback and project types — lead with the rule/fact, then:
The Why is load-bearing. Without it, future-you can't judge edge cases — you'll either follow blindly or ignore stale rules.
MEMORY.md is the index loaded into every session. One line per entry, under ~150 chars:
text
- [Title](slug.md) — one-line hook on when it matters
Keep it under 200 lines. If MEMORY.md fills up, consolidate related entries into single files rather than truncating.
Memories age. Before acting on a recalled fact:
grep for it.git log over the snapshot.If the memory conflicts with current reality, update or delete the memory. Don't act on stale memory.
These belong in code, git, or scratch — not memory:
git log / git blame)Even when the user says "remember this PR list" — ask what was surprising about it. The surprise is the memory. The list is not.
When you decide to save:
text
[LearnLoop] Saving as <type>: <one-line summary>
→ memory/<slug>.md
→ MEMORY.md updated
When you decide not to save:
text
[LearnLoop] Noted but not saved — <reason>
Be visible about the loop. Silent saves hide the mechanism; users should see what you remembered and what you didn't.
LearnLoop is part of the ThinkStack — meta-skills that compound:
clarity-first — understand the request before you actthinkdeep — reason through complex problemshonest-critic — push back instead of validatingtask-pilot — execute structured planslearnloop — never lose what you learnedbash
openclaw install learnloop
openclaw install honest-critic
openclaw install thinkdeep
openclaw install clarity-first
openclaw install task-pilot