Memory System
Persistent learning across AI agent sessions
Capture learnings from AI sessions and convert them into reusable skills. SkillKit's memory system provides automatic observation capture, intelligent compression, and token-optimized retrieval.
Commands
skillkit memory status # View status
skillkit memory search <q> # Search learnings
skillkit memory compress # Compress observations to learnings
skillkit memory export <name> # Export as skill
skillkit memory sync-claude # Update CLAUDE.md with learnings
skillkit memory index # View memory index (Layer 1)
skillkit memory --global # Global memory operations
How It Works
Observation → Learning Pipeline
- Observations - Track patterns during sessions (tool use, errors, solutions)
- Compression - Distill observations into reusable learnings
- Injection - Load relevant learnings into new sessions
- Export - Convert to shareable skills
Lifecycle Hooks
SkillKit integrates with Claude Code's lifecycle hooks for automatic memory capture:
| Hook | Trigger | Action |
|---|---|---|
| SessionStart | Session begins | Inject relevant learnings |
| PostToolUse | Tool completes | Capture outcomes as observations |
| SessionEnd | Session closes | Compress observations to learnings |
Progressive Disclosure (Token Optimization)
Memory retrieval uses a 3-layer system to minimize token usage:
| Layer | Content | ~Tokens |
|---|---|---|
| Index | Titles, tags, timestamps | 50-100 |
| Timeline | Context, excerpts, activity | ~200 |
| Details | Full content, metadata | 500-1000 |
The system starts with Layer 1 and progressively fetches deeper layers based on relevance and token budget.
Storage
~/.skillkit/memory/
├── observations/ # Raw session data
├── learnings/ # Compressed knowledge
└── index.json # Memory index
<project>/.skillkit/memory/
├── observations/ # Project-specific observations
├── learnings/ # Project learnings
└── index.json # Project memory index
Auto-CLAUDE.md Updates
Sync your most effective learnings to CLAUDE.md:
skillkit memory sync-claude
This populates the ## LEARNED section with high-effectiveness insights, giving your agent persistent context across sessions.
Programmatic API
Memory Compression
import { MemoryCompressor, LearningStore } from '@skillkit/core'
const compressor = new MemoryCompressor(projectPath)
const { learnings } = await compressor.compress(observations)
const store = new LearningStore('project', projectPath)
await store.add(learning)
const results = await store.search('authentication')
Lifecycle Hooks
import { MemoryHookManager } from '@skillkit/core'
const manager = new MemoryHookManager(projectPath)
// Session start - inject relevant learnings
const startResult = await manager.onSessionStart()
// After tool use - capture outcomes
await manager.onToolUse({
tool_name: 'Write',
tool_input: { file_path: '/src/auth.ts' },
tool_result: 'File written successfully',
duration_ms: 150
})
// Session end - compress to learnings
const endResult = await manager.onSessionEnd()
Progressive Disclosure
import { ProgressiveDisclosureManager } from '@skillkit/core'
const pdm = new ProgressiveDisclosureManager(projectPath)
// Layer 1: Index (~50 tokens each)
const index = pdm.getIndex({ includeGlobal: true })
// Layer 2: Timeline (~200 tokens each)
const timeline = pdm.getTimeline(['id1', 'id2'])
// Layer 3: Full details (~600 tokens each)
const details = pdm.getDetails(['id1'])
// Smart retrieval with token budget
const result = pdm.smartRetrieve('authentication patterns', 2000)
// Returns optimal layer based on budget
CLAUDE.md Updater
import { ClaudeMdUpdater } from '@skillkit/core'
const updater = new ClaudeMdUpdater(projectPath)
// Preview what would be updated
const preview = updater.preview({ minEffectiveness: 70 })
// Update CLAUDE.md
const result = updater.update({
minEffectiveness: 60,
maxLearnings: 20,
preserveManualEntries: true
})
Configuration
Configure memory behavior in .skillkit/config.json:
{
"memory": {
"enabled": true,
"autoInjectOnSessionStart": true,
"autoCaptureToolUse": true,
"autoCompressOnSessionEnd": true,
"minRelevanceForCapture": 30,
"maxTokensForInjection": 2000,
"compressionThreshold": 50
}
}
Claude Code Integration
Generate hooks configuration for Claude Code:
const manager = new MemoryHookManager(projectPath)
const config = manager.generateClaudeCodeHooksConfig()
// Outputs hooks.json format for Claude Code integration