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.
File without changes
@@ -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 17 memories. Last updated: 2026-03-21.
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": "2c220ace8666e38374662c19a60f76118e125327cc273019414c6e8383e5e120",
4
- "memoryCount": 17,
5
- "generatedAt": "2026-03-21T15:18:51.279Z",
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 26 memories. Last updated: 2026-03-21.
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": "577fce05d7ff95d6661cf78c93b84ce7a8ff54d22964456ca73c045bac9c0986",
4
- "memoryCount": 26,
5
- "generatedAt": "2026-03-21T15:18:51.248Z",
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 16 memories. Last updated: 2026-03-21.
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
- - Test preference 1774020789520-2
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": "7123394f8e4ec18013e3a3c3d5f2a4761f1a0c14c20401f566541901de6f797c",
4
- "memoryCount": 16,
5
- "generatedAt": "2026-03-21T15:18:51.351Z",
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
- "memory_1774020789705_xhubujrxv",
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 — powered by native Claude Skills.
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** — when enough memories accumulate, auto-generates `.claude/skills/auto-*/` files that load natively without tool calls
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. A native Claude Skill (`.claude/skills/memory-management/SKILL.md`) teaches Claude when to load, store, and search memories.
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) {
@@ -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
- const val = typeof r.value === 'string' ? (JSON.parse(r.value)?.content || r.value) : r.value;
301
- return `- "${String(val).substring(0, 80)}" (loaded ${r.load_count}x, cited 0x)`;
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
- if (this.shouldPromote(candidate)) {
38
- this.promote(candidate.id);
39
- promoted++;
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
- else if (this.shouldReject(candidate)) {
42
- outcomeStorage.updateLessonStatus(candidate.id, 'rejected');
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
- const strength = retrieval_1.MemoryRetrieval.computeStrength(memory);
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
- // Non-critical
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.7",
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": {