Memory hygiene audit -- checks for stale, contradictory, low-confidence, and consolidation-candidate memories, then offers cleanup actions with user confirmation. Use periodically to maintain memory quality.
Scanned 5/27/2026
Install to Claude Code
npx -y skills add major7apps/pensyve --skill memory-review --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Memory Review?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/major7apps-memory-review)More formats (shields.io, HTML) on the badges page.
---
name: memory-review
description: "Memory hygiene audit -- checks for stale, contradictory, low-confidence, and consolidation-candidate memories, then offers cleanup actions with user confirmation. Use periodically to maintain memory quality."
version: 1.0.0
---
# Memory Review
Audit Pensyve memory health and identify issues that need attention: stale memories, contradictions, low-confidence entries, and consolidation candidates.
## Instructions
When this skill is invoked, follow these steps:
### Step 1: Gather Memory Inventory
If an entity is specified, call `pensyve_inspect` with that entity (limit: 50). If no entity is specified, run a broad `pensyve_recall` query with `"*"` (limit: 50) to discover entities, then inspect the top entities found.
Collect all memories for analysis.
### Step 2: Run Hygiene Checks
Analyze the collected memories for four categories of issues:
#### Check 1: Staleness (> 30 days unaccessed)
Identify memories where `last_accessed` is more than 30 days ago or where `retrievability` has dropped below 0.3 (indicating FSRS decay). These memories are at risk of becoming irrelevant.
Flag criteria:
- `last_accessed` older than 30 days from today
- `retrievability` below 0.3
- `access_count` of 0 (never retrieved since creation)
#### Check 2: Contradictions (conflicting predicates)
Identify semantic memories for the same entity that have conflicting predicates or objects. Look for:
- Same subject + predicate but different objects (e.g., "auth-service uses HS256" vs "auth-service uses RS256")
- Temporal conflicts where an older fact contradicts a newer one but has no `invalid_at` set
- Opposing outcomes in procedural memories for the same trigger/action
#### Check 3: Low Confidence (< 0.5)
Identify memories with confidence below 0.5. These may have been stored speculatively or may reflect uncertain information.
Flag criteria:
- `confidence` below 0.5
- Procedural memories with `reliability` below 0.5 and `trial_count` above 3
#### Check 4: Consolidation Candidates
Identify memories that could benefit from consolidation:
- Multiple episodic memories about the same topic that could be promoted to a semantic memory
- Semantic memories that reinforce each other and could be merged
- Procedural memories with high trial counts and stable reliability that are proven patterns
### Step 3: Present Audit Report
Present the findings in a structured report:
> **Memory Hygiene Report**
>
> Audited: 42 memories across 5 entities
>
> ### Stale Memories (4 found)
>
> | # | Entity | Memory | Last Accessed | Retrievability |
> | --- | ------- | ------------------------ | ------------- | -------------- |
> | 1 | old-api | Used XML responses | 45 days ago | 0.15 |
> | 2 | config | Default port was 3000 | 38 days ago | 0.22 |
> | 3 | testing | Used mocha for tests | 60 days ago | 0.08 |
> | 4 | deploy | Manual deploy to staging | 33 days ago | 0.28 |
>
> ### Contradictions (1 found)
>
> | # | Entity | Memory A | Memory B | Issue |
> | --- | ------------ | -------------------------------- | -------------------------------- | ----------------------------- |
> | 5 | auth-service | "uses HS256 signing" (conf: 0.8) | "uses RS256 signing" (conf: 0.9) | Conflicting signing algorithm |
>
> ### Low Confidence (2 found)
>
> | # | Entity | Memory | Confidence |
> | --- | ------ | ------------------------------------ | ---------- |
> | 6 | cache | "might need Redis for sessions" | 0.3 |
> | 7 | api | "possibly rate limited at 100 req/s" | 0.4 |
>
> ### Consolidation Candidates (1 found)
>
> | # | Entity | Description | Suggestion |
> | --- | -------- | ----------------------------------------- | -------------------------------------------------------------- |
> | 8 | database | 3 episodic memories about migration fixes | Promote to semantic: "migration script requires version check" |
>
> **Summary:** 4 stale, 1 contradiction, 2 low-confidence, 1 consolidation candidate
If a category has no issues, omit that section entirely. If all checks pass, report:
> **Memory Hygiene Report**
>
> Audited: 42 memories across 5 entities
>
> All checks passed. Memory store is healthy.
### Step 4: Offer Actions
After presenting the report, offer cleanup actions with user confirmation:
> **Recommended Actions:**
>
> 1. **Archive stale memories** (#1-4): Remove from active recall. Use `pensyve_forget` on each.
> 2. **Resolve contradiction** (#5): Keep the RS256 memory (higher confidence, more recent). Forget the HS256 memory.
> 3. **Review low-confidence** (#6-7): Confirm or remove these uncertain memories.
> 4. **Run consolidation** (#8): Use `/consolidate` to promote episodic patterns to semantic memories.
>
> Which actions should I take? (e.g., "1,2", "all", "none")
**NEVER execute actions without user confirmation.** Wait for explicit approval before calling any MCP tools to modify memory.
### Step 5: Execute Confirmed Actions
For confirmed actions:
- **Archive/forget**: Call `pensyve_forget` with the entity name for each confirmed deletion.
- **Resolve contradiction**: Call `pensyve_forget` for the outdated memory. If both should be kept, note the conflict and move on.
- **Consolidation**: Suggest running `/consolidate` (this skill does not run consolidation directly).
Report results after each action.
## Constraints
- **Never read or write `.claude/` memory files.** All memory operations go through the Pensyve MCP tools exclusively.
- **NEVER delete or modify memories without explicit user confirmation.** This is a hard requirement.
- Do not fabricate findings. Only report issues based on actual data from MCP tools.
- The staleness threshold is 30 days. Do not change this without user request.
- The low-confidence threshold is 0.5. Do not change this without user request.
- Entity names MUST be lowercase and hyphenated.
- When checking for contradictions, only flag clear conflicts -- do not flag complementary facts as contradictions.
- The audit should be informational first, actionable second. Present the report before offering actions.
## Error Handling
- If `pensyve_inspect` fails for an entity, skip it and note the failure in the report.
- If `pensyve_recall` returns errors, report partial results and note which queries failed.
- If `pensyve_forget` fails during cleanup, report the error and continue with remaining actions.
- If the MCP server is not connected, inform the user and suggest checking their MCP server configuration.
No comments yet. Be the first to comment!