| name | macrodata-memory-maintenance |
| description | End of day memory maintenance. Runs distillation, updates state files, prunes stale info. Runs in background with no user interaction. |
Memory Maintenance
Scheduled maintenance to keep memory current and useful. Runs automatically at end of day.
Important: This runs in the background with no user interaction. Do not ask questions - make decisions and note uncertainties in the journal.
Process
1. Run Distillation
First, run the macrodata-distill skill to extract facts from today's conversations.
This processes all OpenCode sessions, spawns sub-agents for extraction, and writes distilled actions to the journal.
Check if distill already ran today:
Use get_recent_journal and look for topic "distill-summary" from today.
If not found, load macrodata-distill skill. If already ran, skip to step 2.
2. Review Distilled Content
Use get_recent_journal filtered to topic "distilled" to see what was extracted.
Use these to inform state file updates.
3. State File Updates
Review each state file and update if needed:
today.md
- Clear completed items
- Note anything that carried over
- Leave empty or minimal for morning prep to fill
workspace.md
- Update active projects list based on distilled actions
- Add/remove open threads
- Note any blocked items or waiting-on dependencies
human.md
- Any new preferences or patterns from distilled facts?
- Communication style insights?
- Only update if genuinely new information
4. Entity Updates
Review entities/people/ and entities/projects/:
- Integrate any facts extracted by distillation
- Project status changes?
- New projects to create files for?
5. Prune Stale Info
Look for outdated information:
- Completed todos still listed as active
- Old context that's no longer relevant
- Temporary notes that should be removed
- Duplicated information across files
Remove or archive as appropriate.
6. Index Maintenance
Check if indexes need rebuilding:
manage_index(target="memory", action="stats")
manage_index(target="conversations", action="stats")
If counts seem low or stale, trigger rebuild:
manage_index(target="memory", action="rebuild")
manage_index(target="conversations", action="update")
7. Journal Summary
Write a brief maintenance journal entry:
macrodata_log_journal(topic="maintenance", content="[what was updated, what was pruned, any observations]")
Note anything uncertain that should be confirmed with the user next session.