Skip to content

feat: user-level Cursor plugin install via authenticated download#394

Closed
rhuanbarreto wants to merge 2 commits into
mainfrom
cursor/cursor-user-level-plugin-install-c87d
Closed

feat: user-level Cursor plugin install via authenticated download#394
rhuanbarreto wants to merge 2 commits into
mainfrom
cursor/cursor-user-level-plugin-install-c87d

Conversation

@rhuanbarreto

Copy link
Copy Markdown
Contributor

Summary

Replaces the manual Team Marketplace URL flow for Cursor with an automated install that downloads the Cursor plugin tarball from /api/cursor and extracts it into ~/.cursor/plugins/local/archgate/.

This gives Cursor users the full Archgate developer agent, skills (reviewer, lessons-learned, adr-author, cli-reference, onboard), and governance rules — without requiring a Teams/Enterprise plan for Team Marketplaces.

Before

  • archgate init --editor cursor was a no-op for plugin delivery — only printed a Team Marketplace URL
  • archgate plugin install --editor cursor just printed the URL for manual setup
  • Users needed a Cursor Teams/Enterprise plan to use the Team Private Marketplace, or had to rely on the VSIX embedding

After

  • archgate init --editor cursor --install-plugin auto-downloads and installs the plugin to ~/.cursor/plugins/local/archgate/
  • archgate plugin install --editor cursor directly installs via authenticated download
  • Falls back to the Team Marketplace URL if the download fails
  • Mirrors the existing opencode install pattern (authenticated tarball → user-scope directory)

Changes

src/helpers/paths.ts

  • Add cursorPluginsLocalDir() resolving ~/.cursor/plugins/local/

src/helpers/plugin-install.ts

  • Add installCursorPlugin(token) — downloads /api/cursor tarball and extracts to ~/.cursor/plugins/local/archgate/

src/helpers/cursor-settings.ts

  • Return user-scope ~/.cursor/plugins/local/ path instead of project-level .cursor/

src/helpers/init-project.ts

  • configureEditorSettings cursor case returns user-scope path
  • tryInstallPlugin cursor case auto-installs with fallback to marketplace URL

src/commands/plugin/install.ts

  • Cursor case calls installCursorPlugin() directly (previously just printed URL)
  • Updated printManualInstructions with retry hints + marketplace URL fallback

src/commands/init.ts

  • EDITOR_DIRS.cursor changed from "(VSIX)" to "(user-scope)"
  • printManualInstructions for cursor updated for new install flow

.cursor/rules/archgate-governance.mdc

  • Fixed stale MCP tool references → current CLI commands

Tests

  • Updated cursor-settings, init-project, plugin-install, and plugin/install command tests
  • Added installCursorPlugin unit tests (download, extract, auth failure, HTTP error)
  • Added cursor auto-install + fallback test in init-project

Companion PR

  • archgate/plugins — adds /api/cursor endpoint and tarball generation
Open in Web Open in Cursor 

cursoragent and others added 2 commits June 3, 2026 20:24
Replace the manual Team Marketplace URL flow with an automated
install that downloads the Cursor plugin tarball from /api/cursor
and extracts it into ~/.cursor/plugins/local/archgate/.

Changes:
- Add cursorPluginsLocalDir() to paths.ts for user-scope path resolution
- Add installCursorPlugin(token) to plugin-install.ts (mirrors opencode flow)
- Update cursor-settings.ts to return user-scope path instead of project-level
- Update init-project.ts tryInstallPlugin to auto-install with fallback to
  marketplace URL on failure
- Update commands/plugin/install.ts to call installCursorPlugin directly
- Update commands/init.ts EDITOR_DIRS and printManualInstructions for cursor
- Update all cursor-related tests to match new auto-install behavior

Co-authored-by: rhuan <rhuan@barreto.work>
Replace stale MCP tool references (review_context, check, list_adrs)
with the current CLI command equivalents (archgate review-context,
archgate check --staged, archgate adr list).

Co-authored-by: rhuan <rhuan@barreto.work>
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.

2 participants