Claude Skills · Lesson 1

Introduction to Claude Skills

Skills let you package instructions, checklists, and multi-step procedures into reusable commands that Claude applies automatically — without copy-pasting the same prompt every session.

SKILL.mdAuto-invocation/skill-namePersonal & project scopesBundled skills

What are Claude Skills?

A skill is a SKILL.md file that gives Claude a set of instructions, a checklist, or a multi-step procedure. Claude loads the skill when it's relevant, or you invoke it directly by typing /skill-name.

Skills work across Claude.ai, Claude Code, and the API — write once, use everywhere. They follow the open Agent Skills standard, so they're portable across AI tools.

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

When should you create a skill?

Create a skill when you notice any of these patterns:

📋
Repeating the same prompt
You paste the same checklist or instructions into every new session.
📝
CLAUDE.md is growing a procedure
A section of CLAUDE.md has expanded into a full step-by-step workflow rather than a simple fact.
🔁
Multi-step task
A workflow requires several sequential steps — review, commit, deploy — that always run together.
🏢
Team consistency
You want your whole team to get the same output from a recurring task like a PR review or daily standup.

Skills vs CLAUDE.md

CLAUDE.mdSkill (SKILL.md)
Content typeFacts, conventions, project rulesProcedures, checklists, workflows
When it loadsEvery single 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 want to type. Inside that directory, SKILL.md is the only required file. It has two parts:

1
YAML frontmatter
Sits between --- markers at the top. The description field is the most important — Claude uses it to decide when to automatically invoke the skill. All other fields are optional.
2
Markdown content
Everything below the frontmatter. This is what Claude reads when the skill runs. It can include instructions, checklists, templates, and even shell commands that inject live data.

Example: a skill that summarises uncommitted git changes and flags risks

~/.claude/skills/summarize-changes/SKILL.md
1
2
3
4
5
6
7
8
9
10
11
12
13
14
---
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 called dynamic context injection: Claude Code runs the command before sending the skill to Claude, so Claude always sees real, live data — not a static placeholder.

How to invoke a skill

There are two ways to run a skill:

🤖
Automatic
Claude reads each skill's description and loads it when your request matches. No command needed.
What did I change?
⌨️
Direct / manual
Type /skill-name to invoke it yourself. Useful for workflows you want full control over.
/summarize-changes
terminal
# Method 1 — let Claude decide
$claude
> What did I change?
Claude→ 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
Claude→ Running skill: summarize-changes
Changes: Added rate limiter to /api/users

Where skills live

Where you store a skill determines who can use it:

🏢
Enterprise
Managed settings
All users across your organisation
👤
Personal
~/.claude/skills/<name>/SKILL.md
All of your projects on this machine
📁
Project
.claude/skills/<name>/SKILL.md
This project only — great for committing to git
🔌
Plugin
<plugin>/skills/<name>/SKILL.md
Wherever the plugin is enabled
💡 Tip: When skills share the same name, enterprise overrides personal, and personal overrides project. Plugin skills use a plugin-name:skill-name namespace, so they never conflict.

Bundled skills — available immediately

Claude Code ships with a set of ready-to-use bundled skills. Unlike fixed commands, these are prompt-based — they give Claude detailed instructions and let it orchestrate the work. You invoke them the same way as custom skills.

/simplify
Simplifies complex code or explanations to be more readable
/debug
Systematically debugs an issue using logs, errors, and code
/batch
Applies the same transformation across multiple files
/loop
Repeats a task until a condition is met or you stop
/claude-api
Helps you call the Claude API directly from code

Create your first skill in 3 steps

Here's the simplest possible skill — 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.
3
Test the skill
terminal
$claude
> /commit
Claude→ Running skill: commit
[git add .]
feat(auth): add token refresh with exponential backoff
1 file changed, 34 insertions(+)
💡 Tip: disable-model-invocation: true is set here because you don't want Claude deciding to commit autonomously — this is a workflow you'll always trigger yourself with /commit.

Ways to build a skill

Option 1
Write by handAuthor SKILL.md directly — full control, no extras needed.
Option 2
Ask Claude in chatDescribe what you want in any Claude chat; paste the generated SKILL.md into your skills folder.
Option 3
/skill-creator pluginGuided Q&A writes and tests the full skill for you — includes Eval, Improve, and Benchmark modes.

Quick Reference

ConceptValue
Personal skill path~/.claude/skills/<name>/SKILL.md
Project skill path.claude/skills/<name>/SKILL.md
Required fileSKILL.md — everything else is optional
Invoke manually/skill-name
Auto-trigger signaldescription field in frontmatter
Block auto-triggerdisable-model-invocation: true
Hide from / menuuser-invocable: false
Run in subagentcontext: fork
Dynamic data injection!`shell-command` in SKILL.md
Check available skillsAsk: 'What skills are available?'

What's Next

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