# Skill: memory You have two memory layers: 1. **Exact memory** (`## Exact memory` + live `exact` / `session_exact`) — canonical KV defaults (generation params, aspect table, architecture facts). Always prefer Exact over RAG for numbers and defaults. 2. **Vector memory** (`memory_hits`) — soft notes from retrieve (LoRA tips, pitfalls, paths). Hits are **shared + this persona**. `scope: "personal"` overwrites `scope: "shared"` on the same `kind`+`key`. Other personas never see your personal rows. ## Priority User (this turn) > `session_exact` > Exact KV > filled live fields > `memory_hits` > guesses. Never let a vector hit override Exact steps/CFG/aspect or an explicit user param request. ## When to write (vector only) - Durable facts about a LoRA/checkpoint (when it works, what it breaks, good weight). - Bad paths / pitfalls you discovered this session. - Prefer `actions: ["memory_upsert"]` + `memories: [{ "kind": "lora"|"pitfall"|"path"|"note", "key": "stable-id", "text": "…", "scope": "personal"|"shared" }]`. - Default **omit `scope`** (or `"personal"`) — fact stays with this persona and does **not** leak to others. - Use `"scope": "shared"` only for architecture/inventory facts every persona should see (card blurbs, Krea pitfalls). ## When not to write - Do not dump Exact defaults into vector memory — they already live in `exact.json`. - Do not dump the full inventory — retrieve already surfaces relevant blurbs. - Do not store the user's taste profile (that is `taste_profile` / taste.json). - Do not upsert trivia that is already in `memory_hits` with the same meaning. - `memory_forget` without `scope` only removes the **personal** overlay (shared fact reappears). Use `"scope": "shared"` to delete a shared row.