Setting the chapter. One moment.
Skills
Chapter 2 of 6
Configure Trigger.dev projects with trigger.config.ts. Use when setting up build extensions for Prisma, Playwright, FFmpeg, Python, or customizing deployment settings.
1 minute · 122 words · 20 sections
Configure your Trigger.dev project with trigger.config.ts and build extensions.
// trigger.config.ts
import { defineConfig } from "@trigger.dev/sdk";
export default defineConfig({
project: "<project-ref>",
dirs: ["./trigger"],
runtime: "node", // "node", "node-22", or "bun"
logLevel: "info",
retries: {
enabledInDev: false,
default: {
maxAttempts: 3,
minTimeoutInMs: 1000,
maxTimeoutInMs: 10000,
factor: 2,
},
},
build: {
extensions: [], // Add extensions here
},
});import { prismaExtension } from "@trigger.dev/build/extensions/prisma";
export default defineConfig({
// ...
build: {
extensions: [
prismaExtension({
schema: "prisma/schema.prisma",
migrate: true,
directUrlEnvVarName: "DIRECT_DATABASE_URL",
}),
],
},
});import { playwright } from "@trigger.dev/build/extensions/playwright";
extensions: [
playwright({
browsers: ["chromium"], // or ["chromium", "firefox", "webkit"]
}),
]import { puppeteer } from "@trigger.dev/build/extensions/puppeteer";
extensions: [puppeteer()]
// Set env var: PUPPETEER_EXECUTABLE_PATH="/usr/bin/google-chrome-stable"import { ffmpeg } from "@trigger.dev/build/extensions/core";
extensions: [
ffmpeg({ version: "7" }),
]
// Automatically sets FFMPEG_PATH and FFPROBE_PATHimport { pythonExtension } from "@trigger.dev/build/extensions/python";
extensions: [
pythonExtension({
scripts: ["./python/**/*.py"],
requirementsFile: "./requirements.txt",
devPythonBinaryPath: ".venv/bin/python",
}),
]
// Usage in tasks:
const result = await python.runScript("./python/process.py", ["arg1"]);import { aptGet } from "@trigger.dev/build/extensions/core";
extensions: [
aptGet({
packages: ["imagemagick", "curl"],
}),
]import { additionalFiles } from "@trigger.dev/build/extensions/core";
extensions: [
additionalFiles({
files: ["./assets/**", "./templates/**"],
}),
]import { syncEnvVars } from "@trigger.dev/build/extensions/core";
extensions: [
syncEnvVars(async (ctx) => {
return [
{ name: "API_KEY", value: await getSecret(ctx.environment) },
{ name: "ENV", value: ctx.environment },
];
}),
]extensions: [
prismaExtension({ schema: "prisma/schema.prisma", migrate: true }),
additionalFiles({ files: ["./assets/**"] }),
syncEnvVars(async (ctx) => [...envVars]),
]extensions: [
pythonExtension({
scripts: ["./ai/**/*.py"],
requirementsFile: "./requirements.txt",
}),
ffmpeg({ version: "7" }),
]extensions: [
playwright({ browsers: ["chromium"] }),
additionalFiles({ files: ["./selectors.json"] }),
]export default defineConfig({
// ...
onStartAttempt: async ({ payload, ctx }) => {
console.log("Task starting:", ctx.task.id);
},
onSuccess: async ({ payload, output, ctx }) => {
console.log("Task succeeded");
},
onFailure: async ({ payload, error, ctx }) => {
console.error("Task failed:", error);
},
});export default defineConfig({
// ...
defaultMachine: "medium-1x",
maxDuration: 300, // seconds
});import { PrismaInstrumentation } from "@prisma/instrumentation";
export default defineConfig({
// ...
telemetry: {
instrumentations: [new PrismaInstrumentation()],
},
});syncEnvVars for dynamic secretsbuild.external array--log-level debug --dry-runExtensions only affect deployment, not local development.
See references/config.md for complete documentation.
Install this repository
npx skills add triggerdotdev/skillsSkills install per repository, not per chapter — the CLI has no documented per-skill form, so we do not print one.
main, last pushed 15 June 2026.SKILL.md, not by matching a directory convention. One layout observed: */SKILL.md.h1 and no skipped levels:/triggerdotdev/skills.md, and each chapter at its own .md URL.1 file · 8 KB
Everything this skill ships beside its prose. All of it is set here, as a subchapter of chapter 2.
Documentation the agent loads on demand, rather than up front.