[BUG] User and Organization Skills — Metadata Registered in System Prompt but SKILL.md Files Not Mounted in Container

Status Open
Maintainer reply None cached
Activity 11 comments · opened Feb 17, 2026

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

  1. Upload custom skills via Settings > Capabilities (ZIP files with valid SKILL.md)
  2. Confirm skills appear in the Settings > Capabilities UI as enabled
  3. Start a new conversation in Claude.ai
  4. Ask Claude to use one of the custom skills (e.g., "hello world" to trigger the hello-world skill)
  5. Claude's system prompt contains the skill metadata in <available_skills> and instructs Claude to view the SKILL.md file
  6. 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 /skills command 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:

  1. Metadata registration (system prompt <available_skills> block) — working correctly
  2. 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_

View original on GitHub ↗

11 Comments

github-actions[bot] · 6 months ago

Found 3 possible duplicate issues:

  1. https://github.com/anthropics/claude-code/issues/26131
  2. https://github.com/anthropics/claude-code/issues/24453
  3. https://github.com/anthropics/claude-code/issues/26172

This issue will be automatically closed as a duplicate in 3 days.

  • If your issue is a duplicate, please close it and 👍 the existing issue instead
  • To prevent auto-closure, add a comment or 👎 this comment

🤖 Generated with Claude Code

hdjebar · 6 months ago

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:

  • Product: Claude.ai (web interface)
  • Feature: Custom skill upload (Settings)
  • Date: February 17, 2026
  • Location: Luxembourg

Steps to reproduce:

  1. Go to Claude.ai → Settings → Skills
  2. Upload any .zip file containing a valid SKILL.md
  3. Click upload/save
  4. Result: "Internal server error"

Troubleshooting already performed:

  • Tested with a minimal zip (483 bytes, single SKILL.md with valid frontmatter: name + description only) — same error
  • Tested with a full skill zip (82KB, 21 markdown files) — same error
  • Verified SKILL.md frontmatter uses only allowed keys (name, description)
  • Confirmed no encoding issues (UTF-8, no BOM, no null bytes)
  • Confirmed correct zip structure (folder/SKILL.md at one level deep)
  • Previously received a specific validation error ("unexpected key in SKILL.md frontmatter") which was fixed — the server did process the file before. Now it returns a generic 500 error instead.

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

jespey · 6 months ago

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.

mi6l10r3 · 6 months ago

Cowork ignores updated SKILL.md content, searches for files instead of using hardcoded values

Environment

  • Windows 11 Pro, Claude Desktop App (Max plan)
  • Cowork enabled
  • Docker Desktop with WSL2 backend
  • User-level skill at ~/.claude/skills/order-to-queue/SKILL.md

Description

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

  1. Create a skill at ~/.claude/skills/order-to-queue/SKILL.md with a hardcoded webhook URL directly in the file body
  2. The skill explicitly says at the top: "DO NOT search for any files. The webhook URL is right here: [URL]"
  3. Launch a new Cowork session
  4. Trigger the skill (e.g., "update tuning spreadsheet")
  5. Cowork searches for kerma_webhook_url.txt — a file reference that was removed from the SKILL.md in a previous edit
  6. Cowork references C:\Claude\Config\ — a directory that no longer exists and was removed from the SKILL.md
  7. Cowork falls back to "legacy browser mode" despite the skill explicitly saying not to

Expected Behavior

Cowork should read the current SKILL.md content from ~/.claude/skills/order-to-queue/SKILL.md and 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

CLI output was not valid JSON. This may indicate an error during start up.
Output: Claude configuration file not found at: /sessions/blissful-elegant-darwin/mnt/.claude/.claude.json

This confirms the container mount is incomplete — .claude.json is 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

  • #26254 — SKILL.md files not mounted in container (root cause)
  • #24859 — Plugin skills searched at wrong location on Windows (path resolution)
  • #21428 — Skills not being discovered; cached skills show old content
  • #25072 — Skills not loading from ~/.claude/skills/ directory
rohanlad · 5 months ago

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 .pptx template) fail to upload — the API returns a 502 Bad Gateway from Cloudflare.

As a workaround, we're injecting the template via container_upload on 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 via client.beta.skills.create, betas=["skills-2025-10-02"]

Hyaxia · 5 months ago

affects us as well, making the distribution of skills much harder

berit-hoff · 5 months ago

Also hitting this repeatedly, very frustrating

jan-nikolov · 5 months ago

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-name commands produce no response. This makes custom plugins effectively unusable in Cowork.

gvilli · 3 months ago

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.

magaldima · 2 months ago

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:

awk: cannot open "/workspace/skills/some-skill/SKILL.md" (No such file or directory)
sekedus · 2 months ago

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 its SKILL.md.

The skill's metadata registers correctly in the available skills list, but only the SKILL.md is 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.