Skip to content

Releases: freema/cursor-plugin-cc

v0.4.0 — /cursor:adversarial-review + estimate-first reviews + composer-prompting skill

Choose a tag to compare

@freema freema released this 14 Jul 06:13
7402797

Ported from upstream openai/codex-plugin-cc, adapted to the Cursor CLI.

Added

  • /cursor:adversarial-review — a first-class steerable review command that challenges the chosen implementation and design (assumptions, tradeoffs, failure modes, whether a different approach would be simpler or safer), not just implementation defects. Reuses the existing review runtime (review.mjs --adversarial), so it supports --base <ref>, --scope, --model, --wait/--background, and free-form focus text, and is tracked as a normal job (/cursor:status, /cursor:result, /cursor:cancel). Promotes what used to be only the --adversarial flag on /cursor:review into a discoverable command with sharper framing.
  • composer-prompting skill — the Cursor/Composer prompt-shaping guidance (repo grounding, the five-section prompt anatomy + guardrails, chunking heuristics, model selection, resume-vs-fresh) now lives in plugins/cursor/skills/composer-prompting/SKILL.md. The cursor-runner subagent references it via a new skills: frontmatter entry instead of restating the mechanics inline.

Changed

  • /cursor:review and /cursor:adversarial-review estimate the diff before running. When neither --wait nor --background is passed, the command inspects git status / git diff --shortstat to gauge review size, then asks once (via AskUserQuestion) whether to wait or run in the background — recommending background for anything beyond a tiny 1–2 file change. Explicit --wait / --background skip the question. The commands moved from an auto-executing one-liner wrapper to a model-orchestrated flow; their allowed-tools now include Bash(git:*) and AskUserQuestion. Background runs still use the plugin's own detached worker (the script returns a job id immediately), not a Claude background task.
  • cursor-runner subagent slimmed — the prompt-anatomy, chunking, model, and resume/fresh sections were extracted into the composer-prompting skill; the agent now points at the skill and keeps only its operational spine (ground → invoke /cursor:delegate → return verbatim) and guardrails.

Notes

  • /cursor:review is now user-invoked only (disable-model-invocation: true, matching upstream).
  • Deliberately skipped this release: the stop-review-gate Stop hook and /transfer (the latter depends on a Codex-specific external-session importer that cursor-agent does not have).

Full changelog: https://github.com/freema/cursor-plugin-cc/blob/main/CHANGELOG.md

v0.3.2 — clearer job-not-found hint

Choose a tag to compare

@freema freema released this 11 Jun 07:12
38eb080

Small UX fix release.

Fixed

  • Clearer "job not found" hint (#7). When /cursor:delegate runs as a Claude Code background command, Claude Code surfaces its own wrapper id (Command running in background with ID: …), not the Cursor job id — so /cursor:status <that-id> missed with a bare No job … found. /cursor:status, /cursor:result, and /cursor:cancel now append a hint explaining the id mismatch and pointing at the no-arg job listing to recover the real id.

Full Changelog: v0.3.1...v0.3.2

v0.3.1 — model alias refresh (Composer 2.5 + Grok 4.3)

Choose a tag to compare

@freema freema released this 11 Jun 05:58
b291597

Maintenance release: model aliases caught up with Cursor's current --list-models lineup, plus the cursor-runner agent doc fix. Includes the two community-reported fixes from #8 and #10 — thanks @TiberiusNemesis!

Fixed

  • Model aliases updated for Composer 2.5 (#8, #9). Cursor retired the Composer 2.x ids; composer / composer-fast / fast now resolve to composer-2.5-fast and composer-full to composer-2.5. The retired composer-2 / composer-2-fast ids still forward as-is for older cursor-agent builds.
  • cursor-runner agent invocation corrected (#10, #11). The subagent doc still referenced the pre-rewrite tsx …/delegate.ts call; it now matches the working slash command: node "${CLAUDE_PLUGIN_ROOT}/scripts/delegate.mjs" -- ….
  • grok alias retargeted to Grok 4.3 (#12). grok-4-20 / grok-4-20-thinking are retired; grok now resolves to grok-4.3, new grok-build shortcut → grok-build-0.1, dead grok-thinking alias removed.

Full Changelog: v0.3.0...v0.3.1

v0.3.0 — /cursor:review + codebase hardening

Choose a tag to compare

@freema freema released this 29 May 20:37

/cursor:review

New read-only code-review command modelled on openai/codex-plugin-cc's /codex:review, adapted to the Cursor CLI. The plugin collects your git diff itself (working tree, or branch vs --base <ref>), sends it to a Cursor model with a strict review-only prompt, and returns the findings (Blocking / Should-fix / Nits + verdict) verbatim. Supports --scope auto|working-tree|branch, --adversarial, --model, --background/--wait, --timeout, and free-form focus text. It never edits files — a post-flight check fails the job if the run touches the working tree. Tracked as a normal job, so /cursor:status, /cursor:result and /cursor:cancel apply.

Codebase hardening

Dogfooding /cursor:review with a multi-agent review of the whole plugin surfaced 43 confirmed robustness findings — all fixed, with regression tests (83 passing, lint clean). Notably:

  • delegate — numeric --resume no longer crashes; --wait is a real toggle; the background worker gets the prompt verbatim via env (no double-collapse) and writes logs into the correct jobs/<repo-hash>/ dir; killed runs are flagged.
  • runHeadless — error handlers for child-spawn and log-stream failures so a bad binary or full disk degrades instead of crashing the process; the kill watchdog arms at most once; CURSOR_AGENT_BIN is trimmed.
  • git / paths / parse / plan / jobs / args / browser / status / sessions / result / setup / cancel / id — assorted edge-case fixes: no-commits diff, stable repo hash, content[] text extraction, fenced-code-aware plan parsing, temp-file cleanup, --timeout NaN guard, Markdown cell escaping, corrupted-record tolerance, and more.

See CHANGELOG.md for the full list.

v0.2.2 — fix /cursor:resume prompt-eating + default model = auto

Choose a tag to compare

@freema freema released this 18 May 10:06
9d05f96

Fixed

  • /cursor:resume <prompt…> no longer eats the first prompt word as a chat-id. --resume was missing from the boolean-flag whitelist in delegate.mjs, so the argv parser greedily took the next positional token (Cursor chat id: řekni — resume with cursor-agent --resume=řekni). Declared resume as boolean; --resume=<chat-id> still works because the = form is parsed independently. Regression tests cover both shapes plus a multi-word non-ASCII prompt.

Changed

  • Default model is now auto (was composer-2-fast). Users without a paid Composer 2 seat can run the plugin out of the box; Cursor picks whatever model the account is entitled to. Power users can pin a default globally via the new CURSOR_PLUGIN_CC_DEFAULT_MODEL env var (accepts the same aliases as --model), or per-invocation via --model <id>.
  • README install section moved up front; GitHub install marked preferred, local checkout install moved below it for hacking on the plugin. Requirements list now lives under Install and no longer implies a paid subscription is mandatory.

Upgrade

/plugin uninstall cursor@tomas-cursor
/plugin install cursor@tomas-cursor
/reload-plugins

Full changelog: CHANGELOG.md

v0.2.1 — OSS ergonomics (docs only)

Choose a tag to compare

@freema freema released this 22 Apr 16:20
dc2ea31

Documentation-only patch release. Fills the infrastructure gaps a small public repo needs for third-party contributors and for AI agents editing the repo.

Added

  • AGENTS.md — hard rules any AI agent (Claude Code, Cursor, Codex, …) must follow when editing this repo. Dogfoods the pattern cursor-runner tells agents to read in target repos.
  • CONTRIBUTING.md — dev setup, branch naming, commit conventions, the step-by-step recipe for adding a new slash command, release flow.
  • SECURITY.md — vulnerability reporting via GitHub Security Advisories, the --force / --trust / --approve-mcps trade-offs, zero-deps supply-chain stance.
  • GitHub templates under .github/:
    • ISSUE_TEMPLATE/bug_report.yml — structured form that asks for Node / cursor-agent / plugin version and /cursor:setup --doctor output up front.
    • ISSUE_TEMPLATE/feature_request.yml — problem-first, with a zero-deps-fit dropdown.
    • ISSUE_TEMPLATE/config.yml — blank issues disabled, upstream redirects.
    • PULL_REQUEST_TEMPLATE.md — summary + test plan + zero-deps checklist.
  • README Troubleshooting section — the six failure modes hit during development (forgot /reload-plugins, zsh globbing, stale cache module-not-found, Bash permission prompt, browser MCP not loaded, no plan files) with exact fixes.

Changed

  • README "Contributing" section shrunk to a pointer toward the new dedicated files. Homepage stays scannable.

No code changes

All 52 vitest specs still green, CI matrix 6/6 across Node 18.18 / 20 / 22 × Ubuntu / macOS. No behavioural changes to any slash command.

Install / upgrade

/plugin marketplace remove tomas-cursor
/plugin marketplace add freema/cursor-plugin-cc
/plugin install cursor@tomas-cursor
/reload-plugins

v0.2.0 — plan-mode bridge + zero-deps rewrite

Choose a tag to compare

@freema freema released this 22 Apr 16:02
cec4bf2

Highlights

/cursor:from-plan — new command

Bridges Claude Code's plan mode directly into Cursor delegate. One command converts the plan file Claude drops under ~/.claude/plans/ into a task file at tasks/<timestamp>-<slug>.md and optionally hands it off to Cursor immediately.

/plan add dark-mode toggle to the settings page
# Claude proposes a plan, you approve
/cursor:from-plan --delegate --model opus
# → tasks/20260422-1945-add-dark-mode-toggle.md is created AND sent to Cursor

Zero runtime dependencies + no build step

Full rewrite from TypeScript/esbuild to plain .mjs. The source under scripts/ IS the ship artefact — /plugin install gives you a working plugin in one step, no npm install in the cache, no dist/, no bundler. Matches openai/codex-plugin-cc's shape.

What went away: execa, zod, nanoid, yargs-parser, esbuild, tsx, typescript, @types/*. What replaced them: ~200 lines of small stdlib-based helpers (lib/run.mjs, lib/id.mjs, lib/args.mjs) and plain JSON handling with JSDoc types.

Other quality fixes

  • Robust entry-point detection (lib/invoked.mjs) — realpathSync on both sides, fixes a silent no-op when the plugin was executed through a symlinked path (e.g. macOS /tmp → /private/tmp).
  • All slash-command bodies now "$ARGUMENTS" quoted to prevent zsh from globbing ?, * inside prompts.
  • /cursor:browser post-flight recursively walks tool_use blocks nested in assistant.message.content[] — no more false-positive "MCP never called" when Cursor did use it.

Full changelog

See CHANGELOG.md.

Install

/plugin marketplace add freema/cursor-plugin-cc
/plugin install cursor@tomas-cursor
/reload-plugins
/cursor:setup

Zero build, zero npm install needed after /plugin install.

Commands (9 total)

  • /cursor:delegate — hand a coding task to Cursor
  • /cursor:from-plannew — plan file → task file → delegate
  • /cursor:browser — real-browser verification via chrome-devtools MCP
  • /cursor:status / /cursor:result / /cursor:cancel / /cursor:resume / /cursor:sessions
  • /cursor:setup — health-check + configured MCPs

Plus cursor-runner subagent.