memory-defrag — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited memory-defrag (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Reorganize a project's notes so each topic has one clear, current home. Over time notes grow past their topic, the same fact lands in several places, old facts contradict new ones, and finished work lingers. Defrag fixes the content; memory-curate handles links, relations, and tags.
the same topic
Walk the whole project, not just recent changes. Stale content is usually in notes nobody touched lately.
# Every folder and note within depth 10. Page until has_more is false;
# descend into deeper folders separately if the project has them.
bm_find(path="/", depth=10, page_size=100, project="<project>")
# Recently busy notes, to look at first
bm_project(command="recent", since="30d", output_format="json", page_size=50)
# Notes on one topic, to spot overlap
bm_search(query="launch plan")
# Commitments due on or before today: finished work that lingers, or overdue items
bm_search(time_kind="due", valid_overlaps="(,2026-10-14]")Read every note you might change, in full. For each, note its topic, size, last change, and anything that looks stale or contradicted.
| Problem | Signal | Fix |
|---|---|---|
| Bloated note | Covers several topics, hundreds of lines | Split into focused notes |
| Scattered facts | One topic's facts spread over several notes | Consolidate into the topic's note |
| Contradiction | Two notes disagree | Date the change, or propose for review (below) |
| Stale content | Finished work, past dates, resolved issues | Retire: close the fact's range, update status, or archive |
| Duplicate notes | Same topic, different titles | Merge (see memory-curate) |
Two statements that disagree are often both true, at different times: the launch was Friday, then moved to Thursday. Observations can say when a claim holds (see memory-notes), so a change over time can be recorded without losing either statement:
- [decision] @effective[2026-09-01,2026-10-14) Launch on Friday
- [decision] @effective:2026-10-14 Launch on Thursday (moved in [[2026-10-14 Launch Sync]])Which statement is newer is not evidence on its own. An old meeting note imported today is new to the project and still wrong. Resolve a contradiction directly only when a source says when the change happened and what replaced what, and cite that source. Otherwise list both statements in the plan as [contradiction], with their sources, and leave it for review.
Write the plan as a note before changing anything, so a person can review it. Title it with the date and time, so two runs on one day get separate plans:
---
title: Defrag Plan 2026-10-14 0830
type: defrag-plan
status: proposed
---
# Defrag Plan 2026-10-14 0830
## Observations
- [split] Launch Plan → Launch Plan, Launch Checklist (checklist is 200 lines of its own)
- [consolidate] Owner facts from 3 meeting notes → Launch Plan, Owners section
- [date-change] Launch Plan: Friday → Thursday, effective 2026-10-14 per 2026-10-14 Launch Sync
- [contradiction] Pricing Notes says $20/seat, Q4 Plan says $25/seat; no source dates the change (review needed)
- [retire] Beta Signup Tasks: all done since September → status: done, move to archive/
- [keep] Old Pricing Ideas: looks stale but is still linked from Q4 Plan (review needed)while leaving the sources in place, dating a change a source documents (closing the old range keeps the old statement), updating a status.
evidence: deleting a note, merging one note into another, dropping facts, resolving an undated contradiction. If your instructions don't say to apply these, leave them in the plan with status: proposed and stop.
its checksum as expected_checksum, so the edit applies only to the revision you read; on a checksum conflict, read again and recheck the plan line. Keep relations pointing at the right note after a split or move (bm_move keeps links working; a new note needs links added).
Update the plan note: mark each line done, skipped, or left for review, and set status: applied or status: partly-applied.
the note it belongs to, or keep it. Prefer closing a fact's range to deleting it.
record other notes cite.
propose it.
something is content about that note.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.