Repository navigation
Conversation
Add a portable plugin.json beside .cursor-plugin/plugin.json so Codex, GitHub Copilot, and other conformant clients can load the plugin. Add $schema and type to mcp.json, and re-vendor coder/skills at 3c99837 so the workspaces skill name matches its directory. The validator now checks plugin.json, mcp.json, skill names, and that both manifests agree; CI requires all three versions to match. Bump to 0.3.0. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YbnTXGyHn3KBrSw2R4D12
Extend validate-template.mjs to check plugin.json and mcp.json against the closed Agent Plugins 1.0 schemas, require skill names to match their directories, and require plugin.json and .cursor-plugin/plugin.json to agree. Warn that a placeholder in an MCP url is honored only by Cursor. Add an "Other agents" section to the README. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YbnTXGyHn3KBrSw2R4D12
The spec forbids placeholders in an MCP url, and every Coder deployment has its own URL. Move the server from mcp.json to .cursor-plugin/mcp.json and point the Cursor manifest at it with mcpServers, which replaces root mcp.json discovery in Cursor. The portable package now has no mcp.json, so conformant clients load the skills and never see an invalid MCP entry. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YbnTXGyHn3KBrSw2R4D12
The server now lives in .cursor-plugin/mcp.json. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YbnTXGyHn3KBrSw2R4D12
…s is set Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_019YbnTXGyHn3KBrSw2R4D12
matifali
marked this pull request as draft
October 6, 2026 17:02
Member
Author
|
Closing for now: Agent Plugins 1.0 has no way to pass a per-deployment URL to an MCP server, and we want the HTTP MCP server, not stdio.
Every Coder deployment has its own URL, so the server can only work in Cursor, through its The branch Generated by Claude Code |
Member
Author
|
Upstream request: agentplugins/agent-plugins-spec#7 (comment) Generated by Claude Code |
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.
Closes #4
Summary
Makes
plugins/coderloadable as an Agent Plugins 1.0 package, so Codex, GitHub Copilot, and other conformant clients can load the four skills. The portable files sit next to the Cursor ones.plugins/coder/plugin.json(closed schema:$schema,name,version,description,author,homepage,repository,license,keywords). Cursor-only fields (displayName,logo,mcpServers,variables) stay in.cursor-plugin/plugin.json.mcp.jsonto.cursor-plugin/mcp.jsonand point the Cursor manifest at it with"mcpServers": ".cursor-plugin/mcp.json". Cursor'smcpServersfield replaces rootmcp.jsondiscovery. The file content is unchanged, so Cursor still expands${CODER_URL}. The portable package now has no rootmcp.json, which the spec allows (§6.2).coder/skillsat3c99837. Theworkspacesskill was namedcoder-workspaces, which violates the Agent Skills rule thatnamematch its directory; fixed upstream in fix(workspaces): match skill name to its directory skills#6. The re-vendor is a one-line diff.scripts/validate-template.mjsnow checksplugin.jsonagainst the closed 1.0 schema, requires skillnameto equal its directory (anddescription≤ 1024 chars), requires the two manifests to agree on shared fields, and still validates a rootmcp.jsonagainst the MCP schema if one is ever added.validate.ymlnow requiresplugin.json,.cursor-plugin/plugin.json, andmarketplace.jsonversions to match.0.3.0, add a CHANGELOG entry, update CONTRIBUTING and VENDOR for the second manifest, and add an "Other agents" section to the README.Why the MCP server stays Cursor-only
Every Coder deployment has its own URL, and the spec forbids placeholder expansion in an MCP
url(§7.2.1). The spec has no mechanism for user-supplied install-time settings, so there is no conformant way to express a per-deployment HTTP URL. Putting${CODER_URL}in a rootmcp.jsonwould make strict clients skip the entry as invalid, and possibly warn. Keeping it in a Cursor-only path avoids that. Only HTTP is supported by design; a stdio server (coder exp mcp server) was considered and rejected. Commands (/coder-agent) are not part of the standard either.Test plan
node scripts/validate-template.mjspasses (only warning: nohooks/hooks.json)coder-workspacesname, oldmcp.jsonshape, version drift between manifests, a Cursor-only field inplugin.json, and a missingmcpServerspathnode .github/scripts/sync-skills.mjsproduces no diff against the new pinvalidate.ymlsimulated: all three versions are0.3.0plugins/coderlocally in Cursor and confirm thecoderMCP server still appears in Tools & MCP,/coder-agentworks, and theCODER_URLprompt loads. Cursor's reference saysmcpServersreplaces root discovery, but I couldn't test it here, and this is the one change that could regress Cursor behavior.Merging bumps the version to
0.3.0, so thereleaseworkflow will tagv0.3.0and publish a GitHub Release.🤖 Generated with Claude Code
https://claude.ai/code/session_019YbnTXGyHn3KBrSw2R4D12