Skip to main content

openmemory

Manage persistent memory via OpenMemory MCP. TRIGGER when: user says "remember this", "save to memory", "store this", "recall", "what do you remember about", "check memory", "forget this", "delete memory", "clean up memory", or when agent forms a stable conclusion worth persisting. DO NOT TRIGGER when: user refers to system RAM, process memory, or asks to directly edit memory/MEMORY.md file.

Source facts

Repository
CaviraOSS/OpenMemory
Last source activity
August 24, 2026 at 17:07
Detected SKILL.md language
English
Stars
4,476
Forks
503

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

File Explorer
11 files

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
openmemory
description
Manage persistent memory via OpenMemory MCP. TRIGGER when: user says "remember this", "save to memory", "store this", "recall", "what do you remember about", "check memory", "forget this", "delete memory", "clean up memory", or when agent forms a stable conclusion worth persisting. DO NOT TRIGGER when: user refers to system RAM, process memory, or asks to directly edit memory/MEMORY.md file.
# OpenMemory — OpenMemory MCP Operation Playbook ## 1. Overview This skill is the operational playbook for **OpenMemory (MCP)** — a **primary** persistent memory system; the file-based fallback is a **secondary index** only (one-line pointers, no full-text copies). Configure `project_id` based on your workspace (see §4 Step 2). --- ## 2. HARD-GATE <HARD-GATE> Any memory operation (save/query/maintain) MUST first go through OpenMemory MCP before considering any file-based fallback. If the auto-memory system attempts a direct write to a local file first, intercept and redirect to this skill's flow. </HARD-GATE> --- ## 3. Flow Router | Trigger Signal | Route | When | |---|---|---| | User says "remember this", "save to memory", "store this" — or agent forms a stable conclusion worth persisting | **SAVE** | Post-task, or at user request | | User says "recall", "what do you remember about", "check memory" — or agent needs historical context before answering | **QUERY** | Pre-task, or when context is insufficient | | User says "forget this", "delete memory", "clean up memory" — or agent discovers outdated/wrong/duplicated memory | **MAINTAIN** | On discovery or user request | --- ## 4. SAVE Flow (5 Steps) ### Step 1 — Classify sector | Content Type | Sector | Example | |---|---|---| | Events / incidents that happened | `episodic` | "2026-05-20 deployment 回滚" | | Facts / knowledge / decisions / preferences | `semantic` | "服务 A 依赖 服务 B 的 API v2" | | Procedures / methods / rules / constraints | `procedural` | "部署前必须运行测试套件" | | User emotions / reactions / preferences | `emotional` | "用户不喜欢冗长的总结" | | Cross-event patterns / insights | `reflective` | "部署失败通常与配置缓存有关" | ### Step 2 — Choose scope | Question | YES | NO | |---|---|---| | Is this specific to the current workspace/project? | `openmemory_store_project` (project_id: `"{{PROJECT_ID}}"`) | Go to next question | | Is this general engineering knowledge? | `openmemory_store` (global) | Default to project scope | Default bias: **project scope** (`openmemory_store_project`). > **Note:** Set `{{PROJECT_ID}}` to your actual project identifier (e.g. `"my-project"`, `"airflow-agent"`, `"data-platform"`). This is a per-workspace configuration. ### Step 3 — Choose type | Situation | `type` parameter | |---|---| | Narrative knowledge, experiences, preferences | `contextual` | | Structured triples that change over time | `factual` (with `facts` array: `subject`/`predicate`/`object`) | | Both narrative and structured content | `both` | ### Step 4 — Compose tags Attach 2–5 lowercase hyphen-separated tags. Examples: - `deployment`, `rollback`, `incident` - `api`, `dependency`, `architecture` - `user-preference`, `feedback` - `pattern`, `decision`, `architecture` - `workflow`, `ci-cd`, `config` ### Step 5 — Execute 1. Call the appropriate MCP tool (`openmemory_store_project` or `openmemory_store`) with sector, type, tags, and content. 2. Optionally add **one line** in a local index file pointing to the stored memory (never copy the full content). --- ## 5. QUERY Flow (4 Steps) ### Step 1 — Determine query strategy | Need | `type` parameter | `sector` parameter | |---|---|---| | Generic "what do you know about X" | `contextual` | Omit | | "What happened" (events) | `contextual` | `episodic` | | "How to do X" (procedures) | `contextual` | `procedural` | | "Current state / status" | `factual` | Omit | | "What you know + changes over time" | `unified` | Omit | ### Step 2 — Set parameters | Parameter | Value | |---|---| | `project_id` | `"{{PROJECT_ID}}"` (always, for project knowledge) | | `k` (max results) | `8` (default; adjust up for broad searches) | | `min_salience` | Omit or set as needed (higher filters to more relevant results) | ### Step 3 — Execute query Call `openmemory_query` with the determined parameters. ### Step 4 — Reinforce if used If the retrieved memory is directly used in the response, call `openmemory_reinforce` with a boost of `0.05`–`0.1` to strengthen its salience for future sessions. --- ## 6. MAINTAIN Flow (3 Steps) ### Step 1 — Scan Call `openmemory_list` with: - `project_id: "{{PROJECT_ID}}"` (omit for global scope) - `sector` filter (optional) - `limit: 20` (adjust for larger scans) ### Step 2 — Evaluate each entry | Condition | Action | |---|---| | Accurate and still relevant | `openmemory_reinforce` (boost 0.1–0.3) | | Outdated / superseded | `openmemory_delete` then re-store corrected version | | Duplicate (same info, different entry) | Delete the entry with lower `salience` | | Noise / useless | `openmemory_delete` | ### Step 3 — Report Summarize to the user: what was deleted, reinforced, or corrected, and why. --- ## 7. Proactive Behaviors ### Pre-task query Before a non-trivial task, silently query OpenMemory for relevant context. **Do not announce** the query itself — only inform the user if the retrieved memory would affect the task's direction or decisions. ### Post-task save When the task produces a **stable conclusion** (not intermediate noise), save it. Briefly inform the user: > "已存入 openmemory: [one-line summary]" ### Correction on discovery If you notice an existing stored memory is factually wrong, immediately: 1. Delete the incorrect entry. 2. Save the corrected version. 3. Inform the user: "已更新 openmemory: [what changed]" --- ## 8. Decision Flow ```dot digraph memory_flow { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif"]; edge [fontname="sans-serif", fontsize=10]; trigger [label="🔄 Trigger\n(user signal /\nagent discovery)", shape=ellipse, style=filled, fillcolor="#E8F0FE"]; route [label="Route?", shape=diamond, style=filled, fillcolor="#FFF3CD"]; save [label="SAVE\n1. Classify sector\n2. Choose scope\n3. Choose type\n4. Compose tags\n5. Execute", fillcolor="#D4EDDA"]; query [label="QUERY\n1. Strategy\n2. Parameters\n3. Execute\n4. Reinforce", fillcolor="#CCE5FF"]; maint [label="MAINTAIN\n1. Scan\n2. Evaluate each\n3. Report changes", fillcolor="#F8D7DA"]; done [label="Done", shape=doublecircle, style=filled, fillcolor="#E2E3E5"]; trigger -> route; route -> save [label="SAVE signal"]; route -> query [label="QUERY signal"]; route -> maint [label="MAINTAIN signal"]; save -> done; query -> done; maint -> done; } ``` --- ## 9. Constraints (Anti-Pattern Table) | Anti-Pattern | Correct Practice | |---|---| | Write to a local file first without hitting OpenMemory | **Always go through OpenMemory first** | | Use `contextual` type for everything | Use `factual` (with `facts` array) for structured triples | | Default to `global` scope | **Default to `project` scope** | | Query without `project_id` | Always include `project_id: "{{PROJECT_ID}}"` for project knowledge | | Store conversational history / intermediate noise | **Only store stable conclusions** | | Save without tags | Always attach **2–5 tags** | | Perform memory operations silently | Notify user on save; explicitly state when query returns empty |
View on GitHub