[BUG] Custom skills fail with "Unknown skill" in Claude Code cloud sessions.
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report (please file separate reports for different bugs)
- [x] I am using the latest version of Claude Code
What's Wrong?
Account-level custom skills (uploaded via Settings > Skills) appear in the in-session skill search with enabled: true, source: custom, but invoking them fails with "Unknown skill: <name>". Anthropic-provisioned skills work fine in the same session. The same custom skills execute correctly in local Claude Code sessions on the same account. Reproduced with a minimal 3-line test skill, so it is not content-related. Example skill ID: skill_01EAeuiFZjbpb2TWxLEyRHrq. Environment: Claude Desktop app → Claude Code → cloud session on a GitHub repo.
What Should Happen?
Custom skills uploaded to my account via Settings > Skills should be executable in Claude Code cloud sessions (Desktop app / claude.ai/code working on a GitHub repo), just as they are in local Claude Code sessions. The documentation states: "Skills you enable on claude.ai are loaded into cloud sessions automatically." So invoking /skilltest (or any enabled custom skill) in a cloud session should load and execute the skill — the same way it already works locally and the same way Anthropic-provisioned skills (e.g. internal-comms, brand-guidelines) already work inside the same cloud session.
Error Messages/Logs
Skill execution failed
/skilltest
Unknown skill: skilltest
Same for my other custom skill:
/agent-company
Unknown skill: agent-company
Note the contradiction: immediately before the failed invocation, the in-session skill search returns the skill as registered and enabled:
json{"id":"skill_01EAeuiFZjbpb2TWxLEyRHrq","name":"agent-company","enabled":true,"creator_type":"user","partition_by":"account","source":"custom","content_scan":null,"user_invocable":null}
Checking the VM filesystem shows no custom skills were provisioned:
$ ls ~/.claude/skills/
session-start-hook
Steps to Reproduce
Create a minimal skill — a folder containing only a SKILL.md:
---
name: skilltest
description: A minimal diagnostic skill. Use whenever the user says "run skilltest" or asks to test whether custom skills execute correctly.
---
Skilltest
When invoked, reply with exactly: "SKILLTEST OK — custom skill executed successfully."
Zip it (SKILL.md at archive root) and upload via claude.ai / Desktop app: Settings > Skills > upload. The skill appears in the skill list and is enabled.
Open the Claude Desktop app > Claude Code, start a new cloud session on a GitHub repository (not a local folder).
Prompt: "run skilltest" (or invoke /skilltest).
Result: "Unknown skill: skilltest". Skill search inside the session finds it (enabled: true, source: custom), but execution fails and ~/.claude/skills/ in the VM does not contain it.
Control tests: (a) The identical skill executes correctly in a local Claude Code session on the same account. (b) Anthropic-provisioned skills (internal-comms, brand-guidelines) execute correctly inside the same cloud session. (c) Reproduced identically with a full-size custom skill, so it is independent of skill content or size.
Claude Model
Other
Is this a regression?
I don't know
Last Working Version
_No response_
Claude Code Version
2.1.207 (Claude Code)
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_