claude-recall 0.12.0 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/auto-corrections/SKILL.md +2 -1
- package/.claude/skills/auto-corrections/manifest.json +4 -3
- package/.claude/skills/auto-preferences/SKILL.md +6 -1
- package/.claude/skills/auto-preferences/manifest.json +8 -3
- package/.claude/skills/memory-management/SKILL.md +2 -1
- package/README.md +15 -5
- package/dist/mcp/tools/memory-tools.js +50 -1
- package/dist/memory/storage.js +6 -0
- package/dist/services/memory.js +17 -0
- package/package.json +1 -1
|
@@ -8,7 +8,7 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Corrections
|
|
10
10
|
|
|
11
|
-
Auto-generated from
|
|
11
|
+
Auto-generated from 9 memories. Last updated: 2026-02-14.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
@@ -20,6 +20,7 @@ Auto-generated from 8 memories. Last updated: 2026-02-14.
|
|
|
20
20
|
- CORRECTION: Memory with complex metadata
|
|
21
21
|
- CORRECTION: Memory with complex metadata
|
|
22
22
|
- CORRECTION: Memory with complex metadata
|
|
23
|
+
- CORRECTION: Memory with complex metadata
|
|
23
24
|
|
|
24
25
|
---
|
|
25
26
|
*Auto-generated by Claude Recall. Regenerate: `npx claude-recall skills generate`*
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "corrections",
|
|
3
|
-
"sourceHash": "
|
|
4
|
-
"memoryCount":
|
|
5
|
-
"generatedAt": "2026-02-14T22:
|
|
3
|
+
"sourceHash": "e171dc9c703fdef2ac1bc9dcd388b60baa3fc6460739cbc559ea29ad73a085ed",
|
|
4
|
+
"memoryCount": 9,
|
|
5
|
+
"generatedAt": "2026-02-14T22:48:52.571Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
+
"memory_1771109332553_4qyuqzmn2",
|
|
7
8
|
"memory_1771108164696_89hsume9t",
|
|
8
9
|
"memory_1771107973416_yavkr0emz",
|
|
9
10
|
"memory_1771107927302_h8tya387e",
|
|
@@ -8,10 +8,15 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Preferences
|
|
10
10
|
|
|
11
|
-
Auto-generated from
|
|
11
|
+
Auto-generated from 60 memories. Last updated: 2026-02-14.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
15
|
+
- Session test preference 1771109332627
|
|
16
|
+
- Test preference 1771109332573-2
|
|
17
|
+
- Test preference 1771109332573-1
|
|
18
|
+
- Test preference 1771109332573-0
|
|
19
|
+
- Test memory content
|
|
15
20
|
- Session test preference 1771108164747
|
|
16
21
|
- Test preference 1771108164707-2
|
|
17
22
|
- Test preference 1771108164707-1
|
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "preferences",
|
|
3
|
-
"sourceHash": "
|
|
4
|
-
"memoryCount":
|
|
5
|
-
"generatedAt": "2026-02-14T22:
|
|
3
|
+
"sourceHash": "ca3b2e2083120ca63dd0f71f44380404830ead6712b13b4cc3df1f7feafb9ed1",
|
|
4
|
+
"memoryCount": 60,
|
|
5
|
+
"generatedAt": "2026-02-14T22:48:52.644Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
+
"memory_1771109332628_j31s9unle",
|
|
8
|
+
"memory_1771109332608_5a130qnjv",
|
|
9
|
+
"memory_1771109332590_smwf7lal5",
|
|
10
|
+
"memory_1771109332575_3kjb9xg1k",
|
|
11
|
+
"memory_1771109332522_y3tm01gva",
|
|
7
12
|
"memory_1771108164748_43ts7z7qw",
|
|
8
13
|
"memory_1771108164730_v9reytr47",
|
|
9
14
|
"memory_1771108164719_zs0x2xtet",
|
|
@@ -9,11 +9,12 @@ license: "MIT"
|
|
|
9
9
|
|
|
10
10
|
Persistent memory system that ensures Claude never repeats mistakes and always applies learned patterns across conversations.
|
|
11
11
|
|
|
12
|
-
##
|
|
12
|
+
## 4 Tools
|
|
13
13
|
|
|
14
14
|
- `mcp__claude-recall__load_rules` - Load all active rules before starting work. No query needed.
|
|
15
15
|
- `mcp__claude-recall__store_memory` - Store a rule or learning. Immediately active in this conversation.
|
|
16
16
|
- `mcp__claude-recall__search_memory` - Search memories by keyword. Use to find specific memories before making decisions.
|
|
17
|
+
- `mcp__claude-recall__delete_memory` - Delete a specific memory by ID. Use search_memory first to find the ID.
|
|
17
18
|
|
|
18
19
|
## When to Use
|
|
19
20
|
|
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ Your preferences, project structure, workflows, corrections, and coding style ar
|
|
|
20
20
|
- **User-Confirmed Storage** — Claude asks for your permission before storing any memory
|
|
21
21
|
- **Project-Scoped Knowledge** — each project gets its own memory namespace; switch projects and Claude switches memory
|
|
22
22
|
- **Failure Learning** — captures failures with counterfactual reasoning (what failed, why, what to do instead)
|
|
23
|
-
- **
|
|
23
|
+
- **Skill Crystallization** — automatically generates `.claude/skills/auto-*/` files when enough memories accumulate, so learned patterns load natively without tool calls
|
|
24
24
|
- **Zero Cloud Storage** — all memory stored locally, no telemetry, works fully offline
|
|
25
25
|
- **Process Management** — automatic server lifecycle management with stale process cleanup
|
|
26
26
|
|
|
@@ -86,14 +86,16 @@ Claude Recall has three layers:
|
|
|
86
86
|
|
|
87
87
|
Stores and evolves preferences, patterns, decisions, corrections, and failure learnings. Uses WAL mode for concurrency, content-hash deduplication, and automatic compaction.
|
|
88
88
|
|
|
89
|
-
### 2. MCP Server (
|
|
89
|
+
### 2. MCP Server (4 tools)
|
|
90
90
|
|
|
91
|
-
Exposes
|
|
91
|
+
Exposes four tools to Claude Code:
|
|
92
92
|
|
|
93
93
|
| Tool | Purpose |
|
|
94
94
|
| ---- | ------- |
|
|
95
95
|
| `load_rules` | Load all active rules (preferences, corrections, failures, devops) at the start of a task |
|
|
96
96
|
| `store_memory` | Save new knowledge — preferences, corrections, devops rules, failures |
|
|
97
|
+
| `search_memory` | Search memories by keyword, ranked by relevance |
|
|
98
|
+
| `delete_memory` | Delete a specific memory by ID (use `search_memory` first to find the ID) |
|
|
97
99
|
|
|
98
100
|
### 3. Native Claude Skill
|
|
99
101
|
|
|
@@ -122,13 +124,21 @@ npx claude-recall clear --force # Clear all memories
|
|
|
122
124
|
### Analysis
|
|
123
125
|
|
|
124
126
|
```bash
|
|
125
|
-
npx claude-recall evolution # Memory evolution metrics (L1-L4)
|
|
126
|
-
npx claude-recall evolution --days 60 # Custom time window
|
|
127
127
|
npx claude-recall failures # View failure memories
|
|
128
128
|
npx claude-recall failures --limit 20 # Limit results
|
|
129
129
|
npx claude-recall monitor # Memory search monitoring stats
|
|
130
130
|
```
|
|
131
131
|
|
|
132
|
+
### Auto-Generated Skills
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npx claude-recall skills generate # Generate skills from accumulated memories
|
|
136
|
+
npx claude-recall skills generate --dry-run # Preview without writing
|
|
137
|
+
npx claude-recall skills generate --force # Regenerate even if unchanged
|
|
138
|
+
npx claude-recall skills list # List generated skills
|
|
139
|
+
npx claude-recall skills clean --force # Remove all auto-generated skills
|
|
140
|
+
```
|
|
141
|
+
|
|
132
142
|
### MCP Server Management
|
|
133
143
|
|
|
134
144
|
```bash
|
|
@@ -145,6 +145,21 @@ class MemoryTools {
|
|
|
145
145
|
required: ['query']
|
|
146
146
|
},
|
|
147
147
|
handler: this.handleSearchMemory.bind(this)
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
name: 'mcp__claude-recall__delete_memory',
|
|
151
|
+
description: 'Delete a specific memory by its ID (key). Use search_memory first to find the ID of the memory to delete.',
|
|
152
|
+
inputSchema: {
|
|
153
|
+
type: 'object',
|
|
154
|
+
properties: {
|
|
155
|
+
id: {
|
|
156
|
+
type: 'string',
|
|
157
|
+
description: 'The memory ID (key) to delete. Get this from search_memory or store_memory results.'
|
|
158
|
+
}
|
|
159
|
+
},
|
|
160
|
+
required: ['id']
|
|
161
|
+
},
|
|
162
|
+
handler: this.handleDeleteMemory.bind(this)
|
|
148
163
|
}
|
|
149
164
|
];
|
|
150
165
|
}
|
|
@@ -313,7 +328,7 @@ class MemoryTools {
|
|
|
313
328
|
const val = typeof r.value === 'object'
|
|
314
329
|
? (r.value.content || r.value.value || JSON.stringify(r.value))
|
|
315
330
|
: r.value;
|
|
316
|
-
return `- [${r.type}] (
|
|
331
|
+
return `- [${r.type}] (id: ${r.key}) ${val}`;
|
|
317
332
|
});
|
|
318
333
|
return {
|
|
319
334
|
results: formatted.length > 0
|
|
@@ -329,6 +344,40 @@ class MemoryTools {
|
|
|
329
344
|
throw error;
|
|
330
345
|
}
|
|
331
346
|
}
|
|
347
|
+
/**
|
|
348
|
+
* Delete a memory by ID
|
|
349
|
+
*/
|
|
350
|
+
async handleDeleteMemory(input, context) {
|
|
351
|
+
try {
|
|
352
|
+
const { id } = input;
|
|
353
|
+
if (!id || typeof id !== 'string') {
|
|
354
|
+
throw new Error('Memory ID is required and must be a string');
|
|
355
|
+
}
|
|
356
|
+
const deleted = this.memoryService.delete(id);
|
|
357
|
+
if (deleted) {
|
|
358
|
+
this.logger.info('MemoryTools', 'Memory deleted', {
|
|
359
|
+
id,
|
|
360
|
+
sessionId: context.sessionId
|
|
361
|
+
});
|
|
362
|
+
return {
|
|
363
|
+
success: true,
|
|
364
|
+
id,
|
|
365
|
+
message: `Memory "${id}" deleted.`
|
|
366
|
+
};
|
|
367
|
+
}
|
|
368
|
+
else {
|
|
369
|
+
return {
|
|
370
|
+
success: false,
|
|
371
|
+
id,
|
|
372
|
+
message: `Memory "${id}" not found.`
|
|
373
|
+
};
|
|
374
|
+
}
|
|
375
|
+
}
|
|
376
|
+
catch (error) {
|
|
377
|
+
this.logger.error('MemoryTools', 'Failed to delete memory', error);
|
|
378
|
+
throw error;
|
|
379
|
+
}
|
|
380
|
+
}
|
|
332
381
|
getTools() {
|
|
333
382
|
return this.tools;
|
|
334
383
|
}
|
package/dist/memory/storage.js
CHANGED
|
@@ -259,6 +259,12 @@ class MemoryStorage {
|
|
|
259
259
|
const rows = stmt.all(...params);
|
|
260
260
|
return rows.map(row => this.rowToMemory(row));
|
|
261
261
|
}
|
|
262
|
+
deleteByKey(key) {
|
|
263
|
+
const stmt = this.db.prepare('DELETE FROM memories WHERE key = ?');
|
|
264
|
+
const result = stmt.run(key);
|
|
265
|
+
this.db.pragma('wal_checkpoint(TRUNCATE)');
|
|
266
|
+
return result.changes > 0;
|
|
267
|
+
}
|
|
262
268
|
clear(type) {
|
|
263
269
|
let stmt;
|
|
264
270
|
let result;
|
package/dist/services/memory.js
CHANGED
|
@@ -162,6 +162,23 @@ class MemoryService {
|
|
|
162
162
|
relevanceScore: 1.0
|
|
163
163
|
});
|
|
164
164
|
}
|
|
165
|
+
/**
|
|
166
|
+
* Delete a single memory by key
|
|
167
|
+
*/
|
|
168
|
+
delete(key) {
|
|
169
|
+
try {
|
|
170
|
+
const deleted = this.storage.deleteByKey(key);
|
|
171
|
+
this.logger.logMemoryOperation('DELETE', {
|
|
172
|
+
key,
|
|
173
|
+
deleted
|
|
174
|
+
});
|
|
175
|
+
return deleted;
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
this.logger.logServiceError('MemoryService', 'delete', error, { key });
|
|
179
|
+
throw error;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
165
182
|
/**
|
|
166
183
|
* Clear memories
|
|
167
184
|
*/
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-recall",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.13.0",
|
|
4
4
|
"description": "Persistent memory for Claude Code with native Skills integration, automatic capture, failure learning, and project scoping via MCP server",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|