Repository navigation
Conversation
Make this repository a Claude Code plugin marketplace so users can find and add the server from inside Claude Code: claude plugin marketplace add DeusData/codebase-memory-mcp claude plugin install codebase-memory@codebase-memory This is slice 1 of #1188: discovery only. The plugin registers the MCP server and nothing else; the skill, the graph agents and the context hooks still come from `codebase-memory-mcp install`. - .claude-plugin/marketplace.json: one plugin, sourced from ./plugin. - plugin/.claude-plugin/plugin.json: version pinned to the current release. Without a pinned version every commit to main would be a new plugin version for installed users. - plugin/.mcp.json: stdio server `npx -y codebase-memory-mcp@0.12.1`. The pin keeps main from advertising a server version npm does not have; the npm package downloads the release binary on first start and verifies it against the release checksums. - .gitignore: the root .mcp.json stays ignored; plugin/.mcp.json is published. - README: install section, and "use one or the other": with both the plugin and `install`, Claude Code runs the server twice under two tool namespaces. - tests/test_version_metadata_contract.sh: both plugin files are release-tracking surfaces; a new claim form reads the npm package spec (`codebase-memory-mcp@X.Y.Z`), and the unregistered-surface sweep now covers plugin/ and .claude-plugin/. The post-release sync that bumps server.json must bump these pins too, or this contract goes red. No language count is stated anywhere in the plugin metadata, so the language-count contract has nothing new to track. Refs #1188 Co-authored-by: Kody <kaidi.shi.1121@gmail.com> Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com>
DeusData
force-pushed
the
feat/claude-code-plugin-marketplace
branch
from
October 20, 2026 22:34
8fbfa21 to
4c09f7c
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What this does
Makes this repository a Claude Code plugin marketplace, so Claude Code users can
find and add the server from inside Claude Code:
This is slice 1 of #1188: discovery only, about seventy hand-written lines and
no C. The direction was decided on #1188 (discovery is the real barrier; the
plugin is a second route to the same product, not a second product).
What slice 1 is:
.claude-plugin/marketplace.json- the marketplace, with one plugin sourcedfrom
./plugin.plugin/.claude-plugin/plugin.json- the plugin manifest, version0.12.1.plugin/.mcp.json- one stdio server,npx -y codebase-memory-mcp@0.12.1..gitignore- the root.mcp.jsonstays ignored;plugin/.mcp.jsonispublished.
tests/test_version_metadata_contract.sh- both plugin files arerelease-tracking surfaces.
What slice 1 is not: the plugin registers the MCP server and nothing else. The
skill, the three graph agents and the context hooks are not in it; they still come
from
codebase-memory-mcp install. The emitter, the PR-time drift gate (slice 2)and the agents and hooks (slice 3) stay open on #1188, which remains the umbrella.
Why the version is pinned (in both files)
plugin.jsoncarries"version": "0.12.1". Without a pinned version, ClaudeCode treats every commit to
mainas a new plugin version for installed users..mcp.jsonlaunchescodebase-memory-mcp@0.12.1, not the bare package name, somainnever advertises a server version that npm does not have, and a userruns exactly the release the plugin names. 0.12.1 is the newest stable tag and
what
server.jsonandpkg/npm/package.jsonstate;npm viewconfirms it ispublished.
gained one claim form, the npm package spec
codebase-memory-mcp@X.Y.Z, because.mcp.jsonhas noversionkeyword next to its pin and the contract'santi-vacuity check would otherwise read it as a surface with no claim. Its sweep
for unregistered surfaces now also covers
plugin/and.claude-plugin/, so alater plugin file that pins the package (a hook command, say) has to be
registered. All of this makes the gate stricter; nothing is exempted.
server.jsonhas to bump these two pins inthe same PR, or the contract goes red there. That is the intended coupling.
Use one or the other
installalready registers the same server for Claude Code. With both the pluginand
install, Claude Code runs the server twice, under two tool namespaces(
mcp__codebase-memory-mcp__*andmcp__plugin_codebase-memory_codebase-memory-mcp__*). The README says so: chooseinstallfor the full setup (skill, agents, hooks), choose the plugin to add justthe server without running an installer.
Proof
Run on macOS (arm64), main at 28a6905.
plugin/.mcp.json is registered as a version surface but states no version(the anti-vacuity check).
.mcp.jsonpinned to 0.12.0: FAIL (newest release is 0.12.1; the surfacesdisagree).
plugin.jsonat 0.12.0: FAIL (same two violations).plugin/hooks/hooks.jsoncarryingcodebase-memory-mcp@0.12.1:FAIL (unregistered surface).
Version-metadata contract passed (13 surfaces, 11 tracking v0.12.1, 13 value(s) checked).passed (7 surfaces, 7 distinct value(s) checked, 162 grammars vendored). No language count appears anywhere in the pluginmetadata.
claude plugin validate --strict(Claude Code 2.1.304) passes for themarketplace at the repository root and for
plugin/.directory and HOME, isolated cbm runtime and cache directories, fresh npm cache,
no model session):
claude plugin marketplace add <checkout>andclaude plugin install codebase-memory@codebase-memorysucceed;claude plugin listshows version 0.12.1, enabled.claude mcp listreportsplugin:codebase-memory:codebase-memory-mcp: npx -y codebase-memory-mcp@0.12.1 - Connected.The first, cold start took 10.9 s, including the npx download of the package
and its 0.12.1 binary; a warm check took 1.1 s.
codebase-memory-mcp 0.12.1.JSON files parse.
Not verified: Windows. No Windows run was done for this slice. Claude Code's
documentation has asked native-Windows users to wrap npx-launched stdio servers in
cmd /c. If that still applies, the plugin's server would not start on nativeWindows, and Windows users should use
codebase-memory-mcp installuntil a laterslice handles it.
What this commits us to: the repository path, the marketplace name
codebase-memoryand theplugin/location become a public install endpoint.Moving any of them later breaks installed users.
Credit
This slice is distilled from @Geek0x0's work on #1188, and the commit carries
their co-author credit. From their branch: the layout (a root
.claude-plugin/marketplace.jsonlisting a./plugintree), the shape of the twoplugin manifests, the single npx stdio server in
plugin/.mcp.json, un-ignoringthat one file, the README install section, and pinning the npx launch to an exact
release (their follow-up in 5072d4d). We cut it down to the discovery slice agreed
on #1188 and adapted it to current
main: the current release pin, no languagecount, and the version-contract registration. Their emitter, drift gate, skill,
agents and hooks are untouched here and stay on #1188 for the next slices. Thank
you, @Geek0x0, for the care that went into all of it.
Refs #1188