This matrix verifies that the adjacent Claude implementation was ported by responsibility, not
used only as a visual reference. ADAPTED means the responsibility is present with Cursor-specific
mechanics. No Claude path, event name, global setting, or runtime assumption is copied unchanged.
All 22 reviewed responsibilities are listed: 15 are ADAPTED, 6 are NOT APPLICABLE to this
Cursor installer, and one (Home placeholder resolution) is scope-dependent — ADAPTED for
global scope, NOT APPLICABLE for project scope. A non-applicable row records the verified
boundary and user-facing target instead of silently omitting the source responsibility.
| Responsibility | Adjacent Claude source read | Cursor implementation | Status and adaptation |
|---|---|---|---|
| Public README role | ../claude-plugins/README.md |
README.md |
ADAPTED — concise global quickstart, explicit project alternative, execution flow, and documentation links for Cursor. |
| Documentation index and hierarchy | ../claude-plugins/docs/README.md |
docs/README.md, docs/getting-started/installation.md, docs/reference/global-installation.md, docs/reference/project-loader.md |
ADAPTED — focused Getting Started, global and project architecture, Compatibility, and plugin documentation sections. |
| Thin root bootstrap | ../claude-plugins/setup.sh |
install.sh |
ADAPTED — checks Bun and delegates to the installer service; it does not contain installation logic. |
| Installer service boundaries | ../claude-plugins/scripts/install-hooks.ts, ../claude-plugins/scripts/src/services/setup-runner.ts |
install-hooks.ts, global-install.ts, global-transaction.ts, project-install.ts |
ADAPTED — a thin dispatcher selects global default or explicit project orchestration; guarded file and transaction services remain separate. |
| Marketplace inventory and source resolution | ../claude-plugins/.claude-plugin/marketplace.json, ../claude-plugins/scripts/src/services/setup-plugins.ts |
.cursor-plugin/marketplace.json, global-install.ts, marketplace-sources.ts, plugin-inventory.ts |
ADAPTED — one manifest drives 24 immediate global plugin copies or 24 validated project loader paths; the marketplace root is never treated as one plugin. |
| Hook registration, merge, and ownership | ../claude-plugins/scripts/src/services/settings-manager.ts, ../claude-plugins/scripts/src/services/hook-merge.ts |
project-hooks.ts, project-uninstall.ts |
ADAPTED — records whether this installer added an entry, preserves matching foreign entries and multiplicity, and removes at most one exact owned object. |
| Rules delivery and scope | ../claude-plugins/scripts/src/services/setup-plugins.ts |
global-install.ts, project-install.ts |
ADAPTED — default installation copies the user rule to ~/.cursor/rules/fuse-global.mdc; explicit project mode generates .cursor/rules/fusengine.mdc. |
| Dry-run, idempotence, and uninstall | ../claude-plugins/scripts/src/__tests__/settings-env-purge-hooks-sandbox.test.ts |
global-install.ts, project-install.ts, tests/global-install.test.sh |
ADAPTED — both scopes support dry-run, repeat installation, ownership receipts, guarded refresh, and conservative uninstall. |
| Platform wrappers | ../claude-plugins/setup.sh, ../claude-plugins/setup.ps1 |
install.sh, install.ps1 |
ADAPTED — both wrappers default to user-global scope and select project scope only when an explicit target is supplied. |
| Validation and tests | ../claude-plugins/scripts/src/__tests__/settings-env-purge-hooks-sandbox.test.ts, ../claude-plugins/scripts/src/__tests__/settings-manager.load-save.test.ts |
tests/global-install.test.sh, tests/project-install.test.sh, tests/project-install-transaction.test.sh, verify.ts |
ADAPTED — fake-home and temp-project suites exercise real global and project code, containment, ownership, rollback, concurrency, and verification. |
| Agent Teams enablement | ../claude-plugins/scripts/src/services/settings-manager.ts (enableAgentTeams) |
fuse-ai-pilot/agents/ |
NOT APPLICABLE — the source toggles a Claude-specific experimental setting; Cursor discovers native project plugin agents without that global flag. |
| Status-line settings | ../claude-plugins/scripts/src/services/settings-manager.ts (configureStatusLine) |
core-guards/README.md |
NOT APPLICABLE — Cursor IDE has no plugin-declared target for the source statusLine setting; the verified loss is documented rather than simulated. |
| Status-line dependency setup | ../claude-plugins/scripts/src/services/setup-plugins.ts (setupStatusline) |
core-guards/README.md |
NOT APPLICABLE — the status-line subtree is deliberately absent because no Cursor IDE plugin mechanism can launch it. |
| Plugin dependency installation | ../claude-plugins/scripts/src/services/setup-plugins.ts (installDeps) |
fuse-seo/README.md |
NOT APPLICABLE — neither installer scope executes package managers; the one copied Bun subproject documents its explicit manual dependency prerequisite. |
| Environment and API-key setup | ../claude-plugins/scripts/src/services/env-file.ts, ../claude-plugins/scripts/src/services/shell-config.ts, ../claude-plugins/scripts/src/services/mcp-key-prompt.ts |
env-file.ts, env-manager.ts, mcp-key-prompt.ts |
ADAPTED — the configuration stage (install-hooks.ts → runSetup) writes FUSE_* variables to ~/.cursor/.env, configures shell loaders, and prompts for MCP API keys; global scope only, skippable with --skip-env. |
| MCP server setup | ../claude-plugins/scripts/src/services/mcp-setup.ts |
mcp-setup.ts, mcp-installer.ts, mcp-defaults.ts |
ADAPTED — installs/merges selected MCP servers into ~/.cursor/mcp.json non-destructively; API keys are referenced as ${env:NAME} and never written in clear. |
| Response language and defaults | ../claude-plugins/scripts/src/services/settings-language.ts (promptLanguage, configureDefaults) |
AGENTS.md |
NOT APPLICABLE — those functions write Claude-specific global language and attribution settings; Cursor project rules already require replying in the owner's language and the installer does not mutate editor preferences. |
| Global instruction delivery | ../claude-plugins/scripts/src/services/setup-plugins.ts (installClaudeMd) |
install-hooks.ts, setup-plugins.ts (installClaudeMd) |
ADAPTED — global instructions ship as ~/.cursor/rules/fuse-global.mdc (alwaysApply: true, hashed in receipt.json), written by the deploy engine. No ~/.cursor/AGENTS.md is produced: verified in Cursor 3.18.25, AGENTS.md is only recognised at the root of a workspace folder (getWorkspaceFolder(uri) returns false outside one), so a copy under ~/.cursor/ would never be read. The user-rules directory is the documented global channel (getRuleTargetDirectory → joinPath(userHome, ".cursor", "rules")). |
| Home placeholder resolution | ../claude-plugins/scripts/src/services/harness-path-resolver.ts (resolveHomeInHooks) |
harness-path-resolver.ts (resolveHomeInHooks) |
ADAPTED for global scope, NOT APPLICABLE for project scope — the configuration stage resolves $HOME in copied global plugin hook files; installed project-scope hooks contain no $HOME placeholder and retain project-relative commands. |
| Harness reference environment | ../claude-plugins/scripts/src/services/harness-env.ts (setHarnessRefs) |
harness-env.ts (setHarnessRefs) |
ADAPTED — writes FUSE_HARNESS_REFS (every plugin's SOLID references/ dir) to ~/.cursor/.env, the file the vendored harness loads directly; global scope only. |
| Performance environment prompts | ../claude-plugins/scripts/src/services/perf-env.ts (promptPerfEnv) |
perf-env.ts (promptPerfEnv) |
NOT APPLICABLE — the function is implemented and persists to this installer's own ~/.cursor/.fusengine-global/settings.json, but every offered variable is Claude-specific; Cursor's CLI and IDE config surfaces expose no equivalent key, so the write is currently inert for Cursor. |
| Managed browser binary | ../claude-plugins/scripts/src/services/browser-binary.ts (installBrowserBinary) |
browser-binary.ts (installBrowserBinary) |
ADAPTED — conditional on selecting the browser MCP server during the configuration stage, installs the version-matched Chromium build for fuse-browser; non-fatal and idempotent. |
Cursor discovers default user-global copies as individual immediate children of
~/.cursor/plugins/local. Explicit project mode uses a project-relative workspaceOpen command;
its loader returns one absolute path per declared plugin root. Hook runtime may then invoke
@fusengine/harness; that runtime command does not install plugins.
The adjacent Claude repository was inspected read-only. Its global ~/.claude paths, hook event
model, and settings format are deliberately not part of this Cursor port. This installer now also
runs on Bun (install.sh/install.ps1 exec into install-hooks.ts), but that is a parallel,
independently-adopted choice, not a copy of the adjacent repository's bootstrap.