Recall Write
Use Cautionnpx machina-cli add skill davegoldblatt/total-recall/recall-write --openclawWrite a note to memory, applying the write gate. Default destination: daily log.
The user's note: $ARGUMENTS
Write Gate Protocol
Before writing, evaluate:
- Does it change future behavior? (preference, boundary, recurring pattern) → WRITE
- Is it a commitment with consequences? (deadline, deliverable, follow-up) → WRITE
- Is it a decision with rationale? (why X over Y, worth preserving) → WRITE
- Is it a stable fact that will matter again? (not transient, not obvious) → WRITE
- Did the user explicitly say "remember this"? → ALWAYS WRITE
If NONE of these are true, tell the user why it didn't pass the gate. Suggest /recall-log for raw capture without the gate.
Default: Write to Daily Log
ALL writes go to memory/daily/YYYY-MM-DD.md first. Create the file if it doesn't exist:
# YYYY-MM-DD
## Decisions
## Corrections
## Commitments
## Open Loops
## Notes
Append a timestamped entry under the appropriate section:
[HH:MM] note text here
Suggest Promotion (Don't Auto-Promote)
After writing to the daily log, if the note seems durable, suggest where it could be promoted — but don't do it automatically:
Written to memory/daily/2026-02-05.md:
[14:32] User prefers bullet points over prose for summaries
This looks like a lasting preference. Want me to also promote it to:
→ memory/registers/preferences.md
→ CLAUDE.local.md (if it should affect every session)
The user decides. If they say yes, write to the register with metadata:
- **claim**: [the fact/preference/decision]
- **confidence**: high | medium | low
- **evidence**: [how we know — user said, observed, corrected]
- **last_verified**: [today's date]
Exceptions: Direct Promotion
These can skip the "suggest" step and promote directly (but still write to daily log too):
- Explicit corrections — user corrects a prior memory entry. Update the register immediately, mark old entry as
[superseded: date]. - Explicit "remember this" — user clearly wants it stored durably. Write to the appropriate register.
- Deadline/commitment — always goes to
registers/open-loops.mdAND daily log.
Contradiction Check
Before writing, quickly check existing memory for related claims:
- Check CLAUDE.local.md
- Check relevant register (if promoting)
If a contradiction is found:
- Show the user: "Existing memory says [X]. You're now saying [Y]. Update?"
- Mark old entry as
[superseded: date]with reason - Write new entry
ID Assignment on Promotion
When writing an entry to CLAUDE.local.md or a register (either via direct promotion or user-confirmed promotion), assign a durable ID:
- Generate an ID:
^tr+ 10 random lowercase hex characters - Check for collisions against existing IDs in
memory/.recall/metadata.json(if it exists) and any inline IDs visible in the destination file - Append
^[id]to the end of the entry line (for single-line list items starting with-) - Create or update
memory/.recall/metadata.jsonwith an entry for the new ID:
Set{ "created_at": "[ISO 8601 timestamp]", "last_reviewed_at": "[ISO 8601 timestamp]", "pinned": false, "snoozed_until": null, "status": "active", "tier": "working" }tierto"working"for CLAUDE.local.md or"register"for register files. - Create the
memory/.recall/directory if it doesn't exist - Write metadata.json with sorted keys and 2-space indentation
Daily log entries do NOT get IDs. Only entries promoted to CLAUDE.local.md or registers are tagged.
Multi-line metadata blocks (claim/confidence/evidence/last_verified format) are not tagged with IDs in v1. Only single-line list items get IDs.
After Writing
Confirm to the user:
Noted in memory/daily/[date].md: [one-line summary]
If also promoted: mention the additional destination and the assigned ID.
Source
git clone https://github.com/davegoldblatt/total-recall/blob/main/skills/recall-write/SKILL.mdView on GitHub Overview
Recall Write saves only behavior-changing facts by applying a write gate. It writes entries to memory/daily/YYYY-MM-DD.md by default and may promote durable notes to registers or CLAUDE.local.md when appropriate.
How This Skill Works
Before writing, Recall Write evaluates five gate criteria: changes future behavior, commitments with consequences, decisions with rationale, stable facts that will matter again, and explicit 'remember this'. If any criterion passes, the note is appended with a timestamp under the appropriate section in memory/daily/YYYY-MM-DD.md. If none pass, you are informed why and can use /recall-log for raw capture without gating. After writing, it may suggest promotion to registers or CLAUDE.local.md if the note seems durable; promotion is not automatic and requires user confirmation.
When to Use It
- You want to store a future behavior change (new preference, boundary, or recurring pattern).
- You have a deadline, deliverable, or follow-up that should be remembered.
- You documented a decision with rationale (why X over Y).
- You captured a stable fact that will matter again and isn’t transient.
- You explicitly tell the system to remember this for lasting storage.
Quick Start
- Step 1: Provide your note as the argument to recall-write.
- Step 2: Review the five gate questions and determine if the note passes.
- Step 3: If it passes, the system appends a timestamped entry to memory/daily/YYYY-MM-DD.md and surfaces optional promotion prompts.
Best Practices
- Only save entries that pass the gate; avoid storing transient noise.
- Include concise rationale or outcome when documenting decisions or commitments.
- Timestamp each daily log entry to provide precise recall context.
- Check for contradictions with existing memory before writing and address them if present.
- If the note seems durable, consider prompting for promotion to registers or CLAUDE.local.md.
Example Use Cases
- Deadline: 'deliver by 2026-02-12' → written under Commitments with a timestamp.
- Preference: 'bullet points preferred over prose' → stored as a memory note with rationale.
- Open loop: 'follow up on X by next Monday' → saved under Open Loops with due date.
- Boundary change: 'no longer share raw notes outside project scope' → noted as a Decision with rationale.
- Decision rationale: 'chosen X over Y due to time constraint' → stored with explanation for future reference.