Authoritative reference for working on MultiTable's Cursor provider, driven by the Cursor CLI (`cursor-agent`) in headless `--print --output-format stream-json` mode. Trigger when the user mentions Cursor, cursor-agent, the Cursor adapter, CursorAdapter, stream-json / NDJSON events, `--resume` / `--continue`, `--mode plan|ask`, `--force` / `--yolo`, `--sandbox`, composer-2.5, `cursor-agent models`, `~/.cursor`, agent-transcripts, usage limits / rate limits (why they're off for Cursor; the cursor.com billing out-of-band path), or modifying anything under `packages/daemon/src/agent/providers/cursor.ts`, `packages/daemon/src/agent/providers/cursor-cli/`, or `packages/daemon/src/transcripts/cursorParser.ts`.
Installation
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Authoritative reference for working on MultiTable's Cursor provider, driven by the Cursor CLI (`cursor-agent`) in headless `--print --output-format stream-json` mode. Trigger when the user mentions Cursor, cursor-agent, the Cursor adapter, CursorAdapter, stream-json / NDJSON events, `--resume` / `--continue`, `--mode plan|ask`, `--force` / `--yolo`, `--sandbox`, composer-2.5, `cursor-agent models`, `~/.cursor`, agent-transcripts, usage limits / rate limits (why they're off for Cursor; the cursor.com billing out-of-band path), or modifying anything under `packages/daemon/src/agent/providers/cursor.ts`, `packages/daemon/src/agent/providers/cursor-cli/`, or `packages/daemon/src/transcripts/cursorParser.ts`.
allowed-tools
Read, Grep, Glob, Edit, Write, Bash
Cursor CLI provider (cursor-agent)
This skill is strictly Cursor-only. Do not import other providers' SDK or
protocol concepts (ACP session/prompt, Codex app-server JSON-RPC, the Claude
Agent SDK query() loop) into Cursor code or docs — Cursor speaks its own
headless NDJSON contract. See [[feedback_separate_sdks]].
The one fact that shapes everything
MultiTable drives Cursor as a one-shot child process per turn. Each turn
spawns cursor-agent --print --output-format stream-json --stream-partial-output … "<prompt>", reads newline-delimited JSON (NDJSON) events from stdout until the
terminal {"type":"result"} line, then the child exits. There is no
long-lived child, no JSON-RPC, no persistent stdio session (unlike Hermes/Grok
ACP or the Codex app-server).
Continuity across turns is by session id: the first turn's
{"type":"system","subtype":"init", session_id} line gives the id; every
subsequent turn re-spawns with --resume <session_id>, which replays full
context. Abort = kill the child.
Auth, in one line
cursor-agent reads its own login state from ~/.cursor (written by
cursor-agent login) or CURSOR_API_KEY. The adapter inherits process.env;
missing creds fail the first turn. cursor-agent status prints the logged-in
account.