--- name: memory-reviewer description: Reviews stored memory quality by detecting duplicates, contradictions, and stale entries with actionable recommendations. Use when search results seem conflicting, before running dream consolidation, or for periodic memory hygiene audits. --- # Memory Reviewer Audits memory quality for the active project. Finds duplicates, contradictions, and low-confidence entries. ## When to use - User asks "check my memories", "memory quality", "any duplicates?" - User runs `/mem0:memory-reviewer` directly - After a session with 5+ memory writes (suggest proactively) - After `/mem0:health --deep` identifies issues ## Steps 1. **Fetch all memories** for active project via `get_memories` with `filters={"AND": [{"user_id": ""}, {"app_id": ""}]}`, `page_size=200`. Paginate if needed — cap at 200 memories. 2. **Group by `metadata.type`**. Common types: `decision`, `convention`, `anti_pattern`, `task_learning`, `project_profile`, `user_preference`, `session_state`. 3. **Scan each group for issues:** | Issue | Detection method | |---|---| | **Near-duplicates** | >60% noun overlap within same type. Compare memory text after stripping stop words. | | **Contradictions** | Opposing facts about same topic (e.g., "use PostgreSQL" vs "use MySQL" for same component) | | **Low-confidence** | `metadata.confidence < 0.3` | | **Missing type** | No `metadata.type` set | | **Stale** | `created_at` older than 180 days with no updates | 4. **Output compact summary:** ``` memory-reviewer: project= total= duplicates: found contradictions: found low_confidence: found untagged: found stale: found ``` 5. **If issues found**, list them with memory IDs: ``` Issues: [duplicate] "" ≈ "" [mem0:, mem0:] [contradiction] "" vs "" [mem0:, mem0:] [low_conf] "" (confidence: 0.1) [mem0:] ``` 6. **Suggest action**: "Run `/mem0:dream` to consolidate duplicates and resolve contradictions." ## Constraints - **Read-only** — never modify or delete memories (that's `/mem0:dream`'s job) - **Max 200 memories** per scan - Report findings, let user decide on action ## Output formatting IMPORTANT: Do NOT use markdown in your output. OpenCode TUI renders text verbatim — markdown like **bold**, ## headers, and | table | syntax appears as raw characters. Use plain text with indentation for structure. Use dashes for lists. Use spaces to align columns instead of markdown tables.