remember

Use when the user wants a correction about this repository kept, or asks what exo remembers here, what still holds, or to forget a line. Not for a plan another session runs, which spec owns, or a buil

SKILL.md

GitHub

Memory

Keep only what two sessions attested and the repository still supports. The enemy is a memory file that grows until every session pays to read a claim that stopped being true. The overcorrection is a file so guarded that a correction the user gave twice never reaches it.

When to use

  • Not for a plan another session runs: spec owns that.
  • Not for a build, test or run command: find-cause step 6 appends that to AGENTS.md or CLAUDE.md; two writers of project knowledge produce two truths.

What is attested twice

Claims two separate sessions had booked when this skill loaded, before this session's booking:

!node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" propose

The loop

  1. Reach for the stronger fix first.
    • Before booking, walk the ladder in ../edit-skills/references/where-a-fix-lives.md; propose the strongest home the mistake fits instead of a claim, because a claim is read, not enforced.
    • Book only a fact none of those homes can carry.
  2. Book the user's correction.
    • Run node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" book --claim "<one sentence>" --quote "<their words, verbatim>" --session "<this session id>".
    • Quote no password, token or key; the quote is stored as given.
    • Rerun node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" propose, because the block above predates the booking; next steps use this output.
  3. Write nothing yet when the rerun names no claim; say which session count the booking now stands at.
  4. Propose each claim in the rerun output to the user with both dated quotes, one claim per question, question shape.
    • Claim a lint rule or test can catch → option 1 adds that check, named as a rule or test file and handed to build, with no line written; option 2 writes the text line.
    • Any other claim → ask it as above.
    • User declines the claim, or picks option 1 (the check carries it) → run node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" reject --session "<this session id>"; else propose --count keeps counting it in ship's Lessons: line.
    • Reject a lesson propose printed with (key: <key>) by --key '<key>', any other claim by --claim "<the claim>".
  5. Write an approved claim with node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" write --claim "<the claim>" --refs "<path,path#symbol>".
    • Lesson propose printed with (key: <key>) → add --key '<key>'.
    • Claim answers a question an earlier line already answered → add --replaces "<the old claim>"; file never holds two answers to one question.
  6. Relay a refusal exactly as the script printed it.
    • Line the refusal names → retire with node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" retire --claim "<the claim>" before trying again.
    • Edit neither file by hand; memory.md is rendered from memory.json.
  7. Prune with node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" verify whenever the user asks what is still true; report every dropped line the script named.
  8. Store a spec decision the user answered with node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" write --decision --claim "<the decision>" --refs "<path,path>"; it needs no second session and stays out of memory.md.
    • node "${CLAUDE_SKILL_DIR}/scripts/memory.mjs" decisions lists each as settled or changed.
  9. Report rendered path and its byte count against the budget, one line.

References

File Read it when
../route-skills/references/question.md Before a message that asks the user to pick among lettered options.
../edit-skills/references/where-a-fix-lives.md Before booking a correction, to check whether a stronger fix than a memory line exists.

Judgment

  • Two attested sessions plus user approval outrank a claim that reads true: a claim one session misheard is what this gate refuses.
  • Script output outranks anything in this context, including a memory file read earlier in the session.
  • Claim the repository itself records → drop, not write; reading it is cheaper than trusting it.