fix(skills): reject multi-skill Claude plugin archives

Document the portable SKILL.md compatibility boundary for Claude Code plugin bundles and keep /skill install from silently flattening plugin archives that carry multiple skills plus plugin.json runtime metadata.

Reported by @AiurArtanis in #2743.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Hunter B
2026-06-13 08:20:36 -07:00
parent 38ce04790a
commit 877b44935e
5 changed files with 115 additions and 3 deletions
+35
View File
@@ -0,0 +1,35 @@
# Claude Plugin Compatibility
CodeWhale treats Claude Code skill folders as instruction bundles when they are
plain `SKILL.md` directories. It does not run Claude Code plugin runtimes.
## Supported
- Workspace or global `.claude/skills/<name>/SKILL.md` directories discovered by
the normal skill registry.
- GitHub or tarball installs that contain one selected skill directory such as
`skills/<name>/SKILL.md`, `.agents/skills/<name>/SKILL.md`,
`.claude/skills/<name>/SKILL.md`, or a nested package layout ending in
`skills/<name>/SKILL.md`.
- Companion files inside the selected skill directory, such as `references/`,
`examples/`, or scripts that are only used after the skill is explicitly
loaded and trusted.
## Not Supported As A Plugin Runtime
Claude Code plugin features remain outside the v0.8.60 compatibility boundary:
- `.claude-plugin/plugin.json` metadata and activation semantics.
- Custom slash-command bundles.
- Plugin build steps, compiled TypeScript agents, dashboard servers, shared
plugin state, or token-gated service processes.
- Frontmatter fields that require Claude-specific runtime behavior, such as
`model: inherit`.
If a Claude Code plugin repository contains multiple skills, install or migrate
one `skills/<name>` directory at a time. `/skill install` rejects multi-skill
plugin archives with a clear message so it never silently chooses one skill and
drops the plugin runtime behavior.
For richer integrations, wrap the plugin's executable surface as MCP, hooks, or
a CodeWhale skill that names the external command explicitly.
+3 -1
View File
@@ -1006,7 +1006,9 @@ If you are upgrading from older releases:
agentskills.io-compatible `~/.agents/skills` and the broader Claude-ecosystem
`~/.claude/skills`. First launch installs versioned bundled skills for common
workflows including skill creation, delegation, MCP/plugin scaffolding,
documents, presentations, spreadsheets, PDFs, and Feishu/Lark.
documents, presentations, spreadsheets, PDFs, and Feishu/Lark. See
[CLAUDE_PLUGIN_COMPAT.md](CLAUDE_PLUGIN_COMPAT.md) for the supported boundary
between portable `SKILL.md` bundles and Claude Code plugin runtimes.
- `mcp_config_path` (string, optional): defaults to `~/.codewhale/mcp.json`, with
legacy `~/.deepseek/mcp.json` fallback when the CodeWhale path is absent.
It is visible in `/config` and can be changed from the TUI. The new path is
+3 -2
View File
@@ -404,8 +404,9 @@ work. Read the local guidance before editing, and keep any contribution within
the repository's conventions.
Next: see [SKILL_INVOCATION_DESIGN.md](SKILL_INVOCATION_DESIGN.md) for skill
activation behavior and [CONFIGURATION.md](CONFIGURATION.md) for config paths
and project authority.
activation behavior, [CLAUDE_PLUGIN_COMPAT.md](CLAUDE_PLUGIN_COMPAT.md) for
Claude Code skill/plugin compatibility, and [CONFIGURATION.md](CONFIGURATION.md)
for config paths and project authority.
## 10. Getting Help