Skills: Distribution
Choose a channel
Section titled “Choose a channel”| Channel | Audience | How | Updates |
|---|---|---|---|
| Personal folder | You | ~/.claude/skills/<name>/ (Claude Code + Cursor) or ~/.cursor/skills/<name>/ |
Edit in place |
| Project repo | Everyone who clones the repo | Commit .claude/skills/<name>/, .cursor/skills/<name>/, or .agents/skills/<name>/ |
Through PRs |
| Shared skills repo | Team / org | A dedicated git repo; people clone or symlink it into their personal folder | git pull |
| Plugin | Team / org / public | Package the skills (plus optional agents, MCP config, and hooks) as a Claude Code plugin or Cursor plugin, and publish to a marketplace | Plugin versioning |
| Claude.ai / Desktop | Individuals or org members on Claude apps | ZIP the skill folder (with the folder at the root of the ZIP) → Settings → Capabilities → Upload | Re-upload |
| Claude API | Your applications | Upload via the Skills API, then reference it by skill_id in Messages API requests that use the code execution tool |
Versioned by the API |
Packaging checklist
Section titled “Packaging checklist”- The folder name equals
name - No secrets, personal paths, or machine-specific absolute paths
- Dependencies are listed in
SKILL.md, or incompatibilityin the frontmatter - There’s a version and changelog (for example
metadata: { version: "1.2.0" }, plusCHANGELOG.md) - There’s a short README section or announcement with 2–3 example prompts
- A license is declared if you share it outside your org (
license:in the frontmatter) -
npm run qapasses
Cross-platform packaging
Section titled “Cross-platform packaging”To support Claude Code, Cursor, and Claude.ai with one source:
- Keep the canonical copy in a git repo under
skills/<name>/. - Claude Code + Cursor (project): place or symlink it at
.claude/skills/<name>/, which both hosts read. - Claude.ai: a small script zips each
skills/<name>/folder for upload. - Use only portable frontmatter (
name,description,license,metadata,disable-model-invocation) unless you’ve checked the matrix. - Hosted environments (the API and Claude.ai) may not allow runtime package installs, so scripts there should use only pre-installed libraries.
Windows notes
Section titled “Windows notes”- To share one skill between hosts, you can use a directory junction instead of copying:
New-Item -ItemType Junction -Path "$HOME\.cursor\skills\my-skill" -Target "C:\Projects\skills-repo\skills\my-skill"Since Cursor already reads~/.claude/skills, this is usually unnecessary. - Inside skills, keep paths forward-slashed.
Versioning & change management
Section titled “Versioning & change management”- Use semantic versioning: major when the output format or behaviour changes incompatibly, minor for new capabilities, patch for wording fixes.
- Re-run the eval set before bumping the version.
- Record notable changes in
DECISIONS.mdor the skill’sCHANGELOG.md. - Deprecate a skill by adding a line at the top of its body pointing to the replacement, then remove it one release later.
Governance for teams
Section titled “Governance for teams”- Assign an owner for every shared skill.
- Require review for changes to
scripts/, the same as for any other code. - Audit third-party skills before adding them to a shared repo or plugin.
- Hold a quarterly review to retire skills the models no longer need.