feat(cursor): add Cursor as a third agent to the installer#19
Conversation
Detect Cursor and install the Rogue plugin into it alongside Claude and Codex from the same one-liner. Cursor has no plugin CLI, so unlike claude/codex (native marketplace CLIs), the install is a file copy into ~/.cursor/plugins/local/rogue from the release tarball — mirroring the cursor repo's own installer. - plugins/cursor/: port of rogue-plugin-cursor (python3 pure-relay dispatcher, /api/v1/hooks/cursor, x-rogue-source: cursor). Drops the ported auto-update.sh (Cursor Team Marketplace is the native update path) and strips the /tmp debug-log block from rogue-hook.py. - .cursor-plugin/marketplace.json: Team-Marketplace import target. - install.sh / install.ps1: cursor detection (cursor on PATH or ~/.cursor), download+extract+copy install, python3 runtime warn. Windows included. - scripts/build-release.sh: emit versionless rogue-plugin-cursor.tar.gz. - README.md / CLAUDE.md: document the third agent and the copy-vs-CLI asymmetry. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLk1XJQ1uWYSdn5Ro31JHv
|
Warning Review limit reachedYou’ve reached a temporary PR review limit under our Fair Usage Limits Policy. Next review available in: 17 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (15)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
By default the installer detects and installs for every supported agent. These flags restrict the run to an explicit set. A selected CLI agent (claude/codex) still requires its binary on PATH — the installer dies with a clear message naming the missing one, validating all selections before any install. Cursor is a plain file copy, so --cursor installs regardless of detection (useful to pre-provision before first launch). PowerShell mirrors with -Claude/-Codex/-Cursor switches. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLk1XJQ1uWYSdn5Ro31JHv
…alidate CI Upstream rogue-plugin-cursor moved off the single python3 dispatcher to the Claude/Codex dual-dispatcher model. Re-port v1.0.3: - Replace scripts/rogue-hook.py with hook.sh + hook.ps1 (PURE RELAY) and add setup.ps1. hooks.json now registers an `sh ./scripts/hook.sh <event>` entry and a PowerShell entry (loads hook.ps1 via $env:CURSOR_PLUGIN_ROOT) per event, exactly-one-runs per machine. Endpoint /api/v1/hooks/cursor, x-rogue-source cursor unchanged. - Bump plugin.json + marketplace.json to 1.0.3. - install.sh / install.ps1: drop the now-stale python3 runtime warning — the Cursor runtime is the same sh/PowerShell stack running the installer. - CLAUDE.md: document the dual dispatcher (was "single Python dispatcher"). Add .github/workflows/validate.yml: on push/PR, lint all JSON, verify each plugin's manifest version matches its marketplace entry (claude/codex/cursor), and sh -n the shell dispatchers. Ported + generalized from upstream's release-time version-sync check so drift is caught before tagging. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLk1XJQ1uWYSdn5Ro31JHv
The previous step `sh -n`'d every *.sh, but install.sh / build-release.sh / the other tooling scripts are bash (arrays, RETURN traps) — dash choked on build-release.sh line 28 `COMMON_FILES=(...)`. Now parse bash-shebang scripts with `bash -n` and the POSIX runtime dispatchers with `dash -n`. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01RLk1XJQ1uWYSdn5Ro31JHv
What
Folds Cursor into the multi-agent monorepo installer. The same
curl | shone-liner now detects Cursor (alongside Claude Code + OpenAI Codex) and installs
the matching Rogue plugin into each, writing the shared
~/.rogue-envonce.The crux — Cursor has no plugin CLI
Claude and Codex install via their native plugin CLIs (
claude plugin install/codex plugin add), which git-clone the marketplace — no local files needed.Cursor has no equivalent command. The only programmatic install is a file copy
into
~/.cursor/plugins/local/<name>. So the Cursor path downloads the releasetarball, extracts it, and copies
plugins/cursor/into place — mirroring thestandalone cursor repo's own installer. This copy-vs-CLI asymmetry is load-bearing.
Changes
plugins/cursor/— ported fromrogue-plugin-cursor: python3 pure-relaydispatcher (
rogue-hook.py), endpoint/api/v1/hooks/cursor, headerx-rogue-source: cursor,commands/{setup,status}.md. Reuses the shared~/.rogue-env. Two deliberate edits vs upstream: dropped theauto-update.shsessionStart entry + script (the Cursor Team Marketplace is the native
managed/auto-update path), and stripped a leftover
/tmpdebug-log block fromrogue-hook.py..cursor-plugin/marketplace.json— repo-root Team-Marketplace import target(
source: ./plugins/cursor).install.sh/install.ps1— Cursor detection (cursoron PATH or~/.cursorpresent), download → extract → copy install, warn ifpython3isabsent. Windows included (
%USERPROFILE%\.cursor\plugins\local\rogue).scripts/build-release.sh— emit versionlessrogue-plugin-cursor.tar.gz.README.md/CLAUDE.md— document the third agent + the asymmetry.Verification
hooks.jsonvalid, noauto-updateentry.build-release.shbuilds all three tarballs; cursor tarball contains the right tree.~/.cursor/plugins/local/rogue.sh -n/bash -nclean.relative-hook-path candidates both filtered out as below threshold.
🤖 Generated with Claude Code
https://claude.ai/code/session_01RLk1XJQ1uWYSdn5Ro31JHv