Use Cursor CLI from Claude Code to delegate coding tasks to Composer 2.5+ and other Cursor models.
$git clone https://github.com/freema/cursor-plugin-ccInstalls into the current project.
Install cursor-plugin-cc by running `git clone https://github.com/freema/cursor-plugin-cc`, then use it for the current task and follow its documentation at https://github.com/freema/cursor-plugin-cc.
| 1 | # cursor-plugin-cc |
| 2 | |
| 3 | > **Claude plans. Cursor writes. Claude reviews.** |
| 4 | > A Claude Code plugin that delegates coding _execution_ to Cursor's Composer — without ever leaving the Claude Code TUI. |
| 5 | |
| 6 | [](https://github.com/freema/cursor-plugin-cc/actions/workflows/ci.yml) |
| 7 | [](./LICENSE) |
| 8 | [](https://nodejs.org) |
| 9 | [](https://claude.com/claude-code) |
| 10 | [](https://cursor.com) |
| 11 | |
| 12 |  |
| 13 | |
| 14 | ## Plan. Delegate. Ship. |
| 15 | |
| 16 | ```text |
| 17 | you ▸ /plan add a /health endpoint to our Express app that returns { status, version, uptime } |
| 18 | |
| 19 | claude ▸ Plan written to ~/.claude/plans/health-endpoint.md |
| 20 | (4 acceptance criteria, 3 files to touch, verify with `npm test`) |
| 21 | |
| 22 | you ▸ /cursor:from-plan --delegate |
| 23 | |
| 24 | plugin ▸ wrote tasks/20260427-1830-health-endpoint.md |
| 25 | ▸ handing off to cursor-agent (composer-2.5-fast, --force)… |
| 26 | |
| 27 | cursor ▸ ✓ src/routes/health.ts (new, 24 lines) |
| 28 | ▸ ✓ src/app.ts (mounted route) |
| 29 | ▸ ✓ tests/health.test.ts (new, 3 passing) |
| 30 | ▸ done in 11s · chat_id=V1StGXR8_Z |
| 31 | |
| 32 | you ▸ review the diff |
| 33 | |
| 34 | claude ▸ LGTM. Nit: hard-coded "1.0.0" — pull from package.json instead. |
| 35 | |
| 36 | you ▸ /cursor:resume "read version from package.json" |
| 37 | |
| 38 | cursor ▸ ✓ src/routes/health.ts (1 line changed) |
| 39 | ▸ ✓ tests/health.test.ts (assertion updated, still passing) |
| 40 | ▸ done in 4s |
| 41 | ``` |
| 42 | |
| 43 | That's the whole loop. Claude does the **thinking** (plan, review). Cursor does the **typing** (file edits, tests). You stay in one TUI. |
| 44 | |
| 45 | **Why this is fast:** `composer-2.5-fast` is Cursor's tuned-for-CLI variant — it ships small, well-scoped changes in seconds. Claude Code spends its tokens on planning and reviewing, where thinking actually matters. Two tools, each doing what they're best at. |
| 46 | |
| 47 | ## Install |
| 48 | |
| 49 | **Preferred — from GitHub:** |
| 50 | |
| 51 | ``` |
| 52 | /plugin marketplace add freema/cursor-plugin-cc |
| 53 | /plugin install cursor@tomas-cursor |
| 54 | /reload-plugins |
| 55 | /cursor:setup |
| 56 | ``` |
| 57 | |
| 58 | **Local, for hacking on the plugin from a checkout:** |
| 59 | |
| 60 | ``` |
| 61 | /plugin marketplace add /Users/you/path/to/cursor-plugin-cc |
| 62 | /plugin install cursor@tomas-cursor |
| 63 | /reload-plugins |
| 64 | /cursor:setup |
| 65 | ``` |
| 66 | |
| 67 | > ⚠️ **Do not skip `/reload-plugins`.** Right after `/plugin install` the `/cursor:*` commands are NOT yet available — Claude Code only picks them up after a plugin reload. If you see `Unknown command: /cursor:setup`, you forgot this step — run `/reload-plugins` and try again. |
| 68 | |
| 69 | The plugin ships as **plain ESM JavaScript with zero runtime dependencies** — just the Node stdlib. `/plugin install` is literally all you need; no `npm install`, no build step, no `dist/` folder. Each slash command runs `node "${CLAUDE_PLUGIN_ROOT}/scripts/<cmd>.mjs"` directly from the committed source. |
| 70 | |
| 71 | The first `/cursor:setup` run tells you if `cursor-agent` is missing or unauthenticated. For hacking on the plugin itself (tests, lint, formatting), see [Contributing](#contributing) below. |
| 72 | |
| 73 | ### Requirements |
| 74 | |
| 75 | - Node.js **≥ 18.18** |
| 76 | - A Cursor account — paid for Composer models; free works with `--model auto` or other entitled models |
| 77 | - `cursor-agent` on your `PATH` — install via `curl https://cursor.com/install -fsS | bash` |
| 78 | - `cursor-agent login` completed at least once |
| 79 | |
| 80 | ## The flow — three commands, end to end |
| 81 | |
| 82 | This is the entire happy path. Three commands inside Claude Code: |
| 83 | |
| 84 | ``` |
| 85 | ┌──────────────────────────────────────────────────────────────────┐ |
| 86 | │ 1. /plan <what you want> │ |
| 87 | │ → Claude drafts a plan into ~/.claude/plans/<slug>.md │ |
| 88 | │ (the approval dialog appears — you can ignore it, │ |
| 89 | │ the plan file is already on disk) │ |
| 90 | ├──────────────────────────────────────────────────────────────────┤ |
| 91 | │ 2. /cursor:from-plan --delegate │ |
| 92 | │ → plugin reads the newest plan from ~/.claude/plans/ │ |
| 93 | │ → rewrites it as tasks/<YYYYMMDD-HHmm>-<slug>.md │ |
| 94 | │ (Cursor-shaped: Goal / Context / Acceptance / Files / │ |
| 95 | │ How to verify / Guardrails) │ |
| 96 | │ → invokes `cursor-agent -p --force` with prompt: │ |
| 97 | │ "Implement the task in @tasks/…. Follow every section." │ |
| 98 | │ → Cursor reads the @path, writes the code, reports back │ |
| 99 | ├──────────────────────────────────────────────────────────────────┤ |
| 100 | │ 3. <your verify command> e.g. `npm test`, `task test`, │ |
| 101 | │ `pnpm test <name>` │ |
| 102 | │ → confirm the change is green │ |
| 103 | └──────────────────────────────────────────────────── |