| name | retro |
| description | This skill should be used when the user asks to "review my project memory", "run a memory retrospective", "audit memory for stale notes", "clean up old memory notes", or invokes /tm:retro. Dispatches tm-archivist to flag stale, contradictory, or superseded-but-active notes, global-promotion candidates, and MEMORY.md bloat — the review itself writes nothing, and every proposed change is confirmed with the user before touching anything. |
tm — memory retrospective (read, report, confirm)
Guard (run first, always)
Run ${CLAUDE_PLUGIN_ROOT}/scripts/tm-guard.sh "$PWD" and read its KEY=VALUE output.
If TM_STATUS is not OK, stop and follow the repair flows in <MEMORY_DIR>/references/bootstrap.md
(if the store does not exist yet, the same file ships in the plugin at
${CLAUDE_PLUGIN_ROOT}/references/bootstrap.md). Do not continue until the guard prints
TM_STATUS=OK. Keep MEMORY_DIR, PROJECT_ID, and PROJECT_PATH for the steps below.
If PROJECT_EXISTS=false, there is no project memory to review — stop and follow the
project-creation flow in bootstrap.md.
Steps
-
Dispatch tm-archivist via the Task tool for a review pass — its retro mode is
instructed to write nothing. Pass exactly the agent's input contract in the prompt:
mode: retro
memory_dir: <MEMORY_DIR>
project_path: <PROJECT_PATH>
project_id: <PROJECT_ID>
The review procedure — what to flag (stale, contradictory, superseded-but-active,
duplicates, index drift, global-promotion candidates, bloated MEMORY.md) and the
≤10-line report format with one concrete proposed action per finding — lives in the
tm-archivist prompt; do not restate or override it here.
-
Relay the report to the user (≤10 lines).
-
Confirm-gate every change (main thread). For each proposed action, confirm with
AskUserQuestion (apply / skip). Apply only confirmed actions, inline in the main thread:
- Status flips and index-row removals for stale / superseded-but-active findings (bump
updated on edited notes).
- Merges via the supersede pattern: write the replacement note with
supersedes:, flip the
old note to status: superseded, update the index rows.
- Promotions via the
/tm:promote flow — its own confirmation covers the global write;
global memory is never written outside that gate.
- MEMORY.md trims by deleting or relocating the named sections.
Nothing changes without explicit confirmation; skipped findings are left untouched.
-
Commit. If any files changed and the store is its own git repo (its git toplevel is
MEMORY_DIR itself), run in MEMORY_DIR:
git add -A && git commit -m "mem(<PROJECT_ID>): <gist>", where the gist is a one-line
summary of the applied retro actions. If the store is nested inside a larger repo, skip
the commit — the parent repo owns it. If nothing was confirmed, end after the report.
Codex note
Retro is not installed on Codex — run /tm:retro from Claude Code.
Additional resources
<MEMORY_DIR>/references/note-format.md — frontmatter fields (status, supersedes,
promoted-to) used when applying fixes.
<MEMORY_DIR>/references/index-format.md — index row format for row updates.