diff --git a/.agents/plugins/marketplace.json b/.agents/plugins/marketplace.json index 4064816..18d3784 100644 --- a/.agents/plugins/marketplace.json +++ b/.agents/plugins/marketplace.json @@ -1,7 +1,7 @@ { - "name": "colgrep-mcp-marketplace", + "name": "cracking-shells", "interface": { - "displayName": "colgrep" + "displayName": "CrackingShells" }, "plugins": [ { diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 35ca053..f3a643d 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -1,6 +1,6 @@ { - "name": "colgrep-mcp", - "description": "Marketplace for colgrep-mcp: the product plugin (semantic and hybrid code search as MCP tools) and the maintainer's dev plugin of skills.", + "name": "cracking-shells", + "description": "CrackingShells marketplace. Here: colgrep-mcp, the product plugin (semantic and hybrid code search as MCP tools), and colgrep-mcp-dev, the maintainer's plugin of skills.", "owner": { "name": "Eliott Jacopin", "email": "eliott.jacopin@riken.jp" diff --git a/AGENTS.md b/AGENTS.md index da41e5a..f0d771b 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -35,7 +35,7 @@ runs the same roadmap sequentially under the same discipline. Load the ```bash claude --plugin-dir ./dev # from a clone -claude plugin install colgrep-mcp-dev@colgrep-mcp # from the repo's marketplace +claude plugin install colgrep-mcp-dev@cracking-shells # from the repo's marketplace ``` `colgrep-mcp-dev` (`dev/`) ships the maintainer skills; the product plugin diff --git a/README.md b/README.md index 0cad103..ba2e759 100644 --- a/README.md +++ b/README.md @@ -29,7 +29,7 @@ claude plugin marketplace add CrackingShells/colgrep-mcp ``` ```bash -claude plugin install colgrep-mcp@colgrep-mcp +claude plugin install colgrep-mcp@cracking-shells ``` Add `--scope project` to the marketplace command to declare it in the repository's own `.claude/settings.json` instead of your user settings, so teammates who open this project pick it up too. @@ -41,7 +41,7 @@ codex plugin marketplace add CrackingShells/colgrep-mcp ``` ```bash -codex plugin add colgrep-mcp@colgrep-mcp-marketplace +codex plugin add colgrep-mcp@cracking-shells ``` The Codex manifests are `.agents/plugins/marketplace.json` and `.codex-plugin/plugin.json`. diff --git a/dev/README.md b/dev/README.md index fe56d6d..c035995 100644 --- a/dev/README.md +++ b/dev/README.md @@ -7,7 +7,7 @@ installs it: ```bash claude --plugin-dir ./dev # from a clone -claude plugin install colgrep-mcp-dev@colgrep-mcp # from the repo's own marketplace +claude plugin install colgrep-mcp-dev@cracking-shells # from the repo's own marketplace ``` The product plugin (`colgrep-mcp`, repository root) never ships these skills; diff --git a/dev/skills/stack-traps/references/claude-code.md b/dev/skills/stack-traps/references/claude-code.md index 3f721b7..f3a573f 100644 --- a/dev/skills/stack-traps/references/claude-code.md +++ b/dev/skills/stack-traps/references/claude-code.md @@ -62,27 +62,33 @@ hand and never re-tag. ## The install/list command reads oddly or fails to resolve {#namespaces} -**Symptom**: `claude plugin install colgrep-mcp@colgrep-mcp` looks like a -typo (same name on both sides of the `@`), or a plugin/marketplace name -collision seems like it should fail but doesn't — or conversely, an install +**Symptom**: `claude plugin install colgrep-mcp@cracking-shells` names a +marketplace that is not the repository; an install string copied from an +older README or report (`colgrep-mcp@colgrep-mcp`, +`colgrep-mcp@colgrep-mcp-marketplace`) no longer resolves; or an install command copied from Claude Code's convention doesn't work verbatim for Codex. -**Cause**: marketplace names and plugin names live in separate namespaces. -`colgrep-mcp@colgrep-mcp` parses unambiguously as `@` -even though both happen to be named `colgrep-mcp` — a naming coincidence, -not a bug. Codex's own marketplace file names itself `colgrep-mcp-marketplace` -(not `colgrep-mcp`), so the equivalent Codex command is -`codex plugin add colgrep-mcp@colgrep-mcp-marketplace` — the two -ecosystems' install commands don't mirror each other syntactically. A -`source` field of `"./"` or `"./dev"` in a marketplace manifest resolves -relative to the marketplace root, which works for a marketplace added from -a git source or local directory but not for a direct URL to the -`marketplace.json` file itself. (`RI`.) - -**What to do**: don't "fix" the `colgrep-mcp@colgrep-mcp` string as if it -were a typo. When writing install instructions for a second ecosystem, -copy that ecosystem's own marketplace `name`, not Claude Code's. +**Cause**: marketplace names and plugin names live in separate namespaces, +`@`. Both marketplace files +(`.claude-plugin/marketplace.json`, `.agents/plugins/marketplace.json`) name +themselves `cracking-shells`, the organization, so one marketplace can carry +every CrackingShells plugin; the plugin keeps the repository's name. Until +after v0.5.0 the Claude marketplace was named `colgrep-mcp` and the Codex one +`colgrep-mcp-marketplace`, so reports and machines from that period still +carry those strings, and a machine that added the marketplace under the old +name keeps it under that name until it is removed and re-added. A `source` +field of `"./"` or `"./dev"` in a marketplace manifest resolves relative to +the marketplace root, which works for a marketplace added from a git source +or local directory but not for a direct URL to the `marketplace.json` file +itself. (`RI`.) + +**What to do**: on a machine that shows `colgrep-mcp` under +`claude plugin marketplace list`, run +`claude plugin marketplace remove colgrep-mcp` and add it again, then +reinstall `colgrep-mcp@cracking-shells`. When writing install instructions +for a second ecosystem, copy that ecosystem's own marketplace `name`; here +the two happen to match, which is a choice, not a rule. ## `claude -p` / `claude plugin eval` fails with an OAuth error {#oauth} diff --git a/server/tests/test_dev_plugin.py b/server/tests/test_dev_plugin.py index 1e193a7..17e2bb0 100644 --- a/server/tests/test_dev_plugin.py +++ b/server/tests/test_dev_plugin.py @@ -64,7 +64,7 @@ def test_agents_md_names_every_dev_skill(): def test_agents_md_says_how_to_load_the_dev_plugin(): text = AGENTS_MD.read_text() assert "--plugin-dir ./dev" in text or "--plugin-dir dev" in text - assert "colgrep-mcp-dev@colgrep-mcp" in text + assert "colgrep-mcp-dev@cracking-shells" in text def test_every_dev_skill_has_a_name_matching_its_directory_and_a_description():