
Written by:
CEO & Founder

Claude Skills is Anthropic's way of letting Claude learn new, reusable ways of working — packages of instructions, and sometimes scripts, that Claude only loads when they're actually needed. Instead of pasting the same instructions into every conversation, or letting a CLAUDE.md file grow into a long list of procedures, you package the knowledge once and Claude pulls it in when a task matches. Here's how they work under the hood, how to build your own, and what to think about if you pull ready-made skills from the community.
A skill is essentially a folder containing a file named SKILL.md. The file has two parts: a frontmatter block in YAML at the top (between --- lines) describing its name and purpose, followed by plain markdown with the actual instructions. The only required field is description — the text Claude uses to decide when the skill should be used.
The clever part is how little it costs to have many skills installed at once. Claude Code only loads each skill's name and description into the system prompt from the start. Only when a task actually matches a skill does the full SKILL.md file get loaded into context — a pattern often called progressive disclosure. A skill can also point to its own reference files, templates, or scripts in the same folder, which in turn only get loaded when needed. That means you can have hundreds of skills installed without it costing any tokens until one of them is actually used.
By default, both you and Claude can start a skill. You type /skill-name to run it directly, or Claude notices your request matches the description and loads it automatically. If you want tighter control, two frontmatter flags help:
disable-model-invocation: true — only you can trigger the skill, never Claude on its own. Good for anything with side effects, like a deploy or sending a Slack message.user-invocable: false — the opposite: only Claude can use the skill, and it won't show up as its own command in the menu.Where you place the folder determines who gets access to it:
~/.claude/skills/<name>/SKILL.md, available across all your projects..claude/skills/<name>/SKILL.md, scoped to that repo and can be committed to git so the whole team gets it.plugin-name:skill-name so they never collide with your own.Creating your own skill takes a couple of minutes:
mkdir -p ~/.claude/skills/my-skillSKILL.md file with frontmatter and instructions, and save it in the folder./my-skill directly, or by asking something that matches the description and watching Claude pick it up on its own.You don't have to build everything yourself. skills.sh is an open marketplace for skills that works with Claude Code, Cursor, Codex, and several other agents. You install a skill with a single command:
npx skills add <owner/repo>
It's the same idea as npm install, just for agent instructions instead of code — which is exactly why you should think twice before running it.
This is the part that matters. A skill you install becomes text that gets loaded into Claude's context as instructions — not code that gets reviewed by a compiler or run in a sandbox. If a SKILL.md file contains a hidden prompt injection — instructions telling Claude to do something other than what you asked, like leaking secret keys or sending data to an external service — there's no automatic boundary stopping it. Skills with an allowed-tools field can also grant Claude permission to run things like Bash commands without asking you each time, which makes a malicious skill far more dangerous than a malicious snippet of text.
Before installing a skill from skills.sh or another community repo:
allowed-tools field.The same common sense that applies to npm install-ing a package you've never heard of applies here — except the consequence of trusting the wrong instructions is your AI assistant acting against you, not just a broken build.
Claude Skills makes it easy to package knowledge Claude would otherwise forget between sessions — everything from internal coding conventions to entire workflows. Build your own for what's specific to your team, and lean on the skills.sh community for what's already solved — but treat every skill you didn't write yourself as code you'd code-review, not as a harmless text file.
A folder containing a file named SKILL.md, which holds instructions (and sometimes scripts or reference files) for how Claude should handle a particular type of task. Claude only loads each installed skill's name and description from the start, and pulls in the full content only once a request actually matches.
Personal skills go in ~/.claude/skills/<name>/SKILL.md and apply across all your projects. Project skills go in .claude/skills/<name>/SKILL.md inside the repo and can be committed to git so the whole team gets them. Plugins can also ship skills, namespaced as plugin-name:skill-name.
Through the description field in the skill's frontmatter, which is always present in Claude's context. If your request matches the description, Claude loads the full skill automatically. You can also trigger it manually by typing /skill-name, or lock it to manual-only invocation with disable-model-invocation: true in the frontmatter.
Only if you review them first. A skill is text that Claude trusts as instructions, so a hidden prompt injection in a SKILL.md file could get Claude to do things you never asked for — especially if the skill has an allowed-tools field granting it permission to run commands without approval. Always read the SKILL.md before installing, check which tools it requests, and prefer known sources or skills with reviews on skills.sh.