--- name: "cursor-ide-stinger" description: "Configure Cursor agents, rules, hooks, MCP, and SDK automation. Use for Cursor integration or IDE productivity issues. Read guides/ for the decision path." license: AGPL-3.0-or-later --- # cursor-ide Stinger The knowledge repository for `cursor-ide-wasp-drone`. Covers Hivemind's real Cursor surface: the Cursor 1.7+ hooks harness, the first-party Cursor extension, registering the Wasp Nestmind MCP server in Cursor, and the `.cursor/` colony (rules, agents, skills, commands, model matrix) that this repo ships. This is the platform knowledge that keeps the colony working inside Cursor: the rules `.mdc` format, the hooks lifecycle, MCP registration, the agents/skills/commands layout, and the cursor harness install. ## When this stinger applies Load whenever `cursor-ide-wasp-drone` is invoked. Typical triggers (any of these phrases): - "wire the Cursor hooks" / "what does install-cursor do" / "hooks.json" / "Cursor 1.7 hooks" - "add a `.cursor/rules/*.mdc`" / "fix this rule" / "rule frontmatter" / "alwaysApply / globs" - "register the Wasp Nestmind MCP server in Cursor" / "mcp.json in Cursor" - "the cursor extension" / "harnesses/cursor/extension" / "the dashboard webview / status bar" - "the colony layout" / "where do agents/skills/commands live" / "the-pest-controller / the-smoker" - "model-comparison-matrix" Do NOT load for: - Code quality / typing of the TypeScript source itself (`typescript-node-wasp-drone`). - The MCP protocol internals of `src/mcp/server.ts`: tool schemas, transport (`mcp-protocol-wasp-drone`). - Harness wiring for Claude Code, Codex, Hermes, or other agents (`harness-integration-wasp-drone`). ## First action when loaded Read in order before acting: 1. **`guides/01-principles.md`**: the Wasp Nestmind Cursor surface map, the rules `.mdc` mental model, and the hard directives (idempotent hook merge, em-dash ban, Cursor field shape). 2. The task-specific guide: - `02` for `.cursor/rules/*.mdc` authoring. - `03` for registering the Wasp Nestmind MCP server in Cursor. - `04` for the Cursor hooks lifecycle (the 6 events + `install-cursor.ts`). - `05` for the `.cursor/` colony layout. - `06` for the cursor extension build. ## Folder layout ```text cursor-ide-stinger/ +- SKILL.md (this file, master index) +- guides/ | +- 01-principles.md (the Wasp Nestmind Cursor surface; rules model; hard directives) | +- 02-rule-file-authoring.md (.cursor/rules/*.mdc frontmatter, globs, activation modes) | +- 03-mcp-integration.md (registering the Wasp Nestmind MCP server in Cursor) | +- 04-cursor-hooks-lifecycle.md (hooks.json 1.7+, the 6 events, install-cursor.ts wiring) | +- 05-cursor-army-layout.md (.cursor/ rules + agents + skills + commands + model matrix) | +- 06-extension-development.md (harnesses/cursor/extension build, contributions, MCP/hooks surface) +- examples/ | +- rule-file-examples.md (worked .mdc examples, including this repo's live rules) | +- mcp-server-example.md (registering hivemind in Cursor mcp.json + the extension path) | +- hooks-wiring-example.md (a real ~/.cursor/hooks.json after install-cursor) +- templates/ | +- rule-file-template.mdc (canonical .mdc frontmatter template) | +- hooks-json-template.json (Cursor 1.7+ hooks.json wiring template) +- reports/ | +- README.md +- research/ (Cursor 1.7+ hooks/rules notes, dated 2026-06-16) +- research-plan.md +- research-summary.md +- index.md +- internal/ (live repo artifacts) +- external/ (Cursor hooks + rules docs) ``` ## Critical directives Stinger-level non-negotiables that `cursor-ide-wasp-drone` enforces on every invocation: - **Cursor's hooks.json schema differs from Claude/Codex.** Array entries under each event are command objects directly (`{ type, command, timeout }`), with NO outer `{ hooks: [...] }` wrapper and NO top-level `matcher` wrapper. See `guides/04`. - **Hook merges must stay idempotent and Windows-safe.** `install-cursor.ts` strips prior Hivemind entries (matched on a normalized `/.cursor/hivemind/bundle/` path so backslash paths on Windows do not duplicate) before re-adding, and only rewrites `hooks.json` when content changed so it does not perturb Cursor's trust fingerprint. - **`.cursor/rules/*.mdc` is the only rules format.** This repo ships `.mdc` rules with frontmatter (`description` / `globs` / `alwaysApply`). Never introduce a `.cursorrules` file here. - **Prefer `alwaysApply: false` with a narrow glob or a sharp `description`.** Reserve `alwaysApply: true` for short, always-true directives (this repo uses it only for `no-em-dashes.mdc`). - **NO em dashes, ever.** Write hyphens directly. This is enforced by `.cursor/rules/no-em-dashes.mdc` and applies to every file this Drone authors. ## Key facts by domain (quick reference) ### The Wasp Nestmind Cursor surface (what this repo actually ships) | Surface | Path | Purpose | |---|---|---| | Hook installer | `src/cli/install-cursor.ts` | Merges `~/.cursor/hooks.json`, copies the bundle to `~/.cursor/hivemind/bundle/` | | Hook bundle | `harnesses/cursor/bundle/` | Built hook scripts (`session-start.js`, `capture.js`, `pre-tool-use.js`, `graph-on-stop.js`, `session-end.js`) | | Extension | `harnesses/cursor/extension/` | First-party VS Code/Cursor extension: status bar, onboarding, dashboard webview, codebase graph, skill sync | | MCP server | `src/mcp/server.ts` | stdio server exposing `hivemind_search` / `hivemind_read` / `hivemind_index` | | Colony | `.cursor/` | `rules/*.mdc`, `agents/*.md`, `skills/-stinger/`, `commands/`, `model-comparison-matrix.md` | ### Cursor 1.7+ hooks (`~/.cursor/hooks.json`) ```jsonc { "version": 1, "hooks": { "sessionStart": [{ "type": "command", "command": "node \"...bundle/session-start.js\"", "timeout": 30 }], "beforeSubmitPrompt": [{ "type": "command", "command": "node \"...bundle/capture.js\"", "timeout": 10 }], "preToolUse": [{ "type": "command", "command": "node \"...bundle/pre-tool-use.js\"", "timeout": 30, "matcher": "Shell" }], "postToolUse": [{ "type": "command", "command": "node \"...bundle/capture.js\"", "timeout": 15 }], "afterAgentResponse": [{ "type": "command", "command": "node \"...bundle/capture.js\"", "timeout": 15 }], "stop": [{ "...": "capture.js + graph-on-stop.js" }], "sessionEnd": [{ "...": "session-end.js + graph-on-stop.js" }] } } ``` Six lifecycle events are wired: `sessionStart`, `beforeSubmitPrompt`, `preToolUse` (Shell matcher rewrites grep/rg against `~/.deeplake/memory/` into a SQL fast path), `postToolUse`, `afterAgentResponse`, `stop`, and `sessionEnd`. `graph-on-stop.js` auto-builds the code graph on `stop` and `sessionEnd` (gated, async, never blocks Cursor). ### Rules (`.cursor/rules/*.mdc`) Cursor project rules are `.mdc` files with frontmatter. Activation is driven by three fields: | Mode | `alwaysApply` | `globs` | `description` | |---|---|---|---| | Always Apply | `true` | any | any | | Apply to Specific Files | `false` | set | any | | Apply Intelligently | `false` | unset | set | | Apply Manually | `false` | unset | unset | This repo's live rules: `no-em-dashes.mdc` (alwaysApply), `plan-construction-protocol.mdc`, `respect-agent-work-boundaries.mdc`. ### MCP registration in Cursor The Wasp Nestmind MCP server (`src/mcp/server.ts`, stdio) exposes `hivemind_search`, `hivemind_read`, `hivemind_index`. To use it inside Cursor, add a `mcpServers` entry to `.cursor/mcp.json` (project) or `~/.cursor/mcp.json` (global) pointing at the built server. See `guides/03`. ## Pairing | Role | Artifact | |---|---| | This stinger | `.` | | Paired Drone | `../../agents/cursor-ide-wasp-drone.md` | | Harness Drone (other agents) | `../../agents/harness-integration-wasp-drone.md` | | MCP protocol Drone | `../../agents/mcp-protocol-wasp-drone.md` | | Orchestrator commands | `.cursor/commands/the-pest-controller.md`, `.cursor/commands/the-smoker.md` | ## Refresh cadence - Guides `01`-`06`: refresh on any Cursor major version, or when `install-cursor.ts` / the extension `package.json` changes. - Research folder: re-run on any Cursor 1.x hooks API change. --- *Part of The Wasp Nest, curated by [Mario Aldayuz a.k.a @thenotoriousllama](https://github.com/thenotoriousllama).*