Add the Claude Code plugin manifests - #72
Conversation
`/plugin marketplace add 00PrabalK00/Continuum` then `/plugin install continuum@continuum`, which registers the MCP server without anyone approving a listing first. Claude Code reads a marketplace straight from a repository, so this needs no directory and no submission. Verified rather than assumed: the manifests parse, and speaking MCP to the exact command they declare returns serverInfo continuum 0.13.0 and all 25 tools, including record_claim, save_progress and ask_agent. Six tests, because a manifest is read by someone else's tool and so fails silently here. They check the version against the package, the marketplace entry against the plugin, and that `continuum mcp serve` is still a real subcommand rather than one that was renamed out from under the manifest. The README says the plugin still needs `continuum` on PATH, since that is what it runs, and that `continuum install` is still the way to reach Codex and Gemini. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5AfgnF6gZnJxdMEfGrEPc
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 816794a4a7
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
Review asked for the advertised install path to be exercised rather than
asserted, and doing that found the manifest did not work.
Claude Code reads MCP servers from .mcp.json at the plugin root. The
server was declared as an mcpServers key inside plugin.json, which is
ignored. The plugin installed cleanly and registered nothing:
Component inventory
MCP servers (0)
while the README said installing registers the server. The old tests all
passed, because they checked my JSON against my own expectations and
never against the tool that consumes it.
Moved to .mcp.json, matching the layout the official plugins use. After
reinstalling:
Component inventory
MCP servers (1) continuum
Verified with the real CLI end to end: `claude plugin validate .` passes,
`marketplace add ./`, `install continuum@continuum`, and `plugin details`
reports the server. The local marketplace was removed afterwards.
Two tests added: the server is declared in .mcp.json, and plugin.json
does not carry an mcpServers key, since that is the exact shape that
looked correct and did nothing.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01S5AfgnF6gZnJxdMEfGrEPc
|
You were right, and exercising the flow found the manifest did not work. Claude Code reads MCP servers from while the README said installing registers the server. Every test passed, because they compared my JSON against my own expectations and never against the tool that consumes it. That is exactly the gap you named. Moved to Verified with the real CLI rather than by reasoning about it: Two tests added for the specific shape that looked right and did nothing: the server must be declared in Worth noting what I still cannot test in CI: whether Claude Code accepts the manifest is only checkable where the |
The existing rule covered brag-output/ only, so a run that names its directory brag-output-2026-08-04-131006 was swept into a commit by git add -A. Generated output has reached a commit this way before. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S5AfgnF6gZnJxdMEfGrEPc
Claude Code reads a marketplace straight from a repository, so this needs no directory listing and nobody's approval. It registers the MCP server on install.
Verified, not assumed
The manifests parse, and speaking MCP to the exact command they declare answers:
Six tests, because manifests rot quietly
A manifest is only read by someone else's tool, so when it drifts nothing here fails: the version disagrees with the package, or the declared command gets renamed, and the first person to find out is a stranger whose install did nothing. The tests check the version against
__version__, the marketplace entry against the plugin, and thatcontinuum mcp serveis still a real subcommand.What it does not replace
The plugin still needs
continuumon PATH, since that is the command it runs. And it only covers Claude Code, socontinuum installremains the way to reach Codex, Gemini and anything else. The README says both.ChatGPT is not included and cannot be with this design: connectors there need a remote HTTP endpoint, and this is a local stdio server whose whole premise is that nothing leaves your machine.