/reload-plugins reports 0 skills for plugins using skills/*/SKILL.md (count only, invocation works) — 2.1.220

Status Open
Reported on v2.1.98
Maintainer reply None cached
Activity 1 comment · opened Jul 27, 2026

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:skillUnknown 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:reconcile resolves 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.

View original on GitHub ↗

This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗