[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M6EGEGQTY8D5WF03A4MADJFD":3,"skill-same:01M6EGEGQTY8D5WF03A4MADJFD":48},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":21,"linkOnly":22,"markdownContent":23,"markdownBody":23,"frontMatter":24,"refName":25,"commitSha":26,"skillDirectory":27,"forksCount":28,"repositoryHtmlUrl":29,"repositoryHomepageUrl":30,"ownerHtmlUrl":31,"ownerBlogUrl":6,"ownerDescription":32,"updatedAt":33,"install":34,"resources":47},"01M6EGEGQTY8D5WF03A4MADJFD","trigger-dev",null,"ComeOnOliver\u002Fskillshub","ComeOnOliver","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F43215937?v=4","01M6E5JNFECJAAVFE0W7SMWWD2","Haoran Shu","01M6E5JNNDQS7AJZDYFQ8TPZCK",67,"MIT","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Ftrigger-dev\u002FSKILL.md",[],[18,19,20],"dev","trigger dev","trigger","2026-11-10 10:12:30",false,"# Trigger.dev — Background Jobs for TypeScript\n\nYou 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\u002FRedis setups with a fully managed or self-hosted solution purpose-built for modern TypeScript apps.\n\n## Core Capabilities\n\n### Task Definition\n\n```typescript\n\u002F\u002F trigger\u002Ftasks\u002Fprocess-order.ts\nimport { task, wait, logger, retry } from \"@trigger.dev\u002Fsdk\u002Fv3\";\n\nexport const processOrder = task({\n  id: \"process-order\",\n  retry: {\n    maxAttempts: 3,\n    factor: 2,\n    minTimeoutInMs: 1000,\n    maxTimeoutInMs: 30000,\n  },\n  run: async (payload: { orderId: string; userId: string }) => {\n    logger.info(\"Processing order\", { orderId: payload.orderId });\n\n    \u002F\u002F Step 1: Validate\n    const order = await db.orders.findById(payload.orderId);\n    if (!order) throw new Error(`Order ${payload.orderId} not found`);\n\n    \u002F\u002F Step 2: Charge payment (auto-retries on failure)\n    const payment = await retry.onThrow(\n      async () => stripe.paymentIntents.create({\n        amount: order.total * 100,\n        currency: \"usd\",\n        customer: order.stripeCustomerId,\n      }),\n      { maxAttempts: 3, randomize: true },\n    );\n\n    logger.info(\"Payment charged\", { paymentId: payment.id });\n\n    \u002F\u002F Step 3: Wait for webhook confirmation (durable wait)\n    const confirmation = await wait.for({ seconds: 300 });\n\n    \u002F\u002F Step 4: Send notification\n    await sendEmail(order.userEmail, \"order-confirmed\", { orderId: order.id });\n\n    return { orderId: order.id, paymentId: payment.id, status: \"completed\" };\n  },\n});\n\n\u002F\u002F Scheduled task (cron)\nexport const dailyReport = task({\n  id: \"daily-report\",\n  run: async () => {\n    const stats = await db.orders.aggregate({\n      today: { count: true, sum: \"total\" },\n    });\n    await sendSlackMessage(\"#reports\", `Daily: ${stats.count} orders, $${stats.sum}`);\n  },\n});\n```\n\n### Triggering Tasks\n\n```typescript\n\u002F\u002F From your API route\nimport { tasks } from \"@trigger.dev\u002Fsdk\u002Fv3\";\n\n\u002F\u002F Trigger and forget\nawait tasks.trigger(\"process-order\", {\n  orderId: \"ord-123\",\n  userId: \"usr-456\",\n});\n\n\u002F\u002F Trigger and wait for result\nconst result = await tasks.triggerAndWait(\"process-order\", {\n  orderId: \"ord-123\",\n  userId: \"usr-456\",\n});\n\n\u002F\u002F Batch trigger\nawait tasks.batchTrigger(\"process-order\", [\n  { payload: { orderId: \"ord-1\", userId: \"usr-1\" } },\n  { payload: { orderId: \"ord-2\", userId: \"usr-2\" } },\n  { payload: { orderId: \"ord-3\", userId: \"usr-3\" } },\n]);\n\n\u002F\u002F Schedule\nawait tasks.schedule(\"daily-report\", {\n  cron: \"0 9 * * *\",                     \u002F\u002F Daily at 9 AM\n  timezone: \"America\u002FNew_York\",\n});\n\n\u002F\u002F Delayed\nawait tasks.trigger(\"send-reminder\", {\n  userId: \"usr-456\",\n}, {\n  delay: \"24h\",                           \u002F\u002F Run in 24 hours\n});\n```\n\n### Webhook Handler\n\n```typescript\nimport { task } from \"@trigger.dev\u002Fsdk\u002Fv3\";\n\nexport const handleStripeWebhook = task({\n  id: \"stripe-webhook\",\n  run: async (payload: { type: string; data: any }) => {\n    switch (payload.type) {\n      case \"payment_intent.succeeded\":\n        await db.orders.update(payload.data.metadata.orderId, { status: \"paid\" });\n        await tasks.trigger(\"ship-order\", { orderId: payload.data.metadata.orderId });\n        break;\n      case \"customer.subscription.deleted\":\n        await handleChurn(payload.data.customer);\n        break;\n    }\n  },\n});\n```\n\n## Installation\n\n```bash\nnpx trigger.dev@latest init               # Initialize in existing project\nnpx trigger.dev@latest dev                 # Local development\nnpx trigger.dev@latest deploy              # Deploy to Trigger.dev cloud\n```\n\n## Best Practices\n\n1. **Idempotent tasks** — Design tasks to be safely retried; use unique IDs for payment\u002Femail operations\n2. **Structured logging** — Use `logger.info\u002Fwarn\u002Ferror` with objects; visible in Trigger.dev dashboard\n3. **Retry configuration** — Set appropriate retry strategies per task; payment tasks need different retries than emails\n4. **Concurrency limits** — Set `concurrencyLimit` to prevent overwhelming downstream services\n5. **Wait for events** — Use `wait.for` for durable waits; task resumes even after server restarts\n6. **Batch for throughput** — Use `batchTrigger` for bulk operations; processed in parallel with concurrency control\n7. **Environment separation** — Use dev\u002Fstaging\u002Fprod environments; preview deployments for testing\n8. **Self-hosted option** — Deploy Trigger.dev on your own infra with Docker; full control over data and execution\n",{},"main","def8531e65114c0fca8fb8551c1871ee0eed705c","skills\u002FTerminalSkills\u002Fskills\u002Ftrigger-dev",24,"https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub","https:\u002F\u002Fskillshub.wtf","https:\u002F\u002Fgithub.com\u002FComeOnOliver","AI & Blockchain Engineer\r\n","2026-06-24 22:07:19",{"source":7,"skillName":5,"commands":35,"prompt":45,"zipAvailable":46},[36,39,42],{"tool":37,"command":38},"npx","npx skills add ComeOnOliver\u002Fskillshub --skill trigger-dev",{"tool":40,"command":41},"bunx","bunx skills add ComeOnOliver\u002Fskillshub --skill trigger-dev",{"tool":43,"command":44},"pnpm","pnpm dlx skills add ComeOnOliver\u002Fskillshub --skill trigger-dev","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002FTerminalSkills\u002Fskills\u002Ftrigger-dev\u002FSKILL.md",true,[],[49,63,73,82,88,95],{"skillNo":50,"name":51,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":52,"categories":53,"keywords":59,"publishedAt":21},"01M6FKJN13GMG4KY57J3QD8GY5","model-hierarchy-skill","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzscole\u002Fmodel-hierarchy-skill\u002Fmodel-hierarchy-skill\u002FSKILL.md",[54],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},"01JBSEEDCAT000000000000023","Skill与智能体开发","SCENARIO","使用场景",[60,61,62],"model","model hierarchy","model hierarchy skill",{"skillNo":64,"name":65,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":66,"categories":67,"keywords":69,"publishedAt":21},"01M6FKJJJ6GCAMR4PPPRD12M5X","zoom-mcp","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-mcp\u002FSKILL.md",[68],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[70,71,72],"MCP","zoom","zoom mcp",{"skillNo":74,"name":75,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":76,"categories":77,"keywords":78,"publishedAt":21},"01M6FKJE3KYT3KPEZMEEHYKA6K","zoom-apps-sdk","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fzoom-apps-sdk\u002FSKILL.md",[],[79,80,81,71],"sdk","zoom apps sdk","apps",{"skillNo":83,"name":84,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":87,"publishedAt":21},"01M6FKJ9EDH9Q5VWDF8HAJRSP0","windows","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwindows\u002FSKILL.md",[],[84],{"skillNo":89,"name":90,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":91,"categories":92,"keywords":94,"publishedAt":21},"01M6FKJ666BEEFC3AE9GJ72Q93","whiteboard","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwhiteboard\u002FSKILL.md",[93],{"categoryNo":55,"categoryName":56,"taxonomyType":57,"taxonomyTypeDesc":58},[90],{"skillNo":96,"name":97,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":98,"categories":99,"keywords":100,"publishedAt":21},"01M6FKJ21WFCDGTJQ2Q91T9DVW","websockets","https:\u002F\u002Fgithub.com\u002FComeOnOliver\u002Fskillshub\u002Fblob\u002Fmain\u002Fskills\u002Fzoom\u002Fskills\u002Fwebsockets\u002FSKILL.md",[],[97]]