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

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