Skip to content

Add the Claude Code plugin manifests - #72

Merged
00PrabalK00 merged 3 commits into
mainfrom
feat/claude-code-plugin
Aug 4, 2026
Merged

Add the Claude Code plugin manifests#72
00PrabalK00 merged 3 commits into
mainfrom
feat/claude-code-plugin

Conversation

@00PrabalK00

Copy link
Copy Markdown
Owner
/plugin marketplace add 00PrabalK00/Continuum
/plugin install continuum@continuum

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:

initialize -> {'name': 'continuum', 'version': '0.13.0'}
tools -> 25
has record_claim: True | save_progress: True | ask_agent: True

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 that continuum mcp serve is still a real subcommand.

What it does not replace

The plugin still needs continuum on PATH, since that is the command it runs. And it only covers Claude Code, so continuum install remains 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.

`/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

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread README.md
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
@00PrabalK00

Copy link
Copy Markdown
Owner Author

You were right, and exercising the flow found the manifest did not work.

Claude Code reads MCP servers from .mcp.json at the plugin root. I had declared the server as an mcpServers key inside plugin.json, which is ignored. The plugin installed cleanly and registered nothing:

$ claude plugin details continuum@continuum
Component inventory
  Skills (0)
  MCP servers (0)

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 .mcp.json, matching the layout the official plugins use. After reinstalling:

Component inventory
  MCP servers (1)  continuum

Verified with the real CLI rather than by reasoning about it: claude plugin validate . passes, then marketplace add ./, install continuum@continuum, and plugin details reports the server. The local marketplace was removed afterwards so nothing is left on the machine.

Two tests added for the specific shape that looked right and did nothing: the server must be declared in .mcp.json, and plugin.json must not carry an mcpServers key. 750 in the suite.

Worth noting what I still cannot test in CI: whether Claude Code accepts the manifest is only checkable where the claude CLI exists, so these tests guard the layout rather than the acceptance. I verified acceptance by hand and recorded the commands above so it can be repeated.

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
@00PrabalK00
00PrabalK00 merged commit 180084c into main Aug 4, 2026
12 checks passed
@00PrabalK00
00PrabalK00 deleted the feat/claude-code-plugin branch August 4, 2026 07:35
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