Trigger.dev (Cursor)
Trigger.dev is an open-source background-jobs framework: reliable, long-running async TypeScript workflows with built-in queues, retries, waits, and real-time monitoring. Current version is v4 — model training data is usually stale (v2/v3), so never write Trigger.dev code from memory.
Canonical source
Full patterns, invariants, and the curated doc map live in the Claude bundle:
.claude/skills/trigger-dev/SKILL.md and .claude/skills/trigger-dev/reference.md.
Rule 0: fetch live docs before writing code
triggerMCP server — if configured, use itssearch_docstool (no auth needed). Best source.llms.txtindex —https://trigger.dev/docs/llms.txtto find the exact page.- Raw markdown — append
.mdto any docs URL, e.g.https://trigger.dev/docs/tasks/overview.md. - Full dump —
https://trigger.dev/docs/llms-full.txt(large; broad context only). - Context7 fallback if the above are unreachable.
Recommended tooling
npx trigger.dev@latest init # add to a project
npx trigger.dev@latest install-mcp --client cursor # live docs/deploy/monitor in Cursor
npx trigger.dev@latest skills # offline pattern skills
npx trigger.dev@latest dev # local dev server
The MCP server config for Cursor goes in ~/.cursor/mcp.json (user) or .cursor/mcp.json (project):
{ "mcpServers": { "trigger": { "command": "npx", "args": ["trigger.dev@latest", "mcp"] } } }
v4 invariants
- Import from
@trigger.dev/sdk— NEVER@trigger.dev/sdk/v3; NEVERclient.defineJob()(v2). - Every task is a named
export; define withtask()/schemaTask(). - Backend:
tasks.trigger<typeof myTask>("task-id", payload)with a type-only import of the task. triggerAndWait()returns aResult— check.ok/.output, or.unwrap().- Never
Promise.allaround waits or*AndWait. Tasks have no timeouts (usemaxDuration).
import { task } from "@trigger.dev/sdk";
export const myTask = task({
id: "my-task",
retry: { maxAttempts: 3 },
run: async (payload: { url: string }) => ({ success: true }),
});