[PR #2134] [CLOSED] feat(plugin): add a Cursor plugin that registers the pinned REA server #5053

Closed
opened 2026-10-31 01:01:06 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/2134
Author: @GamerDubz
Created: 10/12/2026
Status: ❌ Closed

Base: main ← Head: feat/cursor-plugin


📝 Commits (10+)

  • 6649e8e feat(plugin): make the repository installable as a Claude Code plugin
  • 4c945f5 feat(plugin): add a Codex plugin manifest and self-hosted marketplaces
  • 15a5e08 fix(release): treat the plugin manifests as release-version metadata
  • d206a19 Merge remote-tracking branch 'origin/main' into feat/claude-code-plugin
  • a34e48b test(release): cover plugin manifests in the publication history check
  • 2aea370 fix(plugin): declare the capabilities Codex plugin validation requires
  • d3359eb fix(plugin): give the Codex plugin server REA's 30-second startup timeout
  • e8e265a docs(plugin): tell plugin users how to check readiness without rea setup
  • 2f134aa docs(plugin): run the plugin readiness check through npx
  • 102661c fix(plugin): pin the plugin server launch to the release version

📊 Changes

24 files changed (+1061 additions, -23 deletions)

View changed files

➕ .agents/plugins/marketplace.json (+20 -0)
📝 .agents/skills/reverse-engineer-anything/SKILL.md (+3 -0)
📝 .agents/skills/reverse-engineer-anything/references/connection-and-recovery.md (+28 -1)
➕ .claude-plugin/marketplace.json (+17 -0)
➕ .claude-plugin/plugin.json (+30 -0)
➕ .codex-plugin/plugin.json (+50 -0)
➕ .cursor-plugin/mcp.json (+11 -0)
➕ .cursor-plugin/plugin.json (+20 -0)
📝 .oxfmtrc.json (+4 -0)
📝 docs/installation.md (+86 -0)
📝 docs/releasing.md (+3 -1)
📝 package.json (+2 -0)
📝 release-please-config.json (+30 -0)
➕ scripts/lib/packageRunnerCommand.d.mts (+7 -0)
➕ scripts/lib/packageRunnerCommand.mjs (+62 -0)
📝 scripts/lib/release-checkpoint.mjs (+40 -0)
📝 scripts/lib/release-notes.mjs (+52 -1)
➕ scripts/plugin-mcp-launcher.mjs (+94 -0)
📝 src/application/ClientRegistrationIdentity.ts (+7 -8)
📝 tests/boundary/filesystem/releaseCheckpoint.test.ts (+77 -1)

...and 4 more files

📄 Description

Draft, stacked on #1977. This branch is built on that PR's branch, so until #1977 merges the diff here also shows its commits. The change that belongs to this PR is the single commit 90c9b78.

Summary

Adds a Cursor plugin manifest so Cursor can load REA as a plugin, alongside the Claude Code and Codex plugins from #1977. No issue is linked; it follows from that PR.

Problem and expected behavior

Use case: a Cursor user installs REA as a plugin and gets the rea MCP server at the version the plugin declares. Today Cursor users can only use rea setup --client cursor.

Change and scope

  • .cursor-plugin/plugin.json — manifest (name, displayName, version, metadata) with "mcpServers": "./.cursor-plugin/mcp.json".
  • .cursor-plugin/mcp.json — the server entry, npx -y rea-agents@6.4.0 mcp, in the { "mcpServers": { … } } file shape Cursor's own plugins use.
  • Release wiring for both files, matching the other manifests: Release Please extra-files, the publication checkpoint (version and full launch specifier), the release-only allowlist, and the oxfmt exemption.
  • docs/installation.md and docs/releasing.md.

The skill is not bundled, and that is the main limitation. Cursor's skills field takes a directory of skill folders. .agents/skills/ also contains the maintainer-only rea-changelog-update and rea-tool-design skills, so pointing at it would expose those to every user, and I found no evidence that Cursor accepts a path to a single skill folder. This is the same root question as the open threads on #1977 about a canonical skills/ layout; once that is decided, the skill can be added here. Until then this plugin gives Cursor the server only, and the docs say to use rea setup --client cursor when the workflow instructions are wanted.

Not included: a .cursor-plugin/marketplace.json (Cursor documents it for multi-plugin repositories), a logo, and any install command in the docs (Cursor's documentation describes marketplace submission, not installing from a repository, so I did not write one).

Contract and boundary impact

  • Semantic owner and earliest changed stage: not applicable (distribution metadata).
  • CLI and MCP/tool-catalog contract: none.
  • Provider, bridge, target-format, or platform compatibility: none.
  • Evidence, artifact, provenance, or reconstruction contract: none.
  • Process execution, authorization, cleanup, or containment impact: none in REA; Cursor launches the same pinned npx … mcp command.
  • Generated metadata, package, or installation impact: adds a Cursor plugin installation path. package.json#files is unchanged, so the npm tarball is unaffected. The publication checkpoint now requires both new files.

Evidence and regression coverage

  • Tests added or updated: releaseConfiguration.test.ts (Release Please entries, pin, stored form), releaseCheckpoint.test.ts (stale version, stale launch, bare-version launch for the Cursor files), releaseNotes.test.ts (allowlist).
  • Base reproduction or other evidence: source-derived. The manifest shape follows Cursor's plugin documentation and the manifests in cursor/plugins and cursor/plugin-template, where "mcpServers": "./mcp.json" points at a file with a top-level mcpServers object.
  • User-visible CLI/MCP output: not applicable.
  • Remaining proof gaps: not loaded in Cursor. No Cursor CLI or app was available, so installation, server start-up, and whether Cursor on Windows can launch a bare npx are all unverified. Cursor's template validator targets a multi-plugin marketplace layout, so I did not run it; I checked its rules by reading (name pattern, referenced path exists, safe relative path).

Validation performed

Windows 11, Node 24.21.0, at 90c9b78:

  • npm run check — passed.
  • npm run docs:check — passed.
  • npx vitest run tests/conformance/releaseConfiguration.test.ts tests/boundary/filesystem/releaseCheckpoint.test.ts — 58 passed, 4 skipped.
  • release-please 17.3.0 GenericJson over all plugin files for a simulated 6.5.0 release — .cursor-plugin/plugin.json version and .cursor-plugin/mcp.json launch both updated, one line each, stored form unchanged.

Not run: releaseNotes.test.ts (does not run on Windows; the change extends a list in a test verified on Linux in #1977), npm run verify:package, any Linux run, and anything in Cursor.

Compatibility, safety, and release

  • Breaking changes or migration steps: none.
  • Real Hopper/Ghidra, browser, or OS coverage: none.
  • Package or release metadata impact: two more Release Please extra-files; the checkpoint requires both files, so a candidate cut from older source fails it.
  • Security, privacy, process, or containment review: the server launch is version-pinned. A user with both this plugin and a rea setup registration in Cursor would get two rea servers.

Review checklist

  • This PR addresses a concrete problem or an agreed enhancement.
  • The PR has one focused outcome and the title follows type(scope): outcome.
  • Related issue is linked, or the reason for not linking one is stated above.
  • Tests cover changed observable behavior and meaningful failure paths. (Release behaviour only; loading in Cursor is not covered.)
  • Owning docs, contracts, and generated metadata are updated where needed.
  • User-visible CLI/MCP changes include representative output. (Not applicable.)
  • I checked the final diff for secrets, unrelated cleanup, and unsupported claims.

🤖 Generated with Claude Code


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/2134 **Author:** [@GamerDubz](https://github.com/GamerDubz) **Created:** 10/12/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `feat/cursor-plugin` --- ### 📝 Commits (10+) - [`6649e8e`](https://github.com/morluto/rea/commit/6649e8e7ba247d8366d6be5af0288134cb92de63) feat(plugin): make the repository installable as a Claude Code plugin - [`4c945f5`](https://github.com/morluto/rea/commit/4c945f570d0b1d90cb8429f956fec6c83a2aafde) feat(plugin): add a Codex plugin manifest and self-hosted marketplaces - [`15a5e08`](https://github.com/morluto/rea/commit/15a5e08338e96b11f9c1eaab4def96b076f2cb4b) fix(release): treat the plugin manifests as release-version metadata - [`d206a19`](https://github.com/morluto/rea/commit/d206a19c7db0e203b71e2d0af7a83dcd26f1f8a4) Merge remote-tracking branch 'origin/main' into feat/claude-code-plugin - [`a34e48b`](https://github.com/morluto/rea/commit/a34e48b35b7f8949f0147328e904cd41981d4886) test(release): cover plugin manifests in the publication history check - [`2aea370`](https://github.com/morluto/rea/commit/2aea370e1ca61f79f2117e92a0bc626e619032b5) fix(plugin): declare the capabilities Codex plugin validation requires - [`d3359eb`](https://github.com/morluto/rea/commit/d3359ebef010e030a4dd1d1d32cb8a7a11aa707c) fix(plugin): give the Codex plugin server REA's 30-second startup timeout - [`e8e265a`](https://github.com/morluto/rea/commit/e8e265a0bc0b7232c49a91ad53bc38260da1ad3b) docs(plugin): tell plugin users how to check readiness without rea setup - [`2f134aa`](https://github.com/morluto/rea/commit/2f134aaa7e729fa1d7d4f86e925c4be95464b799) docs(plugin): run the plugin readiness check through npx - [`102661c`](https://github.com/morluto/rea/commit/102661ca6fd17b270ffa25e2397eb80c01b08044) fix(plugin): pin the plugin server launch to the release version ### 📊 Changes **24 files changed** (+1061 additions, -23 deletions) <details> <summary>View changed files</summary> ➕ `.agents/plugins/marketplace.json` (+20 -0) 📝 `.agents/skills/reverse-engineer-anything/SKILL.md` (+3 -0) 📝 `.agents/skills/reverse-engineer-anything/references/connection-and-recovery.md` (+28 -1) ➕ `.claude-plugin/marketplace.json` (+17 -0) ➕ `.claude-plugin/plugin.json` (+30 -0) ➕ `.codex-plugin/plugin.json` (+50 -0) ➕ `.cursor-plugin/mcp.json` (+11 -0) ➕ `.cursor-plugin/plugin.json` (+20 -0) 📝 `.oxfmtrc.json` (+4 -0) 📝 `docs/installation.md` (+86 -0) 📝 `docs/releasing.md` (+3 -1) 📝 `package.json` (+2 -0) 📝 `release-please-config.json` (+30 -0) ➕ `scripts/lib/packageRunnerCommand.d.mts` (+7 -0) ➕ `scripts/lib/packageRunnerCommand.mjs` (+62 -0) 📝 `scripts/lib/release-checkpoint.mjs` (+40 -0) 📝 `scripts/lib/release-notes.mjs` (+52 -1) ➕ `scripts/plugin-mcp-launcher.mjs` (+94 -0) 📝 `src/application/ClientRegistrationIdentity.ts` (+7 -8) 📝 `tests/boundary/filesystem/releaseCheckpoint.test.ts` (+77 -1) _...and 4 more files_ </details> ### 📄 Description > **Draft, stacked on #1977.** This branch is built on that PR's branch, so until #1977 merges the diff here also shows its commits. The change that belongs to this PR is the single commit `90c9b78`. ## Summary Adds a Cursor plugin manifest so Cursor can load REA as a plugin, alongside the Claude Code and Codex plugins from #1977. No issue is linked; it follows from that PR. ## Problem and expected behavior Use case: a Cursor user installs REA as a plugin and gets the `rea` MCP server at the version the plugin declares. Today Cursor users can only use `rea setup --client cursor`. ## Change and scope - `.cursor-plugin/plugin.json` — manifest (`name`, `displayName`, `version`, metadata) with `"mcpServers": "./.cursor-plugin/mcp.json"`. - `.cursor-plugin/mcp.json` — the server entry, `npx -y rea-agents@6.4.0 mcp`, in the `{ "mcpServers": { … } }` file shape Cursor's own plugins use. - Release wiring for both files, matching the other manifests: Release Please `extra-files`, the publication checkpoint (version and full launch specifier), the release-only allowlist, and the `oxfmt` exemption. - `docs/installation.md` and `docs/releasing.md`. **The skill is not bundled, and that is the main limitation.** Cursor's `skills` field takes a directory of skill folders. `.agents/skills/` also contains the maintainer-only `rea-changelog-update` and `rea-tool-design` skills, so pointing at it would expose those to every user, and I found no evidence that Cursor accepts a path to a single skill folder. This is the same root question as the open threads on #1977 about a canonical `skills/` layout; once that is decided, the skill can be added here. Until then this plugin gives Cursor the server only, and the docs say to use `rea setup --client cursor` when the workflow instructions are wanted. Not included: a `.cursor-plugin/marketplace.json` (Cursor documents it for multi-plugin repositories), a logo, and any install command in the docs (Cursor's documentation describes marketplace submission, not installing from a repository, so I did not write one). ## Contract and boundary impact - Semantic owner and earliest changed stage: not applicable (distribution metadata). - CLI and MCP/tool-catalog contract: none. - Provider, bridge, target-format, or platform compatibility: none. - Evidence, artifact, provenance, or reconstruction contract: none. - Process execution, authorization, cleanup, or containment impact: none in REA; Cursor launches the same pinned `npx … mcp` command. - Generated metadata, package, or installation impact: adds a Cursor plugin installation path. `package.json#files` is unchanged, so the npm tarball is unaffected. The publication checkpoint now requires both new files. ## Evidence and regression coverage - Tests added or updated: `releaseConfiguration.test.ts` (Release Please entries, pin, stored form), `releaseCheckpoint.test.ts` (stale version, stale launch, bare-version launch for the Cursor files), `releaseNotes.test.ts` (allowlist). - Base reproduction or other evidence: source-derived. The manifest shape follows Cursor's plugin documentation and the manifests in `cursor/plugins` and `cursor/plugin-template`, where `"mcpServers": "./mcp.json"` points at a file with a top-level `mcpServers` object. - User-visible CLI/MCP output: not applicable. - Remaining proof gaps: **not loaded in Cursor.** No Cursor CLI or app was available, so installation, server start-up, and whether Cursor on Windows can launch a bare `npx` are all unverified. Cursor's template validator targets a multi-plugin marketplace layout, so I did not run it; I checked its rules by reading (name pattern, referenced path exists, safe relative path). ## Validation performed Windows 11, Node 24.21.0, at `90c9b78`: - `npm run check` — passed. - `npm run docs:check` — passed. - `npx vitest run tests/conformance/releaseConfiguration.test.ts tests/boundary/filesystem/releaseCheckpoint.test.ts` — 58 passed, 4 skipped. - release-please 17.3.0 `GenericJson` over all plugin files for a simulated 6.5.0 release — `.cursor-plugin/plugin.json` version and `.cursor-plugin/mcp.json` launch both updated, one line each, stored form unchanged. Not run: `releaseNotes.test.ts` (does not run on Windows; the change extends a list in a test verified on Linux in #1977), `npm run verify:package`, any Linux run, and anything in Cursor. ## Compatibility, safety, and release - Breaking changes or migration steps: none. - Real Hopper/Ghidra, browser, or OS coverage: none. - Package or release metadata impact: two more Release Please `extra-files`; the checkpoint requires both files, so a candidate cut from older source fails it. - Security, privacy, process, or containment review: the server launch is version-pinned. A user with both this plugin and a `rea setup` registration in Cursor would get two `rea` servers. ## Review checklist - [x] This PR addresses a concrete problem or an agreed enhancement. - [x] The PR has one focused outcome and the title follows `type(scope): outcome`. - [x] Related issue is linked, or the reason for not linking one is stated above. - [x] Tests cover changed observable behavior and meaningful failure paths. (Release behaviour only; loading in Cursor is not covered.) - [x] Owning docs, contracts, and generated metadata are updated where needed. - [x] User-visible CLI/MCP changes include representative output. (Not applicable.) - [x] I checked the final diff for secrets, unrelated cleanup, and unsupported claims. 🤖 Generated with [Claude Code](https://claude.com/claude-code) --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-10-31 01:01:06 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#5053
No description provided.