session-memory/SKILL.md
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.
npx skillsauth add oaustegard/claude-skills session-memoryInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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).
Invoke on any of these triggers:
Do NOT invoke for:
remember()stashEvery 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)._
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.
On each invocation:
recall(tags_all=["session-memory", "active"], n=1). Work from its current body — do not regenerate from
scratch.## Worklog.
Do not drop prior content unless it is now wrong (then move the correction
to ## Errors & Corrections).## Errors & Corrections before other updates.remember() call, reference it by ID rather
than restating. Notes are supplementary, not duplicative.supersede(). This keeps exactly one active note per session.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.
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.
session-memory + active memory exists per session. Stale
actives are archived, not left dangling.remembering — cross-session memory store (where these notes persist)development
--- name: verifying-claims description: Check that a document's claims about code are actually true by reading the prose, the code, and the tests and reporting (or fixing) where they disagree. Use whenever the user wants to verify a README, guide, spec, or docstring still matches the code; whenever they mention documentation drift, doc-code sync, "is this still accurate", stale docs, or keeping docs/tests/code consistent; before publishing or merging a docs change; or as a periodic doc-accuracy
tools
Query, filter, and transform Markdown structurally with mq — a jq-like CLI for Markdown. Use to extract headings/sections/code-blocks/links from .md files, build a table of contents, pull code blocks of a given language, slice or reshape LLM prompt/output Markdown, or batch-transform docs. Triggers on "extract sections from this markdown", "get all the code blocks", "jq for markdown", "mq", or any structural query over Markdown that grep/Read can't do cleanly.
development
Composes single-file HTML artifacts (PR review writeups, status reports, incident postmortems, slide decks, design systems, prototypes, flowcharts, module maps, feature explainers, kanban boards, prompt tuners) from a small JSON spec instead of hand-written HTML/CSS/JS. Use when the user asks to "compare options side-by-side", requests an HTML version of a report or review or deck, asks for a flowchart, status update, postmortem, design system reference, interactive prototype, custom editor — or explicitly says "HTML artifact", "single HTML file", "self-contained HTML". Skip for ad-hoc HTML snippets (forms, emails, embedded widgets) where there's no template fit.
development
DAG workflow runner that encodes control flow in code, not prose. Use when a procedure has 3+ steps with branching, retries, or validation that must be enforced — gates as `when=`, edge contracts as `validate=`, predicate loops as `retry_until=`. The runner owns the graph; the LLM provides leaves. Also covers parallel execution, checkpoint resume, detached side-effects.