agentleFS
quiczzquiczz/ship-safe-skills/skills/session-journal/SKILL.md

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

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
  1. Distinctive:

    Keep each entry under about 25 lines.

    line 47
  2. Distinctive:

    Before the context gets long enough to be summarized: write the entry first so detail is not lost.

    line 53
  3. Very specific:

    Add to ~/.claude/settings.json (all projects) or .claude/settings.json (one project):

    line 62
  4. Distinctive:

    Check that hook field names and the transcript format still match your Claude Code version if the export looks empty.

    line 83

“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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Session Journal

Two layers, because they do different jobs:

LayerWhat it gives youHow
Journal (this skill)A short, readable record: goal, decisions and why, files changed, commands that mattered, open itemsYou (Claude) write it during the session
Transcript export (optional hook)The complete verbatim chat, saved automaticallyscripts/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 accident

On 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 us

Keep 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.md and 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

  1. Copy or install this skill to ~/.claude/skills/session-journal/.
  2. 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.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.