AI SKILL COOKBOOK · BY KROGSBOLL

From “what is a Skill?” to a shelf your team trusts.

A cookbook for Anthropic Claude Skills in six short chapters. Each one has something you can do today, and the last one shows how a team keeps Skills safe.

Start with chapter 01
ClaudeAnthropicGitHubNotion

Claude / Anthropic only. Not a cross-platform guide.

NEW · OCT 2026

New in October 2026: Anthropic donated the Agent Skills standard to the Agentic AI Foundation, so Skills are now an open standard (agentskills.io). This cookbook still covers the Claude side. Read the announcement ↗

CHAPTER 01

Start here

What this cookbook covers, and Skills you can use today.

Straight from anthropics/skills

Real Skills, not more theory

Anthropic · Official

document-skills

Creates and edits Word, PDF, PowerPoint, and Excel files. The same skills behind Claude's built-in document creation — install them directly instead of reading about how they work.

name: document-skills
description: Create and edit
  DOCX, PDF, PPTX, and XLSX files
plugin: document-skills@anthropic-agent-skills
Interactive

Record a Skill instead of writing one

In Cowork on Claude for Mac, record yourself doing the task on screen. Claude proposes the Skill from the recording — no SKILL.md required to get started.

brand-guidelines.zip
proposed from recording · 6 min
Example

skill-creator

Turns a description of what you want into a working Skill for you to review.

anthropics/skills ✓
168.9k stars
Example

brand-guidelines

The official worked example this Cookbook's own SKILL.md sample is drawn from.

support.claude.com ✓
Official example
CHAPTER 02

The idea

What a Skill is, in plain words.

What is a Skill?

A Skill is a folder of instructions, scripts, and resources that Claude loads dynamically to get better at a specific, repeatable task — brand guidelines, a data workflow, a formatting convention, anything you'd otherwise have to re-explain every conversation.

The folder

my-skill/
SKILL.mdrequired
references/optional — overflow docs
scripts/optional — executable code
assets/optional — files it needs

Only SKILL.md is required. Everything else is added only if the skill actually needs it — a simple skill can be nothing but a Markdown file with two lines of frontmatter.

Progressive disclosure

This is Anthropic's own term for how Skills work, not a metaphor we invented. Claude doesn't load every Skill's full content into every conversation — it scans lightweight metadata (name + description) first, and only loads the full SKILL.md body when a task actually matches. This is what keeps Skills cheap to have many of, without bloating the context window.

Skills vs. everything else Claude has

CapabilityWhat it's for
SkillsTask-specific procedures that load only when relevant
ProjectsStatic background knowledge, always loaded in that project's chats
MCPConnects Claude to external tools/data — Skills teach it how to use them well
Custom instructionsBroad, always-on preferences across every conversation
Skills and MCP pair naturally: MCP gives Claude access to a tool (say, your CRM); a Skill teaches it your team's specific way of using that tool.

The four official types

  1. Anthropic skills — built-in, e.g. the document skills behind Word/Excel/PowerPoint/PDF creation. Available to everyone, Claude invokes them automatically.
  2. Custom skills — the ones you or your org write for your own workflows.
  3. Organization-provisioned — an admin pushes a skill to every member of a Team/Enterprise plan, optionally on by default.
  4. Partner skills — professionally built by companies like Notion, Figma, and Atlassian, usually paired with that company's MCP connector.

Sourced directly from Anthropic's official "What are skills?" doc, not secondhand.

CHAPTER 03

Use one

Find a Skill on GitHub and put it to work.

Using an existing Skill

Skills are available on Free, Pro, Max, Team, and Enterprise plans, and in beta for Claude Code and API users. The one requirement: code execution must be enabled on your account.

On claude.ai

  1. Go to Customize → Skills (claude.ai/customize/skills)
  2. Click "+", then "Browse skills" to open the directory
  3. Enable the one you want, or upload your own ZIP

In Claude Code

Register Anthropic's example-skills repo as a plugin marketplace, then install from it:

/plugin marketplace add anthropics/skills

Then either use the interactive menu (Browse and install plugins → anthropic-agent-skills → document-skills or example-skills → Install now), or install directly:

/plugin install document-skills@anthropic-agent-skills
/plugin install example-skills@anthropic-agent-skills

Verified directly against the anthropics/skills GitHub repo — this is real, current syntax, not a paraphrase.

Finding a Skill on GitHub — every click, step by step

Everything above assumes you already have a Skill's ZIP file in hand. If you've never used GitHub before, this is the missing piece — exactly how to go from "someone told me about a Skill" to a ZIP file ready to upload.

Step 1 — Open the repository

Go to the repo's page in your browser — for example github.com/anthropics/skills, Anthropic's own official collection. You'll land on the main page. The big block of formatted text below the file list is the README — think of it as the repo's cover page, explaining what's inside in plain language.

Step 2 — Find the actual Skill you want

Big repos like this one hold many Skills, each in its own folder. Click into the skills/ folder, then click a folder name (e.g. document-skills) to open it. You know you've found a real Skill — not just a folder of folders — when you see a file called SKILL.md sitting right there.

Step 3 — Download it

Navigate back to the top of the repo. Click the green "Code" button near the top right, then "Download ZIP" from the dropdown.

The single most common mix-up: that button downloads the whole repository — every Skill in it — not just the one folder you were looking at. GitHub's plain web interface doesn't have a "download just this folder" button. Step 4 below is how you get just the one you need out of it.

Step 4 — Get just the one Skill folder out

  1. Find the ZIP in your Downloads folder and unzip it (double-click on Mac; right-click → "Extract All" on Windows)
  2. Open the unzipped folder, then navigate the same path you clicked through on the website — e.g. into skills/, then into document-skills/
  3. The folder that directly contains SKILL.md is the one you actually need. Drag just that folder out somewhere easy to find, like your Desktop

Step 5 — Re-zip just that folder

Claude needs a ZIP containing only that one Skill folder, not the whole repository.

  • Mac: right-click the folder → "Compress [folder name]"
  • Windows: right-click the folder → Send to → "Compressed (zipped) folder"

Quick check before you upload: the ZIP's name should match the folder name, and if you peek inside it, the folder itself should be the first thing you see — not SKILL.md sitting loose at the top level. That's the same packaging rule covered in Chapter 05.

Step 6 — Upload it

Now follow the "On claude.ai" steps further up this page: Customize → Skills → "+" → upload this ZIP.

If a repo holds only one Skill rather than a big collection, you can usually skip Steps 4 and 5 entirely — the whole repo is the Skill, so the ZIP from Step 3 is already exactly what you need.

A few GitHub words you'll run into

WordWhat it means here
Repository (repo)The project's folder, hosted on GitHub
READMEThe write-up GitHub shows automatically on a repo's homepage
CloneDownloading a repo using Git instead of the ZIP button — faster to update later, but needs Git installed. The ZIP button works fine without it
ForkYour own personal copy of someone else's repo, for keeping your own changes
StarA bookmark/like — a rough signal of how many people trust or use a repo

Before you install someone else's Skill

Enterprise tip: orgs can turn on skill scanning, which automatically checks uploaded skills and plugins for malicious content before they're usable.

Troubleshooting

"Installed successfully" but Claude won't use it: this is a known issue — restart your session. If it still doesn't trigger, your description field may be too vague; see Chapter 04 for how Claude decides when to invoke a skill.

CHAPTER 04

Make your own

From a repeated task to a tested Skill.

Making your own Skill

There are two ways to create one — and most guides only tell you about the harder one.

Path A — Record it (the easy one)

In Cowork on Claude for Mac, you can record yourself doing the task on screen — clicks, typing, and optional narration — for up to ~10 minutes. Claude watches the recording and proposes a Skill for you to review and save. No SKILL.md writing required to get started.

  1. Update Claude for Mac to the latest version
  2. Grant Accessibility and Screen Recording permissions when asked
  3. Open Cowork → click "+" → "Record a skill" (or Customize → Skills → Add → "Record your screen")
  4. Do the task normally — narrate why you're doing each step, not just what
  5. Click "Done." Claude proposes a new skill, or an update if it overlaps one you already have
Don't type passwords or show sensitive information while recording — everything on screen is captured for the session.

Path B — Write it by hand

Every Skill needs a SKILL.md starting with YAML frontmatter:

  • name — up to 64 characters
  • description — up to 200 characters. This is the only thing Claude reads before deciding whether to load the rest — vague descriptions are the #1 reason a skill never gets used.

A real example

## Metadata
name: Brand Guidelines
description: Apply Acme Corp brand guidelines to all
  presentations and documents

## Overview
Apply these standards whenever creating presentations,
documents, or marketing materials so outputs match
Acme's visual identity.

## Brand Colors
- Primary: #FF6B35 (Coral)
- Secondary: #004E89 (Navy Blue)

## Typography
Headers: Montserrat Bold
Body text: Open Sans Regular

## When to Apply
- PowerPoint presentations
- Client-facing Word documents
- Marketing materials
Download this SKILL.md ↓

This example is Anthropic's own, from the official "How to create custom skills" doc.

See it in action

This is the part most examples skip: what do you actually type to trigger this Skill? You never call it by name — you just ask for the task, and Claude matches your request against the description field automatically.

Create a PowerPoint deck for our Q3 sales
pitch to Northwind Traders — 8 slides,
covering results, roadmap, and pricing.

Nothing in that prompt mentions "Brand Guidelines" or "Skill." Claude reads "Apply Acme Corp brand guidelines to all presentations and documents" in the Skill's description, recognizes this request matches, and quietly applies the coral/navy color palette and Montserrat/Open Sans typography from the example on the left — without being told to.

If a Skill never triggers on the requests it should, the fix usually isn't the prompt — it's a description that's too vague. See "A few GitHub words you'll run into" → Chapter 03 for the troubleshooting note on this.

Best practices, straight from Anthropic

  • Keep it focused — several small skills compose better than one that tries to do everything
  • Write clear descriptions — be specific about when it applies
  • Start simple — plain Markdown before you add scripts
  • Use examples — show what success looks like
  • Test incrementally — after each real change, not all at once

Optional pieces once you outgrow a single file: a dependencies frontmatter field for required packages, a references/ folder for overflow content, and executable scripts (Python, JS/Node — the same stack Anthropic's own document skills use).

Skills can't explicitly reference each other, but Claude can use several together automatically in one task. Composability happens for free.

Test before you trust it

TryWhat you're checking
A normal requestDoes it trigger at all?
The same request, rewordedDoes the description generalize?
An unrelated requestDoes it stay quiet when it shouldn't fire?
An edge caseDoes it degrade gracefully?
Bad inputDoes it fail safely?
CHAPTER 05

Share it

Get your Skill to the people who need it.

Sharing a Skill

Distribution follows the same four official types from Chapter 02 — how you share depends on who needs it.

TypeHow it spreads
PersonalA private ZIP you upload for yourself
Team / Enterprise shareShared to specific people or groups — view-only, auto-updates when the owner changes it
Organization-provisionedAn admin pushes it to everyone, optionally on by default — no individual upload needed
PartnerBuilt and maintained by the partner company (Notion, Figma, Atlassian…), paired with their MCP connector

Packaging, one more time

✓ Correct
my-skill.zip
my-skill/
SKILL.md
resources/
✗ Incorrect
my-skill.zip
files loose at the ZIP root, no enclosing folder

The folder name must match the skill's name, and the folder itself — not its contents — must be the ZIP's root.

The GitHub path

  1. Create the skill folder, write and test SKILL.md
  2. Add a README.md and a license
  3. Commit, push to a public or private repo
  4. Anyone with access clones or downloads it, follows Chapter 03 to install

This is exactly how Anthropic distributes its own example skills — the anthropics/skills repo is nothing more exotic than a folder of Skills under version control.

CHAPTER 06

Run it in a team

Reviews, owners, versions and a weekly rhythm.

Maintaining Skills as a team

Once more than one person depends on a Skill, it stops being a clever personal trick and starts being software your team relies on. Treat it that way.

A Skill has more than instructions. Once a team depends on it, it also has:

  • an owner
  • users
  • versions
  • tests
  • reviewers
  • change history
  • dependencies
  • release decisions
  • a lifecycle

That is why a team Skill needs a development process.

Why GitHub?

The problem isn't writing a Skill. The problem starts when several people are changing the same one. Without version control, you end up with:

rfp-skill-final.md rfp-skill-final-v2.md rfp-skill-final-v2-NEW.md rfp-skill-final-USE-THIS.md

You quickly lose track of which version is current, who changed it, why, whether it was tested, who approved it, and how to undo it. With Git, that becomes a line you can actually follow:

v1.0 ↓ v1.1 ↓ v1.2 ↓ v2.0
GitHub isn't what makes a Skill reliable. It provides the machinery. Reliability comes from the system around it: clear ownership → small changes → testing → review → versioning → controlled release → feedback → iteration.

A repository that scales

team-skills/
skills/
brand-guidelines/
SKILL.md
references/
tests/
meeting-notes/
SKILL.md
examples/
tests/
data-pipeline/
SKILL.md
scripts/
references/
tests/
templates/
SKILL.md
docs/
CONTRIBUTING.md
GOVERNANCE.md
scripts/
CODEOWNERS
README.md
CHANGELOG.md
Folder / fileWhat it's for
skills/The actual Claude Skills
SKILL.mdThe Skill's instructions and triggering metadata
references/Supporting material loaded only when needed, not stuffed into the main instructions
scripts/Executable helpers, only when a Skill genuinely needs them
examples/Representative examples, where they improve understanding or output quality
tests/Test prompts and expectations for the Skill
templates/The team's starting point for creating new Skills
CODEOWNERSDefines who must review changes to particular Skills
docs/The rules for people contributing to the repository
Not every Skill needs every folder. Keep individual Skills minimal — this structure is for the repository as a whole, not a checklist every Skill must fill out.

A Skill vs. the team scaffolding around it

These are two different things living in the same repository. Keeping them mentally separate stops a lot of confusion — especially about where documentation belongs.

Repository — team infrastructure
CODEOWNERSPull requestsdocs/CONTRIBUTING.mdtests/Change history
Skill folder — what Claude actually loads
SKILL.mdreferences/scripts/assets/

Only the inner box ever gets zipped up and used by Claude, exactly as in Chapters 04 and 05. Everything in the outer box is for the humans running the repository — it never ships inside the Skill.

The most common non-developer mix-up: adding a README.md inside a skill folder, expecting Claude to read it. Claude only reads SKILL.md (and whatever it points to in references/). A README.md belongs at the repository root, or one level up — it's for the next human who opens the folder, not for Claude.

The team workflow, start to finish

Every change to an official Skill goes through the same sequence — no exceptions, no "just this once" direct edit to main.

1. Someone has an ideaa new Skill, or a fix to an existing one
↓
2. Create a brancha safe, temporary copy — main stays untouched
↓
3. Edit or add the Skillwrite/update SKILL.md, test it yourself first
↓
4. Open a Pull Requestthe formal "please review this" proposal
↓
Automated checksoptional, e.g. validation script
Human reviewCODEOWNERS get notified
↓
5. Mergenow part of the official library
↓
6. Team receives the new versionsee Chapter 05 for how it actually reaches people

Branch naming — keep it descriptive

Name the branch after what it does, not who's doing it: add-customer-email-skill, update-brand-colours, fix-invoice-skill-typo. Anyone glancing at the branch list should understand what's in flight without opening a single file.

WordWhat it means here
BranchA temporary, isolated copy to work in — see Chapter 03 for repo/README/fork/star
CommitA saved snapshot of your changes, with a short message describing what changed
MergeFolding an approved branch's changes into main — the moment a change becomes official

Pull Requests — the formal proposal

A Pull Request (PR) is a structured way of saying "please look at my change and approve it," with a place for reviewers to comment on specific lines, request changes, or approve. Nothing merges into main without one — that's what branch protection enforces (see "Ownership & CODEOWNERS" below).

PR checklist — copy this into every proposal

Save this as .github/pull_request_template.md in the repository and GitHub will pre-fill it on every new Pull Request automatically — nobody has to remember the list.

Testing a Skill before it's reviewed

"Testing" here means three different questions, not one:

QuestionWhat you're really checking
Does it trigger?Claude recognizes a normal, on-topic request and loads the Skill
Does it behave correctly?Once loaded, the output actually follows the instructions
Does it stay quiet?It does not fire on unrelated requests

The 5-case matrix (same one from Chapter 04, worth repeating for a team)

TryWhat you're checking
A normal requestDoes it trigger at all?
The same request, rewordedDoes the description generalize?
An unrelated requestDoes it stay quiet when it shouldn't fire?
An edge caseDoes it degrade gracefully?
Bad inputDoes it fail safely?

A team-sized way to say the same thing: write a few prompts that should trigger the Skill and a few that should not, and run all of them in fresh chats. The "should not" half is the one people skip — and a Skill that fires on the wrong requests is just as broken as one that never fires.

The clean-copy test — the one teams skip

Here's the trap that catches almost everyone the first time. You test a Skill in your own folder, it works, you share it — and it breaks for everyone else, because a file it needs (a reference doc, a template, a script) was never actually committed. It worked for you only because that file was still sitting on your computer.

Why this happens: when you publish a new version of a Skill, that version is a complete snapshot — not a list of changes. Anything not included in the upload simply isn't in that version. Forget to include a file and it silently disappears, with no error. (This is Anthropic's own described behavior: a new version is a complete snapshot, not a delta.)

So the real test is: get a clean copy — a fresh download of the branch, or the packaged ZIP itself — somewhere you've never worked, and run the matrix above there. If it still works from a folder that only contains what was actually committed, it'll work for your teammates.

The collision test — for a team with several Skills

A Skill tested alone almost always passes. The real question on a team is what happens when all your Skills are active at once: two with overlapping descriptions can fight, and the wrong one answers. Before shipping, run a normal request with your other everyday Skills switched on too, and confirm the right one — and only the right one — responds.

Real tooling, if your team wants to automate this

Anthropic's own anthropics/skills repository ships real scripts for exactly this, worth knowing exist even if your team starts out testing by hand:

python skills/skill-creator/scripts/quick_validate.py skills/skill-creator
python skills/skill-creator/scripts/init_skill.py my-skill --path skills --resources scripts,references,assets
python skills/skill-creator/scripts/package_skill.py skills/skill-creator

There's also a structured format for recorded test cases, evals/evals.json, with a skill_name field and an evals list of id / prompt / expected_output / files / expectations per case — a machine-checkable version of the 5-case matrix above.

Commands and format verified directly against anthropics/skills. A further script, run_eval.py, also exists in that repo for running these cases — its exact invocation wasn't independently confirmed at time of writing, so it's mentioned here by purpose, not with invented syntax.

Reviewing a Skill — not just reading the file

Reviewing a Skill is different from reviewing ordinary text, because the real test is behavior, not prose. A good review actually runs it.

It's fine — expected, even — to click "Request changes" instead of "Approve." That's the process working, not a conflict.

Ownership & CODEOWNERS

Someone should own each Skill by name, not "the team." A CODEOWNERS file makes this automatic instead of relying on memory: it maps a folder to specific people, and GitHub then requests their review automatically whenever a Pull Request touches that folder — the HR team gets pulled in on HR Skills, Finance on Finance Skills, without anyone having to remember to tag them.

# .github/CODEOWNERS
# These people must review changes to any skill
/skills/    @anna @ben @carla

# Different owners for specific skills
/skills/brand-guidelines/    @design-team
/skills/compliance/          @legal-team @security-team

Branch protection — the control switch

In the repository's Settings → Branches, a protection rule on main turns the whole process from "a suggestion" into "the only way in":

  • Require a Pull Request before merging
  • Require at least 1 approving review
  • Require review from Code Owners
  • Do not allow force pushes

With this on, there is no back door — not even for an admin in a hurry.

Owning the behavior, not just the file

"Owner" means more than "whose name is on the folder." The named owner of a Skill is the person responsible for:

  • what it does and doesn't trigger on
  • whether its output is still correct
  • the files and scripts it depends on
  • its security review
  • and deciding when to retire it

When something about the Skill changes in the real world — a supplier, a policy, a price list — the owner is who makes sure the Skill keeps up.

Lifecycle & versioning

Give every Skill a version in its frontmatter, and bump it with a meaning a non-technical reader can follow — thinking in terms of what actually changed, not abstract numbers:

ChangeVersion bumpExample
Fixed a typo, tiny wording tweakPatch — last number1.0.0 → 1.0.1
Added a new capability or reference file, old behavior unchangedMinor — middle number1.0.1 → 1.1.0
Changed what triggers it or how it behaves, in a way the team already relies onMajor — first number1.1.0 → 2.0.0
Good to know: this patch/minor/major scheme is a team convention you choose — Claude doesn't require it. Anthropic's own official Skills actually use a date-based version instead (like 20251013), and custom Skills get an automatically generated version ID. Pick whichever your team finds easiest to read; just be consistent.

Two rules that save real headaches

  • Pin the version in production; use "latest" only while experimenting. If your live setup always grabs the newest version, then anyone's merge can instantly change how the whole team's Claude behaves — with no warning. Point production at a specific, known-good version and move it up deliberately.
  • Every version stands alone. As covered in the clean-copy test above, publishing a version uploads the whole Skill — files left out are gone from that version. Re-check the file list every time you bump the version, not just the wording.

Merging isn't the same as everyone having it

Merging to main makes a change official in the repository — it does not, by itself, put the new version in front of every teammate. That last step depends on which of the three distribution methods from Chapter 05 your team uses: org-provisioned updates automatically, a shared ZIP needs re-uploading, a plugin marketplace needs /plugin update or a fresh install.

Deprecating and rolling back

Active
↓
Supersedednote added at the top of SKILL.md pointing to the replacement
↓
Removedonce nobody depends on the old one

Made a mistake after merging? A new Pull Request that reverts the change is the normal fix; a maintainer can also roll back further using GitHub's own history. This is exactly why nothing skips the Pull Request step, even for "quick" changes — the undo mechanism only exists because the history does.

Scaling to a global, asynchronous team

None of this requires everyone online at once. A simple weekly rhythm keeps it moving across time zones without a single meeting:

WhenWhat happens
Monday–WednesdayPeople open Pull Requests when they have ideas
Any timeReviewers look at open PRs, comment or approve, whenever their day allows
When approvedAny maintainer merges — doesn't have to be the original author
After mergeLibrary updated; team notified (a Slack/Teams message is enough)

Keep the shelf clean — a retirement rhythm

Skills pile up. Old ones that nobody uses don't just sit there harmlessly — they clutter Claude's decision about which Skill to load, and they confuse new team members. Add one recurring ritual: every few months, each owner re-checks their Skills. Anything that no longer works, or hasn't been used in roughly six months, gets deprecated (see the lifecycle card) rather than left to quietly rot. A ten-minute quarterly sweep saves a lot of "why did Claude do that?" later.

Who does what

RoleResponsibilityNeeds deep technical skill?
Skill authorCreates or improves a Skill, opens a PRNo
Reviewer / Code OwnerReads the proposal, approves or requests changesNo — but understands the topic
Admin / maintainerSets up the repo, branch protection, and distributionHelpful, not required day to day
Everyone elseUses the approved SkillsNo

Most people on the team only ever need to know two things: how to open a Pull Request, and how to review one.

Security, automation & no fake scores

A Skill isn't just a note to Claude — it's instructions, and sometimes scripts, that shape what Claude actually does. Anyone who can change a Skill can change how your team's Claude behaves. That's exactly why the review process above isn't red tape: a Skill is a trust boundary, so treat changes to one the way you'd treat changes to anything with real reach into your work.

Enterprise tip, from Chapter 03: orgs can turn on skill scanning, which automatically checks uploaded skills and plugins for malicious content before they're usable — a useful second layer, not a replacement for human review.
No fake scores. If a Skill hasn't actually been run through the test cases, don't write in the PR that it passed. And a bare "passed" isn't evidence on its own — a real result names the test, what you expected, and what actually happened. An honest "tested informally, not against all cases yet" is worth more to a reviewer than a checklist ticked from memory — the whole system above only works if what's reported is what was actually done.

After launch: read what your agents actually did

The checks above happen before a Skill ships. Once Skills run inside agents that work on their own, there is a second job: reading what the agents did afterwards. Network limits and permission rules block actions; reading the finished sessions shows what slipped through, and where your limits are looser than you meant.

Anthropic's cookbook has a worked recipe for this, Review your agents' sessions for security issues with Claude. It looks for five things:

The result is a ranked list of the sessions a person should read, with quoted evidence for each. It can read Managed Agents sessions, Messages API logs or Claude Agent SDK logs, and its first two parts run offline without an API key.

Is this for your team? It is a developer recipe (Python, the Claude API, and beta access to Managed Agents for the live part). If nobody on your team writes code, treat it as the idea to ask for: someone reads the agents' sessions every week and writes down what looked off. Developer teams who also want timing and cost per request can look at the companion recipe on tracing Claude requests with OpenTelemetry, which its authors mark as beta.

Both recipes were read directly at anthropics/anthropic-cookbook on 22 October 2026 and described by what they say, not run by us. They are about agents and the API, not about writing a SKILL.md, so use them as a next step, not as part of the Skills review process above.

The mistakes teams actually make

None of these are about Git. They're the traps where a Skill looks fine in the repo but misbehaves for real — the gap between "the file is correct" and "Claude does the right thing." Warn your team about these up front:

  • A vague description. The single most common failure. Claude decides whether to use a Skill almost entirely from its description — too vague and it fires on the wrong things or never fires at all. Say plainly what it does and when to use it.
  • Stuffing everything into SKILL.md. A giant instructions file gets loaded every single time, wasting Claude's attention. Keep SKILL.md lean (a good rule of thumb is under ~500 lines) and push detail into references/, which Claude opens only when it's needed.
  • A README.md inside a skill folder. Claude reads it as part of the Skill and it clutters things. Human docs go in the repo's root README, never inside an individual skill folder.
  • A forgotten-to-commit file. Works for the author, breaks for everyone else — the clean-copy test above catches it.
  • Promoting a personal experiment straight to the team. Skipping the Pull Request "just this once" is how an untested Skill lands on everyone. Sandbox Skills still go through review before they're shared.
  • Never retiring dead Skills. They pile up, confuse Claude's choices, and mislead new hires. Use the retirement rhythm.
  • Reporting scores that weren't really run. The whole review system depends on honest reporting — a "passed" with nothing behind it is worse than an honest "not tested yet."
Notice the theme: a repo can be perfectly organised and a Skill can still be broken. Structure keeps the team sane; testing behavior is what keeps the Skills correct.

The complete picture, and what to do tomorrow

Idea
↓
Branch → edit → Pull Request
↓
CODEOWNERS reviewed it
↓
Approved → merged
↓
Team receives the new version

Starter checklist

That last one is easy to skip and quietly important. CODEOWNERS decides who reviews a Skill, but it doesn't answer "what Skills do we even have?" A plain table in the repo's README — Skill name, what it's for, owner — is enough to stop the team from losing track and rebuilding things that already exist.

Quick answers

Do I have to use the command line for any of this? No. Everything in this chapter — creating a branch, editing a SKILL.md, opening a Pull Request, reviewing and merging — can be done entirely through GitHub's website in your browser, or the free GitHub Desktop app. The git terms here (branch, commit, merge) are just names for buttons you click. If a teammate is comfortable at the command line that's fine too, but nobody has to be.

Do we need a developer to run this? Not day to day — a technical person is genuinely only needed for the first setup and occasional help. Proposing and reviewing Skills doesn't require it.

How many approvals should we require? Start with 1. For anything brand-, legal-, or compliance-sensitive, require 2.

Two people want to change the same Skill at once — what happens? GitHub flags the conflict. The second person waits for the first PR to finish, or the two of you combine the changes into one.