Skip to content

Restructure into a per-skill plugin marketplace - #15

Open
thefactremains wants to merge 1 commit into
mainfrom
feat/marketplace-per-skill-plugins
Open

Restructure into a per-skill plugin marketplace#15
thefactremains wants to merge 1 commit into
mainfrom
feat/marketplace-per-skill-plugins

Conversation

@thefactremains

Copy link
Copy Markdown
Member

What this does

Turns this repo into an installable Claude Code plugin marketplace. A marketplace entry has to point at a plugin directory, and a plugin's skills must live at <plugin>/skills/<name>/SKILL.md — so the skills had to move out of the repo root.

Structure: one plugin per skill. All 19 skills become 19 independently installable plugins, so users take only what they need.

.claude-plugin/marketplace.json          # marketplace: "percona-skills"
plugins/<skill-name>/
  .claude-plugin/plugin.json             # version 1.0.0
  skills/<skill-name>/SKILL.md
  skills/<skill-name>/references/        # where a skill has one

Every skill moved with git mv, so git log --follow still traces each SKILL.md back through its full history. No SKILL.md content changed — only locations.

Marketplace name

Named percona-skills, deliberately not percona-labPercona-Lab/claude-plugins already uses percona-lab, and two marketplaces sharing a name collide. Both can now be added side by side. plugin.json field style (name, version, author: {"name": "Percona Lab"}, description, repository, license) matches that repo so the two stay consistent.

Install

/plugin marketplace add Percona-Lab/skills
/plugin install mysql-to-percona@percona-skills

Or /plugin to browse all 19 interactively.

⚠️ Breaking changes for anyone who installed from the old root-level layout

The old root-level layout is gone. Skills moved from <skill-name>/SKILL.md to plugins/<skill-name>/skills/<skill-name>/SKILL.md. Specifically:

  • npx skills add Percona-Lab/skills no longer works. The skills CLI discovers skills at the repo root; they are now two levels down. Both the interactive form and the single-skill form (npx skills add Percona-Lab/skills/mysql-to-percona) stop resolving. This is the biggest loss, and it hits the non-Claude audience (Codex, Cursor, Windsurf, Gemini CLI) hardest — that CLI was their documented one-liner. They now need the curl path or a manual copy.
  • Every old raw-content URL 404s. raw.githubusercontent.com/Percona-Lab/skills/main/<skill-name>/SKILL.md needs the plugins/<skill-name>/skills/ prefix inserted. Any script, runbook, internal doc, or CI job that curls a skill by its old path breaks silently at the HTTP layer.
  • Symlinked dev clones break. The ln -s ~/code/percona-skills/<skill-name> ~/.claude/skills/<skill-name> loop from TESTING.md now points at nothing. Updated in this PR; anyone who ran the old version needs to re-point at plugins/<skill-name>/skills/<skill-name>.
  • Already-installed copies keep working, but go stale. Files previously copied into ~/.claude/skills/ are untouched and keep functioning — they just will never pick up updates from the old paths again. Re-install to resume getting changes.
  • Links into skill files from bookmarks, issues, Slack, or external docs need the new prefix. In-repo links are updated here.

There is no redirect or compatibility shim: GitHub does not rewrite raw paths, so nothing can keep the old URLs alive. A follow-up could restore npx skills support by also exposing a root-level skills/ directory, if the non-Claude install path matters enough to maintain both.

Verification run

  • Both marketplace.json and all 19 plugin.json files parse as valid JSON.
  • All 19 marketplace source values are relative ./plugins/<name> paths.
  • Every source resolves to a real directory containing skills/<name>/SKILL.md.
  • Each plugin.json carries name, version (1.0.0), description, author, repository, license, and its name matches its marketplace entry.
  • Exactly 19 SKILL.md files in the repo, all under plugins/.
  • No SKILL.md left at the repo root or in any root-level directory.
  • All four references/ directories moved intact with their skills.
  • git status shows the moves as renames (R); git log --follow traces history through them.

Branched from main (b6112a9), not from a roadmap branch.

🤖 Generated with Claude Code

Turn the repo into an installable Claude Code plugin marketplace. Each of
the 19 skills becomes its own plugin so users install only what they want.

- git mv every skill dir to plugins/<name>/skills/<name>/ (history preserved)
- add plugins/<name>/.claude-plugin/plugin.json for each, at version 1.0.0,
  matching the field style used in Percona-Lab/claude-plugins
- add .claude-plugin/marketplace.json naming the marketplace "percona-skills",
  deliberately distinct from the "percona-lab" marketplace in
  Percona-Lab/claude-plugins so the two can coexist
- README/TESTING: document the /plugin install path and the breakage from
  dropping the old root-level layout

No SKILL.md content changed - only locations.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant