Skill detail
trigger-setup
Bootstraps Trigger.dev into an existing project from scratch: CLI auth, SDK install, config, first task, and running the dev server.
Inspect before use
Read the source instructions and check the requirements before you install this skill.
SKILL.md
The saved excerpt is a snapshot from when this skill was listed. The external source remains the complete and most current version.
---
name: trigger-setup
description: >
Bootstrap Trigger.dev into an existing project from scratch: authenticate the
CLI, install @trigger.dev/sdk and @trigger.dev/build, write trigger.config.ts
with the project ref and task dirs, scaffold a /trigger directory with a first
task, wire tsconfig and .gitignore, set TRIGGER_SECRET_KEY, and run the dev
server. Load this when a project has no trigger.config.ts yet and the user
asks to "add Trigger.dev", "set up Trigger.dev", "initialize Trigger.dev", or
get a first task running, including in a monorepo. Once the project is set up
and you are writing task code, switch to the trigger-tasks skill.
type: core
library: trigger.dev
library_version: "4.5.10"
sources:
- docs/quick-start.mdx
- docs/manual-setup.mdx
- docs/config/config-file.mdx
- docs/triggering.mdx
---
# Getting started with Trigger.dev
Set up Trigger.dev in an existing project. The end state is: the SDK installed, a
`trigger.config.ts` pointing at a project ref, a `/trigger` directory with at least
one exported task, and `trigger dev` running so the task shows up in the dashboard.
The fastest path is the CLI's own wizard, which performs every mechanical step below
and also offers to install the MCP server and these agent skills:
```bash
npx trigger.dev@latest init
```
Prefer `init` when you can. Do the manual steps further down when `init` does not fit
(monorepos, an existing config to extend, or a non-interactive environment).
## Two steps need the human
Most of setup is automatable, but two steps require a person and cannot be done
headlessly. When you reach them, stop and ask the user to do them, then continue:
1. **Authenticating the CLI.** `npx trigger.dev@latest login` opens a browser for the
user to sign in. If they have no account, point them to https://cloud.trigger.dev
(or a self-hosted instance) first. You cannot complete this for them.
2. **The secret key and project ref.** `TRIGGER_SECRET_KEY` and the project ref
(`proj_...`) come from the dashboard. Ask the user to copy the **DEV** secret key
from the project's API Keys page, and to pick or create the project so you have its
ref. `trigger init` can select the project interactively once the user is logged in.
Treat these as handoffs: state exactly what you need, wait for the user, then resume.
## Manual setup
### 1. Authenticate (human step)
```bash
npx trigger.dev@latest login
# self-hosted:
npx trigger.dev@latest login --api-url https://your-trigger-instance.com
```
### 2. Install the packages
`@trigger.dev/sdk` is a runtime dependency; `@trigger.dev/build` is a dev dependency.
Pin both to the same version as the `trigger.dev` CLI you run; the CLI warns on a
mismatch during `dev`/`deploy`.
```bash
npm add @trigger.dev/sdk@latest
npm add --save-dev @trigger.dev/build@latest
```
### 3. Write `trigger.config.ts`
Create it in the project root (or `trigger.config.mjs` for JavaScript). The `project`
ref and `dirs` are the only required fields.
```ts
import { defineConfig } from "@trigger.dev/sdk";
export default defineConfig({
project: "<project ref>", // e.g. "proj_abc123", from the dashboard
dirs: ["./src/trigger"], // where your tasks live
maxDuration: 3600,
retries: {
enabledInDev: false,
default: { maxAttempts: 3, factor: 2, minTimeoutInMs: 1000, maxTimeoutInMs: 10000, randomize: true },
},
});
```
Use the Bun runtime by adding `runtime: "bun"`. Build extensions (`prismaExtension`,
`puppeteer`, `additionalFiles`, etc.) come from `@trigger.dev/build` and go in
`build.extensions`.
### 4. Add a first task
Create the directory that matches `dirs` and export a task from it. Every task must be
a named export with a project-unique `id`.
```ts
// src/trigger/example.ts
import { task } from "@trigger.dev/sdk";
export const helloWorld = task({
id: "hello-world",
run: async (payload: { name: string }) => {
return { message: `Hello ${payload.name}!` };
},
});
```
### 5. Wire tsconRead the full source on GitHub (opens external page)