# Zircote Mnemonic Core

> <!-- BEGIN MNEMONIC PROTOCOL -->

- Skill: `tomevault-io/zircote-mnemonic-core` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add tomevault-io/zircote-mnemonic-core`
- Raw SKILL.md: https://api.skillmd.com/api/skills/tomevault-io/zircote-mnemonic-core/raw
- Safety review: pending (external: skill-scanner FAIL, skillspector CAUTION)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: tomevault-io (https://skillmd.com/u/tomevault-io)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/tomevault-io/zircote-mnemonic-core

---



<!-- BEGIN MNEMONIC PROTOCOL -->
## Memory

Search first: `/mnemonic:search {relevant_keywords}`
Capture after: `/mnemonic:capture {namespace} "{title}"`

Run `/mnemonic:list --namespaces` to see available namespaces from loaded ontologies.
<!-- END MNEMONIC PROTOCOL -->

# 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:**
1. Capture to appropriate namespace WITHOUT announcing
2. Do NOT say "I'm capturing this" or similar
3. Continue natural conversation flow
4. 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:

```bash
# 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:status` to show memory stats
- Use search to find recent relevant memories
- This is NOT a violation of silent capture - user explicitly requested visibility

## Capture

```bash
/mnemonic:capture {namespace} "{title}"
```

Namespaces: `_semantic/decisions` | `_semantic/knowledge` | `_procedural/patterns` | `_episodic/blockers` | `_episodic/sessions`

**MANDATORY: Before creating any memory, check for duplicates:**

1. Search for existing memories with similar keywords:
   ```bash
   rg -i "{key_words}" ${MNEMONIC_ROOT}/ --glob "*.memory.md" -l | head -5
   ```

2. If matches found, read the top result
3. If it covers the same topic → UPDATE existing memory (use Edit tool) instead of creating new
4. If related but different → create new memory with `relates_to` relationship
5. Only create brand new if no matches found

## Recall

```bash
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:

```bash
# 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:

```yaml
---
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 workflow
- `references/recall.md` - Search and retrieval patterns
- `references/schema.md` - Complete MIF Level 3 schema
- `references/examples.md` - Working examples

---
> Converted and distributed by [TomeVault](https://tomevault.io/claim/zircote) — claim your Tome and manage your conversions.
<!-- tomevault:4.0:skill_md:2026-04-12 -->

