CLAUDE CODE · SKILLS

Claude Code skills
your team actually uses.

A Claude Code skill is a folder with a SKILL.md file: YAML frontmatter that says when to use it, then the instructions Claude follows. Claude loads it when your request matches its description or you type /skill-name, and .claude/skills/ shares it with the repo.

Get started for free ↗

Free for 3 seats · No credit card

Zest lemon in its mech suit

02Share the best AI skills

Weekly email

Your team’s weekly edge

Zestto your teamEvery Monday

AI stack worth sharing

  • Agree on the approach before coding.

    The brainstorming skill helps the team make a plan together.

    - [ ] **Plan** before coding.12 → 21 sessions · 5 → 8 teammates
  • Let agents work safely in parallel.

    using-git-worktrees gives each agent its own space to work.

    - [ ] One agent, one `worktree`.4 sessions · 2 → 3 teammates
  • Catch missing requirements early.

    A quick gap analysis finds what’s missing before anyone starts building.

    - [ ] **Find** missing cases.38 of 134 sessions · 9 teammates

USED BY ENGINEERING TEAMS AT

FlypsCharmWildfiresGeoforgeMisaLabs

What is a Claude Code skill?

A skill is a SKILL.md file of instructions, plus any scripts, templates or reference files kept in the same folder. Claude uses it when your request matches its description, and you can run it yourself as /skill-name. Skills follow the open Agent Skills standard, which Codex skills use too.

Custom slash commands are now skills. .claude/commands/deploy.md and .claude/skills/deploy/SKILL.md both create /deploy, and if both exist the skill wins. The built-in commands are on Claude Code commands.

CLAUDE.md loads into every session, while a skill's body loads only when it is used, so a long procedure costs little until you need it. A hook runs every time its event fires, while a skill runs when Claude or you decide it fits.

Where Claude Code skills live

Each skill is a folder with a SKILL.md inside, and the folder's location decides who gets it. When two skills share a name, enterprise beats personal and personal beats project; plugin skills never clash, because they carry the plugin's name. Claude Code also reads .claude/skills/ in every parent folder up to the repository root, and picks up SKILL.md edits without a restart.

Skill locations in Anthropic's skills docs, read October 5, 2026.
LocationPathWho gets it
Personal~/.claude/skills/<name>/SKILL.mdYou, in every project on this machine
Project.claude/skills/<name>/SKILL.mdEveryone who clones the repository
Nested<subdir>/.claude/skills/<name>/SKILL.mdSessions started in that folder, or once Claude works on a file there
Plugin<plugin>/skills/<name>/SKILL.mdAnyone with the plugin enabled, as /plugin-name:name
Enterprise.claude/skills/<name>/SKILL.md in the managed settings directoryEvery user on machines your organization manages

SKILL.md format, with a working example

A SKILL.md is YAML frontmatter between two --- lines, then Markdown instructions. The first --- must be the file's first line, or Claude Code reads the whole file as instructions. Every field is optional, and description is the one Anthropic recommends.

Claude Code reads more fields than the Agent Skills standard, which has six: name, description, license, compatibility, metadata and allowed-tools. Keep to those six when the skill must also work in claude.ai or the Skills API, which reject any other field.

This skill reviews the current branch. Its ! line runs before Claude reads the skill and pastes in the diff, and allowed-tools lets that git command run without a prompt:

.claude/skills/review-pr/SKILL.md
---
name: review-pr
description: Reviews the current branch against main for missing tests, risky changes and unclear names. Use when the user asks for a review before opening a pull request.
allowed-tools: Bash(git diff *)
---

## The change

!`git diff main...HEAD`

## Instructions

List up to five problems, most severe first. For each one, name the file
and line, say why it matters and suggest the fix. If the diff is empty,
say there is nothing to review and stop.
Frontmatter fields, and the placeholder for bundled scripts, in Anthropic's skills docs.
Field or placeholderWhat it does
nameThe command you type. Defaults to the folder name
descriptionWhat the skill does and when to use it: Claude matches requests against it. With when_to_use, cut at 1,536 characters
disable-model-invocation: trueOnly you can run it, by typing /name
user-invocable: falseHidden from the / menu: only Claude runs it
allowed-toolsTools Claude may use without asking during the turn that runs the skill, such as Bash(git diff *)
model, effortModel and effort level while the skill runs
context: forkRuns the skill in a subagent (agent picks which), which doesn't see your conversation
pathsGlobs: Claude loads the skill on its own only for matching files
hooksHooks that stay on for the rest of the session once the skill runs
${CLAUDE_SKILL_DIR}In the body: the skill's folder, for running a bundled script

How Claude decides to use a skill

Skills load in three steps, which Anthropic calls progressive disclosure. That is why the description matters more than anything else in the file:

  • At startup Claude sees only each skill's name and description, about 100 tokens a skill. The whole listing gets 1% of the context window; past that, the least-used skills lose their descriptions and Claude can't match them.
  • When a request matches, or you type /name at the start of a message, the SKILL.md body loads and stays in the conversation. Claude Code doesn't re-read the file later, and after compaction it keeps the first 5,000 tokens of each skill.
  • Files the skill links to are read only when needed, and a bundled script runs without its code entering context: only its output does. Anthropic suggests keeping SKILL.md under 500 lines, with reference files linked one level deep.

Why a skill doesn't trigger, and other mistakes

Treat a skill from someone else as code. Claude Code applies its allowed-tools even in a folder you haven't trusted, and Anthropic warns that a malicious skill can exfiltrate data.

When a skill misbehaves, /skills shows what loaded and claude --debug logs frontmatter errors. The usual causes:

Skill problems and their fixes, from Anthropic's skills and configuration-debugging docs.
SymptomCause and fix
Missing from /skillsThe file is .claude/skills/name.md. Use a folder: .claude/skills/name/SKILL.md
/name works, but Claude never picks itYAML that doesn't parse loads with no description. claude plugin validate .claude/skills finds it
A field has no effectNames must match exactly, hyphens included; unknown fields are ignored without an error
Some skills never triggerToo many skills, so descriptions were dropped. /doctor estimates the listing's size and /skill-doctor shows each skill's use
Aborts before Claude sees itA ! command exited non-zero. Append || true when that is expected
Followed at first, then droppedMove rules that must always hold into a hook

See which skills your team actually uses

An installed skill is not a used one. In one engineer's 323 Claude Code sessions (September 2 to October 3, 2026), a skill loaded in 49 (15%). Thirteen skills loaded 58 times: two browser-automation skills made up 25 of them, and the Stripe plugin, enabled the whole time, used none of its 10 skills or its MCP tools.

Zest's Claude Code plugin records every Skill call and every SKILL.md a session loads, from project, personal and plugin folders. The AI Stack view lists each engineer's skills next to their models and agents, so a lead sees which skills spread across the team and which stay on one laptop. More on Claude Code usage.

An engineer's Plan Stack in Zest: prompting techniques such as scope control, delegate and pushback, and the skills they used, with counts
An engineer's Plan Stack in Zest

TRY IT ON YOUR TEAM

See what your team ships with AI.

Starter is free (3 seats, no credit card). Pro is $49 a month with 5 seats and Max is $149 a month with 10 seats — priced per workspace, not per engineer, with extra seats at $19 a month.

A FEW THINGS TO KNOW

Questions

What is a SKILL.md file?+

The file that defines a Claude Code skill: YAML frontmatter, where description is the field Anthropic recommends, then Markdown instructions. It sits in a folder named after the skill, next to any scripts or reference files the skill uses.

How do I share a Claude Code skill with my team?+

Commit it under .claude/skills/ so everyone who clones the repository gets it. For several repositories, package it in a plugin and publish the plugin through a marketplace your team adds once.

Can I stop Claude from running a skill on its own?+

Yes. disable-model-invocation: true in the skill's frontmatter makes it manual-only: it runs when someone types /skill-name. user-invocable: false does the opposite and leaves it to Claude.

Do I need to restart Claude Code after editing a skill?+

No. Claude Code watches the skill folders and picks up SKILL.md changes in the running session. Run /reload-skills only after creating a skills folder that didn't exist when the session started.