Skills · Workflow
memory-review
/memory-reviewLightweight end-of-session memory review — scan the conversation just had for durable lessons and save them into Ralphy's tiered memory (`ralphy memory note`, write-and-tell: ev…
SKILL.mdmemory-review — close the loop on the session you just had
The cheap half of Ralphy's learning loop. Recall (AGENTS.md step 0) loads
memory INTO a session; this skill writes the session's lessons BACK. Between
them sits invariant #18 (capture corrections the moment they land). Run this
when a session winds down and something was learned but nobody asked for a
full postmortem.
Workflow
-
Scan the conversation for signals, newest first:
- User corrections — model pick, register, pacing, aspect, voice, phrasing the user changed after seeing output. The strongest signal: it cost the user a turn, and uncorrected it will cost one again.
- Frustration markers — "stop doing X", "again?", "I already said", "why is it doing Y". First-class signals, not noise.
- Durable preferences — anything phrased as "always / never / by default" about look, sound, structure, or workflow.
- Discovered facts — a model filter hit, a provider quirk, a flag that behaved unexpectedly, a workaround that held.
- Techniques that worked — a prompt pattern, a recipe, a sequence that future-you would otherwise re-derive.
-
Filter through the do-not-capture list (same as
ralphy memory distilland invariant #18):- environment-dependent failures (missing key/binary/dep) — capture the FIX if there was one, never the failure;
- negative tool/model claims ("X is broken") — they outlive the bug and harden into refusals;
- transient errors a retry solved — the lesson is the retry pattern;
- task progress, outcomes, narratives —
logs/+postmortem/territory; - anything already covered by the repo (MODELS.md, guidelines, playbooks) or by an existing memory entry that does not need changing.
-
Dedupe against the store. For each survivor:
ralphy memory search <keyword>. Overlap → re-note the existing slug (the store versions it up); no overlap → new slug, class-level name (no project ids, no error strings). -
Write directly, tiered (#117 — write-and-tell, no approve ceremony):
- Every survivor →
ralphy memory note .... Client/universe facts get--workspace; cross-project craft/model/tooling stays global. - Every body carries the rule +
**Why:**+**How to apply:**+**Does NOT apply to:**— a vague negative scope is grounds to keep drafting (#045 over-application lesson).
- Every survivor →
-
Report one tight block in chat:
saved to memory:+ one line per slug (description + tier), plus anything deliberately skipped with the one-word reason (covered / transient / narrative). End with the undo hint: "say 'forget <slug>' to retire any of these" — and executeralphy memory retire <slug>the moment the user says so.
Health check hand-off
While in the store: if ralphy memory list shows more than ~70 active
entries in a tier, or any write bounced with E_MEMORY_CAP_EXCEEDED this
session, suggest a ralphy memory curate pass (#116) — consolidation is its
job, not this skill's.
HARD INVARIANTS
- 0-5 entries per session. More means you are logging, not curating — cut to the ones that change a future decision.
- Write-and-tell, never write-and-hide (#117). Saves are automatic but
ALWAYS surfaced in chat (
saved to memory: <slug>), and "forget" is honored instantly withralphy memory retire. Transparency is the consent mechanism — a save the user never saw is a defect. - Update over new. Search first; an overlapping slug is re-noted, never cloned into a sibling.
- "Nothing to save" is a valid outcome — say it in one line and stop. A session with no corrections and no discoveries produces no entries.
- English on disk — memory entries are English regardless of chat language (translate the user's remark, keep their meaning).
- No paid calls. This skill is the agent reading its own conversation —
if you are reaching for
callLLM, you want/postmortem+ralphy memory distillinstead.