fix(plugin): declare skills and agents paths in plugin.json#114
Merged
addyosmani merged 3 commits intoaddyosmani:mainfrom May 7, 2026
Merged
Conversation
Claude Code's plugin loader requires explicit path declarations when any path field (like `commands`) is already present. Without `skills` and `agents` fields, auto-discovery is suppressed and all 21 skills return "Unknown skill" when invoked via the Skill tool. Adds: "skills": "./skills" "agents": "./agents" This makes all 21 skills discoverable and invokable by name (e.g. `code-review-and-quality`) and registers the 3 agent personas (`code-reviewer`, `test-engineer`, `security-auditor`) as subagents. Fixes addyosmani#112 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The previous commit used directory strings ("./skills", "./agents")
which is not the correct plugin.json schema. Real Claude Code plugins
(e.g. davidfowl/dotnet-skillz, pluginagentmarketplace/custom-plugin-graphql)
use arrays of paths — either skill directory paths or explicit file paths.
Corrects the fix to list all 21 skill directories and 3 agent files
as proper arrays.
Fixes addyosmani#112
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The Claude Code plugin schema accepts string|array for the `skills` field; passing a directory path auto-discovers every `<name>/SKILL.md` beneath it (per https://code.claude.com/docs/en/plugins-reference, which lists `"./custom/skills/"` as a valid example). Switching `skills` from a 21-element array to `"./skills"` keeps the fix for addyosmani#112 (skills are still explicitly declared, so discovery is not suppressed) while removing the maintenance burden — adding a new skill no longer requires also editing this manifest. `agents` stays as an explicit array because `./agents/` contains `README.md`, which would be picked up as a malformed agent if the directory form were used here.
addyosmani
approved these changes
May 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes #112
Summary
All 21 skills return
Unknown skillwhen invoked via the Skill tool despite the plugin being enabled.Root cause
.claude-plugin/plugin.jsondeclares"commands"but omits"skills"and"agents". Claude Code's plugin loader requires explicit declarations for every asset type when any path field is already present — without them, skills and agents are not registered.Correct schema
Cross-referencing real Claude Code plugins (
davidfowl/dotnet-skillz,pluginagentmarketplace/custom-plugin-graphql) confirmed thatskillsandagentsmust be arrays of paths, not directory strings. This PR adds both fields in the correct format:"skills"— array of 21 skill directory paths (Claude Code readsSKILL.mdfrom each)"agents"— array of 3 agent file paths (code-reviewer.md,security-auditor.md,test-engineer.md)Effect
Skill: code-review-and-quality→Unknown skillcode-reviewer,test-engineer,security-auditoravailable as subagentsTesting
Skill: code-review-and-qualityresolves after plugin reloadSkill: spec-driven-development,Skill: security-and-hardeningetc. all resolve