🇰🇷 한국어 버전: README.ko.md
This skill was built to solve a recurring problem I ran into while working on multiple projects with Claude Code: loss of continuity between sessions.
Claude Code's auto-memory captures facts, and git captures artifacts. But the space between them — the process of what was tried, what failed, and where the next session should pick up — has no home. This skill fills that gap.
Three situations repeat themselves in every long-running Claude Code project:
- Mid-session compaction — the context window fills, auto-compaction runs, and the reasoning behind a decision from ten minutes ago disappears along with it.
- New session, blank slate — the next Claude has to re-derive root causes the previous Claude already figured out.
- Silent repetition of failed approaches — an approach that failed last session gets attempted again once the session changes, because the failure was never recorded anywhere.
Claude Code retains two things between sessions, and neither one holds "process".
| System | Captures | Misses |
|---|---|---|
Auto-memory (MEMORY.md) |
Durable facts — user profile, project constraints | Anything that changes session-to-session |
| Git | Artifacts — code that shipped | Reasoning trail, failed attempts, fixes that were introduced then rolled back |
The result: users end up re-briefing Claude at the start of every session, and Claude walks the same dead ends every week.
One markdown file per session, scoped to the project, indexed by date.
~/.claude/projects/<project-hash>/memory/sessions/
├── INDEX.md
├── 2026-07-30_0900.md
├── 2026-07-30_1420.md
└── 2026-07-31_0830.md
Each log has five sections. Empty ones are deleted.
- What I did — grouped by outcome, not by tool call.
- What I discovered (non-obvious) — root causes and hidden constraints uncovered along the way.
- Failed attempts (don't repeat) — approaches to avoid re-attempting.
- Next up — concrete file-level actions.
- Files changed — path list only.
On session start, the skill loads the 3 most recent logs and briefly summarizes state before doing anything else.
On session end — a wrap-up phrase, a <summary> compaction tag, or an explicit request — it writes a new entry and updates INDEX.md.
Storage lives inside the folder Claude Code already manages (~/.claude/projects/<hash>/memory/). No parallel structure, no separate database, no extra install step.
💡 Tip: See
session-log/example.mdfor a real entry from a working project.
- Zero dependencies — only Claude Code's built-in
Read/Write/Glob/Grep. - Plain markdown — greppable, editable in any editor, portable even if Claude Code changes its storage layout tomorrow.
Failed attemptssection is the point — logs without it are narrative; logs with it stop Claude from re-walking dead ends.- One session = one file — sessions are the natural unit of work. A week is easy to skim; any single entry is easy to open.
- Complements auto-memory — auto-memory answers "what is durably true", session log answers "what happened yesterday". When the same failure gets recorded three times or more, it can be promoted to auto-memory as a
feedbackentry.
The easiest way — one command via the skills CLI:
npx skills add Choonham/session-log-skill -g -a claude-code -yThat's it. The skill is installed globally and Claude Code picks it up on the next session.
If you'd rather keep the source under your own path and symlink it in (useful for local development, or when you want to git pull updates yourself):
git clone https://github.com/Choonham/session-log-skill ~/skills-src/session-log-skill
mkdir -p ~/.claude/skills
ln -s ~/skills-src/session-log-skill/session-log ~/.claude/skills/session-logOn Windows, use mklink /D from an admin prompt (or from a normal prompt if Developer Mode is enabled), or simply copy the session-log/ folder into ~/.claude/skills/.
> /skills
session-log ... Project-scoped work journal that survives session compaction...
npx skills remove session-log -g -yName the skill explicitly. Do not add --all — that flag ignores the name and wipes every installed skill.
The skill activates in the following situations:
- The session starts with a
<summary>tag (compaction detected) - The user says one of:
log this session,wrap up,what did I do last session,resume where we left off,이제 마무리,다음에 계속,지난 세션 뭐 했지,지금까지 뭐 했는지 로그 남겨 - Claude notices a meaningful checkpoint (bug fixed, feature landed, PR merged, etc.)
💡 Tip: For fully automatic load-on-start and log-on-end, add
SessionStartandStophooks to~/.claude/settings.json. The full spec lives insession-log/SKILL.md.
- Play-by-play tool calls (the JSONL transcript already has that)
- Full file contents (a path plus a one-line reason is enough)
- Anything already in a commit message (reference the sha instead)
- Secrets
MIT — see LICENSE.
Hope this skill helps smooth out your Claude Code workflow.