Memory
Persistent memory for Claude Code - powered by Graphiti knowledge graphs
npx -y skills add TonyCasey/lisa --skill memoryAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 9 stars9 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Permanent memory using Lisa.
SKILL.md
3.5 KB, as published. Nobody here has run it
Purpose
Reusable memory helper that routes remember/recall requests to Graphiti MCP while staying model-neutral and providing cache fallback. Always summarizes results into human-readable format.
Triggers
Use when the user says things like: "load memory", "recall notes", "remember", "pull saved context", "fetch past tasks".
How to use
- For recall: run
lisa memory load --cache [--query <q>] [--limit 10] [--group <id>]. Reads Graphiti facts and prints JSON. Uses cache if MCP is down. - For remember: run
lisa memory add "<text>" --cache [--group <id>] [--tag foo] [--source <src>]to append an episode. - Endpoint: reads ${GRAPHITI_ENDPOINT} from
.lisa/.env(written by init); group ID is automatically derived from the project folder path. See rootAGENTS.mdfor canonical defaults. - Cache fallback: stored at
cache/memory.loginside this skill. On failure, last cached result is returned withstatus: "fallback". - IMPORTANT: After loading facts, ALWAYS synthesize them into a human-readable summary (see Summarization section below).
Summarization (Required for Recall)
After running the load command, you MUST synthesize the raw JSON facts into a useful summary. Never just show raw JSON to the user.
Summary Structure
Organize facts into these categories (skip empty categories):
- Project Overview - What the project is and does
- Recent Activity - What was worked on recently (files modified, features added)
- Conventions & Patterns - Naming conventions, coding standards, folder structure
- Configuration - Docker, environments, tools, dependencies
- Milestones - Completed features, important checkpoints
- Open Items - Pending tasks, known issues
How to Summarize
- ALWAYS sort memories by
created_atdescending (newest first) - Group related facts together
- Use bullet points for clarity
- Include specific file names and paths when relevant
- Include the date for each memory (format: "Jan 23" or "Jan 23, 2026")
- Filter out expired or superseded facts (check
expired_atfield) - Prioritize recent facts over older ones - show newest at top of each section
- Extract the
factfield from each item - that's the human-readable content
Example Output Format
## Memory Summary
**Project:** Lisa - Long-term memory system for Claude Code
**Recent Activity:**
- Modified `src/lib/mcp.ts` for MCP integration
- Updated Docker config to use `zepai/knowledge-graph-mcp:standalone`
- Added init-review script
**Conventions:**
- Files use kebab-case naming
- JavaScript/TypeScript as primary languages
**Configuration:**
- Docker Compose at `.lisa/docker-compose.graphiti.yml`
- Config file: `config-docker-neo4j.yaml`
**Milestones:**
- Memory system reached major milestone (date)
I/O contract (examples)
- Recall: output JSON
{ status: "ok", action: "load", group, query, facts: [...] }. - Remember: JSON
{ status: "ok", action: "add", group, text }. - Fallback: JSON
{ status: "fallback", error, fallback: <last cached object> }.
Cross-model checklist
- Claude: confirm concise trigger phrasing; keep under system limits; avoid markdown-heavy instructions.
- Gemini: ensure commands are explicit; avoid model-specific tokens; keep JSON small.
Notes
- All commands use the
lisaCLI binary — no scripts to run directly. - Facts query defaults to
*withmax_facts=10; tune via--limitand--query. - The
factfield in each JSON object contains the human-readable content to summarize.