Course navigation
Claude SkillsLesson 1 of 15

Introduction to Claude Skills

Skills package instructions, checklists, and multi-step procedures into reusable commands. Write once, invoke with /skill-name or let Claude load them when your request matches.

What are Claude Skills?

A skill is a SKILL.md file that gives Claude a procedure, checklist, or set of instructions. Claude loads it when relevant, or you invoke it directly with /skill-name.

Skills work across Claude.ai, Claude Code, and the API. They follow the open Agent Skills standard, so the same format is portable across tools.

Unlike CLAUDE.md, a skill's full content loads only when the skill runs. Large reference docs or step-by-step procedures cost almost nothing in context until you need them.

When should you create a skill?

Create a skill when you notice any of these patterns:

  • You paste the same checklist or instructions into every new session.
  • A section of CLAUDE.md has grown into a full step-by-step workflow rather than a simple fact.
  • A workflow always runs the same sequence — review, commit, deploy — and you want that bundled.
  • You want your whole team to get the same output from recurring tasks like PR reviews or standups.

Skills vs CLAUDE.md

TopicCLAUDE.mdSkill (SKILL.md)
Content typeFacts, conventions, project rulesProcedures, checklists, workflows
When it loadsEvery session from the startOnly when the skill is invoked
Context costAlways uses tokensZero until invoked
InvocationAutomatic — always activeAuto (by description) or manual (/name)
Best forCode style, branch naming, test runnerDeployments, PR reviews, commit workflows
ScopeProject or personalEnterprise, personal, project, or plugin

Anatomy of a SKILL.md file

Every skill is a directory named after the command you type. Inside, SKILL.md is the only required file. It has two parts:

  1. YAML frontmatter — between --- markers. The description field is the most important; Claude uses it to decide when to auto-invoke the skill.
  2. Markdown content — instructions, checklists, templates, and shell commands that inject live data.
~/.claude/skills/summarize-changes/SKILL.md
---
name: summarize-changes
description: Summarises uncommitted git changes and flags anything risky.
---

## Current changes

!`git diff HEAD`

## Instructions

Summarise the changes above in 2–3 bullet points, then list any risks such as missing
tests or hardcoded values.

The !`git diff HEAD` line is dynamic context injection: Claude Code runs the command before sending the skill to Claude, so it always sees live data — not a static placeholder.

How to invoke a skill

ModeHow it worksExample
AutomaticClaude reads each skill's description and loads it when your request matches.What did I change?
DirectType /skill-name to invoke it yourself./summarize-changes
Terminal
# Method 1 — let Claude decide
$ claude
> What did I change?
→ Loading skill: summarize-changes
Changes: Added rate limiter to /api/users
Risk: no tests added for the limiter
 
# Method 2 — invoke directly
$ claude
> /summarize-changes
→ Running skill: summarize-changes
Changes: Added rate limiter to /api/users

Where skills live

Where you store a skill determines who can use it. When skills share the same name, enterprise overrides personal, and personal overrides project. Plugin skills use a plugin-name:skill-name namespace.

ScopePathAvailable to
EnterpriseManaged settingsAll users across your organisation
Personal~/.claude/skills/<name>/SKILL.mdAll of your projects on this machine
Project.claude/skills/<name>/SKILL.mdThis project only — commit to Git for the team
Plugin<plugin>/skills/<name>/SKILL.mdWherever the plugin is enabled

Bundled skills in Claude Code

Claude Code ships with ready-to-use bundled skills. Unlike fixed commands, these are prompt-based — they give Claude detailed instructions and let it orchestrate the work.

CommandWhat it does
/simplifySimplifies complex code or explanations to be more readable
/debugSystematically debugs an issue using logs, errors, and code
/batchApplies the same transformation across multiple files
/loopRepeats a task until a condition is met or you stop
/claude-apiHelps you call the Claude API directly from code

Create your first skill in 3 steps

A personal commit helper that stages all changes and writes a commit message.

1

Create the skill directory

mkdir -p ~/.claude/skills/commit
2

Write SKILL.md

~/.claude/skills/commit/SKILL.md
---
name: commit
description: Stage all changes and write a descriptive commit message.
disable-model-invocation: true
allowed-tools: Bash(git add *) Bash(git commit *)
---

Stage all changes and write a commit message that follows this format:

<type>(<scope>): <summary>

Types: feat, fix, chore, docs, refactor, test
Keep the summary under 72 characters.
Write a short body if the change needs context.
disable-model-invocation: true prevents Claude from triggering /commit on its own — this is a workflow you always run yourself.
3

Test the skill

Terminal
$ claude
> /commit
→ Running skill: commit
[git add .]
feat(auth): add token refresh with exponential backoff
1 file changed, 34 insertions(+)

Ways to build a skill

ApproachWhen to use it
Write SKILL.md by handFull control over every line. Best for simple, focused skills.
Ask Claude in chatDescribe what you want; paste the generated SKILL.md into your skills folder.
/skill-creator pluginGuided Q&A writes and tests the full skill — includes Eval, Improve, and Benchmark modes.

Before you continue

  • Personal path: ~/.claude/skills/<name>/SKILL.md; project path: .claude/skills/<name>/SKILL.md.
  • Invoke manually with /skill-name; auto-trigger uses the description field.
  • Use disable-model-invocation: true for skills you want to trigger yourself.
  • Dynamic data injection: !`shell-command` in SKILL.md runs before the skill loads.
  • Next: activating skills in your Claude.ai account.

What's Next

Next: activating skills in your Claude account and seeing how they appear in real conversations.