Package a workflow once, and Claude runs it the right way every time it matters.

Claude Code Skills: The Complete Guide

Sep Gaspari|May 29, 2026|16 min read
Share:

Claude Code skills are reusable, packaged capabilities that turn a repeatable workflow into something Claude can load on demand. Instead of re-explaining your release process or your test conventions in every session, you write the procedure once as a skill, and Claude pulls it in automatically when the work calls for it.

A skill is a small folder. At its center is a SKILL.md file that holds a name, a short description, and the instructions Claude should follow. You can ship scripts, templates, and reference files alongside it. When your request matches the skill's description, Claude reads the instructions and follows that workflow rather than improvising one from scratch.

That sounds simple, and it is. But Claude Code skills are also one of the most misunderstood parts of the toolkit, mostly because people confuse them with subagents, MCP servers, and slash commands. This guide clears that up. We cover what skills are, how invocation actually works, how they differ from the other extension mechanisms, how to write your first one, and how skills combine with agent teams to do real work.

If you want the broader picture first, start with our Claude Code guide. If you are ready to wire skills into a multi-agent setup, the rest of this page is the playbook.

What Are Claude Code Skills?

A Claude Code skill is a packaged, reusable capability that bundles a workflow into a folder Claude can load when it is relevant. Think of it as a saved playbook: a named procedure, a description of when to use it, the step-by-step instructions, and any supporting files. The skill sits on disk until a request lines up with what it does, and then Claude follows it.

The point of a skill is to encapsulate something you would otherwise repeat. If you find yourself pasting the same setup notes, the same conventions, or the same multi-step checklist into Claude over and over, that is a skill waiting to be written. Once it exists, the knowledge stops living in your head or in a stale doc and starts living somewhere Claude can act on it.

Three properties make skills different from just writing a long prompt:

  • They are discoverable. Claude knows a skill exists and what it is for, so it can reach for the right one without you naming it.
  • They are progressive. Only the short description stays in context all the time. The full instructions and any attached files load only when the skill is actually used, which keeps your context lean.
  • They are portable. A skill is a folder, so it lives in version control, travels with the repo, and can be shared across a team or across every project you touch.

The mental model: a skill is to a workflow what a function is to a block of code. You define it once, give it a clear name and a clear trigger, and call it whenever the situation matches, instead of rewriting the logic inline every time.

Skills do not change what Claude is capable of. They change how reliably it does a known task. A model that can write tests already exists; a skill makes it write tests your way, with your framework, your folder layout, and your naming conventions, every single time, without you re-explaining.

How Skills Work

The mechanics of Claude Code skills come down to one question: how does Claude decide to use one? The answer is the description. Each skill exposes a short name and description that stay available to Claude at all times. Those summaries are the routing layer. When your request matches one, Claude loads the rest of the skill.

The Invocation Flow

Here is what happens, step by step, when you make a request:

  1. You send a request. You describe a task in plain language, the same way you always would.
  2. Claude scans the skill descriptions. It compares your intent against the name and description of every available skill.
  3. A match loads the full skill. If a description fits, Claude reads that skill's complete instructions and any files it references.
  4. Claude follows the workflow. It executes the steps the skill defines, using its normal tools along the way.
  5. No match means business as usual. If nothing fits, Claude just answers the way it normally would.

This is why the description is the most important line in a skill. It is doing the matching. A vague description like "helps with deployment" will fire at the wrong times or fail to fire at all. A precise one like "use when deploying the static site to Hostinger after a build" gives Claude a clean trigger.

Why This Saves Context

The progressive loading is the quiet win. Imagine ten skills, each with a thousand words of detailed instructions. If all of that lived in context all the time, you would burn a large chunk of your window before doing any work. Instead, only the short descriptions are resident. The heavy instructions and attached resources load on demand, for the one skill that actually applies.

That keeps the main thread clean and leaves more room for the code and conversation that matter. It is the same principle that makes a well-structured CLAUDE.md valuable: put the right information where Claude can reach it, but do not force everything into context at once.

You can always invoke a skill by name.

Automatic matching is the default, but it is not the only path. If you know exactly which workflow you want, you can reference the skill by name and Claude will load it directly. This is handy when a request is ambiguous, or when two skills are close enough that you want to remove any doubt about which one runs.

Skills vs Subagents vs MCP vs Slash Commands

This is where most of the confusion lives. Claude Code has four extension mechanisms that sound similar but solve different problems. Mixing them up leads to building the wrong thing. Here is the clean distinction, then a side-by-side table.

  • A skill changes how a task is done. It is instructions Claude follows in the current context.
  • A subagent changes who does the task. It is a separate worker with its own context window.
  • An MCP server changes what Claude can reach. It connects Claude to external tools and data.
  • A slash command changes when a prompt fires. It is a manual trigger you type yourself.
MechanismWhat It IsHow It TriggersOwn Context?Best For
SkillPackaged workflow instructions in a folderAuto-matched on description (or by name)No, runs in current threadRepeatable procedures done your way
SubagentA separate delegated workerDelegated by the main threadYes, isolated windowHeavy or parallel tasks, clean context
MCP ServerA connector to external tools and dataClaude calls the exposed toolsN/A (it is a tool source)Reaching databases, APIs, browsers
Slash CommandA saved prompt you trigger manuallyYou type itNo, runs in current threadExplicit, user-driven prompts

The key insight is that these are not alternatives competing for the same job. They stack. A skill can tell Claude to call an MCP server as one of its steps. A subagent can follow a skill while it runs in its own context. A slash command and a skill can wrap the same procedure, one for when you want to fire it manually and one for when you want Claude to reach for it on its own.

The common mistake: building a subagent when you wanted a skill.

If your goal is "make Claude do this task the right way," you almost always want a skill. If your goal is "keep this heavy task out of my main context" or "run several of these in parallel," that is when a subagent earns its keep. Reach for the lighter tool first. A skill is cheaper to write, easier to maintain, and runs without the overhead of spinning up a separate worker.

How to Create a Skill

Creating a skill is mostly writing. You make a folder, drop in a SKILL.md, and fill it with a name, a description, and instructions. The skill becomes available the next time Claude looks at your skills directory.

Where Skills Live

Skills sit in a skills directory as one folder per skill. You have two main homes for them:

  • Project skills live inside the repository. They travel with the codebase, get reviewed in pull requests, and are shared by everyone who clones the repo. Use these for workflows specific to that project, like its deploy process or its test conventions.
  • Personal skills live in your user-level Claude configuration directory. They follow you across every project. Use these for habits you want everywhere, like the way you write commit messages or summarize a change.

The SKILL.md Structure

A skill folder is just a directory with a Markdown file at its root. The file opens with a small block of metadata, then the instructions. The shape looks like this:

skills/
└── run-tests/
    ├── SKILL.md          # name + description + instructions
    ├── reference.md      # optional supporting doc
    └── check-coverage.sh # optional helper script

And the SKILL.md itself follows a predictable pattern: a name, a description that does the matching, and the step-by-step body.

---
name: run-tests
description: Use when running or fixing the test suite for this
  repo. Runs the project's tests, reports failures, and follows
  our coverage rules before claiming a pass.
---

# Running the Test Suite

1. Run the full suite with the project's test command.
2. If a test fails, read the failure, fix the cause, and re-run.
   Do not edit the test to make it pass.
3. Confirm coverage stays above our threshold before reporting.
4. Report the actual command output, not a summary you assume.

The description carries the weight.

Spend most of your effort on the description. It is the only part Claude sees before deciding to load the skill, so it has to say plainly when the skill applies, not just what it does. Lead with the trigger: "Use when…" is a reliable pattern. A sharp description fires at the right moment; a fuzzy one either never fires or fires over things it should not touch.

Adding Scripts and Resources

Because a skill is a folder, you can include more than instructions. Drop in a helper script the workflow runs, a template the output should match, a checklist Claude should walk through, or a schema file it should validate against. The SKILL.md points to these files, and Claude pulls them in only when the skill runs. That keeps the always-loaded description small while still giving the workflow everything it needs at execution time.

Example Skills Worth Building

The best skills come from your own repetition. If you have explained something to Claude twice, write it down as a skill the third time. To get you started, here are categories of Claude Code skills that pay off quickly across most teams.

Deploy and Release

Encode your exact build, verify, and ship sequence, including the post-build fixes and the checks that must pass first. This is the workflow you never want Claude to improvise.

Test and Verify

Capture how your project runs tests, what coverage threshold matters, and the rule that a failing test gets fixed at the source, never edited away to force a green run.

Code Review

Define what an adversarial review checks for in your codebase: the standards, the common failure modes, and how to separate blocking issues from suggestions.

New Component or Module

Scaffold a new piece of the app the way your project expects: file locations, naming, the imports it needs, and the test file that ships with it.

Commit and PR

Standardize how changes get written up: the commit message format, the PR template, the trailer lines, and what must be confirmed before anything is pushed.

Content or Page Generation

For a site like this one, a skill can encode the page template, the metadata rules, the schema markup, and the internal-linking pattern every new article must follow.

Notice the pattern: each example is a procedure with a right answer your team already knows. The skill is just where that answer lives so Claude applies it consistently. If a workflow changes every time you do it, it is not a skill yet. Skills are for the things that should be the same every time.

Get the Free Agent Team Starter Pack

Skills get most powerful when they run inside a structured agent team. Grab the free starter pack: a ready-to-drop 5-agent Claude Code team (orchestrator, researcher, implementer, reviewer, shipper) with the config files and instructions to wire it into any repo.

Download the Agent Team Starter Pack

Skills + Agent Teams

Skills and subagents are not rivals. They are layers of the same system. A subagent decides who handles a piece of work and keeps its context isolated; a skill decides how that work gets done. Put them together and you get a team where every member does its specialized job the right way.

Picture a five-agent team: an orchestrator that plans and delegates, a researcher that maps the code, an implementer that writes the change, a reviewer that checks it against the plan, and a shipper that runs the final test-build-deploy gate. Each of those roles benefits from skills:

  • The implementer follows your "new component" skill so every file lands in the right place with the right conventions.
  • The reviewer follows your "code review" skill so it checks the same standards every pass instead of guessing.
  • The shipper follows your "deploy" skill so the release sequence never gets improvised under pressure.

The division of labor matters because each subagent runs in its own context window. The researcher's large codebase sweep never pollutes the implementer's context, and a skill loaded inside the implementer's window stays scoped to that worker. You get specialist focus per step, clean main-thread context, and consistent execution from the skill, all at once.

How it fits together: CLAUDE.md sets the standing rules, subagents split the work into isolated contexts, MCP servers reach external systems, and skills encode the repeatable procedures each agent runs. None of them replaces the others. The teams that ship reliably use all four deliberately.

If you want the full multi-agent setup as a starting template, our Claude Code agent team starter pack gives you the five-agent structure and the config files to drop into any repo, with skills layered in where they make each role sharper.

Best Practices

A few habits separate skills that earn their keep from skills that sit unused or, worse, fire at the wrong moment. These hold up across projects and team sizes.

1. Write the Description for the Trigger, Not the Feature

The description decides when the skill loads, so write it from the angle of "when should Claude reach for this?" A description that names the situation, the inputs, and the goal will match cleanly. One that only restates the title leaves Claude guessing.

2. One Skill, One Workflow

Keep each skill scoped to a single repeatable procedure. A skill that tries to cover deployment and testing and review will have a muddy description and fire unpredictably. Split it. Sharp boundaries make matching reliable.

3. Avoid Overlapping Descriptions

If two skills have similar descriptions, Claude may pick the wrong one. Make sure each skill's trigger is distinct. When you notice yourself unsure which of two skills should run, that is a sign their descriptions need tightening.

4. Keep the Always-Loaded Part Small

Push detail into the body and into attached files, not the description. The description is resident in context; the rest loads on demand. A long description costs you context on every session for a skill that may not even run.

5. Put Project Skills in Version Control

A project skill belongs in the repo so it is reviewed, shared, and versioned with the code it describes. When the deploy process changes, the skill changes in the same pull request. That keeps the playbook and the reality in sync.

6. Start Small and Let Patterns Emerge

Do not try to skill-ify everything on day one. Write skills for the two or three procedures you repeat most, then add more only when a real pattern shows up. A handful of sharp skills beats a pile of overlapping ones every time. For more on structuring the surrounding setup, see how skills pair with CLAUDE.md project memory and how the whole toolkit compares in our Claude Code vs Cursor breakdown.

Frequently Asked Questions

What are Claude Code skills?

Claude Code skills are reusable, packaged capabilities that bundle a workflow into a folder Claude can load on demand. Each skill is a directory containing a SKILL.md file with a name, a description, and instructions, plus optional scripts and reference files. When your request matches a skill's description, Claude reads the instructions and follows that workflow instead of improvising from scratch.

How does Claude decide which skill to use?

Claude matches your request against the name and description of each available skill. Those short summaries are the only part of a skill that stays in context at all times, so the description does the routing work. When your phrasing lines up with a skill's stated purpose, Claude loads the full SKILL.md and follows it. If nothing matches, Claude answers normally. You can also invoke a skill explicitly by referencing it by name.

Where do Claude Code skills live?

Skills live in a skills directory as one folder per skill, each holding a SKILL.md. Project-level skills sit inside the repository so the whole team shares them and they travel with the codebase in version control. Personal skills sit in your user-level Claude configuration directory and follow you across every project. Project skills are best for repo-specific workflows; personal skills are best for habits you want everywhere.

What is the difference between a skill and a subagent?

A skill is an instruction set Claude follows inside the current context. A subagent is a separate worker with its own context window that Claude can hand a task to. Skills change how a step is done; subagents change who does the work and keep their token usage out of the main thread. They combine well: a subagent can follow a skill while it runs.

Do skills replace MCP servers?

No. They solve different problems. MCP (Model Context Protocol) servers connect Claude to external systems and data, such as a database, an issue tracker, or a browser, by exposing tools Claude can call. A skill is local instructions that describe a procedure. A skill often tells Claude how and when to use an MCP tool, so the two are complementary rather than competing.

How are skills different from slash commands?

A slash command is a prompt you trigger manually by typing it. A skill is loaded automatically when your request matches its description, with no special syntax required, though you can still call it by name. Slash commands are explicit and user-driven; skills are intent-driven and let Claude decide when the workflow applies. Many teams keep both for the same procedure.

Can a skill include scripts or other files?

Yes. A skill is a folder, so alongside SKILL.md you can ship helper scripts, templates, checklists, schema files, or reference documents. The SKILL.md points Claude to those resources when they are needed. This keeps the always-loaded description small while letting Claude pull in heavier material only at the moment the skill runs.

How many skills should a project have?

Fewer, sharper skills beat a large pile of overlapping ones. Each skill should cover one repeatable workflow with a description specific enough that Claude can tell when it applies. If two skills have similar descriptions, Claude may pick the wrong one. Start with the two or three procedures your team repeats most, then add skills only when a real pattern emerges.

Go From Skills to a Full Agentic Workflow

Skills are one piece. The real leverage comes from combining skills, subagents, MCP servers, and project memory into a workflow where Claude ships real features while you steer instead of type.

Build With Claude Code is the course that teaches the whole system end to end: agent teams, skills, MCP, and the conventions that make Claude reliable on a real codebase. Founding members get the lowest price and early access.

Join the Founding Waitlist

Want It Done For You?

If you would rather have a working agent team, the right skills, and your MCP stack set up for your actual codebase, we will build it with you in a focused engagement and hand you a workflow your team can run.

Book a Claude Code Workflow Audit ($750)

Related reading:

Last updated: May 2026

Sep Gaspari

Written by

Sep Gaspari

Founder & Digital Marketing Strategist, Zio Advertising | Kelowna, BC

15+ years in digital marketing, Google Ads, and SEO. I've helped businesses across 12+ industries generate qualified leads and grow revenue through data-driven strategies. I don't just run campaigns—I obsess over results, test relentlessly, and treat your budget like it's my own.

Connect on LinkedIn
Zio team member

Got a quick question?

Sep usually replies within a few hours

Or email us at sep@zioadvertising.com