Skip to content
Development
Skill

/trigger-getting-started

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

From plugin
triggerdev
17k11 skills3 agents

Claude Code

$ npx -y skills add triggerdotdev/trigger.dev --skill trigger-getting-started --agent claude-code

SKILL.md

trigger-getting-started.SKILL.md
name: trigger-getting-started
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-authoring-tasks skill.
type: core
library: trigger.dev
library_version: "{{TRIGGER_SDK_VERSION}}"
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:

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).

Authentication needs the human

The CLI can start account creation, but a person must verify their email and authorize access. In an agent session, start a resumable login instead of blocking on the CLI:

npx trigger.dev@latest login --email user@example.com --name "Alex Smith" --no-browser --no-wait

Give the printed URL to the user and ask them to complete sign-in and authorization. After they confirm, resume the saved authorization:

npx trigger.dev@latest login --no-browser

Do not create accounts or approve CLI access on the user's behalf. Once authenticated, `trigger init` can create the first organization and project without a dashboard handoff. A self-hosted instance may disable organization creation; if it does, ask the user to create the organization in its dashboard first.

Manual setup

1. Authenticate (human authorization step)

For an interactive terminal:

npx trigger.dev@latest login

For an agent or headless terminal, use the resumable flow described above. Add `--api-url https://your-trigger-instance.com` to both commands for self-hosting.

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`.

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.

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`.

// 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 tsconfig and gitignore

Add `trigger.config.ts` to the `include` array in `tsconfig.json`, and add `.trigger` to `.gitignore` (the CLI writes local dev state there).

// tsconfig.json
{ "include": ["trigger.config.ts" /* ...existing */] }
# .gitignore
.trigger

6. Create an environment API key (human step)

For triggering from your own code, create a named API key with **Trigger only** access in your Development environment and set it as `TRIGGER_SECRET_KEY`. Self-hosted users also set `TRIGGER_API_URL`.

# .env (or .env.local for Next.js)
TRIGGER_SECRET_KEY=tr_dev_sk_xxxxxxxx

7. Run the dev server

npx trigger.dev@latest dev

Leave it running. Tasks register with the dashboard, where the user can fire a test run from the task's test page. On first run the CLI offers to install the MCP server and agent skills; recommend both.

Triggering from your app

Once a task exists, trigger it from backend code with a **type-only** import so the task code is never bundled into your app. Trigger by id, not by calling the task object.

import { tasks } from "@trigger.dev/sdk";
import type { helloWorld } from "@/trigger/example"; // type-only

const handle = await tasks.trigger<typeof helloWorld>("hello-world", { name: "Ada" });

`TRIGGER_SECRET_KEY` must be set wherever this runs. Framework specifics live in the Next.js / Remix / Node.js guides.

Monorepos

Two layouts, both supported: put tasks in a shared package (`@repo/tasks` with its own `trigger.config.ts`, consumed via `workspace:*`), or install Trigger.dev directly in the app that needs it. Run `trigger dev` from the directory that holds `trigger.config.ts`. See the manual setup docs for full Turborepo examples before scaffolding either.

Common mistakes

1. **Blocking an agent session on login.** Email verification and authorization requ

Read more
@triggerdotdev
Ships withtriggerdev

The quickest way to get started is to create an account and project in our web app, and follow the instructions in the onboarding. Build and deploy your first task in minutes.

17k11 skills3 agents
Get the whole plugin

Stars on GitHub

Momentum

stars in total
16.8k
Star history of triggerdotdev/trigger.dev on GitHub, a chart by star-history.com

Other skills on triggerdev.

drizzle

drizzle

Use this skill when writing or modifying Drizzle ORM schemas, queries, or migrations in this repo — specifically the…

errors-api-e2e

errors-api-e2e

End-to-end smoke test for the public Errors HTTP API (error groups). Seeds failed runs into ClickHouse so the error materialized…

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about trigger-getting-started.

Which coding agents can use trigger-getting-started?
trigger-getting-started installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.