From mnemonic
Silently captures user decisions, learnings, patterns, blockers, and context into mnemonic namespaces on trigger phrases; recalls via search and status commands.
npx claudepluginhub zircote/mnemonicThis skill is limited to using the following tools:
<!-- BEGIN MNEMONIC PROTOCOL -->
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Migrates code, prompts, and API calls from Claude Sonnet 4.0/4.5 or Opus 4.1 to Opus 4.5, updating model strings on Anthropic, AWS, GCP, Azure platforms.
Analyzes BMad project state from catalog CSV, configs, artifacts, and query to recommend next skills or answer questions. Useful for help requests, 'what next', or starting BMad.
Search first: /mnemonic:search {relevant_keywords}
Capture after: /mnemonic:capture {namespace} "{title}"
Run /mnemonic:list --namespaces to see available namespaces from loaded ontologies.
Memory system operations. See references/ for full documentation.
Decisions (namespace: _semantic/decisions):
Learnings (namespace: _semantic/knowledge):
Patterns (namespace: _procedural/patterns):
Blockers (namespace: _episodic/sessions/blockers):
Context (namespace: _semantic/knowledge):
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:
Do NOT capture:
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":
/mnemonic:status to show memory stats/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_to relationship
Only create brand new if no matches found
rg -i "{keywords}" ${MNEMONIC_ROOT}/ --glob "*.memory.md" -l
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: episodicThen 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/capture.md - Full capture workflowreferences/recall.md - Search and retrieval patternsreferences/schema.md - Complete MIF Level 3 schemareferences/examples.md - Working examples