Feature request: programmatic upload of custom skills to claude.ai (API or CLI)
Summary
There is no programmatic way to upload or update a custom skill on a claude.ai account. The only path is the Settings > Capabilities > Skills > Add skill > Upload skill dialog, which takes a .zip through a browser file input.
Why it matters
Claude Desktop's Cowork surface does not read ~/.claude/skills. It syncs the account's enabled skills into an app-managed folder (local-agent-mode-sessions/skills-plugin/<workspace>/<account>/skills/) and the sync removes anything it did not download ("orphans cleaned" in the desktop log). So a skill authored and tested in Claude Code has to be re-zipped and pushed through the web dialog every time it changes before Cowork can use it.
For teams that keep skills in git and iterate on them, that means:
- No CI or script can publish a skill on merge.
- Claude Code itself cannot promote a local skill to the account, even when the user asks it to. Today I had Claude Code zip a skill and drive the claude.ai upload dialog through the Chrome extension, which works but is fragile.
- Two copies drift: the local
~/.claude/skillscopy that Claude Code reads and the account copy that Cowork reads.
Request
Any of these would solve it:
- A REST endpoint for skills on the claude.ai account (create, update, delete, list), authenticated the same way connectors are.
- A
claude skill push <dir>(orclaude skill upload) CLI command that zips a skill directory and publishes it to the signed-in account. - Have Cowork read
~/.claude/skillsin addition to account skills, so a local skill is usable on both surfaces without a round trip through the web UI.
Option 2 fits the existing CLI shape and would let a git hook or GitHub Action publish on merge.
Environment
- Claude Code 2.1.266, Claude Desktop (macOS) Cowork
- Observed 2026-09-09
This issue has 2 comments on GitHub. Read the full discussion on GitHub ↗