Recent versions of Claude Code reject the "skills": ["./"] entry added in v0.7.1 (commit 8f1d0e3, "feat: add cross-harness package compatibility").
Error shown in /plugin → Errors tab
visual-explainer (user)
skills path escapes plugin directory: ./
Paths in plugin.json must not use ".." to reference files outside the plugin directory
Where
plugins/visual-explainer/.claude-plugin/plugin.json:
Why it fires
Claude Code resolves skills entries relative to the manifest location (.claude-plugin/). From there, ./ normalizes back into .claude-plugin/ itself, which the validator treats as outside the intended plugin root and rejects.
Reproduction
/plugin install visual-explainer@visual-explainer-marketplace
- Open
/plugin → Errors tab
Observed impact
The skill itself still loads (auto-discovery finds SKILL.md and commands/), but the plugin shows a persistent error badge.
Suggested fix
Remove the skills field entirely — every other plugin I have installed (figma, superpowers, etc.) omits it and relies on Claude Code's default discovery, which already finds the root SKILL.md and commands/ directory just fine.
"repository": "https://github.com/nicobailon/visual-explainer",
- "license": "MIT",
- "skills": ["./"]
+ "license": "MIT"
}
PR title
fix(plugin): remove invalid skills: ["./"] from plugin.json
PR body
Closes #
Claude Code's plugin manifest validator rejects "skills": ["./"] with:
skills path escapes plugin directory: ./
The field was added in 8f1d0e3 alongside the v0.7.1 bump. Removing it restores parity with the standard plugin shape used by figma, superpowers, and others — Claude Code's default skill discovery already picks up the root SKILL.md and commands/ directory, so no behavior is lost.
Verified locally by patching the field out of the cached manifest: skills still load, error badge disappears.
Recent versions of Claude Code reject the
"skills": ["./"]entry added in v0.7.1 (commit 8f1d0e3, "feat: add cross-harness package compatibility").Error shown in
/plugin→ Errors tabWhere
plugins/visual-explainer/.claude-plugin/plugin.json:Why it fires
Claude Code resolves
skillsentries relative to the manifest location (.claude-plugin/). From there,./normalizes back into.claude-plugin/itself, which the validator treats as outside the intended plugin root and rejects.Reproduction
/plugin install visual-explainer@visual-explainer-marketplace/plugin→ Errors tabObserved impact
The skill itself still loads (auto-discovery finds
SKILL.mdandcommands/), but the plugin shows a persistent error badge.Suggested fix
Remove the
skillsfield entirely — every other plugin I have installed (figma,superpowers, etc.) omits it and relies on Claude Code's default discovery, which already finds the rootSKILL.mdandcommands/directory just fine.PR title
fix(plugin): remove invalid
skills: ["./"]from plugin.jsonPR body
Closes #
Claude Code's plugin manifest validator rejects
"skills": ["./"]with:The field was added in 8f1d0e3 alongside the v0.7.1 bump. Removing it restores parity with the standard plugin shape used by
figma,superpowers, and others — Claude Code's default skill discovery already picks up the rootSKILL.mdandcommands/directory, so no behavior is lost.Verified locally by patching the field out of the cached manifest: skills still load, error badge disappears.