From c4f2885905baa31751058e07375620d4a201aa16 Mon Sep 17 00:00:00 2001 From: Kwasi Ankomah Date: Thu, 25 Jun 2026 12:24:01 -0700 Subject: [PATCH] Align plugin install name with manifest (sambanova-plugin-cc) The marketplace catalog entry named the plugin `samba-plugin` while the plugin's own manifest (and its MCP server, skills, and hooks) named it `sambanova-plugin-cc`. Claude Code installs under the catalog name but reads the manifest name for its identity, so the two disagreeing caused install/ update tracking friction and an inconsistent MCP tool prefix. Unify on the manifest name `sambanova-plugin-cc`: - marketplace.json: plugin entry name -> sambanova-plugin-cc (source path unchanged) - README: install command -> /plugin install sambanova-plugin-cc - add a guard test asserting the marketplace entry name matches the manifest name, so this can't drift again (sibling to the existing plugin/server name-parity test) --- .claude-plugin/marketplace.json | 2 +- README.md | 2 +- tests/test_manifests.py | 23 ++++++++++++++++++++++- 3 files changed, 24 insertions(+), 3 deletions(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index b826d28..c75224e 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -5,7 +5,7 @@ }, "plugins": [ { - "name": "samba-plugin", + "name": "sambanova-plugin-cc", "source": "./plugins/samba-plugin", "description": "Adds a variety of skills for delegating tasks to the sambanova cloud." } diff --git a/README.md b/README.md index 14f4d84..29351eb 100644 --- a/README.md +++ b/README.md @@ -16,7 +16,7 @@ In Claude Code, run: ### Step 2: Install the plugin ``` -/plugin install samba-plugin +/plugin install sambanova-plugin-cc ``` ## Prerequisites diff --git a/tests/test_manifests.py b/tests/test_manifests.py index e58e517..65cbcf1 100644 --- a/tests/test_manifests.py +++ b/tests/test_manifests.py @@ -11,7 +11,14 @@ except ModuleNotFoundError: # pragma: no cover tomllib = None -from conftest import MCP_JSON, PLUGIN_JSON, PLUGIN_ROOT, mcp_server_name, plugin_name +from conftest import ( + MCP_JSON, + PLUGIN_JSON, + PLUGIN_ROOT, + REPO_ROOT, + mcp_server_name, + plugin_name, +) def _json_files(): @@ -52,6 +59,20 @@ def test_plugin_name_matches_mcp_server_key(): assert plugin_name() == mcp_server_name() +def test_marketplace_plugin_name_matches_manifest(): + # The marketplace catalog entry (the install name) and the plugin's own + # manifest name must agree; a mismatch confuses install/update tracking and + # the MCP tool prefix. + marketplace = json.loads( + (REPO_ROOT / ".claude-plugin" / "marketplace.json").read_text(encoding="utf-8") + ) + names = {p["name"] for p in marketplace["plugins"]} + assert plugin_name() in names, ( + f"marketplace.json plugin names {names} must include the manifest " + f"name {plugin_name()!r}" + ) + + def test_hooks_session_start_defined(): hooks = json.loads((PLUGIN_ROOT / "hooks" / "hooks.json").read_text(encoding="utf-8")) session_start = hooks.get("hooks", {}).get("SessionStart")