SnapshotJuly 2026a point-in-time write-up, left as written

Skills

A Skill is the cleanest way to package a “way of working” so Claude finds and follows it without you re-prompting every time.

A Skill is just a directory: a frontmattered .md, optional scripts, optional supporting .md files. Discoverable by description, loaded on demand. Skills are how you compound expertise into the system.

Why make skills

AGENTS.md handles durable project facts, always in context. Skills handle load-on-demand expertise: present in the catalog, only loaded into the window when they apply.

The practical difference:

This lets you codify a lot of expertise without bloating the default context. Your AGENTS.md stays tight; your Skills library can grow indefinitely.

Practically, Skills are what you build when you find yourself:

The anatomy of a Skill

A Skill is a directory (typically under ~/.claude/skills/ for user-level, or .claude/skills/ in a repo for project-level). Inside:

my-skill/
  SKILL.md          # frontmatter + playbook
  scripts/          # optional: deterministic helpers
    helper.py
  references/       # optional: templates, examples, deeper docs
    template.md

Frontmatter: the discovery hook

The top of SKILL.md is YAML frontmatter:

---
name: invoice
description: Generate client invoices as PDFs from work-tracker data, using per-client billing models. Triggers when user asks to bill a client or generate an invoice.
---

Claude decides whether to load a Skill by reading the description against the current task. The description is the most important thing in the file. It needs to state, clearly and specifically, when this Skill applies. Vague descriptions don’t match; they just bloat the catalog.

Good description patterns:

Main .md: the playbook

Below the frontmatter, write the actual instructions. Treat this like a good AGENTS.md for a narrow slice of work: tight, deliberate, specific. This is what Claude reads after deciding the Skill applies.

Include:

Scripts: deterministic helpers

Some tasks have deterministic pieces that don’t need LLM reasoning: file manipulation, API calls, calculations. Put those in scripts the Skill’s playbook invokes. This keeps the model doing what it’s good at (reasoning, synthesis, writing) and off the things it isn’t (computation, strict formatting).

Supporting .md files

Longer references, templates, or examples belong in separate .md files under references/ or similar. The main SKILL.md links to them; Claude reads them when relevant. Keeps the primary playbook short.

When to make a Skill

A rough decision tree:

How to make a Skill

The most efficient way is to let Claude make it for you. At the end of a session where you’ve taught Claude how to do something well (corrected it into a good shape through iteration), ask:

“Package what we just did as a Skill. Write the SKILL.md, propose a good description, and put any reusable scripts in place. Save it under ~/.claude/skills/<name>/.”

Review what it produces. Trim anything that’s obvious or transient. Sharpen the description. Commit.

A session that used to take a lot of prompting now loads a Skill and just works.

Skill examples

Real Skills you can see day-to-day, each a few files:

Each one started as “I keep explaining this” and became a Skill after the second or third time.

Resources