A shareable skill makes no assumptions about whose machine it's running on. This chapter is the diff between a skill that works for you and a skill that works for anyone who downloads it.
Your skills folder is full of useful little things. At some point — a teammate, a friend, a Slack thread — someone says "can I have that?" and the question becomes: is it actually ready to leave your laptop?
This chapter is the checklist. What makes a skill portable, what to put in the repo around it, how to version it, where to publish it, and how to write the README that gets it installed.
A skill that lives in your ~/.claude/skills/ can get away with a lot. It knows your username. It knows you've got brew installed. It knows your projects all live under ~/code/. Hardcoding any of that is fine — it's your machine.
A shared skill is a different animal. It has to work for someone you've never met, who has a different username, a different OS, a different toolchain, and zero context about how you set things up. The rule of thumb is simple: assume nothing about the other person's environment.
That doesn't mean a shared skill is harder to write — it just means a few habits have to change. Pull paths out into variables. Declare what you depend on. Add a README. The skill itself stays the same shape; the packaging around it grows up.
Six things, plain English:
~ or $HOME, never /Users/yourname/ or /home/yourname/.brew is installed. Don't assume bash over zsh.ffmpeg, say so. List versions when they matter.The shape of a portable skill is: "this is what you need; this is what I do; this is what you get." If a user can answer those three questions from your README alone, you're done.
There isn't an official Claude skill registry yet — that's almost certainly coming, but it's not here today. So sharing is currently a question of where do I put this file so my person can grab it? Three pragmatic answers:
~/.claude/skills/. Versioned, discoverable, hooks into the rest of GitHub (issues, releases, stars).And, looking ahead: expect a Claude skill registry. Not here yet, but when it lands, it'll probably look like npm-for-skills — searchable, installable, with metadata. Write your skills today as if that registry already exists, and you'll be ready.
Semver works the same here as everywhere else: major.minor.patch. Bump the major when you break something users depend on — workflow renamed, args parsed differently, expected output shape changed. Bump the minor when you add a capability without breaking the old behaviour. Bump the patch for fixes.
If your tooling reads metadata.version in the frontmatter, put it there. Otherwise tag git releases — v1.0.0, v1.1.0, and so on — and let users install a specific tag if they want stability.
Keep a CHANGELOG.md. Even a five-line one is better than nothing. Users who hit a regression will read it; users upgrading will scan it; future-you will be glad it exists.
Every shared skill needs two markdown files, and they do different jobs.
SKILL.md — Claude reads this after install. It's the recipe.README.md — humans read this before install. It's the pitch + the manual.The README answers a small, specific set of questions:
That's it. A good README isn't long — it just answers those six questions clearly enough that someone can decide in under a minute whether to install your skill, and then actually install it without asking you.
The README's "depends on" section deserves real thought. Five things are worth declaring explicitly:
node, python, ffmpeg, anything the skill shells out to. Versions where they matter.Personal skills live as a single folder under ~/.claude/skills/. Shared skills live as a repository — same skill folder inside, but with packaging around it. Two tabs below: the repo layout, then a README template you can copy.
A few notes on the layout:
install.sh is optional but worth it once your skill has more than one file. It symlinks the folder into ~/.claude/skills/, so users can git pull to get updates.tests/prompts.md is your trigger-phrase test list — the same one ch.8 covers. Ship it: users can run it after install to verify the skill activates the way they expect.LICENSE file matters more than people think. Without one, your skill is technically all-rights-reserved by default — a friction users may notice.