claude-recall 0.18.7 → 0.18.9
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/hooks/search_enforcer.py +0 -0
- package/.claude/settings.json +1 -48
- package/.claude/skills/auto-corrections/SKILL.md +4 -1
- package/.claude/skills/auto-corrections/manifest.json +7 -4
- package/.claude/skills/auto-failure-lessons/SKILL.md +1 -3
- package/.claude/skills/auto-failure-lessons/manifest.json +3 -5
- package/.claude/skills/auto-preferences/SKILL.md +12 -6
- package/.claude/skills/auto-preferences/manifest.json +14 -8
- package/LICENSE +0 -0
- package/README.md +7 -3
- package/dist/hooks/bash-failure-watcher.js +4 -4
- package/dist/hooks/correction-detector.js +1 -1
- package/dist/hooks/memory-stop-hook.js +13 -2
- package/dist/hooks/shared.js +11 -0
- package/dist/mcp/tools/memory-tools.js +17 -2
- package/dist/services/outcome-storage.js +16 -0
- package/dist/services/promotion-engine.js +20 -9
- package/docs/20260323_equipping-agents-for-the-real-world-with-agent-skills.md +569 -0
- package/package.json +1 -1
|
File without changes
|
package/.claude/settings.json
CHANGED
|
@@ -1,48 +1 @@
|
|
|
1
|
-
{
|
|
2
|
-
"hooks": {
|
|
3
|
-
"PreToolUse": [
|
|
4
|
-
{
|
|
5
|
-
"matcher": ".*",
|
|
6
|
-
"hooks": [
|
|
7
|
-
{
|
|
8
|
-
"type": "command",
|
|
9
|
-
"command": "python3 /home/ebiarao/repos-wsl/personal-projects/claude-recall/.claude/hooks/search_enforcer.py"
|
|
10
|
-
}
|
|
11
|
-
]
|
|
12
|
-
}
|
|
13
|
-
],
|
|
14
|
-
"UserPromptSubmit": [
|
|
15
|
-
{
|
|
16
|
-
"hooks": [
|
|
17
|
-
{
|
|
18
|
-
"type": "command",
|
|
19
|
-
"command": "node /home/ebiarao/repos-wsl/personal-projects/claude-recall/dist/cli/claude-recall-cli.js hook run correction-detector"
|
|
20
|
-
}
|
|
21
|
-
]
|
|
22
|
-
}
|
|
23
|
-
],
|
|
24
|
-
"Stop": [
|
|
25
|
-
{
|
|
26
|
-
"hooks": [
|
|
27
|
-
{
|
|
28
|
-
"type": "command",
|
|
29
|
-
"command": "node /home/ebiarao/repos-wsl/personal-projects/claude-recall/dist/cli/claude-recall-cli.js hook run memory-stop",
|
|
30
|
-
"timeout": 30
|
|
31
|
-
}
|
|
32
|
-
]
|
|
33
|
-
}
|
|
34
|
-
],
|
|
35
|
-
"PreCompact": [
|
|
36
|
-
{
|
|
37
|
-
"hooks": [
|
|
38
|
-
{
|
|
39
|
-
"type": "command",
|
|
40
|
-
"command": "node /home/ebiarao/repos-wsl/personal-projects/claude-recall/dist/cli/claude-recall-cli.js hook run precompact-preserve",
|
|
41
|
-
"timeout": 60
|
|
42
|
-
}
|
|
43
|
-
]
|
|
44
|
-
}
|
|
45
|
-
]
|
|
46
|
-
},
|
|
47
|
-
"hooksVersion": "6.0.0"
|
|
48
|
-
}
|
|
1
|
+
{"hooks": {}, "hooksVersion": "1.0.0"}
|
|
@@ -8,7 +8,7 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Corrections
|
|
10
10
|
|
|
11
|
-
Auto-generated from
|
|
11
|
+
Auto-generated from 20 memories. Last updated: 2026-03-22.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
@@ -22,8 +22,11 @@ Auto-generated from 17 memories. Last updated: 2026-03-21.
|
|
|
22
22
|
- CORRECTION: Memory with complex metadata
|
|
23
23
|
- CORRECTION: Memory with complex metadata
|
|
24
24
|
- CORRECTION: Memory with complex metadata
|
|
25
|
+
- CORRECTION: Memory with complex metadata
|
|
26
|
+
- CORRECTION: License copyright should include user's name instead of 'Claude Recall Contributors'
|
|
25
27
|
- CORRECTION: Replace expired access token with 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
|
|
26
28
|
- CORRECTION: use spaces not tabs for indentation
|
|
29
|
+
- CORRECTION: License copyright should list your name instead of 'Claude Recall Contributors'
|
|
27
30
|
- CORRECTION: cited (loaded 5+ times): 19
|
|
28
31
|
- CORRECTION: cited (loaded 5+ times): 19
|
|
29
32
|
- CORRECTION: cited (loaded 5+ times): 19
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "corrections",
|
|
3
|
-
"sourceHash": "
|
|
4
|
-
"memoryCount":
|
|
5
|
-
"generatedAt": "2026-03-
|
|
3
|
+
"sourceHash": "be94895a3ad6a5999508be2c149a1a2742178fff9f9adc97b5da6185c9a30398",
|
|
4
|
+
"memoryCount": 20,
|
|
5
|
+
"generatedAt": "2026-03-22T15:58:29.733Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
+
"memory_1774195109722_gij039r4m",
|
|
8
|
+
"memory_1774191618092_vuxyvq3mw",
|
|
7
9
|
"memory_1774106331272_kg5w7ztfj",
|
|
8
10
|
"memory_1774104588311_65kg08e05",
|
|
9
|
-
"memory_1774020789453_x9xkjhbug",
|
|
10
11
|
"memory_1773140547102_2wmy0cfga",
|
|
11
12
|
"memory_1773065886725_rscm7v2qx",
|
|
12
13
|
"memory_1773063478046_x0ryr9bk4",
|
|
@@ -14,8 +15,10 @@
|
|
|
14
15
|
"memory_1772641994141_ddvzwdkd9",
|
|
15
16
|
"memory_1772641570519_wmnb2b08w",
|
|
16
17
|
"memory_1772641026962_tqm8ow04r",
|
|
18
|
+
"hook_correction_1774180798682_9b5a2hadq",
|
|
17
19
|
"hook_correction_1772101108419_le80cln1w",
|
|
18
20
|
"hook_correction_1771112125882_99ihypf8x",
|
|
21
|
+
"hook_correction_1774180805192_4ft4zhfsa",
|
|
19
22
|
"hook_correction_1772638229134_otn9za2il",
|
|
20
23
|
"hook_correction_1772636083381_th3eluwzv",
|
|
21
24
|
"hook_correction_1772635851763_y91ugnjgy",
|
|
@@ -8,14 +8,12 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Failure Lessons
|
|
10
10
|
|
|
11
|
-
Auto-generated from
|
|
11
|
+
Auto-generated from 24 memories. Last updated: 2026-03-22.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
15
|
-
- Check command syntax, file paths, and prerequisites before running
|
|
16
15
|
- SQLite query syntax error: LIKE clause requires single quotes around string literal, not double quotes
|
|
17
16
|
- Avoid: Command failed: claude-recall outcomes 2>&1 → Instead: Check command syntax, file paths, and prerequisites before running
|
|
18
|
-
- Avoid: Command failed: npx jest tests/unit/outcome-storage.test.ts tests/unit/promotion-engine.test.ts tests/unit/memory... → Instead: Check command syntax, file paths, and prerequisites before running
|
|
19
17
|
- Avoid: Command failed: npm whoami 2>&1 && npm config get registry 2>&1 → Instead: Check command syntax, file paths, and prerequisites before running
|
|
20
18
|
- npm install -g claude-recall@0.15.36 failed with notarget error
|
|
21
19
|
- claude-recall@0.15.36 does not exist on npm registry (ETARGET error)
|
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "failure-lessons",
|
|
3
|
-
"sourceHash": "
|
|
4
|
-
"memoryCount":
|
|
5
|
-
"generatedAt": "2026-03-
|
|
3
|
+
"sourceHash": "00deb7a6c6d99c26e0d29a6a707b4c303dcb19731d27a8ce41db09fd2ff3eb55",
|
|
4
|
+
"memoryCount": 24,
|
|
5
|
+
"generatedAt": "2026-03-22T15:00:18.049Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
-
"promoted_1774019382782_acm9j0h8u",
|
|
8
7
|
"hook_failure_1772637584921_0tj4rrxnt",
|
|
9
8
|
"hook_failure_non-zero-exit_1774020949485_6ubuoswae",
|
|
10
|
-
"hook_failure_non-zero-exit_1773999564001_82kcdp0ag",
|
|
11
9
|
"hook_failure_non-zero-exit_1773409269877_ful451241",
|
|
12
10
|
"hook_failure_1773410916808_5k1r6zo4u",
|
|
13
11
|
"hook_failure_1773410916789_xtrb8j9nw",
|
|
@@ -8,10 +8,20 @@ source: claude-recall
|
|
|
8
8
|
|
|
9
9
|
# Preferences
|
|
10
10
|
|
|
11
|
-
Auto-generated from
|
|
11
|
+
Auto-generated from 22 memories. Last updated: 2026-04-01.
|
|
12
12
|
|
|
13
13
|
## Rules
|
|
14
14
|
|
|
15
|
+
- axios npm package was compromised in a supply chain attack (axios@1.14.1 pulled in malicious plain-crypto-js@4.2.1). Claude Recall is NOT affected — does not use axios. Verified 2026-04-01. If axios is ever added as a dependency, pin the version and audit lockfiles.
|
|
16
|
+
- Test preference 1774195109742-2
|
|
17
|
+
- Test preference 1774195109742-1
|
|
18
|
+
- Test preference 1774195109742-0
|
|
19
|
+
- Test memory content
|
|
20
|
+
- Test preference 1774191618111-2
|
|
21
|
+
- Test preference 1774191618111-1
|
|
22
|
+
- Test preference 1774191618111-0
|
|
23
|
+
- Test memory content
|
|
24
|
+
- a normal preference
|
|
15
25
|
- Session test preference 1774106331339
|
|
16
26
|
- Test preference 1774106331283-2
|
|
17
27
|
- Test preference 1774106331283-1
|
|
@@ -23,11 +33,7 @@ Auto-generated from 16 memories. Last updated: 2026-03-21.
|
|
|
23
33
|
- Test preference 1774104588325-0
|
|
24
34
|
- Test memory content
|
|
25
35
|
- Session test preference 1774020789925
|
|
26
|
-
-
|
|
27
|
-
- Test preference 1774020789520-1
|
|
28
|
-
- Test preference 1774020789520-0
|
|
29
|
-
- Test memory content
|
|
30
|
-
- Session test preference 1773999187736
|
|
36
|
+
- Upgrade all projects whenever a new version is pushed
|
|
31
37
|
|
|
32
38
|
---
|
|
33
39
|
*Auto-generated by Claude Recall. Regenerate: `npx claude-recall skills generate`*
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"topicId": "preferences",
|
|
3
|
-
"sourceHash": "
|
|
4
|
-
"memoryCount":
|
|
5
|
-
"generatedAt": "2026-
|
|
3
|
+
"sourceHash": "ad9e64fb51202f15dbb49b534b20617f88a6a83e890c45c794b81578a7c1374d",
|
|
4
|
+
"memoryCount": 22,
|
|
5
|
+
"generatedAt": "2026-04-01T08:07:09.378Z",
|
|
6
6
|
"memoryKeys": [
|
|
7
|
+
"memory_1775030829333_64gdk8kql",
|
|
8
|
+
"memory_1774195109780_8ffmflge1",
|
|
9
|
+
"memory_1774195109763_v6olh83ct",
|
|
10
|
+
"memory_1774195109743_i79j9a9rl",
|
|
11
|
+
"memory_1774195109624_nnh3wrwca",
|
|
12
|
+
"memory_1774191618164_wefq7s9x6",
|
|
13
|
+
"memory_1774191618139_k77izvxnq",
|
|
14
|
+
"memory_1774191618112_hzi64751y",
|
|
15
|
+
"memory_1774191617980_pzspevoct",
|
|
16
|
+
"valid1",
|
|
7
17
|
"memory_1774106331340_cwt88yhle",
|
|
8
18
|
"memory_1774106331311_491hg2a21",
|
|
9
19
|
"memory_1774106331297_0b6bvacd7",
|
|
@@ -15,10 +25,6 @@
|
|
|
15
25
|
"memory_1774104588325_g4o5ksubl",
|
|
16
26
|
"memory_1774104588255_fy0wv845g",
|
|
17
27
|
"memory_1774020789927_g99mrubvu",
|
|
18
|
-
"
|
|
19
|
-
"memory_1774020789618_m1p55yhtz",
|
|
20
|
-
"memory_1774020789521_saryqj7kw",
|
|
21
|
-
"memory_1774020789257_wla5q38wq",
|
|
22
|
-
"memory_1773999187737_qrdwbas47"
|
|
28
|
+
"hook_preference_1774106575282_45sk4ep52"
|
|
23
29
|
]
|
|
24
30
|
}
|
package/LICENSE
CHANGED
|
File without changes
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Claude Recall
|
|
2
2
|
|
|
3
|
-
### Persistent, local memory for Claude Code —
|
|
3
|
+
### Persistent, local memory for Claude Code — learn from every session.
|
|
4
4
|
|
|
5
5
|
Claude Recall is a **local memory engine + MCP server** that gives Claude Code something it's missing by default:
|
|
6
6
|
**the ability to learn from you over time.**
|
|
@@ -15,7 +15,7 @@ Your preferences, project structure, workflows, corrections, and coding style ar
|
|
|
15
15
|
- **Project-Scoped Knowledge** — each project gets its own memory namespace; switch projects and Claude switches context automatically
|
|
16
16
|
- **Failure Learning** — captures what failed, why, and what to do instead — so Claude doesn't repeat mistakes
|
|
17
17
|
- **Outcome-Aware Learning** — tracks action outcomes (bash results, test cycles, user corrections), synthesizes candidate lessons, and promotes validated patterns into active rules automatically
|
|
18
|
-
- **Skill Crystallization** —
|
|
18
|
+
- **Skill Crystallization** — auto-generates `.claude/skills/auto-*/` files from accumulated memories, using Anthropic's [Agent Skills](https://agentskills.io/) open standard
|
|
19
19
|
- **Local-Only** — SQLite on your machine, no telemetry, no cloud, works fully offline
|
|
20
20
|
|
|
21
21
|
---
|
|
@@ -113,7 +113,11 @@ claude-recall search "preference"
|
|
|
113
113
|
|
|
114
114
|
## How It Works
|
|
115
115
|
|
|
116
|
-
Claude Recall runs as an MCP server exposing four tools, backed by a local SQLite database with WAL mode, content-hash deduplication, and automatic compaction.
|
|
116
|
+
Claude Recall runs as an MCP server exposing four tools, backed by a local SQLite database with WAL mode, content-hash deduplication, and automatic compaction.
|
|
117
|
+
|
|
118
|
+
### Built on Agent Skills
|
|
119
|
+
|
|
120
|
+
Claude Recall uses Anthropic's [Agent Skills](https://agentskills.io/) open standard to teach Claude when and how to use its memory tools. A core skill (`.claude/skills/memory-management/SKILL.md`) guides Claude's memory behavior using progressive disclosure — metadata loads at startup, full instructions load only when needed. When enough memories accumulate around a topic, Claude Recall auto-generates additional skills (`.claude/skills/auto-*/`) that load natively without MCP tool calls. See Anthropic's [blog post](https://claude.com/blog/equipping-agents-for-the-real-world-with-agent-skills) for more on the Agent Skills architecture.
|
|
117
121
|
|
|
118
122
|
| Tool | Purpose |
|
|
119
123
|
| ---- | ------- |
|
|
@@ -123,7 +123,7 @@ async function handleBashFailureWatcher(input) {
|
|
|
123
123
|
}
|
|
124
124
|
}
|
|
125
125
|
catch (err) {
|
|
126
|
-
(0, shared_1.hookLog)(HOOK_NAME, `Error: ${err}`);
|
|
126
|
+
(0, shared_1.hookLog)(HOOK_NAME, `Error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
127
127
|
// Never throw — hooks must not block Claude
|
|
128
128
|
}
|
|
129
129
|
}
|
|
@@ -166,7 +166,7 @@ async function handleFailure(command, exitCode, output, sessionId) {
|
|
|
166
166
|
});
|
|
167
167
|
}
|
|
168
168
|
catch (err) {
|
|
169
|
-
(0, shared_1.hookLog)(HOOK_NAME, `Outcome event error: ${err}`);
|
|
169
|
+
(0, shared_1.hookLog)(HOOK_NAME, `Outcome event error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
170
170
|
}
|
|
171
171
|
(0, shared_1.hookLog)(HOOK_NAME, `Stored failure: ${truncate(command, 60)} (exit ${exitCode})`);
|
|
172
172
|
// Track pending failure for fix pairing
|
|
@@ -215,14 +215,14 @@ async function handleSuccess(command, sessionId) {
|
|
|
215
215
|
});
|
|
216
216
|
}
|
|
217
217
|
catch (err) {
|
|
218
|
-
(0, shared_1.hookLog)(HOOK_NAME, `Positive outcome event error: ${err}`);
|
|
218
|
+
(0, shared_1.hookLog)(HOOK_NAME, `Positive outcome event error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
219
219
|
}
|
|
220
220
|
(0, shared_1.hookLog)(HOOK_NAME, `Paired fix: "${truncate(command, 60)}" → ${pf.memoryKey}`);
|
|
221
221
|
matched = true;
|
|
222
222
|
// Don't add to remaining — consumed
|
|
223
223
|
}
|
|
224
224
|
catch (err) {
|
|
225
|
-
(0, shared_1.hookLog)(HOOK_NAME, `Fix pairing error: ${err}`);
|
|
225
|
+
(0, shared_1.hookLog)(HOOK_NAME, `Fix pairing error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
226
226
|
remaining.push(pf);
|
|
227
227
|
}
|
|
228
228
|
}
|
|
@@ -40,7 +40,7 @@ async function handleCorrectionDetector(input) {
|
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
42
|
catch (err) {
|
|
43
|
-
(0, shared_1.hookLog)('correction-detector', `Reask signal detection error: ${err}`);
|
|
43
|
+
(0, shared_1.hookLog)('correction-detector', `Reask signal detection error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
44
44
|
}
|
|
45
45
|
const result = await (0, shared_1.classifyContent)(prompt);
|
|
46
46
|
if (!result)
|
|
@@ -127,7 +127,18 @@ async function handleMemoryStop(input) {
|
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
129
|
catch (err) {
|
|
130
|
-
(0, shared_1.hookLog)('memory-stop', `Promotion error: ${err}`);
|
|
130
|
+
(0, shared_1.hookLog)('memory-stop', `Promotion error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
131
|
+
}
|
|
132
|
+
// Prune old outcome data to prevent unbounded table growth
|
|
133
|
+
try {
|
|
134
|
+
const pruned = outcomeStorage.pruneOldData();
|
|
135
|
+
const total = pruned.episodes + pruned.events + pruned.lessons + pruned.stats;
|
|
136
|
+
if (total > 0) {
|
|
137
|
+
(0, shared_1.hookLog)('memory-stop', `Pruned: ${pruned.episodes} episodes, ${pruned.events} events, ${pruned.lessons} lessons, ${pruned.stats} orphaned stats`);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
(0, shared_1.hookLog)('memory-stop', `Prune error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
131
142
|
}
|
|
132
143
|
}
|
|
133
144
|
/**
|
|
@@ -331,7 +342,7 @@ function generateCandidateLessons(failures, episodeId, projectId) {
|
|
|
331
342
|
}
|
|
332
343
|
}
|
|
333
344
|
catch (err) {
|
|
334
|
-
(0, shared_1.hookLog)('memory-stop', `Candidate lesson generation error: ${err}`);
|
|
345
|
+
(0, shared_1.hookLog)('memory-stop', `Candidate lesson generation error: ${(0, shared_1.safeErrorMessage)(err)}`);
|
|
335
346
|
}
|
|
336
347
|
}
|
|
337
348
|
function extractTagsFromContext(context) {
|
package/dist/hooks/shared.js
CHANGED
|
@@ -41,6 +41,7 @@ exports.jaccardSimilarity = jaccardSimilarity;
|
|
|
41
41
|
exports.isDuplicate = isDuplicate;
|
|
42
42
|
exports.storeMemory = storeMemory;
|
|
43
43
|
exports.searchExisting = searchExisting;
|
|
44
|
+
exports.safeErrorMessage = safeErrorMessage;
|
|
44
45
|
exports.hookLog = hookLog;
|
|
45
46
|
exports.readTranscriptTail = readTranscriptTail;
|
|
46
47
|
exports.isUserEntry = isUserEntry;
|
|
@@ -193,6 +194,16 @@ function searchExisting(query) {
|
|
|
193
194
|
const memoryService = memory_1.MemoryService.getInstance();
|
|
194
195
|
return memoryService.search(query);
|
|
195
196
|
}
|
|
197
|
+
/**
|
|
198
|
+
* Extract a safe error message without exposing stack traces or internal paths.
|
|
199
|
+
*/
|
|
200
|
+
function safeErrorMessage(err) {
|
|
201
|
+
if (err instanceof Error)
|
|
202
|
+
return err.message;
|
|
203
|
+
if (typeof err === 'string')
|
|
204
|
+
return err;
|
|
205
|
+
return 'unknown error';
|
|
206
|
+
}
|
|
196
207
|
/**
|
|
197
208
|
* Append a log line to ~/.claude-recall/hook-logs/{hookName}.log
|
|
198
209
|
*/
|
|
@@ -297,8 +297,23 @@ class MemoryTools {
|
|
|
297
297
|
if (lowCompliance.length > 0) {
|
|
298
298
|
sections.push('## Rule Health\nThese rules are loaded frequently but never cited — consider rewording or removing:\n' +
|
|
299
299
|
lowCompliance.map(r => {
|
|
300
|
-
|
|
301
|
-
|
|
300
|
+
let val;
|
|
301
|
+
if (typeof r.value === 'string') {
|
|
302
|
+
try {
|
|
303
|
+
const parsed = JSON.parse(r.value);
|
|
304
|
+
val = typeof parsed === 'string' ? parsed : (parsed?.content || parsed?.value || r.value);
|
|
305
|
+
}
|
|
306
|
+
catch {
|
|
307
|
+
val = r.value;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
else if (typeof r.value === 'object' && r.value !== null) {
|
|
311
|
+
val = r.value.content || r.value.value || JSON.stringify(r.value);
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
val = String(r.value ?? '');
|
|
315
|
+
}
|
|
316
|
+
return `- "${val.substring(0, 80)}" (loaded ${r.load_count}x, cited 0x)`;
|
|
302
317
|
}).join('\n'));
|
|
303
318
|
}
|
|
304
319
|
const totalRules = rules.preferences.length + rules.corrections.length +
|
|
@@ -193,6 +193,22 @@ class OutcomeStorage {
|
|
|
193
193
|
times_unhelpful = times_unhelpful + 1
|
|
194
194
|
`).run(key);
|
|
195
195
|
}
|
|
196
|
+
/**
|
|
197
|
+
* Prune old data from outcome tables to prevent unbounded growth.
|
|
198
|
+
* - Episodes older than 90 days
|
|
199
|
+
* - Outcome events older than 90 days
|
|
200
|
+
* - Rejected/archived candidate lessons older than 14 days
|
|
201
|
+
* - Orphaned memory_stats entries (key no longer in memories table)
|
|
202
|
+
*/
|
|
203
|
+
pruneOldData() {
|
|
204
|
+
const cutoff90 = new Date(Date.now() - 90 * 24 * 60 * 60 * 1000).toISOString();
|
|
205
|
+
const cutoff14 = new Date(Date.now() - 14 * 24 * 60 * 60 * 1000).toISOString();
|
|
206
|
+
const episodes = this.db.prepare('DELETE FROM episodes WHERE created_at < ?').run(cutoff90).changes;
|
|
207
|
+
const events = this.db.prepare('DELETE FROM outcome_events WHERE created_at < ?').run(cutoff90).changes;
|
|
208
|
+
const lessons = this.db.prepare("DELETE FROM candidate_lessons WHERE status IN ('rejected', 'archived') AND updated_at < ?").run(cutoff14).changes;
|
|
209
|
+
const stats = this.db.prepare('DELETE FROM memory_stats WHERE memory_key NOT IN (SELECT key FROM memories)').run().changes;
|
|
210
|
+
return { episodes, events, lessons, stats };
|
|
211
|
+
}
|
|
196
212
|
}
|
|
197
213
|
exports.OutcomeStorage = OutcomeStorage;
|
|
198
214
|
// --- Helpers ---
|
|
@@ -34,13 +34,18 @@ class PromotionEngine {
|
|
|
34
34
|
let promoted = 0;
|
|
35
35
|
let archived = 0;
|
|
36
36
|
for (const candidate of candidates) {
|
|
37
|
-
|
|
38
|
-
this.
|
|
39
|
-
|
|
37
|
+
try {
|
|
38
|
+
if (this.shouldPromote(candidate)) {
|
|
39
|
+
this.promote(candidate.id);
|
|
40
|
+
promoted++;
|
|
41
|
+
}
|
|
42
|
+
else if (this.shouldReject(candidate)) {
|
|
43
|
+
outcomeStorage.updateLessonStatus(candidate.id, 'rejected');
|
|
44
|
+
archived++;
|
|
45
|
+
}
|
|
40
46
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
archived++;
|
|
47
|
+
catch (err) {
|
|
48
|
+
console.error(`PromotionEngine: failed to process candidate ${candidate.id}`);
|
|
44
49
|
}
|
|
45
50
|
}
|
|
46
51
|
// Check for demotion of existing memories
|
|
@@ -108,7 +113,13 @@ class PromotionEngine {
|
|
|
108
113
|
// Not retrieved in 90 days with low strength
|
|
109
114
|
if (stats.last_retrieved_at) {
|
|
110
115
|
const daysSinceRetrieved = (Date.now() - new Date(stats.last_retrieved_at).getTime()) / (1000 * 60 * 60 * 24);
|
|
111
|
-
|
|
116
|
+
let strength = 0;
|
|
117
|
+
try {
|
|
118
|
+
strength = retrieval_1.MemoryRetrieval.computeStrength(memory);
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
strength = 0;
|
|
122
|
+
}
|
|
112
123
|
if (daysSinceRetrieved > 90 && strength < 0.2) {
|
|
113
124
|
return true;
|
|
114
125
|
}
|
|
@@ -159,8 +170,8 @@ class PromotionEngine {
|
|
|
159
170
|
}
|
|
160
171
|
}
|
|
161
172
|
}
|
|
162
|
-
catch {
|
|
163
|
-
|
|
173
|
+
catch (err) {
|
|
174
|
+
console.error('PromotionEngine: demotion sweep failed');
|
|
164
175
|
}
|
|
165
176
|
return archived;
|
|
166
177
|
}
|
|
@@ -0,0 +1,569 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Discover how Anthropic builds AI agents with practical capabilities through modular skills, enabling them to handle complex real-world tasks more effectively and reliably.
|
|
3
|
+
title: Equipping agents for the real world with Agent Skills \ Anthropic | Claude
|
|
4
|
+
image: https://cdn.prod.website-files.com/6889473510b50328dbb70ae6/68c469d23594abeb9ab6ee48_og-claude-generic.jpg
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
* Platform
|
|
8
|
+
* Solutions
|
|
9
|
+
* Pricing
|
|
10
|
+
* Resources
|
|
11
|
+
* [Login](https://claude.ai/login)
|
|
12
|
+
* Contact sales
|
|
13
|
+
[Contact sales](/contact-sales)Contact sales
|
|
14
|
+
* Try Claude
|
|
15
|
+
[Try Claude](https://claude.ai/)Try Claude
|
|
16
|
+
* Contact sales
|
|
17
|
+
[Contact sales](/contact-sales)Contact sales
|
|
18
|
+
* Try Claude
|
|
19
|
+
[Try Claude](https://claude.ai/)Try Claude
|
|
20
|
+
|
|
21
|
+
* Platform
|
|
22
|
+
* Solutions
|
|
23
|
+
* Pricing
|
|
24
|
+
* Resources
|
|
25
|
+
* [Login](https://claude.ai/login)
|
|
26
|
+
|
|
27
|
+
* Contact sales
|
|
28
|
+
[Contact sales](/contact-sales)Contact sales
|
|
29
|
+
* Try Claude
|
|
30
|
+
[Try Claude](https://claude.ai/)Try Claude
|
|
31
|
+
* Contact sales
|
|
32
|
+
[Contact sales](/contact-sales)Contact sales
|
|
33
|
+
* Try Claude
|
|
34
|
+
[Try Claude](https://claude.ai/)Try Claude
|
|
35
|
+
|
|
36
|
+
Explore here
|
|
37
|
+
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
# Equipping agents for the real world with Agent Skills
|
|
41
|
+
|
|
42
|
+
Claude is powerful, but real work requires procedural knowledge and organizational context. Introducing Agent Skills, a new way to build specialized agents using files and folders.
|
|
43
|
+
|
|
44
|
+
* Category
|
|
45
|
+
[Claude Code](https://claude.com/blog/category/claude-code)
|
|
46
|
+
[Agents](https://claude.com/blog/category/agents)
|
|
47
|
+
* Product
|
|
48
|
+
Claude Code
|
|
49
|
+
Claude Platform
|
|
50
|
+
* Date
|
|
51
|
+
October 16, 2025
|
|
52
|
+
* Reading time
|
|
53
|
+
5
|
|
54
|
+
min
|
|
55
|
+
* Share
|
|
56
|
+
[Copy link](#)
|
|
57
|
+
https://claude.com/blog/equipping-agents-for-the-real-world-with-agent-skills
|
|
58
|
+
|
|
59
|
+
_Update: We've published_ [_Agent Skills_](https://agentskills.io/) _as an open standard for cross-platform portability. (December 18, 2025)_
|
|
60
|
+
|
|
61
|
+
As model capabilities improve, we can now build general-purpose agents that interact with full-fledged computing environments. [Claude Code](https://claude.com/product/claude-code), for example, can accomplish complex tasks across domains using local code execution and filesystems. But as these agents become more powerful, we need more composable, scalable, and portable ways to equip them with domain-specific expertise.
|
|
62
|
+
|
|
63
|
+
This led us to create [**Agent Skills**](https://www.anthropic.com/news/skills): organized folders of instructions, scripts, and resources that agents can discover and load dynamically to perform better at specific tasks.Skills extend Claude’s capabilities by packaging your expertise into composable resources for Claude, transforming general-purpose agents into specialized agents that fit your needs.
|
|
64
|
+
|
|
65
|
+
Building a skill for an agent is like putting together an onboarding guide for a new hire. Instead of building fragmented, custom-designed agents for each use case, anyone can now specialize their agents with composable capabilities by capturing and sharing their procedural knowledge. In this article, we explain what Skills are, show how they work, and share best practices for building your own.
|
|
66
|
+
|
|
67
|
+
|
|
68
|
+
|
|
69
|
+
A skill is a directory containing a SKILL.md file that contains organized folders of instructions, scripts, and resources that give agents additional capabilities.
|
|
70
|
+
|
|
71
|
+
## The anatomy of a skill
|
|
72
|
+
|
|
73
|
+
To see Skills in action, let’s walk through a real example: one of the skills that powers [Claude’s recently launched document editing abilities](https://www.anthropic.com/news/create-files). Claude already knows a lot about understanding PDFs, but is limited in its ability to manipulate them directly (e.g. to fill out a form). This [PDF skill](https://github.com/anthropics/skills/tree/main/document-skills/pdf) lets us give Claude these new abilities.
|
|
74
|
+
|
|
75
|
+
At its simplest, a skill is a directory that contains a `SKILL.md file`. This file must start with YAML frontmatter that contains some required metadata: `name` and `description`. At startup, the agent pre-loads the `name` and `description` of every installed skill into its system prompt.
|
|
76
|
+
|
|
77
|
+
This metadata is the **first level** of _progressive disclosure_: it provides just enough information for Claude to know when each skill should be used without loading all of it into context. The actual body of this file is the **second level** of detail. If Claude thinks the skill is relevant to the current task, it will load the skill by reading its full `SKILL.md` into context.
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
|
|
81
|
+
A SKILL.md file must begin with YAML Frontmatter that contains a file name and description, which is loaded into its system prompt at startup.
|
|
82
|
+
|
|
83
|
+
As skills grow in complexity, they may contain too much context to fit into a single `SKILL.md`, or context that’s relevant only in specific scenarios. In these cases, skills can bundle additional files within the skill directory and reference them by name from `SKILL.md`. These additional linked files are the **third level** (and beyond) of detail, which Claude can choose to navigate and discover only as needed.
|
|
84
|
+
|
|
85
|
+
In the PDF skill shown below, the `SKILL.md` refers to two additional files (`reference.md` and `forms.md`) that the skill author chooses to bundle alongside the core `SKILL.md`. By moving the form-filling instructions to a separate file (`forms.md`), the skill author is able to keep the core of the skill lean, trusting that Claude will read `forms.md` only when filling out a form.
|
|
86
|
+
|
|
87
|
+
|
|
88
|
+
|
|
89
|
+
You can incorporate more context (via additional files) into your skill that can then be triggered by Claude based on the system prompt.
|
|
90
|
+
|
|
91
|
+
Progressive disclosure is the core design principle that makes Agent Skills flexible and scalable. Like a well-organized manual that starts with a table of contents, then specific chapters, and finally a detailed appendix, skills let Claude load information only as needed:
|
|
92
|
+
|
|
93
|
+
|
|
94
|
+
|
|
95
|
+
Agents with a filesystem and code execution tools don’t need to read the entirety of a skill into their context window when working on a particular task. This means that the amount of context that can be bundled into a skill is effectively unbounded.
|
|
96
|
+
|
|
97
|
+
### Skills and the context window
|
|
98
|
+
|
|
99
|
+
The following diagram shows how the context window changes when a skill is triggered by a user’s message.
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
Skills are triggered in the context window via your system prompt.
|
|
104
|
+
|
|
105
|
+
The sequence of operations shown:
|
|
106
|
+
|
|
107
|
+
1. To start, the context window has the core system prompt and the metadata for each of the installed skills, along with the user’s initial message;
|
|
108
|
+
2. Claude triggers the PDF skill by invoking a Bash tool to read the contents of `pdf/SKILL.md`;
|
|
109
|
+
3. Claude chooses to read the `forms.md` file bundled with the skill;
|
|
110
|
+
4. Finally, Claude proceeds with the user’s task now that it has loaded relevant instructions from the PDF skill.
|
|
111
|
+
|
|
112
|
+
### Skills and code execution
|
|
113
|
+
|
|
114
|
+
Skills can also include code for Claude to execute as tools at its discretion.
|
|
115
|
+
|
|
116
|
+
Large language models excel at many tasks, but certain operations are better suited for traditional code execution. For example, sorting a list via token generation is far more expensive than simply running a sorting algorithm. Beyond efficiency concerns, many applications require the deterministic reliability that only code can provide.
|
|
117
|
+
|
|
118
|
+
In our example, the PDF skill includes a pre-written Python script that reads a PDF and extracts all form fields. Claude can run this script without loading either the script or the PDF into context. And because code is deterministic, this workflow is consistent and repeatable.
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
|
|
122
|
+
Skills can also include code for Claude to execute as tools at its discretion based on the nature of the task.
|
|
123
|
+
|
|
124
|
+
## Developing and evaluating skills
|
|
125
|
+
|
|
126
|
+
Here are some helpful guidelines for getting started with authoring and testing skills:
|
|
127
|
+
|
|
128
|
+
* **Start with evaluation:** Identify specific gaps in your agents’ capabilities by running them on representative tasks and observing where they struggle or require additional context. Then build skills incrementally to address these shortcomings.
|
|
129
|
+
* **Structure for scale:** When the `SKILL.md` file becomes unwieldy, split its content into separate files and reference them. If certain contexts are mutually exclusive or rarely used together, keeping the paths separate will reduce the token usage. Finally, code can serve as both executable tools and as documentation. It should be clear whether Claude should run scripts directly or read them into context as reference.
|
|
130
|
+
* **Think from Claude’s perspective:** Monitor how Claude uses your skill in real scenarios and iterate based on observations: watch for unexpected trajectories or overreliance on certain contexts. Pay special attention to the `name` and `description` of your skill. Claude will use these when deciding whether to trigger the skill in response to its current task.
|
|
131
|
+
* **Iterate with Claude:** As you work on a task with Claude, ask Claude to capture its successful approaches and common mistakes into reusable context and code within a skill. If it goes off track when using a skill to complete a task, ask it to self-reflect on what went wrong. This process will help you discover what context Claude actually needs, instead of trying to anticipate it upfront.
|
|
132
|
+
|
|
133
|
+
### Security considerations when using Skills
|
|
134
|
+
|
|
135
|
+
Skills provide Claude with new capabilities through instructions and code. While this makes them powerful, it also means that malicious skills may introduce vulnerabilities in the environment where they’re used or direct Claude to exfiltrate data and take unintended actions.
|
|
136
|
+
|
|
137
|
+
We recommend installing skills only from trusted sources. When installing a skill from a less-trusted source, thoroughly audit it before use. Start by reading the contents of the files bundled in the skill to understand what it does, paying particular attention to code dependencies and bundled resources like images or scripts. Similarly, pay attention to instructions or code within the skill that instruct Claude to connect to potentially untrusted external network sources.
|
|
138
|
+
|
|
139
|
+
## The future of Skills
|
|
140
|
+
|
|
141
|
+
Agent Skills are [supported today](https://www.anthropic.com/news/skills) across [Claude.ai](http://claude.ai/redirect/website.v1.bdb29daa-1a07-41ec-87f6-579dc33634bd), Claude Code, the Claude Agent SDK, and the Claude Developer Platform.
|
|
142
|
+
|
|
143
|
+
In the coming weeks, we’ll continue to add features that support the full lifecycle of creating, editing, discovering, sharing, and using Skills. We’re especially excited about the opportunity for Skills to help organizations and individuals share their context and workflows with Claude. We’ll also explore how Skills can complement [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) servers by teaching agents more complex workflows that involve external tools and software.
|
|
144
|
+
|
|
145
|
+
Looking further ahead, we hope to enable agents to create, edit, and evaluate Skills on their own, letting them codify their own patterns of behavior into reusable capabilities.
|
|
146
|
+
|
|
147
|
+
Skills are a simple concept with a correspondingly simple format. This simplicity makes it easier for organizations, developers, and end users to build customized agents and give them new capabilities.
|
|
148
|
+
|
|
149
|
+
We’re excited to see what people build with Skills. Get started today by checking out our Skills [docs](https://docs.claude.com/en/docs/agents-and-tools/agent-skills/overview) and [cookbook](https://github.com/anthropics/claude-cookbooks/tree/main/skills).
|
|
150
|
+
|
|
151
|
+
## Acknowledgements
|
|
152
|
+
|
|
153
|
+
Written by Barry Zhang, Keith Lazuka, and Mahesh Murag, who all really like folders. Special thanks to the many others across Anthropic who championed, supported, and built Skills.
|
|
154
|
+
|
|
155
|
+
No items found.
|
|
156
|
+
|
|
157
|
+
[Prev](#)Prev
|
|
158
|
+
|
|
159
|
+
0/5
|
|
160
|
+
|
|
161
|
+
[Next](#)Next
|
|
162
|
+
|
|
163
|
+
eBook
|
|
164
|
+
|
|
165
|
+
##
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
FAQ
|
|
172
|
+
|
|
173
|
+
No items found.
|
|
174
|
+
|
|
175
|
+
Get Claude Code
|
|
176
|
+
|
|
177
|
+
curl -fsSL https://claude.ai/install.sh | bash
|
|
178
|
+
|
|
179
|
+
Copy command to clipboard
|
|
180
|
+
|
|
181
|
+
irm https://claude.ai/install.ps1 | iex
|
|
182
|
+
|
|
183
|
+
Copy command to clipboard
|
|
184
|
+
|
|
185
|
+
Or read the [documentation](https://code.claude.com/docs/en/overview)
|
|
186
|
+
|
|
187
|
+
Try Claude Code
|
|
188
|
+
|
|
189
|
+
[Try Claude Code](https://claude.ai/code)Try Claude Code
|
|
190
|
+
|
|
191
|
+
Developer docs
|
|
192
|
+
|
|
193
|
+
[Developer docs](https://code.claude.com/docs/en/overview)Developer docs
|
|
194
|
+
|
|
195
|
+
## Related posts
|
|
196
|
+
|
|
197
|
+
Explore more product news and best practices for teams building with Claude.
|
|
198
|
+
|
|
199
|
+
|
|
200
|
+
|
|
201
|
+
Mar 19, 2026
|
|
202
|
+
|
|
203
|
+
### Product management on the AI exponential
|
|
204
|
+
|
|
205
|
+
Claude Code
|
|
206
|
+
|
|
207
|
+
[Product management on the AI exponential ](#)Product management on the AI exponential
|
|
208
|
+
|
|
209
|
+
[Product management on the AI exponential ](/blog/product-management-on-the-ai-exponential)Product management on the AI exponential
|
|
210
|
+
|
|
211
|
+
|
|
212
|
+
|
|
213
|
+
Mar 18, 2026
|
|
214
|
+
|
|
215
|
+
### Code with Claude comes to San Francisco, London, and Tokyo
|
|
216
|
+
|
|
217
|
+
Claude Code
|
|
218
|
+
|
|
219
|
+
[Code with Claude comes to San Francisco, London, and Tokyo](#)Code with Claude comes to San Francisco, London, and Tokyo
|
|
220
|
+
|
|
221
|
+
[Code with Claude comes to San Francisco, London, and Tokyo](/blog/code-with-claude-san-francisco-london-tokyo)Code with Claude comes to San Francisco, London, and Tokyo
|
|
222
|
+
|
|
223
|
+
|
|
224
|
+
|
|
225
|
+
Mar 9, 2026
|
|
226
|
+
|
|
227
|
+
### Bringing Code Review to Claude Code
|
|
228
|
+
|
|
229
|
+
Claude Code
|
|
230
|
+
|
|
231
|
+
[Bringing Code Review to Claude Code](#)Bringing Code Review to Claude Code
|
|
232
|
+
|
|
233
|
+
[Bringing Code Review to Claude Code](/blog/code-review)Bringing Code Review to Claude Code
|
|
234
|
+
|
|
235
|
+
|
|
236
|
+
|
|
237
|
+
Mar 5, 2026
|
|
238
|
+
|
|
239
|
+
### Common workflow patterns for AI agents—and when to use them
|
|
240
|
+
|
|
241
|
+
Agents
|
|
242
|
+
|
|
243
|
+
[Common workflow patterns for AI agents—and when to use them](#)Common workflow patterns for AI agents—and when to use them
|
|
244
|
+
|
|
245
|
+
[Common workflow patterns for AI agents—and when to use them](/blog/common-workflow-patterns-for-ai-agents-and-when-to-use-them)Common workflow patterns for AI agents—and when to use them
|
|
246
|
+
|
|
247
|
+
## Transform how your organization operates with Claude
|
|
248
|
+
|
|
249
|
+
See pricing
|
|
250
|
+
|
|
251
|
+
[See pricing](https://claude.com/pricing#api)See pricing
|
|
252
|
+
|
|
253
|
+
Contact sales
|
|
254
|
+
|
|
255
|
+
[Contact sales](https://claude.com/contact-sales)Contact sales
|
|
256
|
+
|
|
257
|
+
Get the developer newsletter
|
|
258
|
+
|
|
259
|
+
Product updates, how-tos, community spotlights, and more. Delivered monthly to your inbox.
|
|
260
|
+
|
|
261
|
+
[Subscribe](#)Subscribe
|
|
262
|
+
|
|
263
|
+
Please provide your email address if you'd like to receive our monthly developer newsletter. You can unsubscribe at any time.
|
|
264
|
+
|
|
265
|
+
Thank you! You’re subscribed.
|
|
266
|
+
|
|
267
|
+
Sorry, there was a problem with your submission, please try again later.
|
|
268
|
+
|
|
269
|
+
[Homepage](https://claude.com)Homepage
|
|
270
|
+
|
|
271
|
+
[Next](#)Next
|
|
272
|
+
|
|
273
|
+
Thank you! Your submission has been received!
|
|
274
|
+
|
|
275
|
+
Oops! Something went wrong while submitting the form.
|
|
276
|
+
|
|
277
|
+
Write
|
|
278
|
+
|
|
279
|
+
[Button Text](#)Button Text
|
|
280
|
+
|
|
281
|
+
Learn
|
|
282
|
+
|
|
283
|
+
[Button Text](#)Button Text
|
|
284
|
+
|
|
285
|
+
Code
|
|
286
|
+
|
|
287
|
+
[Button Text](#)Button Text
|
|
288
|
+
|
|
289
|
+
Write
|
|
290
|
+
|
|
291
|
+
* Help me develop a unique voice for an audience
|
|
292
|
+
Hi Claude! Could you help me develop a unique voice for an audience? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
293
|
+
|
|
294
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
295
|
+
* Improve my writing style
|
|
296
|
+
Hi Claude! Could you improve my writing style? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
297
|
+
|
|
298
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
299
|
+
* Brainstorm creative ideas
|
|
300
|
+
Hi Claude! Could you brainstorm creative ideas? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
301
|
+
|
|
302
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
303
|
+
|
|
304
|
+
Learn
|
|
305
|
+
|
|
306
|
+
* Explain a complex topic simply
|
|
307
|
+
Hi Claude! Could you explain a complex topic simply? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
308
|
+
|
|
309
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
310
|
+
* Help me make sense of these ideas
|
|
311
|
+
Hi Claude! Could you help me make sense of these ideas? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
312
|
+
|
|
313
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
314
|
+
* Prepare for an exam or interview
|
|
315
|
+
Hi Claude! Could you prepare for an exam or interview? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
316
|
+
|
|
317
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
318
|
+
|
|
319
|
+
Code
|
|
320
|
+
|
|
321
|
+
* Explain a programming concept
|
|
322
|
+
Hi Claude! Could you explain a programming concept? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
323
|
+
|
|
324
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
325
|
+
* Look over my code and give me tips
|
|
326
|
+
Hi Claude! Could you look over my code and give me tips? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
327
|
+
|
|
328
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
329
|
+
* Vibe code with me
|
|
330
|
+
Hi Claude! Could you vibe code with me? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to— like Google Drive, web search, etc.—if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
331
|
+
|
|
332
|
+
Please execute the task as soon as you can—an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
333
|
+
|
|
334
|
+
More
|
|
335
|
+
|
|
336
|
+
* Write case studies
|
|
337
|
+
This is another test
|
|
338
|
+
* Write grant proposals
|
|
339
|
+
Hi Claude! Could you write grant proposals? If you need more information from me, ask me 1-2 key questions right away. If you think I should upload any documents that would help you do a better job, let me know. You can use the tools you have access to — like Google Drive, web search, etc. — if they’ll help you better accomplish this task. Do not use analysis tool. Please keep your responses friendly, brief and conversational.
|
|
340
|
+
|
|
341
|
+
Please execute the task as soon as you can - an artifact would be great if it makes sense. If using an artifact, consider what kind of artifact (interactive, visual, checklist, etc.) might be most helpful for this specific task. Thanks for your help!
|
|
342
|
+
* Write video scripts
|
|
343
|
+
this is a test
|
|
344
|
+
|
|
345
|
+
[Anthropic](https://www.anthropic.com/)Anthropic
|
|
346
|
+
|
|
347
|
+
© \[year\] Anthropic PBC
|
|
348
|
+
|
|
349
|
+
Products
|
|
350
|
+
|
|
351
|
+
* Claude
|
|
352
|
+
[Claude](/product/overview)Claude
|
|
353
|
+
* Claude Code
|
|
354
|
+
[Claude Code](/product/claude-code)Claude Code
|
|
355
|
+
* Claude Code for Enterprise
|
|
356
|
+
[Claude Code for Enterprise](/product/claude-code/enterprise)Claude Code for Enterprise
|
|
357
|
+
* Claude Cowork
|
|
358
|
+
[Claude Cowork](/product/cowork)Claude Cowork
|
|
359
|
+
* Max plan
|
|
360
|
+
[Max plan](/pricing/max)Max plan
|
|
361
|
+
* Team plan
|
|
362
|
+
[Team plan](/pricing/team)Team plan
|
|
363
|
+
* Enterprise plan
|
|
364
|
+
[Enterprise plan](/pricing/enterprise)Enterprise plan
|
|
365
|
+
* Download app
|
|
366
|
+
[Download app](/download)Download app
|
|
367
|
+
* Pricing
|
|
368
|
+
[Pricing](/pricing)Pricing
|
|
369
|
+
* Log in
|
|
370
|
+
[Log in](https://claude.ai/login)Log in
|
|
371
|
+
|
|
372
|
+
Features
|
|
373
|
+
|
|
374
|
+
* Claude for Chrome
|
|
375
|
+
[Claude for Chrome](/claude-for-chrome)Claude for Chrome
|
|
376
|
+
* Claude for Slack
|
|
377
|
+
[Claude for Slack](/claude-for-slack)Claude for Slack
|
|
378
|
+
* Claude for Excel
|
|
379
|
+
[Claude for Excel](/claude-for-excel)Claude for Excel
|
|
380
|
+
* Claude for PowerPoint
|
|
381
|
+
[Claude for PowerPoint](/claude-for-powerpoint)Claude for PowerPoint
|
|
382
|
+
* Skills
|
|
383
|
+
[Skills](/skills)Skills
|
|
384
|
+
|
|
385
|
+
Models
|
|
386
|
+
|
|
387
|
+
* Opus
|
|
388
|
+
[Opus](https://www.anthropic.com/claude/opus)Opus
|
|
389
|
+
* Sonnet
|
|
390
|
+
[Sonnet](https://www.anthropic.com/claude/sonnet)Sonnet
|
|
391
|
+
* Haiku
|
|
392
|
+
[Haiku](https://www.anthropic.com/claude/haiku)Haiku
|
|
393
|
+
|
|
394
|
+
Solutions
|
|
395
|
+
|
|
396
|
+
* AI agents
|
|
397
|
+
[AI agents](/solutions/agents)AI agents
|
|
398
|
+
* Claude Code Security
|
|
399
|
+
[Claude Code Security](/solutions/claude-code-security)Claude Code Security
|
|
400
|
+
* Code modernization
|
|
401
|
+
[Code modernization](/solutions/code-modernization)Code modernization
|
|
402
|
+
* Coding
|
|
403
|
+
[Coding](/solutions/coding)Coding
|
|
404
|
+
* Customer support
|
|
405
|
+
[Customer support](/solutions/customer-support)Customer support
|
|
406
|
+
* Education
|
|
407
|
+
[Education](/solutions/education)Education
|
|
408
|
+
* Financial services
|
|
409
|
+
[Financial services](/solutions/financial-services)Financial services
|
|
410
|
+
* Government
|
|
411
|
+
[Government](/solutions/government)Government
|
|
412
|
+
* Healthcare
|
|
413
|
+
[Healthcare](/solutions/healthcare)Healthcare
|
|
414
|
+
* Life sciences
|
|
415
|
+
[Life sciences](/solutions/life-sciences)Life sciences
|
|
416
|
+
* Nonprofits
|
|
417
|
+
[Nonprofits](/solutions/nonprofits)Nonprofits
|
|
418
|
+
|
|
419
|
+
Claude Platform
|
|
420
|
+
|
|
421
|
+
* Overview
|
|
422
|
+
[Overview](/platform/api)Overview
|
|
423
|
+
* Developer docs
|
|
424
|
+
[Developer docs](https://platform.claude.com/docs)Developer docs
|
|
425
|
+
* Pricing
|
|
426
|
+
[Pricing](https://claude.com/pricing#api)Pricing
|
|
427
|
+
* Marketplace
|
|
428
|
+
[Marketplace](/platform/marketplace)Marketplace
|
|
429
|
+
* Amazon Bedrock
|
|
430
|
+
[Amazon Bedrock](/partners/amazon-bedrock)Amazon Bedrock
|
|
431
|
+
* Google Cloud’s Vertex AI
|
|
432
|
+
[Google Cloud’s Vertex AI](/partners/google-cloud-vertex-ai)Google Cloud’s Vertex AI
|
|
433
|
+
* Microsoft Foundry
|
|
434
|
+
[Microsoft Foundry](/partners/microsoft-foundry)Microsoft Foundry
|
|
435
|
+
* Regional compliance
|
|
436
|
+
[Regional compliance](/regional-compliance)Regional compliance
|
|
437
|
+
* Console login
|
|
438
|
+
[Console login](https://platform.claude.com/)Console login
|
|
439
|
+
|
|
440
|
+
Resources
|
|
441
|
+
|
|
442
|
+
* Blog
|
|
443
|
+
[Blog](/blog)Blog
|
|
444
|
+
* Claude partner network
|
|
445
|
+
[Claude partner network](/partners)Claude partner network
|
|
446
|
+
* Community
|
|
447
|
+
[Community](/community)Community
|
|
448
|
+
* Connectors
|
|
449
|
+
[Connectors](/connectors)Connectors
|
|
450
|
+
* Courses
|
|
451
|
+
[Courses](https://www.anthropic.com/learn)Courses
|
|
452
|
+
* Customer stories
|
|
453
|
+
[Customer stories](/customers)Customer stories
|
|
454
|
+
* Engineering at Anthropic
|
|
455
|
+
[Engineering at Anthropic](https://www.anthropic.com/engineering)Engineering at Anthropic
|
|
456
|
+
* Events
|
|
457
|
+
[Events](https://www.anthropic.com/events)Events
|
|
458
|
+
* Plugins
|
|
459
|
+
[Plugins](/plugins)Plugins
|
|
460
|
+
* Powered by Claude
|
|
461
|
+
[Powered by Claude](/partners/powered-by-claude)Powered by Claude
|
|
462
|
+
* Service partners
|
|
463
|
+
[Service partners](/partners/services)Service partners
|
|
464
|
+
* Startups program
|
|
465
|
+
[Startups program](/programs/startups)Startups program
|
|
466
|
+
* Tutorials
|
|
467
|
+
[Tutorials](/resources/tutorials)Tutorials
|
|
468
|
+
* Use cases
|
|
469
|
+
[Use cases](/resources/use-cases)Use cases
|
|
470
|
+
|
|
471
|
+
Company
|
|
472
|
+
|
|
473
|
+
* Anthropic
|
|
474
|
+
[Anthropic](https://www.anthropic.com/)Anthropic
|
|
475
|
+
* Careers
|
|
476
|
+
[Careers](https://www.anthropic.com/careers)Careers
|
|
477
|
+
* Economic Futures
|
|
478
|
+
[Economic Futures](https://www.anthropic.com/economic-futures)Economic Futures
|
|
479
|
+
* Research
|
|
480
|
+
[Research](https://www.anthropic.com/research)Research
|
|
481
|
+
* News
|
|
482
|
+
[News](https://www.anthropic.com/news)News
|
|
483
|
+
* Responsible Scaling Policy
|
|
484
|
+
[Responsible Scaling Policy](https://www.anthropic.com/news/announcing-our-updated-responsible-scaling-policy)Responsible Scaling Policy
|
|
485
|
+
* Security and compliance
|
|
486
|
+
[Security and compliance](https://trust.anthropic.com/)Security and compliance
|
|
487
|
+
* Transparency
|
|
488
|
+
[Transparency](https://anthropic.com/transparency)Transparency
|
|
489
|
+
|
|
490
|
+
Help and security
|
|
491
|
+
|
|
492
|
+
* Availability
|
|
493
|
+
[Availability](https://www.anthropic.com/supported-countries)Availability
|
|
494
|
+
* Status
|
|
495
|
+
[Status](https://status.anthropic.com/)Status
|
|
496
|
+
* Support center
|
|
497
|
+
[Support center](https://support.claude.com/en/)Support center
|
|
498
|
+
|
|
499
|
+
Terms and policies
|
|
500
|
+
|
|
501
|
+
* Privacy choices
|
|
502
|
+
### Cookie settings
|
|
503
|
+
We use cookies to deliver and improve our services, analyze site usage, and if you agree, to customize or personalize your experience and market our services to you. You can read our Cookie Policy [here](https://www.anthropic.com/legal/cookies).
|
|
504
|
+
Customize cookie settings Reject all cookies Accept all cookies
|
|
505
|
+
###### Necessary
|
|
506
|
+
Enables security and basic functionality.
|
|
507
|
+
Required
|
|
508
|
+
###### Analytics
|
|
509
|
+
Enables tracking of site performance.
|
|
510
|
+
Off
|
|
511
|
+
###### Marketing
|
|
512
|
+
Enables ads personalization and tracking.
|
|
513
|
+
Off
|
|
514
|
+
Save preferences
|
|
515
|
+
* Privacy policy
|
|
516
|
+
[Privacy policy](https://www.anthropic.com/legal/privacy)Privacy policy
|
|
517
|
+
* Responsible disclosure policy
|
|
518
|
+
[Responsible disclosure policy](https://www.anthropic.com/responsible-disclosure-policy)Responsible disclosure policy
|
|
519
|
+
* Terms of service: Commercial
|
|
520
|
+
[Terms of service: Commercial](https://www.anthropic.com/legal/commercial-terms)Terms of service: Commercial
|
|
521
|
+
* Terms of service: Consumer
|
|
522
|
+
[Terms of service: Consumer](https://www.anthropic.com/legal/consumer-terms)Terms of service: Consumer
|
|
523
|
+
* Usage policy
|
|
524
|
+
[Usage policy](https://www.anthropic.com/legal/aup)Usage policy
|
|
525
|
+
|
|
526
|
+
[x.com](https://x.com/claudeai)x.com
|
|
527
|
+
|
|
528
|
+
[LinkedIn](https://www.linkedin.com/showcase/claude/)LinkedIn
|
|
529
|
+
|
|
530
|
+
[YouTube](https://www.youtube.com/@anthropic-ai)YouTube
|
|
531
|
+
|
|
532
|
+
[Instagram](https://www.instagram.com/claudeai)Instagram
|
|
533
|
+
|
|
534
|
+
English (US)
|
|
535
|
+
|
|
536
|
+
[](/blog-product/claude-code)
|
|
537
|
+
|
|
538
|
+
Claude Code
|
|
539
|
+
|
|
540
|
+
[](/blog-product/claude-platform)
|
|
541
|
+
|
|
542
|
+
Claude Platform
|
|
543
|
+
|
|
544
|
+
[](/blog-usecases/agents)
|
|
545
|
+
|
|
546
|
+
Agents
|
|
547
|
+
|
|
548
|
+
[](/blog-usecases/coding)
|
|
549
|
+
|
|
550
|
+
Coding
|
|
551
|
+
|
|
552
|
+
```json
|
|
553
|
+
{
|
|
554
|
+
"@context": "https://schema.org",
|
|
555
|
+
"@type": "BlogPosting",
|
|
556
|
+
"headline": "Equipping agents for the real world with Agent Skills",
|
|
557
|
+
"description": "Discover how Anthropic builds AI agents with practical capabilities through modular skills, enabling them to handle complex real-world tasks more effectively and reliably.",
|
|
558
|
+
"image": "",
|
|
559
|
+
"publisher": {
|
|
560
|
+
"@id": "https://claude.com/#organization"
|
|
561
|
+
},
|
|
562
|
+
"datePublished": "Oct 16, 2025",
|
|
563
|
+
"dateModified": "Jan 28, 2026",
|
|
564
|
+
"mainEntityOfPage": {
|
|
565
|
+
"@type": "WebPage",
|
|
566
|
+
"@id": "https://claude.com/blog/equipping-agents-for-the-real-world-with-agent-skills"
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "claude-recall",
|
|
3
|
-
"version": "0.18.
|
|
3
|
+
"version": "0.18.9",
|
|
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": {
|