Help us improve
Share bugs, ideas, or general feedback.
From project-scaffold
Use when the user wants to capture, organize, or retrieve project knowledge as a git-committable memory system at project-memory/ at the project root. Trigger proactively on phrases: 'lesson learned', 'save lesson', 'wrap up session', 'postmortem', 'retro', 'capture this', 'what did we learn', 'why did this fail', 'have we seen this before', 'add to lesson', 'end of session', 'project memory', 'team memory'. Also trigger when a mission is ending and no lesson has been captured yet, or when the user asks a question whose answer likely lives in prior work. Backed by qmd for hybrid BM25 + vector search over every subsystem under project-memory/.
How this skill is triggered — by the user, by Claude, or both
Slash command
/project-scaffold:project-memoryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
An umbrella memory system for a project. Lives at `project-memory/` at the project root so teammates see it immediately, and is committed to git so the memory travels with the code.
README.mdreferences/frontmatter-schema.mdreferences/qmd-integration.mdreferences/template-context.mdreferences/template-daily.mdreferences/template-index.mdreferences/template-session.mdreferences/template-spec-session.mdscripts/append_capture.shscripts/bootstrap_memory.shscripts/promote_to_session.shscripts/qmd_update.shscripts/start_session.shscripts/update_index.shworkflows/bootstrap-memory.mdworkflows/capture-moment.mdworkflows/query-memory.mdworkflows/start-session.mdworkflows/wrap-up-session.mdShare bugs, ideas, or general feedback.
An umbrella memory system for a project. Lives at project-memory/ at the project root so teammates see it immediately, and is committed to git so the memory travels with the code.
Today the only subsystem is project-memory/lesson-learned/ (per-session retrospectives). Future subsystems — decisions, glossaries, onboarding notes, whatever — land as sibling folders under project-memory/ and are auto-indexed by the same qmd collection.
Every new session is seeded from a capture-shape preset chosen by the agent at start — session (the standard 11-section retrospective) or spec (a lighter six-section template focused on the spec axis). Presets define which sections come pre-seeded; sections are additive, so a session can grow new sections later via scripts/promote_to_session.sh (spec → session widen) or by starting with --with-spec-axis (session preset with the spec axis included). See workflows/start-session.md for the decision rule.
project-memory/_CONTEXT.md; if missing, bootstrap before anything else.--mode=session for open-ended work or --mode=spec when implementing a written specification; pass --with-spec-axis for gray-zone missions that mix the two. The workflow page has the full decision rule.scripts/promote_to_session.sh to widen the file additively — preserves all spec-axis content, adds the standard sections.Sessions produce valuable signal that gets lost the moment the chat closes: which prompts the user had to rewrite, which skills misfired, which frustration patterns repeat. A flat log captures that but can't be retrieved later. Tying capture to a qmd-backed index lets a future session semantically recall "we tried X for auth refactors last month and it failed because Y" without grepping blindly. Promoting the folder to project-memory/ at the project root also signals to teammates that this is a first-class knowledge surface — they can skim, contribute, and query it too.
project-memory/
├── .gitignore # umbrella — ignores qmd sidecars (committed)
├── _CONTEXT.md # umbrella — qmd collection description (committed)
└── lesson-learned/ # current subsystem
├── _INDEX.md # curated catalog, human-skimmable (committed)
└── 2026-04-16/
├── _daily.md # overview of the day's sessions
├── session-0915-refactor-auth.md
└── session-1330-debug-build.md
_INDEX.md is subsystem-scoped because its content (Running Themes, Session Log) only makes sense for lessons. Future subsystems will have their own catalog shape. .gitignore and _CONTEXT.md live at the umbrella because they describe the whole qmd collection.
One qmd collection per project, name = <basename(cwd)>-memory. It is scoped to the entire project-memory/ umbrella with pattern **/*.md, so every subsystem under project-memory/ is indexed by the same collection — adding a new subsystem later requires no new qmd registration. Managed by scripts/bootstrap_memory.sh (register) and scripts/qmd_update.sh (re-index). Query anytime:
qmd query "<natural question>" -c "$(basename $PWD)-memory"
qmd search "<keywords>" -c "$(basename $PWD)-memory"
If qmd is not installed, every read surface falls back to rg. Writes never depend on qmd. Full detail in references/qmd-integration.md.
Always prefer running scripts/*.sh over re-deriving the mechanics inline. The scripts encode slug generation, timestamp formatting, idempotent folder creation, section-aware inserts, and qmd calls. Each workflow file above calls out the exact script to invoke.
Scripts live under the skill itself. Invoke them via the absolute path to wherever the skill is installed, then run scripts/<name>.sh from that resolved skill directory.
This skill runs the same way across Claude Code, Codex, and Pi because everything important is done by shell scripts and tool-agnostic markdown edits. Resolve the installed skill directory first, then run scripts relative to that location. If you want the session frontmatter to record a specific harness, set LESSON_AGENT=claude-code, LESSON_AGENT=codex, LESSON_AGENT=pi, or LESSON_AGENT=other before invoking the scripts.
mode: session). Read when running start-session or wrap-up-session.mode: spec (Spec Reference, Decisions, Deviations, Tradeoffs, Open Questions). Read when starting or wrapping up a spec-implementation mission.~/.claude/projects/.../memory/ only after the user explicitly confirms.npx claudepluginhub memorysaver/skills --plugin memoryCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.