Skill: ktpriyatham/triple-memory-skill (version 1.0.0)

--- name: triple-memory version: 1.0.0 description: Complete memory system combining LanceDB auto-recall, Git-Notes structured memory, and file-based workspace search. Use when setting up comprehensive agent memory, when you need persistent context across sessions, or when managing decisions/preferences/tasks with multiple memory backends working together. metadata: clawdbot: emoji: "🧠" requires: plugins: - memory-lancedb skills: - git-notes-memory --- # Triple Memory System A comprehensive memory architecture combining three complementary systems for maximum context retention across sessions. ## Architecture Overview ``` User Message ↓ [LanceDB auto-recall] → injects relevant conversation memories ↓ Agent responds (using all 3 systems) ↓ [LanceDB auto-capture] → stores preferences/decisions automatically ↓ [Git-Notes] → structured decisions with entity extraction ↓ [File updates] → persistent workspace docs ``` ## The Three Systems ### 1. LanceDB (Conversation Memory) - **Auto-recall:** Relevant memories injected before each response - **Auto-capture:** Preferences/decisions/facts stored automatically - **Tools:** `memory_recall`, `memory_store`, `memory_forget` - **Triggers:** "remember", "prefer", "my X is", "I like/hate/want" ### 2. Git-Notes Memory (Structured, Local) - **Branch-aware:** Memories isolated per git branch - **Entity extraction:** Auto-extracts topics, names, concepts - **Importance levels:** critical, high, normal, low - **No external API calls** ### 3. File Search (Workspace) - **Searches:** MEMORY.md, memory/*.md, any workspace file - **Script:** `scripts/file-search.sh` ## Setup ### Enable LanceDB Plugin ```json { "plugins": { "slots": { "memory": "memory-lancedb" }, "entries": { "memory-lancedb": { "enabled": true, "config": { "embedding": { "apiKey": "${OPENAI_API_KEY}", "model": "text-embedding-3-small" }, "autoRecall": true, "autoCapture": true } } } } } ``` ### Enable Auto Memory Flush (Pre-Compaction) Add to your Clawdbot config to automatically preserve context before compaction: ```json { "agents": { "defaults": { "compaction": { "mode": "safeguard", "memoryFlush": { "enabled": true, "softThresholdTokens": 8000, "systemPrompt": "Session nearing compaction. Preserve context using triple memory system (git-notes, LanceDB, files).", "prompt": "Context is at ~80%. Write session summary to memory/YYYY-MM-DD.md, update MEMORY.md if needed, store key facts to git-notes. Reply NO_REPLY when done." } } } } } ``` This triggers automatic memory dump when context reaches ~80%, before any information is lost to compaction. ### Install Git-Notes Memory ```bash clawdhub install git-notes-memory ``` ### Create File Search Script Copy `scripts/file-search.sh` to your workspace. ## Usage ### Session Start (Always) ```bash python3 skills/git-notes-memory/memory.py -p $WORKSPACE sync --start ``` ### Store Important Decisions ```bash python3 skills/git-notes-memory/memory.py -p $WORKSPACE remember \ '{"decision": "Use PostgreSQL", "reason": "Team expertise"}' \ -t architecture,database -i h ``` ### Search Workspace Files ```bash ./scripts/file-search.sh "database config" 5 ``` ### Conversation Memory (Automatic) LanceDB handles this automatically. Manual tools: - `memory_recall "query"` - search conversation memory - `memory_store "text"` - manually store something - `memory_forget` - delete memories (GDPR) ## Importance Levels | Flag | Level | When to Use | |------|-------|-------------| | `-i c` | Critical | "always remember", explicit preferences | | `-i h` | High | Decisions, corrections, preferences | | `-i n` | Normal | General information | | `-i l` | Low | Temporary notes | ## When to Use Each System | System | Use For | |--------|---------| | **LanceDB** | Conversation context, auto-retrieval | | **Git-Notes** | Structured decisions, searchable by entity/tag | | **File Search** | Workspace docs, daily logs, MEMORY.md | ## File Structure ``` workspace/ ├── MEMORY.md # Long-term curated memory ├── memory/ │ ├── active-context.md # Current session state │ └── YYYY-MM-DD.md # Daily logs ├── scripts/ │ └── file-search.sh # Workspace search └── skills/ └── git-notes-memory/ # Structured memory ``` ## Silent Operation Never announce memory operations to users. Just do it: - ❌ "I'll remember this" - ❌ "Saving to memory" - ✅ (silently store and continue)

path: references/auto-flush-config.json
content: {
  "agents": {
    "defaults": {
      "compaction": {
        "mode": "safeguard",
        "memoryFlush": {
          "enabled": true,
          "softThresholdTokens": 8000,
          "systemPrompt": "Session nearing compaction. Preserve context using triple memory system (git-notes, LanceDB, files).",
          "prompt": "Context is at ~80%. Write session summary to memory/YYYY-MM-DD.md, update MEMORY.md if needed, store key facts to git-notes. Reply NO_REPLY when done."
        }
      }
    }
  },
  "plugins": {
    "slots": {
      "memory": "memory-lancedb"
    },
    "entries": {
      "memory-lancedb": {
        "enabled": true,
        "config": {
          "embedding": {
            "apiKey": "${OPENAI_API_KEY}",
            "model": "text-embedding-3-small"
          },
          "autoRecall": true,
          "autoCapture": true
        }
      }
    }
  }
}


path: references/SETUP.md
content: # Triple Memory Setup Reference

## Full Config Example

```json
{
  "plugins": {
    "slots": {
      "memory": "memory-lancedb"
    },
    "entries": {
      "memory-lancedb": {
        "enabled": true,
        "config": {
          "embedding": {
            "apiKey": "sk-...",
            "model": "text-embedding-3-small"
          },
          "autoRecall": true,
          "autoCapture": true
        }
      }
    }
  }
}
```

## AGENTS.md Template

Add to your workspace AGENTS.md:

```markdown
## Every Session

Before doing anything else:
1. Read `memory/active-context.md` for current session state
2. Run `sync --start` on git-notes-memory (silently)

## Triple Memory System

### 1. LanceDB (Auto)
- Auto-recall injects `<relevant-memories>` before responses
- Auto-capture stores preferences/decisions

### 2. Git-Notes (Structured)
\`\`\`bash
python3 skills/git-notes-memory/memory.py -p $WORKSPACE sync --start
python3 skills/git-notes-memory/memory.py -p $WORKSPACE remember '{"key":"value"}' -t tags -i h
\`\`\`

### 3. File Search (Workspace)
\`\`\`bash
./scripts/file-search.sh "query" [limit]
\`\`\`
```

## Memory File Templates

### memory/active-context.md
```markdown
# Active Context

## Current Focus
- (what you're working on)

## Recent Decisions
- (key decisions made)

## Open Tasks
- [ ] Task 1
- [ ] Task 2
```

### MEMORY.md
```markdown
# Long-Term Memory

## Key Info
- (important persistent info)

## Lessons Learned
- (things to remember)
```


path: scripts/file-search.sh
content: #!/bin/bash
# File-based memory search - wraps clawdbot memory search

QUERY="$1"
LIMIT="${2:-5}"
TMPFILE="/tmp/clawdbot-filesearch.txt"

if [ -z "$QUERY" ]; then
  echo "Usage: file-search.sh <query> [limit]"
  exit 1
fi

rm -f "$TMPFILE"

# Run search in background (--max-results is the correct flag)
clawdbot memory search "$QUERY" --max-results "$LIMIT" > "$TMPFILE" 2>&1 &
SEARCH_PID=$!
sleep 8
kill $SEARCH_PID 2>/dev/null
wait $SEARCH_PID 2>/dev/null

# Extract score lines (format: 0.xxx filepath:lines)
grep -E "^[0-9]\.[0-9]+" "$TMPFILE" || echo "No results"


Security scan verdicts — ClawScan: suspicious | static analysis: clean | VirusTotal: clean | SkillSpector: suspicious (CRITICAL)