{"id":"f9606359-1b31-4dd9-bf46-91a478552fbe","entityType":"agent","slug":"clawhub-daxingplay-cursor-cli-headless","name":"Cursor CLI Headless","canonicalUrl":"https://www.xpersona.co/agent/clawhub-daxingplay-cursor-cli-headless","canonicalPath":"/agent/clawhub-daxingplay-cursor-cli-headless","generatedAt":"2026-10-11T15:13:06.618Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T11:54:36.158Z","emptyReason":null},"description":"Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Curs... Skill: Cursor CLI Headless Owner: daxingplay Summary: Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Curs... Tags: latest:1.1.0 Version history: v1.1.0 | 2026-02-18T16:08:20.542Z | user - Added .DS_Store file to the repository. - Updated documentation to recommend using only the wrapper script (scripts/run-task.s","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17c8np6jtmbs0fq3753vs60s186vc9w:cursor-cli-headless","sourceUrl":"https://clawhub.ai/daxingplay/cursor-cli-headless","homepage":"https://clawhub.ai/daxingplay/skills/cursor-cli-headless","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/daxingplay/cursor-cli-headless","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/daxingplay/skills/cursor-cli-headless","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Curs..."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:54:36.158Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:54:36.158Z","emptyReason":null},"stars":null,"forks":null,"downloads":1071,"packageName":null,"latestVersion":"1.1.0","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T11:54:36.144Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T11:54:36.158Z","lastCrawledAt":"2026-10-11T11:54:36.144Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T11:54:36.144Z","lastVerifiedAt":null,"highlights":[{"version":"1.1.0","createdAt":"2026-02-18T16:08:20.542Z","changelog":"- Added .DS_Store file to the repository. - Updated documentation to recommend using only the wrapper script (`scripts/run-task.sh`) for running headless tasks. - Simplified usage instructions, with a focus on streaming output and file modification as defaults. - Clarified options and argument usage for the wrapper script. - Improved instructions for selecting output formats and handling errors. - Added explicit directions for verifying authentication and agent status.","fileCount":4,"zipByteSize":6127},{"version":"1.0.0","createdAt":"2026-02-18T15:18:40.824Z","changelog":"Initial release of cursor-cli-headless. - Run coding tasks in headless (non-interactive/print) mode using the Cursor CLI. - Supports code writing, refactoring, analysis, review, and batch-processing via CLI or wrapper script. - Includes robust prompt and output format handling (`text`, `json`, `stream-json`). - Wrapper script (`scripts/run-task.sh`) streamlines usage with arguments for prompt, project directory, output format, and more. - Comprehensive error handling and prerequisite guidance documented. - Provides resources for further reference and official documentation links.","fileCount":4,"zipByteSize":6426}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17c8np6jtmbs0fq3753vs60s186vc9w:cursor-cli-headless","setupComplexity":"low","setupSteps":["Setup complexity is LOW. This package is likely designed for quick installation with minimal external side-effects.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-11T15:13:06.617Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-daxingplay-cursor-cli-headless/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"high","updatedAt":"2026-10-11T11:54:36.158Z","emptyReason":null},"readme":"Skill: Cursor CLI Headless\n\nOwner: daxingplay\n\nSummary: Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Curs...\n\nTags: latest:1.1.0\n\nVersion history:\n\nv1.1.0 | 2026-02-18T16:08:20.542Z | user\n\n- Added .DS_Store file to the repository.\n- Updated documentation to recommend using only the wrapper script (`scripts/run-task.sh`) for running headless tasks.\n- Simplified usage instructions, with a focus on streaming output and file modification as defaults.\n- Clarified options and argument usage for the wrapper script.\n- Improved instructions for selecting output formats and handling errors.\n- Added explicit directions for verifying authentication and agent status.\n\nv1.0.0 | 2026-02-18T15:18:40.824Z | user\n\nInitial release of cursor-cli-headless.\n\n- Run coding tasks in headless (non-interactive/print) mode using the Cursor CLI.\n- Supports code writing, refactoring, analysis, review, and batch-processing via CLI or wrapper script.\n- Includes robust prompt and output format handling (`text`, `json`, `stream-json`).\n- Wrapper script (`scripts/run-task.sh`) streamlines usage with arguments for prompt, project directory, output format, and more.\n- Comprehensive error handling and prerequisite guidance documented.\n- Provides resources for further reference and official documentation links.\n\nArchive index:\n\nArchive v1.1.0: 4 files, 6127 bytes\n\nFiles: reference.md (5934b), scripts/run-task.sh (6436b), SKILL.md (3481b), _meta.json (138b)\n\nFile v1.1.0:SKILL.md\n\n---\nname: cursor-cli-headless\ndescription: Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Cursor agent process, running automated code changes, or batch-processing files with the agent CLI.\n---\n\n# Cursor CLI Headless\n\nExecute coding tasks using the Cursor CLI in non-interactive (print) mode via the wrapper script for scripts, automation, and batch processing.\n\n## Prerequisites\n\n- **Cursor CLI installed**: Run `agent --version`. If missing, install: `curl https://cursor.com/install -fsS | bash` (macOS/Linux/WSL) or see [Installation](https://cursor.com/docs/cli/installation).\n- **Authenticated**: Set `CURSOR_API_KEY` in the environment for scripts, or run `agent login` interactively once. Check if already logged in with `agent status` or `agent whoami`.\n\n## Quick start\n\nUse `scripts/run-task.sh` with either an inline prompt or a prompt file:\n\n```bash\n# Prompt from file (stream progress by default)\n./scripts/run-task.sh -f prompt.txt\n\n# Inline prompt, run in a specific project directory\n./scripts/run-task.sh -p \"Add tests for auth module\" -d /path/to/project\n```\n\n## Wrapper script: run-task.sh\n\n`scripts/run-task.sh` runs the Cursor agent in headless mode. **Recommended:** keep file modifications and stream progress **on** (default). Use `--no-force` only with tmux for interactive mode (agent proposes changes for review). Use `--no-stream` for plain output.\n\n**Arguments:**\n\n- `-p \"prompt\"` — inline prompt (mutually exclusive with `-f`)\n- `-f prompt-file.txt` — read prompt from file (for long prompts)\n- `-d dir` — working directory (default: current directory)\n- `-o format` — `text`, `json`, or `stream-json` (with default streaming, format is stream-json)\n- `-m model` — model name\n- `--mode mode` — `agent`, `plan`, or `ask`\n- `--force` — allow file modifications (default)\n- `--no-force` — do not modify files; agent only proposes changes\n- `--stream` — stream-json with progress display (default; requires `jq` for progress)\n- `--no-stream` — plain output only; use with `-o text` or `-o json`\n\n**Output formats:**\n\n| Format | Use when |\n|--------|----------|\n| (default stream) | Live progress (model, tool calls, chars); NDJSON on stdout, progress on stderr |\n| `-o text --no-stream` | Only the final assistant message |\n| `-o json --no-stream` | Single JSON object with `result`, `duration_ms`, etc.; parse with `jq -r '.result'` |\n\n**Examples:**\n\n```bash\n# Task from file, apply changes, stream progress (default)\n./scripts/run-task.sh -f tasks/refactor-auth.txt\n\n# Inline prompt, specific project, JSON result only\n./scripts/run-task.sh -p \"Summarize README.md\" -d /path/to/repo --no-stream -o json\n\n# Plain text output, no progress\n./scripts/run-task.sh -f tasks/review.txt --no-stream -o text\n```\n\n## Working directory\n\nThe agent runs in the script’s working directory. Use `-d /path/to/project` so the agent sees that project as the root.\n\n## Error handling\n\n- **Exit code**: Non-zero means the run failed; check stderr for the error message.\n- With `-o json`, on failure no JSON is emitted; only stderr.\n- In scripts, check `$?` after the wrapper and exit accordingly.\n\n## Additional resources\n\n- For detailed output schemas and event types: [reference.md](reference.md)\n- Official docs: [Using Headless CLI](https://cursor.com/docs/cli/headless), [Output format](https://cursor.com/docs/cli/reference/output-format)\n\nFile v1.1.0:_meta.json\n\n{\n  \"ownerId\": \"kn79yres364wtdabck9g87vqx581dmyf\",\n  \"slug\": \"cursor-cli-headless\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1771430900542\n}\n\nFile v1.1.0:reference.md\n\n# Output Format Reference\n\nDetailed schemas for Cursor CLI headless output. Use with `--output-format json` or `--output-format stream-json`.\n\n## JSON format (single object on success)\n\nUse `--output-format json`. One JSON object (one line) when the run completes successfully.\n\n### Success response\n\n```json\n{\n  \"type\": \"result\",\n  \"subtype\": \"success\",\n  \"is_error\": false,\n  \"duration_ms\": 1234,\n  \"duration_api_ms\": 1234,\n  \"result\": \"<full assistant text>\",\n  \"session_id\": \"<uuid>\",\n  \"request_id\": \"<optional request id>\"\n}\n```\n\n| Field | Description |\n|-------|-------------|\n| `type` | Always `\"result\"` |\n| `subtype` | Always `\"success\"` for success |\n| `is_error` | Always `false` for success |\n| `duration_ms` | Total execution time (ms) |\n| `duration_api_ms` | API time (ms); currently same as `duration_ms` |\n| `result` | Full assistant response text (all text deltas concatenated) |\n| `session_id` | Session identifier |\n| `request_id` | Optional request id |\n\nOn failure: process exits non-zero, error on stderr, no JSON object emitted.\n\n---\n\n## Stream-JSON format (NDJSON)\n\nUse `--output-format stream-json`. Each line is one JSON object (NDJSON). Optionally use `--stream-partial-output` for character-level text deltas.\n\n### Event types\n\n#### 1. System initialization (once per run)\n\n```json\n{\n  \"type\": \"system\",\n  \"subtype\": \"init\",\n  \"apiKeySource\": \"env|flag|login\",\n  \"cwd\": \"/absolute/path\",\n  \"session_id\": \"<uuid>\",\n  \"model\": \"<model display name>\",\n  \"permissionMode\": \"default\"\n}\n```\n\n#### 2. User message\n\n```json\n{\n  \"type\": \"user\",\n  \"message\": {\n    \"role\": \"user\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<prompt>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 3. Assistant message\n\nOne event per complete message segment (between tool calls). With `--stream-partial-output`, multiple events per segment with small text deltas; concatenate `message.content[].text` to get full text.\n\n```json\n{\n  \"type\": \"assistant\",\n  \"message\": {\n    \"role\": \"assistant\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<message text>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 4. Tool call — started\n\n```json\n{\n  \"type\": \"tool_call\",\n  \"subtype\": \"started\",\n  \"call_id\": \"<string id>\",\n  \"tool_call\": { \"<tool type>\": { \"args\": { ... } } },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 5. Tool call — completed\n\n```json\n{\n  \"type\": \"tool_call\",\n  \"subtype\": \"completed\",\n  \"call_id\": \"<string id>\",\n  \"tool_call\": {\n    \"<tool type>\": {\n      \"args\": { ... },\n      \"result\": { \"success\": { ... } }\n    }\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 6. Terminal result (end of stream on success)\n\n```json\n{\n  \"type\": \"result\",\n  \"subtype\": \"success\",\n  \"duration_ms\": 1234,\n  \"duration_api_ms\": 1234,\n  \"is_error\": false,\n  \"result\": \"<full assistant text>\",\n  \"session_id\": \"<uuid>\",\n  \"request_id\": \"<optional request id>\"\n}\n```\n\n---\n\n## Tool call types\n\n### readToolCall\n\n- **Started**: `tool_call.readToolCall.args` → `{ \"path\": \"file.txt\" }`\n- **Completed**: `tool_call.readToolCall.result.success` → `{ \"content\": \"...\", \"isEmpty\": false, \"exceededLimit\": false, \"totalLines\": 54, \"totalChars\": 1254 }`\n\n### writeToolCall\n\n- **Started**: `tool_call.writeToolCall.args` → `{ \"path\": \"file.txt\", \"fileText\": \"content...\", \"toolCallId\": \"id\" }`\n- **Completed**: `tool_call.writeToolCall.result.success` → `{ \"path\": \"/absolute/path\", \"linesCreated\": 19, \"fileSize\": 942 }`\n\n### Other tools\n\nMay use `tool_call.function` with `{ \"name\": \"tool_name\", \"arguments\": \"...\" }`.\n\n---\n\n## Example NDJSON sequence\n\n```json\n{\"type\":\"system\",\"subtype\":\"init\",\"apiKeySource\":\"login\",\"cwd\":\"/Users/user/project\",\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\",\"model\":\"Claude 4 Sonnet\",\"permissionMode\":\"default\"}\n{\"type\":\"user\",\"message\":{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Read README.md and create a summary\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"I'll read the README.md file\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"started\",\"call_id\":\"toolu_xxx\",\"tool_call\":{\"readToolCall\":{\"args\":{\"path\":\"README.md\"}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"completed\",\"call_id\":\"toolu_xxx\",\"tool_call\":{\"readToolCall\":{\"args\":{\"path\":\"README.md\"},\"result\":{\"success\":{\"content\":\"# Project\\n\\n...\",\"isEmpty\":false,\"exceededLimit\":false,\"totalLines\":54,\"totalChars\":1254}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"Based on the README, I'll create a summary\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"started\",\"call_id\":\"toolu_yyy\",\"tool_call\":{\"writeToolCall\":{\"args\":{\"path\":\"summary.txt\",\"fileText\":\"# README Summary\\n\\n...\",\"toolCallId\":\"toolu_yyy\"}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"completed\",\"call_id\":\"toolu_yyy\",\"tool_call\":{\"writeToolCall\":{\"args\":{\"path\":\"summary.txt\",...},\"result\":{\"success\":{\"path\":\"/Users/user/project/summary.txt\",\"linesCreated\":19,\"fileSize\":942}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"Done! I've created the summary in summary.txt\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"result\",\"subtype\":\"success\",\"duration_ms\":5234,\"duration_api_ms\":5234,\"is_error\":false,\"result\":\"I'll read...Based on the README...Done!...\",\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\",\"request_id\":\"...\"}\n```\n\n---\n\n## Implementation notes\n\n- Each event is one line, terminated by `\\n`.\n- `thinking` events are suppressed in print mode.\n- Session IDs are constant for one run; `call_id` correlates tool started/completed.\n- Consumers should ignore unknown fields (backward compatibility).\n\nArchive v1.0.0: 4 files, 6426 bytes\n\nFiles: reference.md (5934b), scripts/run-task.sh (6282b), SKILL.md (4311b), _meta.json (138b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: cursor-cli-headless\ndescription: Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Cursor agent process, running automated code changes, or batch-processing files with the agent CLI.\n---\n\n# Cursor CLI Headless\n\nExecute coding tasks using the Cursor CLI in non-interactive (print) mode for scripts, automation, and batch processing.\n\n## Prerequisites\n\n- **Cursor CLI installed**: Run `agent --version`. If missing, install: `curl https://cursor.com/install -fsS | bash` (macOS/Linux/WSL) or see [Installation](https://cursor.com/docs/cli/installation).\n- **Authenticated**: Set `CURSOR_API_KEY` in the environment for scripts, or run `agent login` interactively once.\n\n## Quick start\n\n**Inline prompt (short):**\n\n```bash\nagent -p --force \"Refactor src/utils.js to use ES6+ syntax\"\n```\n\n**Long prompt from file:**\n\n```bash\nagent -p --force \"$(cat path/to/prompt.txt)\"\n```\n\n**Using the wrapper script (recommended):**\n\n```bash\n./scripts/run-task.sh -f prompt.txt\n./scripts/run-task.sh -p \"Add tests for auth module\" -d /path/to/project -o json\n```\n\n## Prompt handling\n\n| Case | Command pattern |\n|------|-----------------|\n| Short inline | `agent -p [--force] \"your prompt\"` |\n| Long prompt from file | `agent -p [--force] \"$(cat path/to/prompt.txt)\"` |\n\n- Use `--force` when the task should **modify files**. Without it, the agent only proposes changes.\n- The agent runs in the **current working directory**; `cd` to the target project first, or use the script’s `-d` option.\n\n## Key flags\n\n| Flag | Description |\n|------|-------------|\n| `-p`, `--print` | Non-interactive mode; print response to stdout |\n| `--force` | Allow file modifications without confirmation |\n| `--output-format` | `text` (default), `json`, or `stream-json` |\n| `--stream-partial-output` | Character-level streaming (only with `stream-json`) |\n| `-m`, `--model` | Model to use |\n| `--mode` | `agent` (default), `plan`, or `ask` |\n| `--resume [chatId]` | Resume a previous session |\n\n## Output format selection\n\n| Format | Use when |\n|--------|----------|\n| `text` | You only need the final answer; clean, no structure |\n| `json` | You need to parse the result (e.g. `jq -r '.result'`); single object at end |\n| `stream-json` | You need progress (model init, tool calls, partial text); NDJSON, one event per line. Use `--stream-partial-output` for character-level streaming |\n\n## Using the wrapper script (recommended)\n\n**Recommended.** `scripts/run-task.sh` wraps the CLI with consistent argument handling. File modifications are allowed by default; use `--no-force` to only propose changes.\n\n**Arguments:**\n\n- `-p \"prompt\"` — inline prompt (mutually exclusive with `-f`)\n- `-f prompt-file.txt` — read prompt from file\n- `-d dir` — working directory (default: current directory)\n- `-o format` — `text`, `json`, or `stream-json` (default: `text`)\n- `-m model` — model name\n- `--mode mode` — `agent`, `plan`, or `ask`\n- `--force` — allow file modifications (default)\n- `--no-force` — do not modify files; agent only proposes changes\n- `--stream` — use `--stream-partial-output` (implies `stream-json`); requires `jq` for progress display\n\n**Examples:**\n\n```bash\n# Task from file, apply changes (default), text output\n./scripts/run-task.sh -f tasks/refactor-auth.txt\n\n# Inline prompt, specific project, JSON result\n./scripts/run-task.sh -p \"Summarize README.md\" -d /path/to/repo -o json\n\n# Stream with live progress\n./scripts/run-task.sh -f tasks/review.txt -o stream-json --stream\n```\n\n## Error handling\n\n- **Exit code**: Non-zero means the run failed; check stderr for the error message.\n- **JSON output**: On failure, no well-formed JSON is emitted; only stderr.\n- In scripts, always check `$?` after running `agent` or the wrapper and exit accordingly.\n\n## Working directory\n\nThe headless agent uses the process **cwd** as the project root. Either:\n\n- `cd /path/to/project && agent -p --force \"...\"`, or\n- Use `scripts/run-task.sh -d /path/to/project ...`\n\n## Additional resources\n\n- For detailed output schemas and event types: [reference.md](reference.md)\n- Official docs: [Using Headless CLI](https://cursor.com/docs/cli/headless), [Output format](https://cursor.com/docs/cli/reference/output-format)\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn79yres364wtdabck9g87vqx581dmyf\",\n  \"slug\": \"cursor-cli-headless\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1771427920824\n}\n\nFile v1.0.0:reference.md\n\n# Output Format Reference\n\nDetailed schemas for Cursor CLI headless output. Use with `--output-format json` or `--output-format stream-json`.\n\n## JSON format (single object on success)\n\nUse `--output-format json`. One JSON object (one line) when the run completes successfully.\n\n### Success response\n\n```json\n{\n  \"type\": \"result\",\n  \"subtype\": \"success\",\n  \"is_error\": false,\n  \"duration_ms\": 1234,\n  \"duration_api_ms\": 1234,\n  \"result\": \"<full assistant text>\",\n  \"session_id\": \"<uuid>\",\n  \"request_id\": \"<optional request id>\"\n}\n```\n\n| Field | Description |\n|-------|-------------|\n| `type` | Always `\"result\"` |\n| `subtype` | Always `\"success\"` for success |\n| `is_error` | Always `false` for success |\n| `duration_ms` | Total execution time (ms) |\n| `duration_api_ms` | API time (ms); currently same as `duration_ms` |\n| `result` | Full assistant response text (all text deltas concatenated) |\n| `session_id` | Session identifier |\n| `request_id` | Optional request id |\n\nOn failure: process exits non-zero, error on stderr, no JSON object emitted.\n\n---\n\n## Stream-JSON format (NDJSON)\n\nUse `--output-format stream-json`. Each line is one JSON object (NDJSON). Optionally use `--stream-partial-output` for character-level text deltas.\n\n### Event types\n\n#### 1. System initialization (once per run)\n\n```json\n{\n  \"type\": \"system\",\n  \"subtype\": \"init\",\n  \"apiKeySource\": \"env|flag|login\",\n  \"cwd\": \"/absolute/path\",\n  \"session_id\": \"<uuid>\",\n  \"model\": \"<model display name>\",\n  \"permissionMode\": \"default\"\n}\n```\n\n#### 2. User message\n\n```json\n{\n  \"type\": \"user\",\n  \"message\": {\n    \"role\": \"user\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<prompt>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 3. Assistant message\n\nOne event per complete message segment (between tool calls). With `--stream-partial-output`, multiple events per segment with small text deltas; concatenate `message.content[].text` to get full text.\n\n```json\n{\n  \"type\": \"assistant\",\n  \"message\": {\n    \"role\": \"assistant\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<message text>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 4. Tool call — started\n\n```json\n{\n  \"type\": \"tool_call\",\n  \"subtype\": \"started\",\n  \"call_id\": \"<string id>\",\n  \"tool_call\": { \"<tool type>\": { \"args\": { ... } } },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 5. Tool call — completed\n\n```json\n{\n  \"type\": \"tool_call\",\n  \"subtype\": \"completed\",\n  \"call_id\": \"<string id>\",\n  \"tool_call\": {\n    \"<tool type>\": {\n      \"args\": { ... },\n      \"result\": { \"success\": { ... } }\n    }\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 6. Terminal result (end of stream on success)\n\n```json\n{\n  \"type\": \"result\",\n  \"subtype\": \"success\",\n  \"duration_ms\": 1234,\n  \"duration_api_ms\": 1234,\n  \"is_error\": false,\n  \"result\": \"<full assistant text>\",\n  \"session_id\": \"<uuid>\",\n  \"request_id\": \"<optional request id>\"\n}\n```\n\n---\n\n## Tool call types\n\n### readToolCall\n\n- **Started**: `tool_call.readToolCall.args` → `{ \"path\": \"file.txt\" }`\n- **Completed**: `tool_call.readToolCall.result.success` → `{ \"content\": \"...\", \"isEmpty\": false, \"exceededLimit\": false, \"totalLines\": 54, \"totalChars\": 1254 }`\n\n### writeToolCall\n\n- **Started**: `tool_call.writeToolCall.args` → `{ \"path\": \"file.txt\", \"fileText\": \"content...\", \"toolCallId\": \"id\" }`\n- **Completed**: `tool_call.writeToolCall.result.success` → `{ \"path\": \"/absolute/path\", \"linesCreated\": 19, \"fileSize\": 942 }`\n\n### Other tools\n\nMay use `tool_call.function` with `{ \"name\": \"tool_name\", \"arguments\": \"...\" }`.\n\n---\n\n## Example NDJSON sequence\n\n```json\n{\"type\":\"system\",\"subtype\":\"init\",\"apiKeySource\":\"login\",\"cwd\":\"/Users/user/project\",\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\",\"model\":\"Claude 4 Sonnet\",\"permissionMode\":\"default\"}\n{\"type\":\"user\",\"message\":{\"role\":\"user\",\"content\":[{\"type\":\"text\",\"text\":\"Read README.md and create a summary\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"I'll read the README.md file\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"started\",\"call_id\":\"toolu_xxx\",\"tool_call\":{\"readToolCall\":{\"args\":{\"path\":\"README.md\"}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"completed\",\"call_id\":\"toolu_xxx\",\"tool_call\":{\"readToolCall\":{\"args\":{\"path\":\"README.md\"},\"result\":{\"success\":{\"content\":\"# Project\\n\\n...\",\"isEmpty\":false,\"exceededLimit\":false,\"totalLines\":54,\"totalChars\":1254}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"Based on the README, I'll create a summary\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"started\",\"call_id\":\"toolu_yyy\",\"tool_call\":{\"writeToolCall\":{\"args\":{\"path\":\"summary.txt\",\"fileText\":\"# README Summary\\n\\n...\",\"toolCallId\":\"toolu_yyy\"}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"tool_call\",\"subtype\":\"completed\",\"call_id\":\"toolu_yyy\",\"tool_call\":{\"writeToolCall\":{\"args\":{\"path\":\"summary.txt\",...},\"result\":{\"success\":{\"path\":\"/Users/user/project/summary.txt\",\"linesCreated\":19,\"fileSize\":942}}},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"assistant\",\"message\":{\"role\":\"assistant\",\"content\":[{\"type\":\"text\",\"text\":\"Done! I've created the summary in summary.txt\"}]},\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\"}\n{\"type\":\"result\",\"subtype\":\"success\",\"duration_ms\":5234,\"duration_api_ms\":5234,\"is_error\":false,\"result\":\"I'll read...Based on the README...Done!...\",\"session_id\":\"c6b62c6f-7ead-4fd6-9922-e952131177ff\",\"request_id\":\"...\"}\n```\n\n---\n\n## Implementation notes\n\n- Each event is one line, terminated by `\\n`.\n- `thinking` events are suppressed in print mode.\n- Session IDs are constant for one run; `call_id` correlates tool started/completed.\n- Consumers should ignore unknown fields (backward compatibility).","readmeExcerpt":"Skill: Cursor CLI Headless Owner: daxingplay Summary: Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Curs... Tags: latest:1.1.0 Version history: v1.1.0 | 2026-02-18T16:08:20.542Z | user - Added .DS_Store file to the repository. - Updated documentation to recommend using only the wrapper script (scripts/run-task.s","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"# Prompt from file (stream progress by default)\n./scripts/run-task.sh -f prompt.txt\n\n# Inline prompt, run in a specific project directory\n./scripts/run-task.sh -p \"Add tests for auth module\" -d /path/to/project"},{"language":"bash","snippet":"# Task from file, apply changes, stream progress (default)\n./scripts/run-task.sh -f tasks/refactor-auth.txt\n\n# Inline prompt, specific project, JSON result only\n./scripts/run-task.sh -p \"Summarize README.md\" -d /path/to/repo --no-stream -o json\n\n# Plain text output, no progress\n./scripts/run-task.sh -f tasks/review.txt --no-stream -o text"},{"language":"json","snippet":"{\n  \"type\": \"result\",\n  \"subtype\": \"success\",\n  \"is_error\": false,\n  \"duration_ms\": 1234,\n  \"duration_api_ms\": 1234,\n  \"result\": \"<full assistant text>\",\n  \"session_id\": \"<uuid>\",\n  \"request_id\": \"<optional request id>\"\n}"},{"language":"json","snippet":"{\n  \"type\": \"system\",\n  \"subtype\": \"init\",\n  \"apiKeySource\": \"env|flag|login\",\n  \"cwd\": \"/absolute/path\",\n  \"session_id\": \"<uuid>\",\n  \"model\": \"<model display name>\",\n  \"permissionMode\": \"default\"\n}"},{"language":"json","snippet":"{\n  \"type\": \"user\",\n  \"message\": {\n    \"role\": \"user\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<prompt>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}"},{"language":"json","snippet":"{\n  \"type\": \"assistant\",\n  \"message\": {\n    \"role\": \"assistant\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<message text>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: cursor-cli-headless\ndescription: Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Cursor agent process, running automated code changes, or batch-processing files with the agent CLI.\n---\n\n# Cursor CLI Headless\n\nExecute coding tasks using the Cursor CLI in non-interactive (print) mode via the wrapper script for scripts, automation, and batch processing.\n\n## Prerequisites\n\n- **Cursor CLI installed**: Run `agent --version`. If missing, install: `curl https://cursor.com/install -fsS | bash` (macOS/Linux/WSL) or see [Installation](https://cursor.com/docs/cli/installation).\n- **Authenticated**: Set `CURSOR_API_KEY` in the environment for scripts, or run `agent login` interactively once. Check if already logged in with `agent status` or `agent whoami`.\n\n## Quick start\n\nUse `scripts/run-task.sh` with either an inline prompt or a prompt file:\n\n```bash\n# Prompt from file (stream progress by default)\n./scripts/run-task.sh -f prompt.txt\n\n# Inline prompt, run in a specific project directory\n./scripts/run-task.sh -p \"Add tests for auth module\" -d /path/to/project\n```\n\n## Wrapper script: run-task.sh\n\n`scripts/run-task.sh` runs the Cursor agent in headless mode. **Recommended:** keep file modifications and stream progress **on** (default). Use `--no-force` only with tmux for interactive mode (agent proposes changes for review). Use `--no-stream` for plain output.\n\n**Arguments:**\n\n- `-p \"prompt\"` — inline prompt (mutually exclusive with `-f`)\n- `-f prompt-file.txt` — read prompt from file (for long prompts)\n- `-d dir` — working directory (default: current directory)\n- `-o format` — `text`, `json`, or `stream-json` (with default streaming, format is stream-json)\n- `-m model` — model name\n- `--mode mode` — `agent`, `plan`, or `ask`\n- `--force` — allow file modifications (default)\n- `--no-force` — do not modify files; agent only proposes changes\n- `--stream` — stream-json with progress display (default; requires `jq` for progress)\n- `--no-stream` — plain output only; use with `-o text` or `-o json`\n\n**Output formats:**\n\n| Format | Use when |\n|--------|----------|\n| (default stream) | Live progress (model, tool calls, chars); NDJSON on stdout, progress on stderr |\n| `-o text --no-stream` | Only the final assistant message |\n| `-o json --no-stream` | Single JSON object with `result`, `duration_ms`, etc.; parse with `jq -r '.result'` |\n\n**Examples:**\n\n```bash\n# Task from file, apply changes, stream progress (default)\n./scripts/run-task.sh -f tasks/refactor-auth.txt\n\n# Inline prompt, specific project, JSON result only\n./scripts/run-task.sh -p \"Summarize README.md\" -d /path/to/repo --no-stream -o json\n\n# Plain text output, no progress\n./scripts/run-task.sh -f tasks/review.txt --no-stream -o text\n```\n\n## Working directory\n\nThe agent runs in the script’s working directory. Use `-d /path/to/project` so the agent sees that project as the root.\n\n## Error handling\n\n"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn79yres364wtdabck9g87vqx581dmyf\",\n  \"slug\": \"cursor-cli-headless\",\n  \"version\": \"1.1.0\",\n  \"publishedAt\": 1771430900542\n}"},{"path":"reference.md","content":"# Output Format Reference\n\nDetailed schemas for Cursor CLI headless output. Use with `--output-format json` or `--output-format stream-json`.\n\n## JSON format (single object on success)\n\nUse `--output-format json`. One JSON object (one line) when the run completes successfully.\n\n### Success response\n\n```json\n{\n  \"type\": \"result\",\n  \"subtype\": \"success\",\n  \"is_error\": false,\n  \"duration_ms\": 1234,\n  \"duration_api_ms\": 1234,\n  \"result\": \"<full assistant text>\",\n  \"session_id\": \"<uuid>\",\n  \"request_id\": \"<optional request id>\"\n}\n```\n\n| Field | Description |\n|-------|-------------|\n| `type` | Always `\"result\"` |\n| `subtype` | Always `\"success\"` for success |\n| `is_error` | Always `false` for success |\n| `duration_ms` | Total execution time (ms) |\n| `duration_api_ms` | API time (ms); currently same as `duration_ms` |\n| `result` | Full assistant response text (all text deltas concatenated) |\n| `session_id` | Session identifier |\n| `request_id` | Optional request id |\n\nOn failure: process exits non-zero, error on stderr, no JSON object emitted.\n\n---\n\n## Stream-JSON format (NDJSON)\n\nUse `--output-format stream-json`. Each line is one JSON object (NDJSON). Optionally use `--stream-partial-output` for character-level text deltas.\n\n### Event types\n\n#### 1. System initialization (once per run)\n\n```json\n{\n  \"type\": \"system\",\n  \"subtype\": \"init\",\n  \"apiKeySource\": \"env|flag|login\",\n  \"cwd\": \"/absolute/path\",\n  \"session_id\": \"<uuid>\",\n  \"model\": \"<model display name>\",\n  \"permissionMode\": \"default\"\n}\n```\n\n#### 2. User message\n\n```json\n{\n  \"type\": \"user\",\n  \"message\": {\n    \"role\": \"user\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<prompt>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 3. Assistant message\n\nOne event per complete message segment (between tool calls). With `--stream-partial-output`, multiple events per segment with small text deltas; concatenate `message.content[].text` to get full text.\n\n```json\n{\n  \"type\": \"assistant\",\n  \"message\": {\n    \"role\": \"assistant\",\n    \"content\": [{ \"type\": \"text\", \"text\": \"<message text>\" }]\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 4. Tool call — started\n\n```json\n{\n  \"type\": \"tool_call\",\n  \"subtype\": \"started\",\n  \"call_id\": \"<string id>\",\n  \"tool_call\": { \"<tool type>\": { \"args\": { ... } } },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 5. Tool call — completed\n\n```json\n{\n  \"type\": \"tool_call\",\n  \"subtype\": \"completed\",\n  \"call_id\": \"<string id>\",\n  \"tool_call\": {\n    \"<tool type>\": {\n      \"args\": { ... },\n      \"result\": { \"success\": { ... } }\n    }\n  },\n  \"session_id\": \"<uuid>\"\n}\n```\n\n#### 6. Terminal result (end of stream on success)\n\n```json\n{\n  \"type\": \"result\",\n  \"subtype\": \"success\",\n  \"duration_ms\": 1234,\n  \"duration_api_ms\": 1234,\n  \"is_error\": false,\n  \"result\": \"<full assistant text>\",\n  \"session_id\": \"<uuid>\",\n  \"request_id\": \"<optional request id>\"\n}\n```\n\n---\n\n## Tool call types\n\n### readToolCall\n\n- **Started**: `tool_call.readToolCall.args` → `{ \"path\": \"file.txt\" }`\n- **Completed**: `tool_call.readToolCall.re"}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":"Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Curs... Skill: Cursor CLI Headless Owner: daxingplay Summary: Execute coding tasks using the Cursor CLI in headless print mode. Use when delegating code writing, refactoring, analysis, or review tasks to a headless Curs... Tags: latest:1.1.0 Version history: v1.1.0 | 2026-02-18T16:08:20.542Z | user - Added .DS_Store file to the repository. - Updated documentation to recommend using only the wrapper script (scripts/run-task.s","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1081,"uniquenessScore":45,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T11:54:36.158Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-11T11:54:36.158Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-11T15:13:06.618Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}