log
Skill0 starsChanged 42 days agoMITView on GitHub
Session-ending memory checkpoint: reviews the conversation and writes its durable, hard-won findings into the current project's memory/ directory and MEMORY.md index, including correcting existing memory files the session proved stale or wrong. IMPORTANT: despite the name, this skill has nothing to do with logfiles. Do NOT use it to read or analyze application, server or CI logs, console output, stack traces, or `git log`; it only WRITES memory. The one thing that triggers it is the user wrapping up and wanting knowledge preserved for future sessions: the literal command /log, or phrasings like "log this session", "save what we learned before I close", "checkpoint your memory", "update your memory before we finish", "make a note for future sessions", "don't lose this context". Also reasonable to offer proactively at the end of a long debugging or research session where real understanding was built.
18 other projects use a version of this.
Adopted by
Most recently taken up by
- mehboobali98/rmine-skillstheir own version, first seen Nov 6, 2026
- myowinthein/claude-helmtheir own version, first seen Nov 1, 2026
- tjmode/koovitheir own version, first seen Nov 1, 2026
- rmarji/chiron-counciltheir own version, first seen Nov 1, 2026
- foxrun-ai/foxruntheir own version, first seen Nov 1, 2026
- gyroid-eth/orrery-telemetrytheir own version, first seen Oct 27, 2026
Other versions18 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 18
- regent-vcs/re_gent★ 789same name
- dtiger1889-ops/claude-harness-toolbox★ 31same name
- swastij/claude-log-skill★ 16same name
- gyroid-eth/orrery-telemetry★ 12same name
- foxrun-ai/foxrun★ 6same name
- bonez-io/re_gent★ 4same name
- Valmor-R-Reichel/SGM★ 4same name
- aniklavida/agent-assemble★ 1same name
- llewellynvz/claude-code-timestamps★ 1same name
- rmarji/chiron-council★ 1same name
8 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository6 other files it gives its agents.
- backcastSkill
- copywriterSkill
- icm-projectSkill
- memory-lintSkill
- task-shapeSkill
- ux-lawsSkill
The file
We split this skill into the rules it gives an agent
10 rules. 0 are common, 8 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 16 edited versions we read keep these.
8
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 36
Treat it as curation, not transcription.
- Distinctive: line 42
Read the current project's memory directory and index fresh.
- Distinctive: line 48
If the project has a CLAUDE.md, skim it too.
- Distinctive: line 56
Root causes, and the wrong turns on the way there: If a problem was first misdiagnosed, record the misdiagnosis explicitly alongside the …
- Distinctive: line 88
Does anything you learned contradict it?: If a memory says a bug is fixed, a guarantee holds, or a system behaves a certain way, and this …
- Distinctive: line 129
Use the existing format exactly: one file per memory, in the project's memory directory.
- Very specific: line 181
The hard rule this exists for: never tell the user you will remember something across a restart, a /clear, or a compaction.
- Very specific: line 183
If you ask the user to restart the app, write handoff.md *in that same message*, before they restart, not after.
- Distinctive: line 188
Keep it short and make it auditable:
- Distinctive: line 199
Do not paste the memory file contents back into the conversation.
“Common” is measured: kept by at least 6 in 10 of the 16 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
/log: session memory checkpoint
What this is
A deliberate, end-of-session pass over the project's existing auto-memory
system. It does not introduce a new store, a changelog file, or a parallel
notes system. It writes to the same memory/ directory and MEMORY.md index
the system prompt already describes.
Why it exists as an explicit command: memory writes made during a session are reactive and partial. You save something the moment it seems notable, which means you save it before you know how the story ends. A theory that looked right in turn 20 gets disproven in turn 60, but the memory written in turn 25 is still sitting there asserting the wrong thing. At the end of the session you finally know which parts mattered, which were wrong, and what the actual conclusion was. This command is the moment to reconcile all of that.
Treat it as curation, not transcription. The goal is that a future session starts with what took this one hours to learn, and is not misled by claims that have since become false.
Step 1: locate the memory system
Read the current project's memory directory and index fresh. Never assume a
layout from another project or from earlier in this session; the path is given
in the system prompt and differs per project. Read MEMORY.md and skim the
titles and descriptions of existing memory files so you know what is already
recorded before deciding what is new.
If the project has a CLAUDE.md, skim it too. Anything already documented
there does not belong in memory.
Step 2: reconstruct what actually happened
Go back over the session and pull out the things a future session would need and could not cheaply rederive:
- Root causes, and the wrong turns on the way there. If a problem was first misdiagnosed, record the misdiagnosis explicitly alongside the real cause. A plausible but wrong theory is a trap that will cost the next session the same hours it cost this one. "It looked like X, it was actually Y, here is how to tell them apart" is often the most valuable line you write.
- Decisions and the why behind them. The choice is visible in the code; the constraint or trade-off that forced it usually is not.
- User corrections and confirmations →
feedbacktype. Both directions matter. "Don't do X" is easy to notice; "yes, that was the right call" is quieter and just as worth keeping, or you drift away from approaches the user already validated. - New project facts →
projecttype: who is doing what, deadlines, motivations, constraints, incidents. Convert relative dates to absolute ones. - Things about the user →
usertype: their role, expertise, how they want to work. - Pointers to external systems →
referencetype. - Anything the user explicitly asked you to remember, in any phrasing.
Also note operator actions that were required and may not have happened: migrations to run, keys to set, dashboards to check. A pending action that silently never got done is a classic source of later mystery breakage.
Step 3: reconcile against existing memory (do not skip this)
This is the step that distinguishes a real checkpoint from a dump, and it is the one most easily skipped, because writing something new feels like progress while auditing something old feels like overhead.
For each existing memory file that touches a topic this session went near:
- Does anything you learned contradict it? If a memory says a bug is fixed, a guarantee holds, or a system behaves a certain way, and this session showed otherwise, correct that file. Do not leave a false claim standing next to a new true one; a future session may read either, and the confident-sounding stale one often wins.
- Do its concrete claims still hold? Memories that name a file, function, flag, or line number assert something that was true when written. Before repeating or relying on such a claim, verify it against the current code: grep for the symbol, open the file. If it no longer matches, say so in the file rather than silently deleting it: note what it claimed, what is actually there now, and that it needs re-checking. An honest "this entry says X but the code says Y; don't trust it without re-reading" is far more useful than a quiet edit that hides the drift.
- Is a correction better than a new file? Usually yes. Prefer amending the existing memory on that topic over creating a second one that competes with it. When you amend a claim that was previously stated confidently, mark the correction and date it so the change is legible.
Step 4: filter hard before writing
Do not save:
- Anything derivable from reading the current code, or from
git log/git blame, including architecture, file paths, conventions, and who changed what. - A blow-by-blow of the diffs. The commit carries that.
- Fix recipes whose result is already in the code.
- Ephemeral state: in-progress work, scratch context, what you were about to do. (That belongs in a handoff note; see step 6b.)
- Anything already in
CLAUDE.md.
These exclusions hold even if the user asks for a broad "save everything". If they ask you to record something in this category, the useful move is to ask what was surprising about it and keep that instead.
The test: would a competent person with the repo in front of them already know this? If yes, it is not memory. If it took this session real work to discover, it is.
Step 5: write
Use the existing format exactly: one file per memory, in the project's memory directory.
---
name: {{short-kebab-case-slug}}
description: {{one-line summary, specific enough to judge relevance later}}
metadata:
type: {{user | feedback | project | reference}}
---
{{Body. For feedback and project types, lead with the rule or fact, then a
**Why:** line and a **How to apply:** line. Link related memories with
[[their-slug]].}}Link liberally with [[slug]]. A link to a memory that does not exist yet is
fine; it marks something worth writing later.
Step 6: update the index
Bring MEMORY.md in line with what you just did. It is an index, never a
store: one line per memory, roughly under 150 characters,
- [Title](file.md): one-line hook.
Pay particular attention to index lines for files you corrected. An index line still summarizing the pre-correction claim will keep propagating the false version, since the index is what gets read first and most often.
Step 6b: update the spine (if the memory has one)
Some setups add two files that make a session survivable across restarts:
log.md (what happened, append only) and handoff.md (what is in flight
now). If the memory directory contains them, the index is not the whole job.
Append to log.md, one entry, never editing a past one:
## YYYY-MM-DD HH:MM | project | operation | one-line resultwith operation one of work · decision · failure · handoff ·
ingest · lint, then two or three lines of detail. A session that produced
nothing durable still gets an entry saying so.
Rewrite handoff.md from scratch. It is state, not history: what is in
flight right now, ordered by priority, each item naming the project, the
exact next action, and what is blocking it. Include anything left unresolved:
open questions, decisions awaiting the user, work paused midway. If nothing
is in flight, say that explicitly rather than leaving yesterday's items to be
read as current.
The hard rule this exists for: never tell the user you will remember
something across a restart, a /clear, or a compaction. Only files survive.
If you ask the user to restart the app, write handoff.md in that same
message, before they restart, not after.
Step 7: report back
Keep it short and make it auditable:
- Written: new memories, one line each, and why each earns its place.
- Corrected: existing memories you amended, and what specifically was wrong. Call these out clearly; they are the highest-value part of the pass and the user may want to sanity-check your reasoning.
- Deliberately left out: the notable things you considered and dropped, with the reason (derivable from code, ephemeral, already in CLAUDE.md). This is the user's chance to catch a bad judgment call and say "no, actually keep that."
Do not paste the memory file contents back into the conversation. Point to the files.
Judgment
A session with a genuine hard-won finding might justify one or two new memories plus a correction. A routine session may justify nothing at all, and saying "nothing here is worth persisting, here's why" is a perfectly good outcome. It is better than padding memory with restatements of the codebase, which dilute the signal in every future session that loads the index.
Err toward fewer, denser, more honest memories. Run memory-lint from time
to time to catch what slipped through.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

