mcpbeat Sign in

Session Memory Skill for Claude

Maintains a structured running-notes document during long work sessions. Use when the user says "session notes", "update notes", "start session notes", "show session notes", or when you recognize the current session has accumulated enough state (decisions, corrections, files touched, errors) that it risks being lost under context pressure. Stores notes as a procedure memory tagged [session-memory, active] so they survive container death within the same session thread.

2k tokens
context cost
the whole folder, loaded on every use
2
files
instructions only
0
copies elsewhere
how many repositories repackaged it
137
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/oaustegard/claude-skills --skill session-memory

The instruction itself

9 sections, as written by the author

Session Memory - Running Notes

Maintain a single structured markdown document that tracks what is happening

right now in the current work session. This is within-session continuity,

distinct from remember() (cross-session semantic memory) and stash

(coarse checkpoint).

When to Use

Invoke on any of these triggers:

  • User says "session notes", "update notes", "start session notes",

"show session notes", "note the session", "write it down"

  • User indicates they want continuity across context compression:

"before you forget", "write that down", "for when context gets compressed"

  • You have independently completed a meaningful block of work (file edits,

a bugfix, a design choice, a reversal after correction) and no note has

been updated for a while

Do NOT invoke for:

  • One-off answers with no follow-up
  • Cross-session persistence — that's remember()
  • Coarse checkpoints intended for another session to resume — that's stash

Template (Fixed Sections)

Every session note uses exactly these sections, in this order, with these

headers. **Preserve the structure on every update. Never rename or reorder

sections.** Update the *content* within sections; leave empty sections present

with a single _(nothing yet)_ placeholder.

# Session: {short title, 3-8 words, derived from the initial task}

## Current State
_What is actively being worked on right now. Explicit next step._

## Task Specification
_What the user originally asked for. Constraints, acceptance criteria,
design decisions that framed the work._

## Files and Functions
_Important paths touched or referenced, one per line, with a one-line
note on what they contain and why they matter._

## Errors & Corrections
_Errors encountered and how they were fixed. User corrections to my
approach — these have priority over routine progress entries._

## Key Decisions
_Choices made during the session with their rationale. One bullet per
decision. Lead with the choice, then the why._

## Worklog
_Terse, append-only, chronological. One line per attempt or step.
Prefix with ✓ (done), ✗ (failed), → (in progress), or ↺ (reverted)._

Storage

Persist as a procedure memory via the remembering skill, so notes

survive container death within the session thread.

from remembering.scripts import remember, recall, supersede

# First write in a session: create the memory
note_id = remember(
    note_markdown,
    "procedure",
    tags=["session-memory", "active"],
    priority=1,
)

# Subsequent updates: find the active note and supersede it
existing = recall(tags_all=["session-memory", "active"], n=1)
if existing:
    note_id = supersede(existing[0].id, updated_markdown, "procedure",
                        tags=["session-memory", "active"], priority=1)

Session boundary: when the user says "session done", "wrap up",

"end session", or the conversation is clearly winding down, retag the

active note from active to archived by superseding it with the same

body and tags=["session-memory", "archived"].

One note is active at a time. If `recall(tags_all=["session-memory",

"active"])` returns more than one, the oldest is stale — archive it before

updating the current one.

Update Discipline

On each invocation:

  • Read the existing note (if any) via `recall(tags_all=["session-memory",

"active"], n=1)`. Work from its current body — do not regenerate from

scratch.

  • Update in place. Edit the relevant sections; append to ## Worklog.

Do not drop prior content unless it is now wrong (then move the correction

to ## Errors & Corrections).

  • Prioritize user corrections. When the user pushes back or corrects an

approach, that goes into ## Errors & Corrections *before* other updates.

  • Deduplicate against stash and explicit memories. If an item is already

captured in a stash or a remember() call, reference it by ID rather

than restating. Notes are *supplementary*, not duplicative.

  • Supersede, don't append. Write the full updated document back via

supersede(). This keeps exactly one active note per session.

Budget

Target ~12K tokens for the note document. Prefer concise phrasing, but do

not truncate substantive content to hit the target — trigger

## Key Decisions consolidation (collapse related bullets) before cutting.

If the document exceeds ~20K tokens, compress ## Worklog first (merge

consecutive ✓ entries into a single summary line, keep corrections and

decisions intact).

*Rationale: we run on 200K–1M context models, so the original 2K budget

from the issue spec was over-constrained. 12K matches Claude Code's

upstream design and leaves ample room for the surrounding conversation.*

Surface to User

When the user asks to "show session notes", print the current note body

verbatim in a fenced code block. Do not paraphrase.

When updating silently (you triggered it yourself), confirm with a single

line: Updated session notes (note id: <short-id>). Do not dump the full

body unsolicited.

Invariants

  • Section headers and order are fixed. Updates change content, not structure.
  • User corrections take priority over routine progress in ordering and detail.
  • Notes do not duplicate what is already in stash or explicit memories.
  • Manual invocation always works. Automatic triggers are a convenience, not

a requirement.

  • Exactly one session-memory + active memory exists per session. Stale

actives are archived, not left dangling.

  • remembering — cross-session memory store (where these notes persist)
  • stash-resume-protocol (ops) — coarse session checkpoints
  • context-hygiene (ops) — when and what to offload from context

Other skills for the same job

different authors, same section of the catalogue
Create Technical Spike
by github
vendor ×1

Create time-boxed technical spike documents for researching and resolving critical development decisions before implementation.

2k tokens
Spec To Backlog
by openai
vendor ×1

Automatically convert Confluence specification documents into structured Jira backlogs with Epics and implementation tickets. When an agent needs to: (1) Create Jira tickets from a Confluence page, (2) Generate a backlog from a specification, (3) Break down a spec into implementation tasks, or (4) Convert requirements into Jira issues. Handles reading Confluence pages, analyzing specifications, creating Epics with proper structure, and generating detailed implementation tickets linked to the Epic.

12k tokens
Grill With Docs
by sanity-io
vendor ×1

Grilling session that challenges your plan against the existing domain model, sharpens terminology, and updates documentation (CONTEXT.md, ADRs) inline as decisions crystallise. Use when user wants to stress-test a plan against their project's language and documented decisions.

2k tokens
Clinical Decision Support Documents
by BioTender-max
×1

Guidelines for clinical decision support (CDS) documents: biomarker-stratified cohort analyses and GRADE-graded treatment reports. Covers structure, executive summaries, evidence grading (1A–2C), stats (HR, CI, survival), and biomarker integration. Use for pharma research docs, clinical guidelines, regulatory submissions.

3k tokens
Clinical Decision Support
by christophacham
×1

Generate professional clinical decision support (CDS) documents for pharmaceutical and clinical research settings, including patient cohort analyses (biomarker-stratified with outcomes) and treatment recommendation reports (evidence-based guidelines with decision algorithms). Supports GRADE evidence grading, statistical analysis (hazard ratios, survival curves, waterfall plots), biomarker integration, and regulatory compliance. Outputs publication-ready LaTeX/PDF format optimized for drug development, clinical research, and evidence synthesis.

83k tokens scripts
Secure Workflow Guide
by christophacham
×1

Guides through Trail of Bits' 5-step secure development workflow. Runs Slither scans, checks special features (upgradeability/ERC conformance/token integration), generates visual security diagrams, helps document security properties for fuzzing/verification, and reviews manual security areas.

4k tokens
Adr Log
by ComeOnOliver
×1

Document architecture decisions with ADR (Architecture Decision Records). Use when making significant technical decisions, choosing between alternatives, or when onboarding needs context on past decisions.

7k tokens
Plan Approval
by ComeOnOliver
×1

Plan-approval workflow patterns for user control over AI actions in Claude Code Waypoint Plugin. Use when planning complex changes, need user approval before execution, want to prevent mistakes, or need to document proposed changes. Covers plan creation, approval checkpoints, plan deviation tracking, revision management, and learning from approved/rejected plans.

8k tokens

How to use it

Copy the folder

Take oaustegard/session-memory from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.