Skip to content

Package the repo as a Mobbin agent plugin - #1

Merged
atsixian merged 7 commits into
mainfrom
sixian/prj-2801-plugin-manifests
Sep 29, 2026
Merged

atsixian merged 7 commits into
mainfrom
sixian/prj-2801-plugin-manifests

Conversation

@atsixian

@atsixian atsixian commented Sep 29, 2026 •

Copy link
Copy Markdown
Collaborator

This PR packages the repo as the Mobbin agent plugin. On agents that support plugins, a single install now sets up the skills in skills/ and Mobbin's hosted MCP server (https://api.mobbin.com/mcp) together.

This repo becomes where the Mobbin plugin is published, taking over from the Cursor and Grok plugin files in mobbin/mobbin-mcp-server. All manifests are set to version 1.1.0. Those plugins are at 1.0.0 today, so people who already have them installed will see this as an update.

What's added

File Read by What it does Docs
.claude-plugin/plugin.json Claude Code The plugin manifest. mcpServers points to ./mcp.json, so installing the plugin also installs the MCP server. The plugin name mobbin is prefixed to every skill name, e.g. mobbin:mobbin-search. Plugin manifest reference, mcpServers, standard layout
.claude-plugin/marketplace.json Claude Code Turns the repo into a marketplace. Users install with /plugin marketplace add mobbin/skills, then /plugin install mobbin@mobbin. Create a marketplace, marketplace reference
plugin.json VS Code / GitHub Copilot, Codex, Cursor, and other Agent Plugins clients A manifest that isn't tied to any one agent, following Agent Plugins 1.0.0. Clients recognize it by its $schema. Agent Plugins 1.0.0 spec, VS Code agent plugins, Codex plugins, Cursor plugins
mcp.json Every host: Agent Plugins clients, Cursor, Grok, and Claude Code (through .claude-plugin/plugin.json) The only MCP server config, in the Agent Plugins format ("type": "streamable-http"). Claude Code accepts streamable-http as an alias for http. Agent Plugins 1.0.0 spec, VS Code: MCP servers in plugins, Claude Code MCP (type alias)
.cursor-plugin/plugin.json Cursor The Cursor manifest. It sets the displayName shown in Cursor Marketplace. Cursor finds skills/ and mcp.json without this file listing them. Cursor plugins
.grok-plugin/plugin.json Grok The Grok manifest, pointing to ./skills/ and ./mcp.json. Same shape as the Grok manifest in mobbin/mobbin-mcp-server, plus a skills field. That manifest writes the MCP path as mcp.json without the ./ prefix. Grok skills, plugins & marketplaces
scripts/validate.mjs, schemas/1.0.0/, package.json, .github/workflows/validate.yml CI Checks plugin.json and mcp.json against the Agent Plugins schemas. The script comes from mobbin/mobbin-agent-plugin, with new checks that the manifests match each other: every host manifest has the same name, version, description, author, homepage, repository and license as plugin.json; any host manifest that sets mcpServers points to ./mcp.json; and the marketplace entry has no version and its description, homepage, repository and license match plugin.json, since Claude Code shows the entry's values over the manifest's. CI runs on pull requests and on pushes to main. Agent Plugins schemas
README.md Users Install steps for Claude Code, VS Code / Copilot, Cursor and npx skills. Setting up the MCP server by hand is now only needed for the skills-only install. npx skills, Agent Skills spec

Claude Code and the Agent Plugins format each need their own manifest: Claude Code reads .claude-plugin/plugin.json, and the Agent Plugins schema is closed, so only its listed fields are allowed (spec §5.2). They share one MCP config. The spec requires it to be mcp.json at the plugin root (§7.2), and Claude Code reads that file through mcpServers. There's no .mcp.json, so opening this repo in Claude Code doesn't ask you to approve a project MCP server (project scope).

Testing

  • npm run validate passes. It fails when one manifest's version doesn't match, e.g. .grok-plugin/plugin.json: version is "1.0.0", but plugin.json has "1.1.0", and when a manifest points mcpServers anywhere else, e.g. .claude-plugin/plugin.json: mcpServers must be "./mcp.json".
  • claude plugin validate . passes (plugin validate).
  • Local install in Claude Code, using a fresh CLAUDE_CONFIG_DIR:
    export CLAUDE_CONFIG_DIR="$(mktemp -d)"
    claude plugin marketplace add ./
    claude plugin install mobbin@mobbin
    claude plugin details mobbin   # Skills (1) mobbin-search, MCP servers (1) mobbin
    claude mcp list                # plugin:mobbin:mobbin: https://api.mobbin.com/mcp (HTTP) - ! Needs authentication
    Needs authentication means the server is reachable and is waiting for OAuth sign-in.
  • Still to verify:
    • Sign-in and search in Claude Code: run claude with the same CLAUDE_CONFIG_DIR, sign in through /mcp, and ask a design question. mobbin-search should load and call search_screens.
    • VS Code / Copilot: turn on chat.plugins.enabled, run Chat: Install Plugin From Source with the checkout path, and check that the skill and the mobbin MCP server both show up (docs).
    • Cursor: load a local checkout from ~/.cursor/plugins/local/, then check that the skill loads and the MCP server connects (docs).
    • Grok: load a local checkout and check the same. Grok's public docs don't yet describe the manifest fields or which mcp.json formats are accepted, so this is the one to check most carefully.

Follow-up

Migration off mobbin/mobbin-mcp-server is a separate pass: repoint the Cursor Marketplace listing at this repo, remove the Cursor and Grok plugin files from that repo so there's one source per host, and update the README's Cursor section once the listing has moved. Until then, Cursor Marketplace serves the 1.0.0 plugin from the old repo.

Releasing

Bump version in plugin.json and in all three host manifests (.claude-plugin/, .cursor-plugin/, .grok-plugin/). The validator fails if they don't match. Claude Code users only receive new files when the version changes (Release a new version).

🤖 Generated with Claude Code

atsixian and others added 7 commits September 29, 2026 12:40
Add Claude Code (.claude-plugin/, .mcp.json) and Agent Plugins 1.0.0
(plugin.json, mcp.json) manifests so hosts install the skills together
with the hosted MCP server. Port the schema validator from
mobbin-agent-plugin and extend it to check the manifests agree.
Document each file and how to test in CONTRIBUTING.md.

Refs PRJ-2801

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Add .cursor-plugin/ and .grok-plugin/ manifests so their listings can
move here from mobbin-mcp-server. Bump every manifest to 1.1.0 so
existing Cursor and Grok installs (1.0.0) see an update, and have the
validator check the new manifests too.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude Code accepts streamable-http as an alias for http, so its
manifest can point at the Agent Plugins mcp.json instead of a separate
.mcp.json. One config for every host, and opening the repo in Claude
Code no longer prompts to approve a project MCP server.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each check is its own function that returns its problems, and the
runner prints PASS or FAIL per check, so a failure shows which checks
still passed. Schema errors name the unexpected field, and unreadable
JSON is reported as a failure instead of crashing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude Code shows the marketplace entry's display fields over the manifest's,
so the validator now compares the entry's description, homepage, repository
and license with plugin.json, and compares author, homepage and repository
across the host manifests. plugin.json gains author.email so all four
manifests share one author block.

CI runs on pull requests and pushes to main, instead of every push.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The plugin description now names what's bundled and what it's for, in the
same shape as the Supabase and Figma plugins. The marketplace row drops
"for AI coding agents". Keywords are the plain words people search on.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@atsixian
atsixian merged commit 48f7d83 into main Sep 29, 2026
1 check passed
@atsixian
atsixian deleted the sixian/prj-2801-plugin-manifests branch September 29, 2026 08:47
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