Personal plugin upload: skills not registered in runtime
Description
When uploading a personal plugin via Customize → Upload plugin (ZIP file), the plugin appears in the UI (under "Personal plugins") but its skills are not registered in the runtime. The /skill-name slash command returns Unknown skill.
Steps to reproduce
- Create a plugin with the standard structure:
````
.claude-plugin/plugin.json
skills/my-skill/SKILL.md
plugin.json:
``json``
{
"name": "my-plugin",
"version": "1.0.0",
"description": "My plugin",
"author": { "name": "Author" },
"skills": ["skills/my-skill"]
}
skills/my-skill/SKILL.md:
``markdown``
---
name: my-skill
description: "My skill description"
tools: [mcp__my-server__tool1, mcp__my-server__tool2]
---
Skill instructions here.
- ZIP the plugin directory and upload via Customize → Browse plugins → Upload plugin
- Plugin appears in the Customize UI under "Personal plugins" with correct name, skills list, and "Slash command + auto" trigger
- Type
/my-skillin conversation
Expected behavior
The skill should execute (same as marketplace plugins like frontend-design).
Actual behavior
Returns Unknown skill: my-skill.
Investigation
~/.claude/plugins/installed_plugins.jsondoes not contain the uploaded personal plugin (only marketplace plugins likefrontend-designappear)~/.claude/plugins/cache/has no directory for the personal plugin- The skill is not in the runtime's available skills list despite showing in the UI
- Manually creating
~/.claude/skills/my-skill/SKILL.mdwith the same content does work — the skill immediately appears in the runtime
Workaround
Users can manually place the SKILL.md file in ~/.claude/skills/<skill-name>/SKILL.md. This is recognized by the runtime correctly.
Environment
- Claude Code desktop app (macOS)
- macOS 15 (Darwin 25.3.0)
- Plugin uploaded April 12, 2026
- Compared with
frontend-design@claude-plugins-officialwhich loads correctly from marketplace
This issue has 3 comments on GitHub. Read the full discussion on GitHub ↗