core
This skill should be used when the user says "capture memory", "save to memory", "remember this", or trigger phrases like: "I've decided", "let's use", "we're going with", "I learned", "turns out", "TIL", "discovered", "I'm stuck", "blocked by", "always use", "never do", "convention is". Also triggers on recall phrases: "what did we decide", "how do we handle", "remind me", "search memories".
Memory
Search first: /mnemonic:search {relevant_keywords}
Capture after: /mnemonic:capture {namespace} "{title}"
Run /mnemonic:list --namespaces to see available namespaces from loaded ontologies.
Mnemonic Core
Memory system operations. See references/ for full documentation.
Trigger Phrases
Capture Triggers (silently capture when user says):
Decisions (namespace: _semantic/decisions):
- "I've decided", "let's use", "we're going with"
- "we'll use", "I'm choosing", "going forward with"
- "the decision is", "we chose", "decided on"
Learnings (namespace: _semantic/knowledge):
- "I learned", "turns out", "discovered that"
- "TIL", "gotcha", "found out", "realized"
- "the root cause was", "it was because"
Patterns (namespace: _procedural/patterns):
- "always use", "never do", "when X do Y"
- "the pattern is", "we should always", "convention is"
- "standard approach", "best practice here"
Blockers (namespace: _episodic/sessions/blockers):
- "I'm stuck on", "blocked by", "can't figure out"
- "hitting a wall", "the problem is", "struggling with"
Context (namespace: _semantic/knowledge):
- "important to know", "keep in mind", "context is"
- "background", "constraint", "requirement"
Recall Triggers (search memories when user asks):
- "what did we decide about", "how do we handle"
- "what's our approach to", "check for decisions"
- "any learnings about", "patterns for"
- "remind me", "what do we know about"
- "search memories", "recall", "find memories"
Silent Capture Protocol
When to capture: Only capture when the user explicitly states a decision, learning, pattern, or blocker in their message. Do NOT capture based on Claude's own suggestions or recommendations.
When trigger phrases are detected:
- Capture to appropriate namespace WITHOUT announcing
- Do NOT say "I'm capturing this" or similar
- Continue natural conversation flow
- Memory creation is invisible to user
Do NOT capture:
- Claude's own suggestions (only user-stated facts)
- Hypothetical scenarios ("we could use...")
- Questions or exploratory discussion
Visibility & Review
Users can review captured memories at any time:
# Check session status and recent captures
/mnemonic:status
# List recent memories (last 7 days)
find ${MNEMONIC_ROOT} -name "*.memory.md" -mtime -7 -exec basename {} \;
# Search for specific captures
/mnemonic:search {keywords}
If a user asks "what did you capture?" or "show me my memories":
- Run
/mnemonic:statusto show memory stats - Use search to find recent relevant memories
- This is NOT a violation of silent capture - user explicitly requested visibility
Capture
/mnemonic:capture {namespace} "{title}"
Namespaces: _semantic/decisions | _semantic/knowledge | _procedural/patterns | _episodic/blockers | _episodic/sessions
MANDATORY: Before creating any memory, check for duplicates:
-
Search for existing memories with similar keywords:
rg -i "{key_words}" ${MNEMONIC_ROOT}/ --glob "*.memory.md" -l | head -5 -
If matches found, read the top result
-
If it covers the same topic → UPDATE existing memory (use Edit tool) instead of creating new
-
If related but different → create new memory with
relates_torelationship -
Only create brand new if no matches found
Recall
rg -i "{keywords}" ${MNEMONIC_ROOT}/ --glob "*.memory.md" -l
Minimal Memory Format
CRITICAL: Generate real values. NEVER write placeholders like "PLACEHOLDER_UUID" or "PLACEHOLDER_DATE".
Generate a UUID and timestamp FIRST, then write the file:
# Generate these BEFORE writing the memory file
UUID=$(uuidgen 2>/dev/null | tr '[:upper:]' '[:lower:]')
[ -z "$UUID" ] && UUID=$(python3 -c "import uuid; print(uuid.uuid4())")
DATE=$(date -u +"%Y-%m-%dT%H:%M:%SZ")
Type must match namespace path:
_semantic/*→type: semantic_procedural/*→type: procedural_episodic/*→type: episodic
Then create the file with the real generated values:
---
id: <the real UUID generated above>
title: "Your actual title here"
type: semantic
namespace: _semantic/decisions
created: <the real DATE generated above>
confidence: 0.9
strength: 1.0
half_life: P90D
last_accessed: <the real DATE generated above>
decay_model: exponential
provenance:
source_type: conversation
agent: claude
---
# Your actual title here
Content here.
Half-life defaults:
_semantic/decisions: P180D (long-lived)_semantic/knowledge: P90D_procedural/patterns: P180D (long-lived)_episodic/*: P30D (fast decay)
References
references/capture.md- Full capture workflowreferences/recall.md- Search and retrieval patternsreferences/schema.md- Complete MIF Level 3 schemareferences/examples.md- Working examples