Memory hygiene audit — checks for stale, contradictory, low-confidence, and consolidation-candidate memories, then offers cleanup with user confirmation
Scanned 9/2/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-882ac3d5)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 with user confirmation"
---
# 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): Promote episodic patterns to semantic memories via `pensyve_remember`.
>
> 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**: Call `pensyve_remember` to store the promoted semantic memory, then optionally `pensyve_forget` to clean up the source episodic memories.
Report results after each action.
## Constraints
- **All memory operations go through the Pensyve MCP tools exclusively.** Do not read or write to the local filesystem for memory purposes.
- **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 `PENSYVE_API_KEY` environment variable and MCP configuration.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!