[BUG] User and Organization Skills — Metadata Registered in System Prompt but SKILL.md Files Not Mounted in Container
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?
Environment
- Surface: Claude.ai (web chat interface, Claude Code and Cowork, Opus 4.6)
- Plan: Team/Enterprise
- Date: February 16, 2026
- Platform: macOS (Mac Studio M4) — though this is a server-side container issue
Summary
User-uploaded skills and organization-provisioned skills are correctly registered in the system prompt's <available_skills> block (with names, descriptions, and file paths), but the corresponding SKILL.md files are not mounted in the container's filesystem at runtime. The /mnt/skills/user/ directory does not exist at all. Three of four organization skills are also missing from disk despite being declared.
This means Claude is instructed to use skills that literally don't exist on the filesystem, causing silent failures when Claude attempts to view the SKILL.md files as instructed.
Skills Declared vs. Actually Present
User Skills (declared in <available_skills>)
| Skill Name | Declared Path | Filesystem Status |
|---|---|---|
| hello-world | /mnt/skills/user/hello-world/SKILL.md | ❌ MISSING — /mnt/skills/user/ does not exist |
| ld-employee-profiles | /mnt/skills/user/ld-employee-profiles/SKILL.md | ❌ MISSING — /mnt/skills/user/ does not exist |
Organization Skills (declared in <available_skills>)
| Skill Name | Declared Path | Filesystem Status |
|---|---|---|
| ld-employee-profiles | /mnt/skills/organization/ld-employee-profiles/SKILL.md | ❌ MISSING |
| ld-vault-update | /mnt/skills/organization/ld-vault-update/SKILL.md | ❌ MISSING |
| ld-vault-read | /mnt/skills/organization/ld-vault-read/SKILL.md | ❌ MISSING |
| people-lookup | /mnt/skills/organization/people-lookup/SKILL.md | ✅ Present |
Public/Example Skills (Anthropic-provided — for comparison)
All 6 public skills and 11 example skills are correctly mounted and readable. This is not a general mount failure — it is specific to user and (most) organization skills.
Steps to Reproduce
- Upload custom skills via Settings > Capabilities (ZIP files with valid SKILL.md)
- Confirm skills appear in the Settings > Capabilities UI as enabled
- Start a new conversation in Claude.ai
- Ask Claude to use one of the custom skills (e.g., "hello world" to trigger the hello-world skill)
- Claude's system prompt contains the skill metadata in
<available_skills>and instructs Claude toviewthe SKILL.md file - Claude attempts to read the file — file not found
Diagnostic Evidence
$ ls -la /mnt/skills/
total 12
drwxr-xr-x 5 root root 4096 Feb 17 07:26 .
drwxr-xr-x 1 999 ubuntu 4096 Feb 17 07:26 ..
dr-xr-xr-x 1 999 root 0 Jan 1 2000 examples
drwxr-xr-x 3 root root 4096 Feb 17 07:26 organization
dr-xr-xr-x 1 999 root 0 Jan 1 2000 public
$ ls -la /mnt/skills/user/
ls: cannot access '/mnt/skills/user/': No such file or directory
$ find /mnt/skills/organization/ -type f
/mnt/skills/organization/people-lookup/SKILL.md
/mnt/skills/organization/people-lookup/scripts/people_lookup.py
(only 1 of 4 declared org skills present)
$ find /mnt/skills/public/ -name "SKILL.md" -type f
/mnt/skills/public/docx/SKILL.md
/mnt/skills/public/frontend-design/SKILL.md
/mnt/skills/public/pdf/SKILL.md
/mnt/skills/public/pptx/SKILL.md
/mnt/skills/public/product-self-knowledge/SKILL.md
/mnt/skills/public/xlsx/SKILL.md
(all public skills present — confirms mount mechanism works)
Expected Behavior
All skills registered in <available_skills> should have their corresponding SKILL.md files (and any bundled scripts/resources) mounted in the container filesystem at the declared paths. If a skill is enabled and its metadata is injected into the system prompt, the files must be accessible.
Actual Behavior
- The
/mnt/skills/user/directory is never created - 3 of 4 organization skills are declared but not mounted
- Claude is instructed to read files that don't exist, causing silent skill failures
- No error is surfaced to the user — the skill just doesn't work
Impact
- Enterprise adoption blocker: Organization-wide skill deployment (a flagship feature shipped Dec 2025) does not reliably work
- Silent failure: Users have no indication that skills aren't loading. The Settings UI shows them as enabled, Claude's system prompt references them, but they silently fail at runtime
- Inconsistent behavior: The same skill may work in one session and fail in another (see related Issue #22163 where a skill worked one day and disappeared the next)
- Wasted development effort: Teams building custom skills for org-wide deployment cannot reliably test or use them
Related Issues
- #26131 — 36 user-created skills registered but none appear at runtime; upload endpoint returns HTTP 500
- #25072 — Skills in
~/.claude/skills/not loaded after restarts (Claude Code) - #24859 — Cowork for Windows plugin skills searched at wrong directory
- #22163 — Custom skill stopped appearing between sessions without file changes
- #19212 — Feature request: Skill tool should recognize local skills
- #14733 — User-provided skills not appearing in
/skillscommand output - #11266 — User skills not auto-discovered despite proper structure
Suggested Fix
The container provisioning step that injects skill metadata into the system prompt needs to also ensure the corresponding files are mounted. The root cause appears to be a disconnect between:
- Metadata registration (system prompt
<available_skills>block) — working correctly - File mounting (populating
/mnt/skills/user/and/mnt/skills/organization/) — failing silently
These two steps should be atomic — if the files can't be mounted, the skill metadata should not be injected into the system prompt, and an error should be surfaced to the user.
What Should Happen?
Properly configured skills should be mounted correctly and operate as expected.
Error Messages/Logs
Steps to Reproduce
1 Upload a skill
2 attempt to use it
Claude Model
Opus
Is this a regression?
Yes, this worked in a previous version
Last Working Version
current version worked then it just broke
Claude Code Version
latest client
Platform
Anthropic API
Operating System
macOS
Terminal/Shell
Terminal.app (macOS)
Additional Information
_No response_
11 Comments
Found 3 possible duplicate issues:
This issue will be automatically closed as a duplicate in 3 days.
🤖 Generated with Claude Code
Hi Anthropic Support,
I'm unable to upload custom skills in Claude.ai Settings. Every upload attempt returns an "Internal server error" — including a minimal test file.
Environment:
Steps to reproduce:
Troubleshooting already performed:
Expected behavior: Skill uploads and becomes available for use.
Actual behavior: Internal server error on every attempt, regardless of file size or content.
This appears to be a server-side issue since even the most minimal valid skill file triggers the error.
Thanks for looking into this.
Djebar • 1h
I can see you're experiencing internal server errors when uploading custom skills. While I don't have full information about the specific server-side issue you're encountering, I can help troubleshoot the most common upload problems.
First, let me check if there are any current system issues - I don't see any active incidents affecting skill uploads on our status page.
Here are the most common causes of skill upload failures:
File requirements:
ZIP file must be under 8MB total size
Must include a SKILL.md file at the top level
Skill name: max 64 characters, lowercase letters/numbers/hyphens only, no reserved words like "anthropic" or "claude"
Description: max 1024 characters, non-empty, no XML tags
Prerequisites:
Code execution and file creation must be enabled in Settings > Capabilities
Skills section should be visible (if not, enable code execution first)
Since you mentioned this was working before (you got specific validation errors), but now returns generic 500 errors, this suggests a server-side issue that may be temporary.
Try these steps:
Verify code execution is still enabled in your settings
Check your network connection isn't being blocked by firewall/VPN
Try uploading again in a few minutes in case it's a temporary server issue
If the problem persists, you can request human assistance through this chat to help investigate the server-side error.
Fin AI Agent • AI Agent • 1h
Is that what you were looking for?
Fin AI Agent • 1h
always persistent
Djebar • 1h
Since the error persists, this looks like a server-side issue that needs investigation. There's a known issue where skills with multiple root directories can cause problems - this might be related to what you're experiencing.
A few things to try:
Double-check your zip structure has the skill folder at one level deep with SKILL.md inside
Make sure there's only one root directory in your zip file
Verify code execution is still enabled in Settings > Capabilities
Since you've already done thorough troubleshooting and the error persists across different file types, you can request human assistance through this chat to help investigate the server-side error further.
Fin AI Agent • AI Agent • 1h
Did that help point you in the right direction?
Fin AI Agent • 1h
We noticed you might have stepped away. We'll close this conversation for now, but if you need additional assistance you can always follow up here.
Fin AI Agent • 1h
We are seeing very similar behavior that appears to have been introduced a day or two earlier and has gotten worse with upgrades. In our case we first saw problems deleting skills (but could still add net new sills, even if all we did was change the name of the skill). Now we can't delete or add new skills. They show up in the UI still but can't be accessed and are not on the local file system.
Cowork ignores updated SKILL.md content, searches for files instead of using hardcoded values
Environment
~/.claude/skills/order-to-queue/SKILL.mdDescription
Cowork recognizes that a user skill exists (it appears in available skills and triggers correctly), but the actual SKILL.md content is never read from disk. Instead, Cowork appears to use a cached or incomplete version of the skill that references file paths and instructions that no longer exist in the current SKILL.md.
Steps to Reproduce
~/.claude/skills/order-to-queue/SKILL.mdwith a hardcoded webhook URL directly in the file bodykerma_webhook_url.txt— a file reference that was removed from the SKILL.md in a previous editC:\Claude\Config\— a directory that no longer exists and was removed from the SKILL.mdExpected Behavior
Cowork should read the current SKILL.md content from
~/.claude/skills/order-to-queue/SKILL.mdand follow the hardcoded webhook URL instructions.Actual Behavior
Cowork loads the skill name and triggers correctly, but executes against stale cached content that references deleted files and removed instructions. The actual SKILL.md on disk is ignored.
Error on second attempt
This confirms the container mount is incomplete —
.claude.jsonis missing from the mount point, and skill files are not being injected.Workaround
Pasting the webhook URL directly in the Cowork chat message works. The skill logic executes correctly when the URL is provided inline by the user rather than read from the SKILL.md.
Related Issues
Hitting this same issue with custom skills uploaded via the API (
client.beta.skills.create). The skill metadata loads correctly (name, description appear in the system prompt and the skill activates as expected), but bundled binary files (in our case a 1.4MB.pptxtemplate) fail to upload — the API returns a 502 Bad Gateway from Cloudflare.As a workaround, we're injecting the template via
container_uploadon the user message. This works but has a significant side effect: the model interprets it as a user-uploaded file and references it in unrelated conversations (e.g. "The user wants to create a visualization... They've also uploaded a PowerPoint template file").Text-based skill files (SKILL.md, Python scripts) upload and mount fine. The issue appears specific to larger binary files bundled in the skill package.
Environment: API (
claude-sonnet-4-6), custom skill viaclient.beta.skills.create,betas=["skills-2025-10-02"]affects us as well, making the distribution of skills much harder
Also hitting this repeatedly, very frustrating
Same issue. I've built a private plugin marketplace (GitHub repo) with business tool integrations (Lexoffice, Toggl, YNAB, Paperless). Everything works perfectly in Claude Code CLI and Desktop — skills load, scripts execute, userConfig tokens are prompted correctly.
In Cowork: plugins appear as installed in the Extensions UI, but skills are completely ignored in sessions.
/skill-namecommands produce no response. This makes custom plugins effectively unusable in Cowork.Confirming this also happens on Windows 11 Pro 10.0.26200 with the Claude Code
desktop app on a team account. The /mnt/ path does not exist and org skills fail
silently with no warning.
This is a blocking issue for enterprise adoption. Organization skills are the
primary mechanism we rely on to enforce data protection and compliance policies
across the team — without them loading reliably on Windows, we cannot roll out
Claude Code to Windows users in a regulated environment.
I'm also seeing this behavior on Claude Managed Agent sessions where the agent performs a read of the file path for where the skill should exist and this tool call sometimes succeeds and sometimes fails with the following error:
Same issue here on Claude Desktop 3P.
I uploaded the skill-creator skill — which is a multi-file skill with bundled resources (
scripts/,agents/,eval-viewer/,references/,assets/) alongside itsSKILL.md.The skill's metadata registers correctly in the available skills list, but only the
SKILL.mdis loaded.The supporting files that the skill needs to function (Python scripts for benchmarking/packaging, subagent instructions, HTML viewer templates) are never mounted on the filesystem, so the skill can't actually do its job.
This looks like the same underlying issue as this report: skill metadata is recognized but the full skill payload (especially bundled resources) isn't materialized in the container.
In 3P's case the symptom is that multi-file skills are silently stripped down to just
SKILL.md, which makes any skill with scripts or reference files non-functional.