$npx -y skills add heymegabyte/claude-skills --skill 04-preference-and-memoryCaptures and evolves user preferences with confidence levels. Maintains Voice of the Customer model with exact language, dissatisfaction and aspiration signals. Handles promotion/demotion, global vs project scoping, auto memory system, and Omi wearable data integration.
| 1 | # 04 — Preference and Memory |
| 2 | |
| 3 | Capture and evolve user preferences with confidence levels, maintaining a Voice of the Customer model scoped globally or per project. |
| 4 | |
| 5 | ## Auto-memory system |
| 6 | |
| 7 | Persistent file-based memory at `/Users/Apple/.claude/projects/<encoded-path>/memory/`. Write directly via Write tool. |
| 8 | |
| 9 | ## Memory types |
| 10 | |
| 11 | - **user** — role, goals, responsibilities, knowledge |
| 12 | - **feedback** — guidance on how to approach work (corrections AND confirmations) |
| 13 | - **project** — ongoing initiatives, bugs, incidents, who/why/when |
| 14 | - **reference** — pointers to external resources |
| 15 | |
| 16 | ## Capture triggers |
| 17 | |
| 18 | - User explicitly says "remember X" / "save Y" → save immediately |
| 19 | - Correction ("no not that", "don't") → feedback memory |
| 20 | - Confirmation of unusual approach ("yes exactly", "perfect") → feedback memory |
| 21 | - New role / preference / responsibility detail → user memory |
| 22 | - Project milestone / decision / deadline → project memory |
| 23 | - External system reference ("check the Linear project X") → reference memory |
| 24 | |
| 25 | ## Memory file format |
| 26 | |
| 27 | ```markdown |
| 28 | --- |
| 29 | name: {short-kebab-case-slug} |
| 30 | description: {one-line summary — used for relevance ranking} |
| 31 | metadata: |
| 32 | type: {user | feedback | project | reference} |
| 33 | --- |
| 34 | |
| 35 | {memory content} |
| 36 | ``` |
| 37 | |
| 38 | For feedback/project: lead with rule/fact, then `**Why:**` line + `**How to apply:**` line. |
| 39 | |
| 40 | ## Memory routing |
| 41 | |
| 42 | - **Universal (across all projects)** → `~/.claude/` |
| 43 | - **Project-specific** → `./.claude/` (path-scoped) |
| 44 | - **Project memory file** → `~/.claude/projects/<encoded-path>/memory/<name>.md` + index in `MEMORY.md` |
| 45 | |
| 46 | ## MEMORY.md index |
| 47 | |
| 48 | One-line pointer per file: |
| 49 | |
| 50 | ```md |
| 51 | - [Title](file.md) — one-line hook |
| 52 | ``` |
| 53 | |
| 54 | Keep under 200 lines (lines after 200 truncated). |
| 55 | |
| 56 | ## Confidence levels |
| 57 | |
| 58 | - 0.95-1.0 — directly stated by Brian |
| 59 | - 0.85-0.95 — strongly implied by pattern (3+ confirmations) |
| 60 | - 0.70-0.85 — inferred from one signal |
| 61 | - <0.70 — speculative, verify before acting |
| 62 | |
| 63 | Below 0.70 → ask `AskUserQuestion` before persisting. |
| 64 | |
| 65 | ## Voice of the Customer model |
| 66 | |
| 67 | - Exact language Brian uses ("pick ONE", "Hey not Hi", "always find 50 more things") |
| 68 | - Dissatisfaction signals (corrections, re-issued prompts) |
| 69 | - Aspiration signals (stated goals, ideal-world descriptions) |
| 70 | - Stylistic preferences (brevity, sharpness, no preamble) |
| 71 | |
| 72 | ## Brian's preferences (cite from `rules/brian-preferences.md`) |
| 73 | |
| 74 | - Pick ONE, never options |
| 75 | - Never ask permission, silence = approval |
| 76 | - "Hey" not "Hi", no preamble |
| 77 | - Code complete, never truncate |
| 78 | - Priority: simplicity > cost > speed > compatibility |
| 79 | - Open-source only |
| 80 | - Side repos auto-push; emdash projects user-push |
| 81 | |
| 82 | ## Promotion / demotion |
| 83 | |
| 84 | - Memory recurring across 3+ projects → promote to rule (`~/.claude/plugins/heymegabyte-claude-skills/rules/`) |
| 85 | - Rule contradicted by repeated correction → demote to memory or remove |
| 86 | - Per `rules/prompt-as-training-signal.md` |
| 87 | |
| 88 | ## Stale memory |
| 89 | |
| 90 | - Memory describing now-incorrect facts (renamed function, removed flag, retired service) → update OR delete |
| 91 | - Per `rules/prompt-as-training-signal.md` § Before recommending from memory |
| 92 | |
| 93 | ## Omi wearable integration (future) |
| 94 | |
| 95 | - Capture Brian's voice notes as candidate memory entries |
| 96 | - Auto-tag by inferred type |
| 97 | - Surface for review before commit |
| 98 | - Path: `~/.claude/_omi-inbox/<timestamp>.md` |
| 99 | |
| 100 | ## Capture protocol (every prompt) |
| 101 | |
| 102 | 1. Scan prompt for capture triggers |
| 103 | 2. Determine memory type |
| 104 | 3. Write file w/ frontmatter |
| 105 | 4. Add index entry to `MEMORY.md` |
| 106 | 5. Cross-link siblings via `[[name]]` |
| 107 | 6. Per `rules/prompt-as-training-signal.md` — extract BEFORE doing requested work |