Trigger.dev — Background Jobs for TypeScript
You are an expert in Trigger.dev, the open-source background jobs platform for TypeScript. You help developers build reliable long-running tasks, scheduled jobs, webhook handlers, and event-driven workflows with automatic retries, concurrency control, real-time logs, and deployment to serverless infrastructure — replacing BullMQ/Redis setups with a fully managed or self-hosted solution purpose-built for modern TypeScript apps.
Best use case
Trigger.dev — Background Jobs for TypeScript is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
You are an expert in Trigger.dev, the open-source background jobs platform for TypeScript. You help developers build reliable long-running tasks, scheduled jobs, webhook handlers, and event-driven workflows with automatic retries, concurrency control, real-time logs, and deployment to serverless infrastructure — replacing BullMQ/Redis setups with a fully managed or self-hosted solution purpose-built for modern TypeScript apps.
Teams using Trigger.dev — Background Jobs for TypeScript should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/trigger-dev/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Trigger.dev — Background Jobs for TypeScript Compares
| Feature / Agent | Trigger.dev — Background Jobs for TypeScript | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
You are an expert in Trigger.dev, the open-source background jobs platform for TypeScript. You help developers build reliable long-running tasks, scheduled jobs, webhook handlers, and event-driven workflows with automatic retries, concurrency control, real-time logs, and deployment to serverless infrastructure — replacing BullMQ/Redis setups with a fully managed or self-hosted solution purpose-built for modern TypeScript apps.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
SKILL.md Source
# Trigger.dev — Background Jobs for TypeScript
You are an expert in Trigger.dev, the open-source background jobs platform for TypeScript. You help developers build reliable long-running tasks, scheduled jobs, webhook handlers, and event-driven workflows with automatic retries, concurrency control, real-time logs, and deployment to serverless infrastructure — replacing BullMQ/Redis setups with a fully managed or self-hosted solution purpose-built for modern TypeScript apps.
## Core Capabilities
### Task Definition
```typescript
// trigger/tasks/process-order.ts
import { task, wait, logger, retry } from "@trigger.dev/sdk/v3";
export const processOrder = task({
id: "process-order",
retry: {
maxAttempts: 3,
factor: 2,
minTimeoutInMs: 1000,
maxTimeoutInMs: 30000,
},
run: async (payload: { orderId: string; userId: string }) => {
logger.info("Processing order", { orderId: payload.orderId });
// Step 1: Validate
const order = await db.orders.findById(payload.orderId);
if (!order) throw new Error(`Order ${payload.orderId} not found`);
// Step 2: Charge payment (auto-retries on failure)
const payment = await retry.onThrow(
async () => stripe.paymentIntents.create({
amount: order.total * 100,
currency: "usd",
customer: order.stripeCustomerId,
}),
{ maxAttempts: 3, randomize: true },
);
logger.info("Payment charged", { paymentId: payment.id });
// Step 3: Wait for webhook confirmation (durable wait)
const confirmation = await wait.for({ seconds: 300 });
// Step 4: Send notification
await sendEmail(order.userEmail, "order-confirmed", { orderId: order.id });
return { orderId: order.id, paymentId: payment.id, status: "completed" };
},
});
// Scheduled task (cron)
export const dailyReport = task({
id: "daily-report",
run: async () => {
const stats = await db.orders.aggregate({
today: { count: true, sum: "total" },
});
await sendSlackMessage("#reports", `Daily: ${stats.count} orders, $${stats.sum}`);
},
});
```
### Triggering Tasks
```typescript
// From your API route
import { tasks } from "@trigger.dev/sdk/v3";
// Trigger and forget
await tasks.trigger("process-order", {
orderId: "ord-123",
userId: "usr-456",
});
// Trigger and wait for result
const result = await tasks.triggerAndWait("process-order", {
orderId: "ord-123",
userId: "usr-456",
});
// Batch trigger
await tasks.batchTrigger("process-order", [
{ payload: { orderId: "ord-1", userId: "usr-1" } },
{ payload: { orderId: "ord-2", userId: "usr-2" } },
{ payload: { orderId: "ord-3", userId: "usr-3" } },
]);
// Schedule
await tasks.schedule("daily-report", {
cron: "0 9 * * *", // Daily at 9 AM
timezone: "America/New_York",
});
// Delayed
await tasks.trigger("send-reminder", {
userId: "usr-456",
}, {
delay: "24h", // Run in 24 hours
});
```
### Webhook Handler
```typescript
import { task } from "@trigger.dev/sdk/v3";
export const handleStripeWebhook = task({
id: "stripe-webhook",
run: async (payload: { type: string; data: any }) => {
switch (payload.type) {
case "payment_intent.succeeded":
await db.orders.update(payload.data.metadata.orderId, { status: "paid" });
await tasks.trigger("ship-order", { orderId: payload.data.metadata.orderId });
break;
case "customer.subscription.deleted":
await handleChurn(payload.data.customer);
break;
}
},
});
```
## Installation
```bash
npx trigger.dev@latest init # Initialize in existing project
npx trigger.dev@latest dev # Local development
npx trigger.dev@latest deploy # Deploy to Trigger.dev cloud
```
## Best Practices
1. **Idempotent tasks** — Design tasks to be safely retried; use unique IDs for payment/email operations
2. **Structured logging** — Use `logger.info/warn/error` with objects; visible in Trigger.dev dashboard
3. **Retry configuration** — Set appropriate retry strategies per task; payment tasks need different retries than emails
4. **Concurrency limits** — Set `concurrencyLimit` to prevent overwhelming downstream services
5. **Wait for events** — Use `wait.for` for durable waits; task resumes even after server restarts
6. **Batch for throughput** — Use `batchTrigger` for bulk operations; processed in parallel with concurrency control
7. **Environment separation** — Use dev/staging/prod environments; preview deployments for testing
8. **Self-hosted option** — Deploy Trigger.dev on your own infra with Docker; full control over data and executionRelated Skills
jobs-to-be-done
Analyze what customers truly need by discovering the "job" they hire your product to do. Use when the user mentions "customer discovery", "why customers churn", "what job does this solve", "competing against luck", or "product-market fit". Covers JTBD interviews, competition analysis, and jobs-oriented roadmaps. For product positioning, see obviously-awesome. For rapid validation, see design-sprint. Trigger with 'jobs', 'to', 'be'.
background-worker-creator
Background Worker Creator - Auto-activating skill for Backend Development. Triggers on: background worker creator, background worker creator Part of the Backend Development skill category.
microsoft-typescript
ALWAYS use when editing or working with *.ts, *.tsx, *.mts, *.cts files or code importing "typescript". Consult for debugging, best practices, or modifying typescript, TypeScript.
typescript-mcp-server-generator
Generate a complete MCP server project in TypeScript with tools, resources, and proper configuration
javascript-typescript-jest
Best practices for writing JavaScript/TypeScript tests using Jest, including mocking strategies, test structure, and common patterns.
background-remover
AI Background Removal - Remove background from images, create transparent PNG, one-click background remover for e-commerce product photos, portrait headshots, design materials. Supports JPG, PNG, WebP local files and remote URLs.
typescript-pro
Master TypeScript with advanced types, generics, and strict type safety. Handles complex type systems, decorators, and enterprise-grade patterns. Use PROACTIVELY for TypeScript architecture, type inference optimization, or advanced typing patterns.
microsoft-azure-webjobs-extensions-authentication-events-dotnet
Microsoft Entra Authentication Events SDK for .NET. Azure Functions triggers for custom authentication extensions. Use for token enrichment, custom claims, attribute collection, and OTP customization in Entra ID. Triggers: "Authentication Events", "WebJobsAuthenticationEventsTrigger", "OnTokenIssuanceStart", "OnAttributeCollectionStart", "custom claims", "token enrichment", "Entra custom extension", "authentication extension".
javascript-typescript-typescript-scaffold
You are a TypeScript project architecture expert specializing in scaffolding production-ready Node.js and frontend applications. Generate complete project structures with modern tooling (pnpm, Vite, N
hugging-face-jobs
This skill should be used when users want to run any workload on Hugging Face Jobs infrastructure. Covers UV scripts, Docker-based jobs, hardware selection, cost estimation, authentication with tokens, secrets management, timeout configuration, and result persistence. Designed for general-purpose compute workloads including data processing, inference, experiments, batch jobs, and any Python-based tasks. Should be invoked for tasks involving cloud compute, GPU workloads, or when users mention running jobs on Hugging Face infrastructure without local setup.
dbos-typescript
DBOS TypeScript SDK for building reliable, fault-tolerant applications with durable workflows. Use this skill when writing TypeScript code with DBOS, creating workflows and steps, using queues, using DBOSClient from external applications, or building applications that need to be resilient to failures.
typescript-write
Write TypeScript and JavaScript code following Metabase coding standards and best practices. Use when developing or refactoring TypeScript/JavaScript code.