Agent skill · software engineering · vercel

migrating-to-workflow-sdk

Migrates Temporal, Inngest, Trigger.dev, and AWS Step Functions workflows to the Workflow SDK. Use when porting Activities, Workers, Signals, step.run(), step.waitForEvent(), Trigger.dev tasks / wait.forToken / triggerAndWait, ASL JSON state machines, Task/Choice/Wait/Parallel states, task tokens, or child workflows.

Why this skill is useful

Adds detailed migration scripts and rules for converting workflows from multiple orchestration systems to the Workflow SDK, which are not commonly found in public documentation.

What it needs

About 5k tokens when loaded. Last updated 2026-08-07. 2,290 stars on the source repository.

What this skill does

Migrating to the Workflow SDK Use this skill when converting an existing orchestration system to the Workflow SDK. Intake 1. Identify the source system: Temporal Inngest Trigger.dev AWS Step Functions 2. Identify the target runtime: Managed hosting -> keep examples focused on start(), getRun(), hooks/webhooks, and route handlers. Self-hosted -> also read references/runtime-targets.md and explicitly say the workflow/step code can stay the same, but deployment still needs a World implementation and startup bootstrap. 3. Extract the source constructs: entrypoint waits / timers external callbacks / approvals retries / failure handling child workflows / fan-out progress streaming external side effects Default migration rules Put orchestration in "use workflow" functions. Put side effects, SDK calls, DB calls, HTTP calls, and stream I/O in "use step" functions. Use sleep() only in workflow context. For Signals, step.waitForEvent(), and .waitForTaskToken, choose exactly one resume surface: resume/internal -> createHook() + resumeHook() when the app resumes from server-side code with a deterministic business token. resume/url/default -> createWebhook() when the external system needs a generated callback URL and the default 202 Accepted response is fine. resume/url/manual -> createWebhook({ respondWith: 'manual' }) only when the prompt explicitly requires a custom response body, status, or headers. If a callback-URL prompt does not specify response semantics, default to resume/url/default and make the assumption explicit in ## Open Questions. Never pair createWebhook() with resumeHook(), and never pass token: to createWebhook(). Wrap start() and getRun() inside "use step" functions for child runs. Use getStepMetadata().stepId as the idempotency key for external writes. Use getWritable() in workflow context to obtain the stream, but interact with it (write, close) only inside "use step" functions. Prefer rollback stacks for multi-step compensation. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills vercel/migrating-to-workflow-sdk

View the source on GitHub

Browse the @skills marketplace