You open a fresh Claude chat and re-explain your project, your stack, your naming conventions, and how you like things written. Again. Claude is smart, but it starts every conversation from zero, so the burden of "remembering who you are" falls on you. A memory skill is how you stop doing that: a repeatable way to give Claude persistent context it can load on demand, instead of pasting the same paragraph into every prompt.
This guide covers what a "Claude memory skill" actually is, the three real mechanisms Claude gives you (built-in memory, agent skills, and CLAUDE.md files), how to build one yourself, and the failure mode nobody warns you about: the context you carefully write goes stale, and stale context is worse than none.
Key takeaways
- A Claude memory skill is a packaged set of instructions plus context that Claude loads when a task matches, so it recalls your facts and preferences without you re-pasting them.
- Claude gives you three real mechanisms: built-in Memory (conversation recall), agent skills (loadable capability folders), and CLAUDE.md / project files (always-on instructions). They solve different problems.
- Agent skills are the closest thing to a true "memory skill" you build yourself: a folder with a description, and Claude pulls it in only when relevant.
- The hard part is not writing the context. It is keeping it current. A skill that still says "we use Postgres" after you moved to SQLite will actively mislead Claude.
- The durable fix is a memory layer that updates itself from what you already do and marks old facts superseded when they change, then serves that context over MCP.
---
What "Claude memory skill" actually means
The phrase gets used loosely, so pin it down first. People searching "claude memory skill" usually want one of two things:
- A way to make Claude remember facts about them and their work across sessions.
- A packaged, reusable skill (in the agent skills sense) that carries context Claude can load when it is relevant.
Those overlap. A well-built agent skill can be the delivery vehicle for persistent context. So a "Claude memory skill" is best defined as a loadable unit of instructions plus context, scoped to a task, that Claude reads on demand instead of holding everything in the prompt at all times.
The reason this matters is simple: quality of AI output is capped by input quality. A bigger model does not fix a Claude that knows nothing specific about your project. Better, current context does. The whole point of a memory skill is to raise the floor on what Claude knows before it starts.
The three mechanisms Claude gives you
There is no single "memory" button. Claude gives you three distinct tools, and picking the wrong one for the job is the most common mistake.
| Mechanism | What it is | Loads when | Best for | Stays current on its own? |
|---|---|---|---|---|
| Built-in Memory | Claude's own recall of facts from your chats | Automatically, across conversations | Casual continuity, remembering stated preferences | No, you correct it manually |
| Agent skills | A folder (SKILL.md + files) describing a capability | Only when the task matches the skill's description | Reusable workflows and packaged context | No, you edit the files |
| CLAUDE.md / project files | Always-on instructions in a repo or project | Every message in that context | Project rules, conventions, house style | No, you edit the file |
Built-in Memory is the least controllable. It decides what to keep. It is convenient, but you cannot easily audit or version it, and it is per-surface (what Claude remembers in one app does not transfer to your terminal or another tool).
Agent skills are the most powerful for building your own memory skill, because you own the files and control exactly when they load. Claude reads the short description of every available skill, then pulls the full skill in only when the current task is a match. That means you can carry a lot of context without paying for it on every turn.
CLAUDE.md and project instruction files are the always-on layer. They are perfect for hard rules ("never use em dashes," "our API returns snake_case") and terrible for anything long, because everything in them is loaded every single message.
How to build a Claude memory skill, step by step
Here is a real, minimal agent skill that carries persistent context about a project. A skill is a folder with a SKILL.md file. The frontmatter tells Claude when to load it.
---
name: acme-billing-context
description: >
Load when working on Acme's billing service: Stripe integration,
invoice logic, subscription tiers, or the payments database.
Use for any task touching billing, checkout, or refunds.
---
# Acme Billing Context
## Stack
- Payments: Stripe (Checkout Sessions, not raw PaymentIntents)
- DB: Postgres, table `subscriptions` (status enum: active/past_due/canceled)
- Backend: FastAPI, module `services/billing/`
## Rules
- Prices live in Stripe, never hardcoded in the app.
- Webhook events must be converted to dict via `.to_dict()` before access.
- Refunds over $500 require a manual approval flag, never auto-issue.
## Naming
- Customer-facing tier names: Starter, Growth, Scale.
- Internal codes: t1, t2, t3. Map before displaying.
That is a working memory skill. When you ask Claude to touch billing code, it reads the description, decides the skill is relevant, and loads the full context. When you ask it to write a blog post, it skips the skill entirely. You get the context exactly when it helps and never pay the token cost when it does not.
The discipline that makes this work:
- Write a description that names the trigger conditions precisely. Vague descriptions ("stuff about the app") mean Claude never loads the skill at the right time.
- Keep the body factual and specific. Real table names, real enum values, real limits. Not "we care about clean code."
- One skill per coherent domain. Do not build a single mega-skill with everything, or Claude loads a wall of irrelevant text.
When to use a skill vs. a CLAUDE.md file vs. built-in Memory
Match the mechanism to the shape of the context.
- Use a CLAUDE.md file for short, always-true rules that apply to every task in a project. House style, forbidden patterns, the one deploy command. If it must be true on every single message, it goes here.
- Use an agent skill for larger, task-scoped context you only need sometimes. The billing example above. A skill for your writing voice. A skill for one client's brand guidelines. Loaded on demand, so length is cheap.
- Use built-in Memory for the low-effort layer you do not want to maintain by hand. Let it catch casual preferences. Do not rely on it for anything load-bearing, because you cannot fully control or audit what it keeps.
A good setup uses all three: a lean CLAUDE.md for rules, a few sharp skills for domains, and built-in Memory as a soft backstop.
The problem every hand-built memory skill hits
Here is the part that kills most setups. You write a clean skill. It works. Then reality moves.
You migrate off Postgres. You change a subscription tier's name. You deprecate an endpoint. Your skill still says the old thing. Now Claude confidently loads context that is wrong, and wrong context is worse than an empty prompt, because Claude has no way to know it is stale. It will cite your deprecated endpoint and defend it.
A memory skill you maintain by hand is only as current as your last edit, and nobody edits these on schedule.
This is the same trap that swallows static second brains built in Obsidian or Notion: the notes were never designed to stay current, so maintaining them becomes its own recurring job. A skill file is a tiny second brain with the exact same failure mode. The moment your pricing, your bug, your pivot, or your opinion changes, the file lies until you remember to fix it.
You can fight this with discipline. In practice, discipline loses. The context you write most carefully is the context you forget to update, because updating it is invisible work with no deadline.
How to keep Claude's context current without babysitting it
The durable fix is to stop treating context as a file you hand-edit and start treating it as a memory layer that maintains itself, then serves Claude over MCP.
That is the problem Locul is built to solve. It builds a searchable second brain from what you already produce (your markdown files, PDFs, dictation, Notion, your LinkedIn profile), distills it into memories tagged as facts, preferences, decisions, or events, and keeps them current with supersedence: when a fact changes, the old one is marked superseded and the history is preserved, so Claude reads the current version, not last quarter's. Everything stays on your machine by default, and it works with local models through Ollama.
The mechanism that matters here is supersedence. It is the difference between a skill file that quietly rots and a memory layer that self-corrects. When you say "we moved to SQLite," the old Postgres fact is retired automatically instead of sitting in a file waiting for you to notice.
Locul exposes that memory to Claude over MCP with real tools: recall_memories, get_entity_profile, search_notes, get_brain_index, and more, all gated by an access policy you set (blocked words, private folders, per-tool toggles). So instead of Claude loading a static skill you last edited weeks ago, it queries a live brain that reflects where your project actually is today.
You can also bundle a domain's facts, opinions, and playbooks into an injectable Memory Pack and install it into your brain, which is closer to the "shareable skill" idea than a frozen file ever gets.
If your priority is casual chat recall rather than project context, that is a different tradeoff, and our guide on giving your AI a memory that lasts walks through the built-in memory options and where they fall short.
A quick before-and-after
The difference shows up in the output, not the setup.
Before: fresh chat, no memory skill. "Add a refund endpoint." Claude invents a data model, guesses your framework, hardcodes a price, and writes in a voice that is not yours. You spend ten minutes correcting it back to reality.
After: Claude loads current context. It knows refunds over $500 need the approval flag, that prices live in Stripe, that the module is
services/billing/, and that your last decision was to move the subscriptions table to SQLite. The first draft is close to shippable.
Same model. Different input. The gap is entirely the context, and a current memory layer is what closes it.
---
FAQ
Does Claude have a built-in memory skill?
Claude has a built-in Memory feature that recalls facts across conversations, but it is not a "skill" you build or control. For persistent, versioned, task-scoped context you construct yourself, use agent skills or a CLAUDE.md file. For memory that updates itself and serves Claude over MCP, use a dedicated memory layer, which our memory guide covers in depth.
What is the difference between a Claude memory tool and an agent skill?
An agent skill is a folder Claude loads on demand when a task matches its description, and it can carry context. A memory tool (in the MCP sense) is a function Claude calls to fetch facts at runtime, like recall_memories. Skills are static files you edit; MCP memory tools query a live store, so they can return current data instead of whatever you last wrote down.
How do I stop my Claude context from going stale?
Do not rely on hand-editing files. Every static skill or CLAUDE.md drifts the moment your project changes. Use a memory layer with supersedence, where changed facts retire the old version automatically, so Claude always reads the current state. That is the core of what Locul does.
Can I use a Claude memory skill with local or open-weight models?
Yes. Agent skills and CLAUDE.md files are just text, so any model that reads them works. If you want a local memory layer too, Locul runs local embeddings through Ollama and keeps everything on your machine, so your context and your model can both stay off the cloud.
Are Claude memory skills shareable with my team?
You can share skill files and CLAUDE.md files like any file in a repo, but they still go stale for everyone at once. Locul supports injectable Memory Packs (curated bundles of facts, opinions, and playbooks) you can install into a brain. Live team share-codes are on the roadmap, so treat packs as a personal or manually-shared tool for now, not automated team sync.
How many memory skills should I build?
One per coherent domain, not one giant catch-all. Claude reads every skill's description on each task, so a sprawling mega-skill either loads too much or never loads at the right moment. Small, sharply-scoped skills with precise trigger descriptions load exactly when they help.
---
Stop re-explaining yourself to Claude at the start of every chat. Build a couple of sharp agent skills for the rules that never change, and put the context that moves (your decisions, your stack, your current opinions) into a memory layer that keeps itself current. Try Locul free with 500 memories and local AI, no credit card, and let Claude work from your real, up-to-date context instead of a file you forgot to update.
FAQ
Common questions
Does Claude have a built-in memory skill?
What is the difference between a Claude memory tool and an agent skill?
recall_memories. Skills are static files you edit; MCP memory tools query a live store, so they can return current data instead of whatever you last wrote down.