Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .claude-plugin/marketplace.json
Original file line number Diff line number Diff line change
Expand Up @@ -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."
}
Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ In Claude Code, run:
### Step 2: Install the plugin

```
/plugin install samba-plugin
/plugin install sambanova-plugin-cc
```

## Prerequisites
Expand Down
23 changes: 22 additions & 1 deletion tests/test_manifests.py
Original file line number Diff line number Diff line change
Expand Up @@ -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():
Expand Down Expand Up @@ -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")
Expand Down
Loading