Agent Skillstriggerdotdev/trigger.dev › trigger-authoring-tasks

trigger-authoring-tasks

GitHub

指导编写 Trigger.dev 后端任务,涵盖 task 定义、重试、并发、调度及常见陷阱。

packages/cli-v3/skills/trigger-authoring-tasks/SKILL.md triggerdotdev/trigger.dev

Trigger Scenarios

编写 Trigger.dev 任务代码 编辑 /trigger 目录下的文件 配置 trigger.config.ts

Install

npx skills add triggerdotdev/trigger.dev --skill trigger-authoring-tasks -g -y
More Options

Non-standard path

npx skills add https://github.com/triggerdotdev/trigger.dev/tree/main/packages/cli-v3/skills/trigger-authoring-tasks -g -y

Use without installing

npx skills use triggerdotdev/trigger.dev@trigger-authoring-tasks

指定 Agent (Claude Code)

npx skills add triggerdotdev/trigger.dev --skill trigger-authoring-tasks -a claude-code -g -y

安装 repo 全部 skill

npx skills add triggerdotdev/trigger.dev --all -g -y

预览 repo 内 skill

npx skills add triggerdotdev/trigger.dev --list

SKILL.md

Frontmatter
{
    "name": "trigger-authoring-tasks",
    "type": "core",
    "library": "trigger.dev",
    "description": "Covers writing backend Trigger.dev tasks with @trigger.dev\/sdk: defining task() and schemaTask(), the run function and its ctx, retries, waits, queues and concurrency, idempotency keys, run metadata, logging, triggering other tasks (and the Result shape), scheduled\/cron tasks, and the essentials of trigger.config.ts. Load this whenever you are authoring or editing code inside a \/trigger directory, defining a task, or writing backend code that triggers tasks. Realtime\/React hooks and AI chat are covered by separate skills.\n"
}

Authoring Trigger.dev Tasks

The full, version-pinned reference for authoring tasks ships inside your installed @trigger.dev/sdk. Read it before writing code — it always matches the SDK version in this project, so it never drifts:

  • Skill: node_modules/@trigger.dev/sdk/skills/trigger-authoring-tasks/SKILL.md — the complete guide (setup, schemaTask, retries, triggering + the Result shape, idempotency, waits, metadata, scheduled tasks, queues/concurrency, trigger.config.ts).
  • Docs: the full, version-pinned docs ship bundled at node_modules/@trigger.dev/sdk/docs/; the skill above lists the exact pages it draws from in its sources: frontmatter. Grep for an API, e.g. grep -rl "schemaTask" node_modules/@trigger.dev/sdk/docs/.

If those paths don't exist, @trigger.dev/sdk isn't installed yet — install it first. In a non-hoisted layout, resolve the package with node -p "require.resolve('@trigger.dev/sdk/package.json')" and read skills/ + docs/ beside it.

Always import from @trigger.dev/sdk — never @trigger.dev/sdk/v3 (deprecated alias) or @trigger.dev/core.

Common mistakes

  1. CRITICAL: Treating the wait result as the output. triggerAndWait and wait.forToken return a Result object, not the raw output.

    • Wrong: const out = await childTask.triggerAndWait(p); use(out.foo);
    • Correct: const r = await childTask.triggerAndWait(p); if (r.ok) use(r.output.foo); (or .unwrap()).
  2. Wrapping triggerAndWait / batchTriggerAndWait / wait in Promise.all.

    • Wrong: await Promise.all([childTask.triggerAndWait(a), childTask.triggerAndWait(b)]);
    • Correct: await childTask.batchTriggerAndWait([{ payload: a }, { payload: b }]); (or a sequential for-loop).
  3. Importing the task instance into backend code.

    • Wrong: import { emailSequence } from "~/trigger/emails"; in a route handler.
    • Correct: import type { emailSequence } plus tasks.trigger<typeof emailSequence>("email-sequence", payload).
  4. Calling metadata.set/get outside run().

    • Wrong: setting metadata at module scope or in unrelated backend code (a no-op; get returns undefined).
    • Correct: call inside run() or a task lifecycle hook.
  5. Assuming child tasks inherit the parent's queue or metadata.

    • Wrong: expecting a subtask to share the parent's concurrencyLimit or see its metadata.
    • Correct: subtasks run on their own queue; pass metadata explicitly via { metadata: metadata.current() }, or push up with metadata.parent.*.
  6. Bundling native/WASM packages.

    • Wrong: leaving sharp, re2, sqlite3, or WASM packages in the default bundle.
    • Correct: add them to build.external in trigger.config.ts.
  7. Relying on a raw string idempotency key being global.

    • Wrong: trigger(p, { idempotencyKey: "welcome-email" }) expecting once-ever (true only in v4.3.0 and earlier).
    • Correct: await idempotencyKeys.create("welcome-email", { scope: "global" }).

References

Sibling skills: trigger-realtime-and-frontend (subscribe to runs, trigger from the frontend), trigger-authoring-chat-agent and trigger-chat-agent-advanced (AI chat agents).

Version History

  • 4474718 Current 2026-08-20 07:40

Same Skill Collection

.claude/skills/span-timeline-events/SKILL.md
.claude/skills/trigger-dev-tasks/SKILL.md
packages/cli-v3/skills/trigger-cost-savings/SKILL.md
packages/trigger-sdk/skills/trigger-cost-savings/SKILL.md
.claude/skills/errors-api-e2e/SKILL.md
packages/cli-v3/skills/trigger-authoring-chat-agent/SKILL.md
packages/cli-v3/skills/trigger-chat-agent-advanced/SKILL.md
packages/cli-v3/skills/trigger-getting-started/SKILL.md
packages/trigger-sdk/skills/trigger-authoring-chat-agent/SKILL.md
packages/trigger-sdk/skills/trigger-authoring-tasks/SKILL.md
packages/trigger-sdk/skills/trigger-chat-agent-advanced/SKILL.md

Metadata

Files
0
Version
4474718
Hash
33f2427c
Indexed
2026-08-20 07:40

Accueil - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-08-27 08:53
浙ICP备14020137号-1 $Carte des visiteurs$