For teams moving durable workflows to the Workflow SDK
Workflow Portstep.run, step.sleep, wait.for, proxyActivities. The mechanical port happens right here; the resume decisions get a review.
Paste one workflow file - an Inngest function, a Trigger.dev task, a Temporal workflow or activities module, or a Step Functions state machine. Your browser ports the mechanical part: the function becomes a "use workflow" function, each step.run closure a named "use step" function (its free variables become parameters), sleeps become sleep(), proxyActivities goes and the activities get "use step", and the errors and retries become FatalError and maxRetries. Say how a paused run resumes, where it runs and which framework starts it, and the page picks the skill's route keys and lists what the code must then contain. waitForEvent, Signals, child runs and side effects left in workflow context are flagged for the review.
The source file free
The scan free
What the scan found
The skill's verification checklist, on the page's copy
The ported copy free
What the page changed itself - the workflow and step functions, sleep(), FatalError, maxRetries and the imports. A waitForEvent, Signal or token, a child run, a stream and every side effect left in workflow context stay as they were, flagged: they need the route keys and a decision.
workflow.ts
The review metered
Pricing as soon as the session is ready...
Sign inThe reply could not be read. Here it is as it came back:
Caveats
Caveats
The page's check of this reply
Saved reviews
How it works - and what it cannot see
The scan reads the code itself: comments, strings, template literals and regex literals are masked, every call is matched to its closing bracket, and a step.run closure is lifted into its own function only when it is safe - its free variables (read from the handler's parameters and declarations) become parameters, and a closure that assigns to them or uses step inside is left for a hand move. The route keys come from the form, never from a guess: how a paused run resumes, where it runs and which framework starts it.
It cannot see which business key should name a hook, what the vendor expects in its callback reply, or whether a side effect is safe to repeat - that is the review. The page re-scans the rewritten file and its app-boundary code against the skill's verification checklist (a static read - nothing is executed), so sleep() in a step, a stream write or start() in workflow context, or a route key whose code is missing is flagged rather than trusted.