Skip to content

fix(init): make --agent cursor truly standalone (#213)#1840

Open
pszymkowiak wants to merge 1 commit into
developfrom
fix/cursor-agent-standalone
Open

fix(init): make --agent cursor truly standalone (#213)#1840
pszymkowiak wants to merge 1 commit into
developfrom
fix/cursor-agent-standalone

Conversation

@pszymkowiak
Copy link
Copy Markdown
Collaborator

Summary

  • rtk init -g --agent cursor no longer attempts to install Claude Code artifacts (RTK.md, CLAUDE.md patch, settings.json hook).
  • ~/.cursor/ is now auto-created when missing, so Cursor-only users without a prior config directory don't crash.
  • Adds regression tests covering both fixes.

Context

Issue #213 originally asked for Cursor support. PR #595 added --agent cursor (merged 2026-03-18), but the routing logic kept install_claude = !opencode, ignoring the explicit --agent selection. Cursor-only users hit:

```
rtk: Failed to write RTK.md: ~/.claude/RTK.md: Failed to create temp file in ~/.claude: No such file or directory (os error 2)
```

Reported in issue #213 by @ayhangokhan and re-confirmed by @cgondrovic-servpro ("why is it referencing anything claude related?").

Changes

  • `should_install_claude(opencode, agent)` helper in `src/main.rs`:
    • `opencode=false, agent=None` → `true` (default `rtk init -g`)
    • `opencode=true` → `false` (OpenCode plugin only)
    • `agent=Some(Claude)` → `true` (explicit opt-in)
    • `agent=Some(Cursor|Windsurf|Cline|Kilocode|Antigravity)` → `false`
  • `patch_cursor_hooks_json` creates the parent `~/.cursor/` on demand via `fs::create_dir_all`.
  • Comment updated: Cursor hooks are standalone when `--agent cursor` is the only target, additive when Claude Code is also being installed.

Test plan

  • `cargo test --all` — 1827 passed, 0 failed
  • `cargo clippy --all-targets -- -D warnings` — clean
  • `cargo fmt --all --check` — clean
  • Manual e2e (empty HOME): `HOME=/tmp/empty rtk init -g --agent cursor` → exit 0, only `/.cursor/hooks.json` created, no `/.claude/` files.
  • Manual e2e (pre-existing .claude/): same command with `mkdir /.claude` first → exit 0, `/.claude/` left untouched.
  • New unit test `test_should_install_claude_routing` exhaustively covers the (opencode, agent) matrix.
  • New unit test `test_patch_cursor_hooks_json_creates_missing_parent_dir` confirms auto-creation.

Closes #213.

🤖 Generated with Claude Code

`rtk init -g --agent cursor` still tried to write ~/.claude/RTK.md
because install_claude was derived from `!opencode` only, ignoring the
explicit non-Claude agent selection. Users with no prior Claude Code
install hit:

    Failed to write RTK.md: ~/.claude/RTK.md: No such file or directory

Fix:
- Route install_claude through a `should_install_claude(opencode, agent)`
  helper so `--agent cursor|windsurf|cline|kilocode|antigravity` skips
  the Claude artifacts (RTK.md, CLAUDE.md patch, settings.json hook).
  `--agent claude` and no-agent default continue to install Claude.
- Have `patch_cursor_hooks_json` create `~/.cursor/` on demand so
  Cursor-only users without that directory don't fail.

Tests:
- `test_should_install_claude_routing`: exhaustive matrix over
  (opencode, agent) combinations.
- `test_patch_cursor_hooks_json_creates_missing_parent_dir`: regression
  guard ensuring the parent directory is auto-created.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@CLAassistant
Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


patrick seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@pszymkowiak pszymkowiak requested a review from aeppling May 11, 2026 17:57
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.

feat: add support for cursor

2 participants