Skip to content
Skills Library
AI & agents · Automation

keep-memory-current

/keep-memory-current

Load this project's memory when you start, and write back what you learned before you stop. Use at the beginning of a work session, when finishing a task or about to end a session, after debugging something non-obvious, after a decision that took argument to reach, and whenever you catch yourself thinking "I should remember this". Also use when a memory turns out to be wrong.

Repository
re-call ↗
Licence
AGPL-3.0
Last repository change
28.10.2026

Assessment and security

90/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content25 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 28.10.2026, without references to retired models or APIs.

Licence

AGPL-3.0, copyleft: przeróbki udostępniane innym muszą mieć tę samą licencję.

What it does and when to use it

Load this project's memory when you start, and write back what you learned before you stop. Use at the beginning of a work session, when finishing a task or about to end a session, after debugging something non-obvious, after a decision that took argument to reach, and whenever you catch yourself thinking "I should remember this". Also use when a memory turns out to be wrong.

Triggers from the description

I should remember this
Original author description

Load this project's memory when you start, and write back what you learned before you stop. Use at the beginning of a work session, when finishing a task or about to end a session, after debugging something non-obvious, after a decision that took argument to reach, and whenever you catch yourself thinking "I should remember this". Also use when a memory turns out to be wrong.

How it works

  1. When you start
  2. When you stop
  3. Three failure modes worth knowing before you meet them
  4. What good looks like
Original SKILL.md headings · 107 lines, 956 words
SKILL.md preview
---
name: keep-memory-current
description: Load this project's memory when you start, and write back what you learned before you stop. Use at the beginning of a work session, when finishing a task or about to end a session, after debugging something non-obvious, after a decision that took argument to reach, and whenever you catch yourself thinking "I should remember this". Also use when a memory turns out to be wrong.
---

# Keep memory current

A memory store is only worth what the next session can find in it. Two moments decide that, and
they are the two this skill is about: what you load when you start, and what you write when you
stop.

The second one decays first and costs the most. A session that solves something hard and ends
without recording it has not saved anyone the hour; it has spent the hour on that project's behalf
and thrown away the receipt.

## When you start

**Read the hub, then search before you act.** The hub is the index file the project loads into
context (commonly `MEMORY.md`); it carries current state and pointers, not the content. Reading it
tells you what exists. It does not tell you what applies.

⛔ **An index line is a pointer, not the memo.** Being able to quote the one-line hook is not
having read the entry, and compression drops SCOPE first — which is the part that decides whether
the memo applies to what you are about to do.

Before acting on anything the project may already have an opinion about, search. The companion
skill `check-memory-before-acting` covers how to phrase that search, and the short version is:
search for the **hazard**, not the task.

## When you stop

Let the client's `SessionEnd` lifecycle run before considering the session closed. The repo-owned
`recall_hooks.mcp_cleanup` implementation closes only this session's MCP transports: Claude uses
`CLAUDE_PID`, while Codex uses its client process identity; transports to a remote host
additionally carry the per-session `RECALL_MCP_SESSION_ID`, with `RECALL_MCP_CLIENT` retained as a
legacy fallback. If you close manually, treat an ownership refusal as a signal to fix the identity
wiring, never as permission to kill by command line or age.

### One fact per memo, with the cost that bought it

A memo that records only the conclusion cannot be retired later, because nobody can tell whether
the reason still holds. Write:

- **the fact**, stated so it can be checked
- **why** it is true, in enough detail to argue with
- **how to apply it**, concretely
- **what it cost to learn** — the hour, the outage, the wrong release

The cost is not decoration. It is what lets a future reader judge how hard to defend the memo when
new evidence arrives, and it is what makes a stale memo removable instead of load-bearing.

### Link liberally, including to things that do not exist

A `[[name]]` pointing at an unwritten memo is not a broken link. It marks a gap worth filling, and
it is the cheapest form of a to-do the store supports.

### Delete what turns out to be wrong

**A stale memory is worse than an absent one**, because it suppresses the retry that would have
corrected it. When you find one, correct it in place and say that it was corrected — the fact that
this particular thing rots is usually more useful than the fixed value.

Prefer correcting to deleting when the error is informative. "This was true until X changed" tells
the next reader which direction to distrust.

### Re-index, or the memo is invisible

**An unindexed memo is not in memory.** It is a file. The next session's search will not return it,
so the thing you just learned will be rediscovered rather than recalled — at full price.

If the project has a searchable memory corpus, re-index it now, as part of stopping, not as a
separate chore you will get to.

### Verify with a search, never with a row count

A row count says something was written. Only a search says the next session will find it.

Search for a distinctive phrase from a memo you just wrote. If it comes back, the loop is closed.
If it does not, you have files on disk and nothing in memory, which looks identical from the
outside and is the failure this whole step exists to prevent.

## Three failure modes worth knowing before you meet them

**Renaming a project directory can fork its memory store.** Where the store is keyed by the
project's path, a rename leaves the old store intact and invisible: no error, no warning, and the
index you load is the new empty one. Move the store at rename time. One store forked this way sat
unreachable for ten days while the same bug was worked from the other half.

**A flat index stops working long before it stops growing.** Past roughly fifty entries, move to a
hub with sub-indexes by type, and keep the top file for state and pointers only. A list nobody
finishes reading is a list that is not consulted.

**The count in the index will be wrong.** Any file that states how many memos exist will drift,
because concurrent sessions write memos without seeing each other. Do not trust it and do not
spend effort maintaining it. Assert **coverage** instead — that every memo is reachable from some
index and appears in exactly one — which is the property that actually matters and can be checked
in seconds.

## What good looks like

You should be able to answer these at the end of a session:

- What did I learn that was not obvious at the start?
- Is it written where the next session will search, rather than where I happened to be working?
- Did I check, by searching, that it comes back?
- Did I correct anything I found to be wrong on the way?

If the answer to the first is "nothing", that is a legitimate answer. Write nothing rather than
padding the store; a memo recording that an ordinary task went as expected costs future readers
attention and returns nothing.

Versions

RepositoryScoreLicence
This page · giulioder/re-call90AGPL-3.0
giulioder/re-call90AGPL-3.0

Database snapshot: 13.11.2026 · package version 3e7983d857df (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 100learned
    Extract and persist learnings, corrections, and patterns from the current session to memory. Invoke immediately after any user correction or rejected suggestion, after validation of a non-obvious choice, when the user says "remember this" / "catat ini", when a new preference,…
  • 90session-memory
    End-of-session memory capture -- classifies session signals using a tiered taxonomy and stores confirmed items via Pensyve. Use when ending a work session or when the user wants to capture what was learned.
  • 84memory
    Store and retrieve durable agent memory — remember decisions, preferences, and session outcomes with calibrated salience; recall prior context before acting or resuming a project. Use whenever you store a memory, search memory, retrieve prior context, or check what was learned in past sessions.
  • 90nemp-memory
    Agentic memory that evolves with your work. Use at session start or when the user wants to remember or update decisions and preferences, retrieve project context, or review saved memory.
  • 95memory
    Activate this skill when starting a new session, beginning a new task, saving knowledge, recalling past decisions, or after completing significant work. Also activate on errors to log them for pattern analysis. Relevant when the user asks about memory, past context, lessons…
  • 90owlmem
    Use OwlMem, the shared knowledge base, memory and task inbox for all of the user's AI agents. Use at the start of a task to look up what the team already knows, after finishing work to write back what you learned, and when the user asks to check messages, hand work to another…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.