Rename a skill
Change a skill's name everywhere with one command. Owner does not change.
You named a skill code-review six months ago. It's now mostly about pull
request etiquette. You want to call it pr-etiquette. That's a rename:
airskills mv code-review pr-etiquette
That one command:
- Renames the local directory in every detected agent (
~/.claude/skills/,~/.cursor/skills/,~/.copilot/skills/, and so on) - Updates the skill's display name on the server
- Updates your local sync state so the next push and pull do the right thing
The skill keeps its history, its commits, its identity, and its owner. Everything inside the skill is unchanged — only the label changes.
What other people see
If anyone has installed your skill via airskills add, their copy keeps
working and their airskills pull keeps fetching updates from it — because
the CLI tracks the skill by its underlying ID, not its name.
The thing that does change is the name itself. If they — or their AI
agent — refer to the skill by name in prompts, scripts, or agent configs
("use the code-review skill"), they'll need to use the new name
afterwards. The skill still loads and still updates. Only the label changes.
A polite rename of a widely-used skill is worth a small announcement, so people can update any places they call it by name.
This is the key difference from transfer: rename does not break anyone's CLI sync — the skill remains the same skill, addressable by the same ID. Transfer makes a genuinely new skill in a new place, and the old slug stops resolving entirely.
When to use rename
- The skill grew into a different scope and the old name is misleading
- You're tidying up your personal namespace
- You picked a name in a hurry and want to fix it
When not to use rename
If you're trying to hand your skill over to your organization, or pull an organization skill back to yourself, that's a transfer, not a rename. Renaming will only change the label — it will not change who owns the skill.
Things to know
- The new name must be unique within your account. If you already have a
skill called
pr-etiquette, the rename fails before anything moves. - Names follow the standard skill-name rules: lowercase, hyphens, no spaces or special characters.
- The CLI moves the local directories one at a time. If something goes wrong partway through, it tries to revert any moves it already made so you do not end up half-renamed.
- A URL pointing at the old name (for example, a link in a Slack message) will stop resolving after the rename. The skill still exists — just at the new URL.
What if I rename a folder manually?
airskills mv is the recommended way, but if you mv a skill folder
by hand and then push, the CLI handles it. On push it spots that the
renamed folder's content matches an existing skill, propagates the
rename to every other agent dir that still has the old name, and
tells the server. The skill keeps the same skill_id, so consumers
stay attached.
You'll see a line like this:
✓ detected partial rename: old-name → new-name, propagated across all agent dirs
old-name → new-name (renamed)
Two situations this does not cover:
- Renaming and editing content in the same step. The content
hash no longer matches the original, so the CLI can't tell it's a
rename and treats the new folder as a brand-new skill. If you
want to rename and edit, do them in two separate pushes — or use
airskills mvthen edit, then push. - Renaming in folders that aren't tracked agent directories
(arbitrary backups, mirrors outside
~/.claude/skills/,~/.cursor/skills/, etc.). Airskills only manages skills inside known agent paths.
If you can use airskills mv, it's still the cleaner route — one
command, atomic across every agent, no edge cases.
What if I'm not logged in?
You can still rename locally. The CLI will rename your directories across agents and update your local sync state, but it cannot tell the server. The next time you log in and push, the server-side name will catch up.
Deep dive: why renames don't break consumers
For curious developers — skip if you just want to use it.
A skill's identity on the server is its skill_id (a UUID), not its name
or its URL. When someone runs airskills add chrismdp/code-review, the
CLI:
- Resolves the slug
chrismdp/code-reviewto find theskill_id - Stores the
skill_idin their local sync marker - From then on, fetches updates by
skill_id, not by slug
When you rename code-review to pr-etiquette, the skill_id does not
change. Their next pull asks the server for the same skill_id, gets the
new name back as metadata, and quietly applies it. No warnings, no broken
fetches, no mention.
This is also why transfer behaves differently — transfer creates a new
skill_id (the old one is soft-deleted), so consumers pinned to the old
skill_id see the "upstream archived" event.
Was this page helpful?