session-journal
Skill1 starsChanged 8 days agoMITView on GitHub
Keep a written history of your work sessions - a running journal of goals, decisions, files changed and open items, plus an optional hook that saves the full chat transcript (with secrets masked) to a file. Use when asked to save, log, note or remember the session, keep chat history, or resume where we left off. Use proactively at the end of a substantial piece of work.
- Reads credentials
4 other projects use a version of this.
Adopted by
Most recently taken up by
- dctmfoo/session-journaltheir own version, first seen Nov 1, 2026
- mazze93/claude-code-skillstheir own version, first seen Nov 1, 2026
- muhadyan/skillstheir own version, first seen Oct 6, 2026
- steflight/claude-skillstheir own version, first seen May 19, 2026
Other versions4 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 4
- mazze93/claude-code-skills★ 1same name
- muhadyan/skills★ 1same name
- dctmfoo/session-journal★ 0same name
- steflight/claude-skills★ 0same name
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 repository8 other files it gives its agents.
- skills/zero-trust-review/references/agents.mdAGENTS.md
- api-security-guardSkill
- app-readiness-auditSkill
- build-flow-mapSkill
- monitor-alerts-builderSkill
- motionsiteSkill
- skeletonizerSkill
- zero-trust-reviewSkill
The file
We split this skill into the rules it gives an agent
4 rules. 0 are common, 3 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 47
Keep each entry under about 25 lines.
- Distinctive: line 53
Before the context gets long enough to be summarized: write the entry first so detail is not lost.
- Very specific: line 62
Add to ~/.claude/settings.json (all projects) or .claude/settings.json (one project):
- Distinctive: line 83
Check that hook field names and the transcript format still match your Claude Code version if the export looks empty.
“Common” is measured: kept by at least 6 in 10 of the 3 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
Session Journal
Two layers, because they do different jobs:
| Layer | What it gives you | How |
| Journal (this skill) | A short, readable record: goal, decisions and why, files changed, commands that mattered, open items | You (Claude) write it during the session |
| Transcript export (optional hook) | The complete verbatim chat, saved automatically | scripts/export_transcript.py run by a Claude Code hook |
A skill on its own cannot capture raw chat text. It can only write notes from what you did. For the full verbatim history, set up the hook (see below). Say this to the user if they ask for "all the chat".
Runs on its own: with autopilot on, the full transcript is saved (secrets masked) at the end of every session and before context is compacted. The written journal is added after substantial work.
Where files go
<project>/.claude/journal/
JOURNAL.md index + entries, newest at the bottom
transcripts/ full chats from the hook (one file per session)
.gitignore contains "*" so nothing here is committed by accidentOn first use, create the folder and the .gitignore (content: *). Tell the user once that chat history can contain secrets and personal data, so it stays out of git unless they choose otherwise.
Journal entry format
Append (never rewrite old entries) to JOURNAL.md:
## 2026-11-06 14:20 - short title of the session
**Goal:** one sentence
**Done:**
- what changed and why (file paths)
**Decisions:**
- decision - reason - alternatives rejected
**Commands worth remembering:** `...`
**Open items / next steps:**
- [ ] ...
**Gotchas:** things that surprised usKeep each entry under about 25 lines. Link to files instead of pasting code.
When to write
- At the start of a session: read the last 2 entries of
JOURNAL.mdand the "Open items" so you can resume. Tell the user in one line what you picked up. - At natural stopping points (a feature finished, a decision made, before a long break) and whenever the user says save, log, note, remember, or wrap up.
- Before the context gets long enough to be summarized: write the entry first so detail is not lost.
Never write into the journal
Passwords, API keys, tokens, private keys, full personal data, or customer records. Write "uses STRIPE_SECRET_KEY from the environment" instead of the value.
Optional: save the full transcript with a hook
- Copy or install this skill to
~/.claude/skills/session-journal/. - Add to
~/.claude/settings.json(all projects) or.claude/settings.json(one project):
{
"hooks": {
"SessionEnd": [
{ "hooks": [ { "type": "command",
"command": "python3 \"$HOME/.claude/skills/session-journal/scripts/export_transcript.py\"" } ] }
],
"PreCompact": [
{ "hooks": [ { "type": "command",
"command": "python3 \"$HOME/.claude/skills/session-journal/scripts/export_transcript.py\"" } ] }
]
}
}SessionEnd saves when the session closes; PreCompact saves just before old messages are summarized away. The script reads the hook's JSON from stdin, converts the session transcript to Markdown, masks common secret patterns, and writes it to .claude/journal/transcripts/. Masking is best-effort, so review before sharing a transcript.
Manual use: python3 scripts/export_transcript.py --input path/to/session.jsonl --out ./transcripts
Check that hook field names and the transcript format still match your Claude Code version if the export looks empty; the script prints what it could not read to stderr.
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.

