Skip to content

Latest commit

 

History

History
47 lines (41 loc) · 11.3 KB

responsibility-parity.md

File metadata and controls

47 lines (41 loc) · 11.3 KB

Claude-to-Cursor responsibility parity

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-specific boundary

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.