
memory
by TonyCasey
Persistent memory for Claude Code - powered by Graphiti knowledge graphs
SKILL.md
name: memory description: "Permanent memory using Lisa."
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/group: reads ${GRAPHITI_ENDPOINT} / ${GRAPHITI_GROUP_ID} from
.lisa/.env(written by init); 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
- Script is Node.js; relies on global
fetch(Node ≥18). If older runtime,node --experimental-fetch. - Facts query defaults to
*withmax_facts=10; tune via--limitand--query. - Safe to relocate: skill lives in
.lisa/skills/memoryto remain decoupled from model-specific bindings. - The
factfield in each JSON object contains the human-readable content to summarize.
スコア
総合スコア
リポジトリの品質指標に基づく評価
SKILL.mdファイルが含まれている
ライセンスが設定されている
100文字以上の説明がある
GitHub Stars 100以上
1ヶ月以内に更新
10回以上フォークされている
オープンIssueが50未満
プログラミング言語が設定されている
1つ以上のタグが設定されている
レビュー
レビュー機能は近日公開予定です
