Every plugin in the marketplace declares "skills": ["./SKILL.md"], pointing at a file. Claude Code expects skills entries to be directories containing a SKILL.md. claude plugin validate fails on all nine plugins and therefore on the marketplace as a whole.
Found while investigating #85, but this is independent of it — #85 affects only requesthunt, this affects all nine.
Reproduce
claude plugin validate <marketplace-root>
Actual
✘ plugins[0] plugin.json → skills[0]: Path is a file; skills entries must be
directories containing SKILL.md: ./SKILL.md
✘ plugins[1] … through plugins[8] — same error
✘ Validation failed
Per-plugin, e.g. claude plugin validate skills/domain-hunter:
✘ Found 1 error:
❯ skills[0]: Path is a file; skills entries must be directories containing SKILL.md: ./SKILL.md
Affected
All nine: requesthunt, domain-hunter, logo-creator, banner-creator, nanobanana, reddit, twitter, producthunt, seo-geo.
Comparison with other marketplaces
Every other marketplace I have installed points skills at a directory:
| marketplace |
skills entry |
type |
pbakaus/impeccable |
./skills/, ./.claude/skills/ |
dir |
forrestchang/andrej-karpathy-skills |
./skills/karpathy-guidelines |
dir |
paper-design/agent-plugins |
./skills |
dir |
ReScienceLab/opc-skills |
./SKILL.md |
file |
Verified fix
Each plugin root already is a directory containing SKILL.md, so pointing the entry at the directory is a one-token change. I tested both candidates against domain-hunter:
"skills": ["./"] keeps the declaration explicit and validates cleanly; dropping the key also validates, presumably relying on auto-discovery. Either resolves it across all nine.
Runtime impact — CONFIRMED BLOCKING
Update: confirmed via claude plugin details, no restart needed. All five plugins I installed load zero skills.
$ claude plugin details logo-creator@opc-skills
Component inventory
Skills (0)
Identical Skills (0) for banner-creator, domain-hunter, seo-geo, and requesthunt.
Control — plugins from marketplaces that declare skills as a directory report their skills normally:
$ claude plugin details andrej-karpathy-skills@karpathy-skills
Skills (1) karpathy-guidelines
$ claude plugin details paper-desktop@paper
Skills (2) code-to-design, design-to-code
And patching a single installed manifest flips it, which confirms the cause and the fix in one step:
$ claude plugin details domain-hunter@opc-skills # as shipped
Skills (0)
# edit cached plugin.json: "skills": ["./SKILL.md"] -> ["./"]
$ claude plugin details domain-hunter@opc-skills # patched
Skills (1) domain-hunter
So this is not cosmetic: every skill in the marketplace installs successfully and then silently exposes nothing. Users get a plugin that appears installed but does nothing, with no error surfaced (claude plugin list is quiet about it — the only listed error was the unrelated #85 one). Changing "./SKILL.md" to "./" in all nine plugin.json files fixes it.
Environment
- marketplace at commit
db8eff6
- macOS 15 (Darwin 24.6.0)
Every plugin in the marketplace declares
"skills": ["./SKILL.md"], pointing at a file. Claude Code expectsskillsentries to be directories containing aSKILL.md.claude plugin validatefails on all nine plugins and therefore on the marketplace as a whole.Found while investigating #85, but this is independent of it — #85 affects only
requesthunt, this affects all nine.Reproduce
Actual
Per-plugin, e.g.
claude plugin validate skills/domain-hunter:Affected
All nine:
requesthunt,domain-hunter,logo-creator,banner-creator,nanobanana,reddit,twitter,producthunt,seo-geo.Comparison with other marketplaces
Every other marketplace I have installed points
skillsat a directory:skillsentrypbakaus/impeccable./skills/,./.claude/skills/forrestchang/andrej-karpathy-skills./skills/karpathy-guidelinespaper-design/agent-plugins./skillsReScienceLab/opc-skills./SKILL.mdVerified fix
Each plugin root already is a directory containing
SKILL.md, so pointing the entry at the directory is a one-token change. I tested both candidates againstdomain-hunter:// key omitted entirely — ✔ Validation passed"skills": ["./"]keeps the declaration explicit and validates cleanly; dropping the key also validates, presumably relying on auto-discovery. Either resolves it across all nine.Runtime impact — CONFIRMED BLOCKING
Update: confirmed via
claude plugin details, no restart needed. All five plugins I installed load zero skills.Identical
Skills (0)forbanner-creator,domain-hunter,seo-geo, andrequesthunt.Control — plugins from marketplaces that declare
skillsas a directory report their skills normally:And patching a single installed manifest flips it, which confirms the cause and the fix in one step:
So this is not cosmetic: every skill in the marketplace installs successfully and then silently exposes nothing. Users get a plugin that appears installed but does nothing, with no error surfaced (
claude plugin listis quiet about it — the only listed error was the unrelated #85 one). Changing"./SKILL.md"to"./"in all nineplugin.jsonfiles fixes it.Environment
db8eff6