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
code
## 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.