How skills are named
The names you see in URLs and the CLI — what they mean and when they collide
When you install a skill, you'll see it referenced two ways:
airskills add chrismdp/code-review
└───────┬───────┘
a "slug" — the skill's name
The slug is how people and tools refer to a skill. It shows up in:
- CLI commands (
airskills add chrismdp/code-review) - The skill's public page URL (
airskills.ai/chrismdp/code-review) - The directory name on disk (
~/.claude/skills/code-review/)
Personal skills: just a name
If you own a skill, its slug is just its name:
code-review
release-email
pr-etiquette
You can have any name you like, as long as no other skill you own is using it.
Organization skills: prefixed with the organization's name
If an organization owns a skill, its slug carries the organization's name in front:
acme-code-review
acme-release-email
acme-pr-etiquette
The prefix makes it obvious at a glance who owns a skill, and means
two organizations can both have a code-review skill without
stepping on each other.
Naming rules
- Lowercase letters, numbers, and hyphens only (
[a-z0-9-]+). - No leading or trailing hyphen. No double hyphens.
- Up to 64 characters.
- Unique within the owner — you can't have two skills called
code-reviewin your personal account, and an organization can't have two skills calledcode-revieweither.
If you type a name with capital letters or spaces, the server
automatically converts it — Code Review becomes code-review.
How slugs change
A slug only changes when you change it, in one of two ways:
- Rename — keeps the owner the
same, changes the name part:
code-review→pr-etiquette. - Transfer — changes the owner (and
the prefix):
code-review→acme-code-review.
Either way, the old URL stops resolving. Skills do not move silently.
Some reserved names
A handful of names are held back for the site itself, so you can't take
them as usernames or skill slugs. They include api, auth,
dashboard, docs, login, mcp, organization, security, and a
few more. If you try to use one, the server will tell you and offer a
nearby alternative.
Deep dive: slugs vs skill IDs
For curious developers — skip if you just want to use it.
The slug is how humans refer to a skill. Internally, every skill has a
UUID skill_id that never changes, even if the slug does. The CLI
stores both — the slug for display, the skill_id for fetching
updates. This is what makes rename
consumer-transparent: on pull, the CLI asks the server for the same
skill_id and the new slug comes back as part of the metadata.
When a skill is transferred, a genuinely
new skill (new skill_id) is created at the new slug; the old one is
soft-deleted. The old slug returns 410 Gone, and consumers see an
"upstream archived" message on their next pull rather than being
silently redirected.
Slugs are derived from the name field on the skill row via a
slugify() helper: lowercase, collapse non-alphanumerics to hyphens,
strip leading/trailing hyphens. For organization skills, the server
prepends <organization-slug>- before the slugified name. The CLI
does not invent slugs — it sends the name and trusts the server's
derivation.
Was this page helpful?