agentsclimarketplace

Memory update

Skill OutlineDriven/odin-claude-plugin/skills/memory-update

Use when the user says save this to memory, or scan this session for memories. For auditing existing memories, use memory-clean.From its SKILL.md

Install
npx -y skills add OutlineDriven/odin-claude-plugin --skill memory-update

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

3.1 KB, 762 tokens by cl100k_base, as published. Nobody here has run it

Scan session history, surface save-worthy moments, propose → confirm → write. Never fabricate. Every proposal must cite a transcript turn.

Scope

Creates or revises memory files in the agent's memory directory. Does not delete, merge-stale, or audit existing files. Does not redact or sanitize.

Path resolution

SKILL_SCRIPTS="${MEMORY_UPDATE_SKILL_SCRIPTS:-$HOME/.claude/claude/skills/memory-update/scripts}"
MEMORY_DIR=$("$SKILL_SCRIPTS/resolve-paths.sh" memory_dir)
SESSION_HISTORY_GLOB=$("$SKILL_SCRIPTS/resolve-paths.sh" session_history_glob)

Abort on non-zero exit. Override MEMORY_UPDATE_SKILL_SCRIPTS if installed outside $HOME/.claude. Override MEMORY_DIR / SESSION_HISTORY_GLOB env vars to target a non-Claude-Code agent's layout.

Memory types and required sections

Read references/MEMORY-FRONTMATTER.md for the full schema. Key rules:

typeRequired extra sections
feedback**Why:** and **How to apply:**
project**Why:** and **How to apply:**
usernone beyond frontmatter
referencenone beyond frontmatter

Filename: <type>_<slug>.md. Slug: lowercase, hyphens only, ≤ 40 chars.

Workflow

1. Resolve paths (above)

2. Scan session history for proposals

Run scripts/scan-session.sh "$SESSION_HISTORY_GLOB" → JSON array:

[{ "type": "feedback", "slug": "prefer-foo", "evidence_turn_ids": ["uuid-123"],
   "draft_body": "...", "draft_index_entry": "- [Title](file.md) — hook" }, ...]

Read references/SIGNAL-HEURISTICS.md to understand which turns qualify. If the user triggered the skill with an explicit instruction ("remember that X"), synthesize a proposal from that instruction directly instead of scanning.

3. Present proposals and wait for confirmation

Render each proposal as:

Proposal N — type: feedback
Evidence: turn uuid-123 ("the user said 'stop doing X'")
Draft:
  ---
  name: …
  description: …
  type: feedback
  ---
  Rule text. **Why:** … **How to apply:** …
Index entry: - [Title](file.md) — hook (N chars)

Accept / Reject / Edit?

Wait for explicit user response per proposal. Never write without confirmation.

4. Check for near-duplicates before writing

rg -l -F "<key phrase from draft>" "$MEMORY_DIR"

rg works on any directory regardless of git worktree boundaries. If a hit exists, show the existing file's content and ask whether to merge into it or create new.

5. Write

  • Write "$MEMORY_DIR/<type>_<slug>.md" with frontmatter + body.
  • Append (or update) one-line entry in "$MEMORY_DIR/MEMORY.md" (≤ 150 chars).

6. Verify

Read back each written file; confirm frontmatter parses as YAML (key: value lines present, no tab-indentation errors). Report which files were written and their line counts.

Anti-patterns (never do)

  • Fabricate a memory without citing a transcript turn or explicit user statement.
  • Store code patterns, fix recipes, git history, or ephemeral task state.

What ships with it: 5 files

14.8 KB alongside SKILL.md, 3 of them executable

scripts/

Keep looking

Skills are one crate of 325,949. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.