agentsclimarketplace

Memory update

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

Outline-Driven Development for Claude Code - 46 agents, 25+ skills, diagram-first methodology, AST-based editing, atomic commits.

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.

What its author says it does

Copied from the file, not written here

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

SKILL.md

3.1 KB, 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.

Keep looking

Skills are one crate of 328,083. 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.