Memory Archivist
Memory is sacred. This skill turns raw daily journals into structured wisdom.
What This Skill Does
- Cross-reference — Read all
memory/*.mdfiles and find connections between days - Pattern detection — Surface recurring themes, repeated decisions, persistent blockers
- Carry-forward audit — Find items marked "carry forward" that were never resolved
- Weekly synthesis — Generate a weekly summary from daily files
- Scar-to-decision mapping — Track how USER.md scars influence actual decisions over time
Trigger Patterns
- "review my memory", "memory synthesis", "weekly review"
- "what's still pending", "what did I forget"
- "what patterns do you see", "recurring themes"
- "what did I decide about [topic]"
- "carry forward audit", "dropped items"
- "synthesise this week"
On Trigger — Execute in Order
Step 1: Gather Memory Files
# List all memory files sorted by date
ls -1 ~/.openclaw/workspace/memory/*.md 2>/dev/null | sort
Read the most recent 7 files (or all if fewer than 7 exist). Use the read tool, not exec.
Step 2: Extract Structured Data
From each daily file, extract:
| Field | Section to scan | |-------|----------------| | Decisions | "Key Decisions Made Today" | | Carry-forward | "Carry Forward" | | 888_HOLD | "888_HOLD Items Pending" | | Floors active | "Floors Active This Session" | | Context | "Session Context" |
Step 3: Cross-Reference
For each carry-forward item, check if it appears as resolved in any later day's decisions.
Build a table:
| Carry-Forward Item | First Mentioned | Resolved? | Resolution Date | Days Open |
Flag any item open longer than 3 days as ⚠️ STALE.
Step 4: Detect Patterns
Scan across all files for:
- Repeated topics — same subject appearing in 3+ daily files
- Recurring blockers — carry-forward items that keep reappearing
- Floor patterns — which floors are consistently active vs rarely active
- Decision velocity — how many decisions per day (trending up/down?)
Step 5: Generate Synthesis
Output format depends on the request:
Weekly synthesis → Write to memory/weekly-YYYY-WXX.md:
# Weekly Synthesis — YYYY-WXX (arifOS_bot)
## Period
YYYY-MM-DD to YYYY-MM-DD
## Key Decisions This Week
1. ...
## Carry-Forward Audit
| Item | Status | Days Open |
|------|--------|-----------|
## Patterns Detected
- ...
## 888_HOLD Items (Active)
- ...
## Floor Activity
F1: X sessions | F2: X sessions | ...
## Recommendation
<one-line suggestion for next week based on patterns>
Ad-hoc query ("what did I decide about X") → Search all memory files for the topic, return chronological trail of mentions with dates.
Carry-forward audit → Return the open items table only.
Step 6: Seal to VAULT999
After generating synthesis, seal via arifOS MCP:
arifos seal
Or via HTTP:
curl -sf -X POST http://arifosmcp:8080/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"seal_vault","arguments":{"session_id":"memory-archivist","context":"weekly synthesis sealed"}}}'
This commits the synthesis to the immutable VAULT999 ledger. Memory is sacred — sealed memory is permanent.
Step 7: Log the Synthesis
Append to logs/audit.jsonl:
{"ts":"<ISO>","event":"memory_synthesis","source":"memory-archivist","files_scanned":<n>,"patterns_found":<n>,"stale_items":<n>,"sealed":true,"agent":"arifOS_bot"}
Scheduling (Cron)
Run the archivist nightly at 00:30 MYT (16:30 UTC), after the git-sync backup at 00:00 MYT:
# Add to host crontab (not container — container restarts clear cron)
30 16 * * * cd /opt/arifos/data/openclaw/workspace && bash skills/memory-archivist/scripts/scan-carry-forward.sh memory/ >> logs/archivist.log 2>&1
For the full agent-driven synthesis (weekly), trigger manually or via HEARTBEAT.md on every 8th heartbeat (~4 hours):
- "Run memory archivist" or "weekly review"
Constraints
- Read-only on memory files. Never edit existing
memory/*.mdfiles. Only create new synthesis files. - F1 Amanah. All synthesis is additive. Nothing is deleted or overwritten.
- F7 Humility. If a pattern has low confidence (appears only twice), mark it as tentative.
- F4 Clarity. Output must reduce confusion. Tables over prose. One insight per line.