Skip to main content

What Are Skills?

Skills are reusable knowledge bundles that provide:
  • Procedures and workflows that can be invoked on-demand
  • Domain knowledge preloaded into agents
  • Slash commands for quick access
  • Progressive disclosure to avoid context bloat
  • Dynamic arguments via string substitutions
Skills live in .claude/skills/<name>/SKILL.md and use YAML frontmatter for configuration.

Why Skills Matter

Skills enable knowledge reuse and context optimization:
  • Reduce repetition: Define procedures once, invoke anywhere
  • Progressive disclosure: Load knowledge only when needed
  • Agent specialization: Preload skills into agents for focused expertise
  • Team sharing: Commit skills to git for team-wide access
  • Composability: Combine skills with commands and agents

Two Skill Patterns

Claude Code uses skills in two distinct ways:

Standalone Skills

Invoked on-demand via /skill-name or Skill(skill="name") tool.Used for: Reusable workflows that are called when needed.Example: /weather-svg-creator creates an SVG card

Agent Skills

Preloaded at agent startup via the skills: field in agent frontmatter.Used for: Domain knowledge baked into a specific agent.Example: weather-fetcher preloaded into weather-agent

Pattern Comparison

Key Insight: Agent skills are not invoked — they’re injected. The full skill content becomes part of the agent’s initial context.

Frontmatter Fields

string
Display name and /slash-command identifier. Defaults to directory name if omitted.
string
required
What the skill does. Shown in autocomplete and used by Claude for auto-discovery.
string
Hint shown during autocomplete.Examples: [issue-number], [filename]
boolean
default:"false"
Set true to prevent Claude from automatically invoking this skill.
boolean
default:"true"
Set false to hide from the / menu. Skill becomes background knowledge only, intended for agent preloading.
string
Tools allowed without permission prompts when this skill is active.Example: Read, Grep, Glob
string
Model to use when this skill runs.Accepted values: haiku, sonnet, opus
string
Set to fork to run the skill in an isolated subagent context.
string
default:"general-purpose"
Subagent type when context: fork is set.
object
Lifecycle hooks scoped to this skill.

String Substitutions

Skills support dynamic values:

Real Examples

How to Use Skills

1

Create a skill directory

2

Define the skill

3

Invoke the skill

Type /my-skill in Claude Code or use from a command:

Skills in the Reference Repository

From .claude/skills/ in the best practice repository:

weather-svg-creator

Type: Standalone skillCreates SVG weather card and writes output files. Invoked by the /weather-orchestrator command after the agent fetches data.Pattern: Skill for independent output creation

weather-fetcher

Type: Agent skillPreloaded into weather-agent. Provides instructions for fetching temperature from Open-Meteo API.Pattern: Agent skill for domain procedures

presentation skills

Type: Agent skillsThree skills preloaded into presentation-curator agent:
  • vibe-to-agentic-framework
  • presentation-structure
  • presentation-styling
Pattern: Multiple skills for complex domain knowledge

Skills Discovery

Claude Code discovers skills in three ways:

1. Static Discovery (Fast)

At startup, Claude Code scans:
  • .claude/skills/
  • ~/.claude/skills/
  • Plugin skills directories
Skills found here appear in /skills command and autocomplete immediately.

2. Dynamic Discovery (On-Demand)

When you read/edit files in a subdirectory, Claude discovers skills in that path:

Skills Discovery Report

Deep dive into how skills are discovered in large monorepo projects

Best Practices

Skills meant for agent preloading should be hidden from the slash menu:
Each skill should cover one specific domain or procedure:Good: deploy-checklist, api-auth-flow, database-migrationBad: everything-about-backend
When skills take arguments, document them:
Invoked as: /deploy:staging, /testing:unit
The presentation-curator agent shows the pattern:

Scope and Priority

When multiple skills share the same name:
1

Project (highest)

.claude/skills/ — Project-specific skills, committed to git
2

Personal

~/.claude/skills/ — Your personal skills across all projects
3

Plugin (lowest)

<plugin>/skills/ — Skills from installed plugins

Orchestration Pattern

Skills fit into the Command → Agent → Skill architecture: Example from repository:
  1. Command: /weather-orchestrator asks user for C/F
  2. Agent: weather-agent fetches temperature using preloaded weather-fetcher skill
  3. Skill: weather-svg-creator creates SVG card with data from agent

Orchestration Workflow

See the complete pattern with diagrams and code

Commands

Invoke skills from commands

Subagents

Preload skills into agents

Settings

Configure skill permissions

Skills Best Practice

Complete reference and examples

Further Reading