/reload-plugins reports 0 skills for plugins using skills/*/SKILL.md (count only, invocation works) — 2.1.220
Summary
/reload-plugins reports 0 skills for a plugin whose skills load and invoke correctly. The count appears to include only commands/*.md and not skills/*/SKILL.md.
This is a display-count bug only. Nothing is broken. The skills work in the same session that reports 0.
Why this is not a duplicate of #41842
#41842 described this counter behaviour in passing and was closed as a duplicate of #42471, fixed in 2.1.98.
But #41842's primary complaint was that skills/ plugins are not invocable as slash commands at all (/plugin:skill → Unknown skill). That does not reproduce here — the skills invoke fine on 2.1.220. What #42471 fixed was invocation, not the count.
So the counter has never been tracked against a version where it survives. Filing narrowly for the count, per the guidance on #41842 to open a new issue referencing it.
Environment
- Claude Code 2.1.220
- macOS 26.5.2 (build 25F84), arm64
- Plugin installed from a GitHub marketplace
Reproduction
Public reproduction repo: https://github.com/alanfuller15/claude-plugins
/plugin marketplace add alanfuller15/claude-plugins
/plugin install genesis@alanfuller15-tools
/reload-plugins
The plugin has three skills and no commands/ directory:
plugins/genesis/
├── .claude-plugin/plugin.json
├── agents/verifier.md
├── hooks/hooks.json
├── scripts/
└── skills/
├── handoff/SKILL.md
├── preregister/SKILL.md
└── reconcile/SKILL.md
Actual output
Reloaded: 1 plugin · 0 skills · 7 agents · 4 hooks · 0 plugin MCP servers · 0 plugin LSP servers
Expected
3 skills.
Evidence the skills are actually loaded
All three are present on disk in the installed cache:
$ find ~/.claude/plugins/cache -path '*genesis*' -name 'SKILL.md'
~/.claude/plugins/cache/alanfuller15-tools/genesis/1.0.0/skills/reconcile/SKILL.md
~/.claude/plugins/cache/alanfuller15-tools/genesis/1.0.0/skills/preregister/SKILL.md
~/.claude/plugins/cache/alanfuller15-tools/genesis/1.0.0/skills/handoff/SKILL.md
$ find ~/.claude/plugins/cache -path '*genesis*' -type d -name commands
(no output — there is no commands/ directory)
Frontmatter is well-formed on all three, e.g.:
---
name: reconcile
description: Reconcile a project's status documents against the actual repository. …
---
And in the same session that printed 0 skills:
- all three are listed as available skills in the system reminder
/genesis:reconcileresolves and runs, loading from
~/.claude/plugins/cache/alanfuller15-tools/genesis/1.0.0/skills/reconcile
So the count disagrees with the loader in the same session.
Not caused by a missing version
The plugin was installed twice — once before plugin.json had a version field, once after. Both cache directories still exist:
~/.claude/plugins/cache/alanfuller15-tools/genesis/unknown/ ← no version field
~/.claude/plugins/cache/alanfuller15-tools/genesis/1.0.0/ ← version 1.0.0
Both reported 0 skills. Adding the version changed the cache path but not the count, so the version field is not the cause.
Impact
Small and entirely cosmetic, but it lands at a bad moment: the reload count is what a user checks immediately after installing. 0 skills reads as a failed install, so people go debugging a plugin that already works — re-running /plugin install, re-adding the marketplace, or checking their SKILL.md frontmatter for a fault that isn't there.
The documented workaround — adding duplicate commands/*.md files — makes the count correct but duplicates every skill's full content into a second file that must then be kept in sync. That is a real maintenance cost paid for a display number, and it is worth not needing.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗