Skip to content

marketplace.json installs each skill as a separate plugin; commands/README.md loads as a phantom command #12

Description

@Inbar-Weinberg

Summary

When installing the library via the Claude Code plugin marketplace, two packaging issues show up. Both are small manifest/file-placement fixes. Tested on Claude Code (desktop), v0.79.

Issue 1 — Marketplace exposes 47 separate plugins instead of one

.claude-plugin/marketplace.json lists every skill as its own plugins[] entry, each with a source pointing at a skill directory:

{ "name": "acquisition-channel-advisor", "source": "./skills/acquisition-channel-advisor", ... }

But ./skills/acquisition-channel-advisor is a skill folder (a bare SKILL.md), not a plugin folder (no .claude-plugin/plugin.json, no skills/ subdir). Effects:

  • The marketplace shows 47 "plugins" instead of one library.
  • Installing one drops the skill under the install version directory, so it resolves with the git short-SHA as its namespace, e.g. 70fb6c4e4163:acquisition-channel-advisor, and lands at:
    cache/<marketplace>/acquisition-channel-advisor/70fb6c4e4163/SKILL.md
  • The repo already has a valid single-plugin layout — .claude-plugin/plugin.json (product-manager-skills) at the root plus a proper skills/ tree — but the marketplace manifest doesn't use it.

Suggested fix

Collapse the 47 entries into one plugin whose source is the repo root:

{
  "name": "pm-skills",
  "owner": { "name": "Dean Peters", "email": "dean.peters@productside.com" },
  "metadata": {
    "description": "47 battle-tested product management skills for Claude Code — discovery, strategy, finance, career, and more.",
    "version": "0.79.0"
  },
  "plugins": [
    {
      "name": "product-manager-skills",
      "source": "./",
      "description": "A comprehensive library of PM skills covering discovery, strategy, delivery, finance, AI orchestration, and career leadership.",
      "category": "productivity",
      "strict": false
    }
  ]
}

After this, one plugin installs with all 49 skills + the 6 commands/ slash commands, namespaced under product-manager-skills:.

Issue 2 — commands/README.md loads as a phantom command

Claude Code loads every .md file in a plugin's commands/ directory as a command. commands/README.md (documentation, no command frontmatter) therefore shows up as a command/skill literally named "README" with trigger "Slash command + auto." It's harmless but clutters the list.

Suggested fix

Move the doc out of the runtime directory — e.g. commands/README.mddocs/commands.md (or repo root). Same applies to any other non-command .md under commands/. (skills/ is unaffected because it discovers by SKILL.md inside named subfolders.)

Optional note

With source: "./", the whole repo (app/, research/, docs/, etc.) is copied into the plugin cache. Claude Code only loads skills/, commands/, agents/, hooks/, so the rest is inert — just disk. If you'd rather ship a lean plugin, move the runtime dirs under a plugin/ subtree and point source (or a git-subdir path) at it.

Environment

  • Claude Code desktop, learning output style
  • Library v0.79 (gitCommitSha 70fb6c4...)
  • Windows 11

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions