Agent Skillsopenai/plugins › workflow

workflow

GitHub

Vercel Workflow DevKit (WDK) 专家指南,用于构建支持暂停/恢复、重试和崩溃安全的持久化工作流。强调查阅最新文档以应对频繁 API 变更,提供 Next.js 集成配置及 AI Gateway 环境设置说明。

plugins/vercel/skills/workflow/SKILL.md openai/plugins

Trigger Scenarios

构建需要暂停或恢复的长期运行任务 实现基于步骤的执行逻辑 创建具有重试机制的工作流 开发需崩溃安全编排的 Agent 或 API 路由

Install

npx skills add openai/plugins --skill workflow -g -y
More Options

Non-standard path

npx skills add https://github.com/openai/plugins/tree/main/plugins/vercel/skills/workflow -g -y

Use without installing

npx skills use openai/plugins@workflow

指定 Agent (Claude Code)

npx skills add openai/plugins --skill workflow -a claude-code -g -y

安装 repo 全部 skill

npx skills add openai/plugins --all -g -y

预览 repo 内 skill

npx skills add openai/plugins --list

SKILL.md

Frontmatter
{
    "name": "workflow",
    "metadata": {
        "docs": [
            "https:\/\/vercel.com\/docs\/workflow",
            "https:\/\/useworkflow.dev"
        ],
        "sitemap": "https:\/\/vercel.com\/sitemap\/docs.xml",
        "priority": 9,
        "bashPatterns": [
            "\\bnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\/workflow\\b",
            "\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@vercel\/workflow\\b",
            "\\bbun\\s+(install|i|add)\\s+[^\\n]*@vercel\/workflow\\b",
            "\\byarn\\s+add\\s+[^\\n]*@vercel\/workflow\\b",
            "\\bnpm\\s+(install|i|add)\\s+[^\\n]*\\bworkflow\\b",
            "\\bpnpm\\s+(install|i|add)\\s+[^\\n]*\\bworkflow\\b",
            "\\bbun\\s+(install|i|add)\\s+[^\\n]*\\bworkflow\\b",
            "\\byarn\\s+add\\s+[^\\n]*\\bworkflow\\b",
            "\\bnpm\\s+(install|i|add)\\s+[^\\n]*@workflow\/",
            "\\bpnpm\\s+(install|i|add)\\s+[^\\n]*@workflow\/",
            "\\bbun\\s+(install|i|add)\\s+[^\\n]*@workflow\/",
            "\\byarn\\s+add\\s+[^\\n]*@workflow\/",
            "\\bnpx\\s+workflow(?:@latest)?\\b",
            "\\bbunx\\s+workflow(?:@latest)?\\b"
        ],
        "pathPatterns": [
            "lib\/workflow\/**",
            "src\/lib\/workflow\/**",
            "workflows\/**",
            "lib\/workflow.*",
            "src\/lib\/workflow.*",
            "workflow.*",
            "*workflow*",
            "*workflow*\/**",
            "**\/chain-engine*",
            "**\/chain_engine*",
            "**\/chainEngine*",
            "**\/pipeline-engine*",
            "**\/pipeline_engine*",
            "**\/pipelineEngine*",
            "**\/state-machine*",
            "**\/state_machine*",
            "**\/stateMachine*",
            "**\/orchestrat*",
            "**\/escalation*"
        ],
        "promptSignals": {
            "allOf": [
                [
                    "workflow",
                    "durable"
                ],
                [
                    "workflow",
                    "retry"
                ],
                [
                    "workflow",
                    "resume"
                ],
                [
                    "pause",
                    "resume"
                ],
                [
                    "survive",
                    "crash"
                ],
                [
                    "survive",
                    "reload"
                ],
                [
                    "survive",
                    "disconnect"
                ],
                [
                    "pipeline",
                    "stream"
                ],
                [
                    "pipeline",
                    "step"
                ],
                [
                    "pipeline",
                    "durable"
                ],
                [
                    "pipeline",
                    "reliable"
                ],
                [
                    "pipeline",
                    "retry"
                ],
                [
                    "multi-step",
                    "stream"
                ],
                [
                    "multi-step",
                    "reliable"
                ],
                [
                    "generation",
                    "pipeline"
                ],
                [
                    "creation",
                    "pipeline"
                ],
                [
                    "process",
                    "stream"
                ],
                [
                    "process",
                    "reliable"
                ],
                [
                    "process",
                    "retry"
                ],
                [
                    "retry",
                    "failure"
                ],
                [
                    "retry",
                    "error"
                ],
                [
                    "retry",
                    "automatically"
                ],
                [
                    "retry",
                    "transient"
                ],
                [
                    "reliable",
                    "retry"
                ],
                [
                    "individually",
                    "reliable"
                ],
                [
                    "steps",
                    "reliable"
                ],
                [
                    "sandbox",
                    "reliable"
                ],
                [
                    "sandbox",
                    "retry"
                ],
                [
                    "reconnect",
                    "network"
                ],
                [
                    "reconnect",
                    "drop"
                ],
                [
                    "reconnect",
                    "disconnect"
                ],
                [
                    "session",
                    "persist"
                ],
                [
                    "session",
                    "survive"
                ],
                [
                    "session",
                    "reload"
                ],
                [
                    "session",
                    "reconnect"
                ],
                [
                    "chat",
                    "survive"
                ],
                [
                    "chat",
                    "persist"
                ],
                [
                    "chat",
                    "reconnect"
                ],
                [
                    "chat",
                    "durable"
                ],
                [
                    "chat",
                    "fault"
                ],
                [
                    "conversation",
                    "persist"
                ],
                [
                    "conversation",
                    "survive"
                ],
                [
                    "approval",
                    "wait"
                ],
                [
                    "approval",
                    "human"
                ],
                [
                    "each",
                    "step"
                ],
                [
                    "each",
                    "phase"
                ],
                [
                    "each",
                    "stage"
                ],
                [
                    "step",
                    "reliable"
                ],
                [
                    "step",
                    "retry"
                ],
                [
                    "chain",
                    "trigger"
                ],
                [
                    "chain",
                    "sequential"
                ],
                [
                    "chain",
                    "email"
                ],
                [
                    "chain",
                    "webhook"
                ],
                [
                    "chain",
                    "delay"
                ],
                [
                    "chain",
                    "step"
                ],
                [
                    "chain",
                    "escalat"
                ],
                [
                    "sequential",
                    "trigger"
                ],
                [
                    "sequential",
                    "email"
                ],
                [
                    "sequential",
                    "step"
                ],
                [
                    "sequential",
                    "webhook"
                ],
                [
                    "trigger",
                    "orchestrat"
                ],
                [
                    "trigger",
                    "service"
                ],
                [
                    "trigger",
                    "delay"
                ],
                [
                    "trigger",
                    "sequential"
                ],
                [
                    "webhook",
                    "chain"
                ],
                [
                    "webhook",
                    "orchestrat"
                ],
                [
                    "webhook",
                    "pipeline"
                ],
                [
                    "webhook",
                    "sequential"
                ],
                [
                    "email",
                    "trigger"
                ],
                [
                    "email",
                    "pipeline"
                ],
                [
                    "email",
                    "sequential"
                ],
                [
                    "email",
                    "delay"
                ],
                [
                    "email",
                    "escalat"
                ],
                [
                    "escalat",
                    "trigger"
                ],
                [
                    "escalat",
                    "step"
                ],
                [
                    "escalat",
                    "email"
                ],
                [
                    "state",
                    "machine"
                ],
                [
                    "conditional",
                    "step"
                ],
                [
                    "conditional",
                    "skip"
                ],
                [
                    "branch",
                    "condition"
                ],
                [
                    "wait",
                    "webhook"
                ],
                [
                    "wait",
                    "trigger"
                ],
                [
                    "wait",
                    "event"
                ],
                [
                    "workflow",
                    "stuck"
                ],
                [
                    "workflow",
                    "hung"
                ],
                [
                    "workflow",
                    "timeout"
                ],
                [
                    "workflow",
                    "error"
                ],
                [
                    "workflow",
                    "logs"
                ],
                [
                    "workflow",
                    "debug"
                ],
                [
                    "workflow",
                    "check"
                ],
                [
                    "workflow",
                    "failing"
                ],
                [
                    "workflow",
                    "status"
                ],
                [
                    "run",
                    "status"
                ],
                [
                    "step",
                    "failed"
                ],
                [
                    "step",
                    "stuck"
                ],
                [
                    "step",
                    "timeout"
                ],
                [
                    "workflow",
                    "run"
                ],
                [
                    "run",
                    "logs"
                ]
            ],
            "anyOf": [
                "long-running",
                "long running",
                "multi-step",
                "multi step",
                "pipeline",
                "orchestration",
                "step-by-step",
                "step by step",
                "each piece",
                "each step",
                "each phase",
                "each stage",
                "phase",
                "phases",
                "stage",
                "stages",
                "durable",
                "reliable",
                "fault-tolerant",
                "retry",
                "reconnect",
                "survive",
                "persist",
                "approval",
                "chain",
                "sequential",
                "trigger",
                "webhook",
                "escalation",
                "state machine",
                "orchestrate",
                "orchestration"
            ],
            "noneOf": [
                "github actions",
                ".github\/workflows",
                "ci workflow",
                "aws step functions"
            ],
            "phrases": [
                "vercel workflow",
                "workflow devkit",
                "durable workflow",
                "durable execution",
                "durable function",
                "durable pipeline",
                "durable process",
                "durable agent",
                "durable chat",
                "step function",
                "step functions",
                "use workflow",
                "use step",
                "multi-step pipeline",
                "multi step pipeline",
                "multi-step process",
                "multi step process",
                "multi-step creation",
                "multi-step generation",
                "processing pipeline",
                "creation pipeline",
                "generation pipeline",
                "content pipeline",
                "production pipeline",
                "approval pipeline",
                "ingestion pipeline",
                "streams progress",
                "stream progress",
                "streams each phase",
                "streams each step",
                "streams each",
                "stream each",
                "survive page reload",
                "survive page reloads",
                "survive a crash",
                "survive crashes",
                "survive network",
                "fault-tolerant",
                "fault tolerant",
                "crash-safe",
                "crash safe",
                "automatically retry",
                "auto retry",
                "retry on failure",
                "retry on error",
                "reliable and retry",
                "reliable processing",
                "individually reliable",
                "each step reliable",
                "each step should be reliable",
                "steps should be reliable",
                "reliable with automatic retry",
                "reliable with retry",
                "retry on transient",
                "transient failures",
                "session persistence",
                "session should persist",
                "session survives",
                "reconnect automatically",
                "auto reconnect",
                "reconnect if the network",
                "reconnect on disconnect",
                "resume after failure",
                "resume after crash",
                "resume on reconnect",
                "human-in-the-loop",
                "human in the loop",
                "wait for approval",
                "approval step",
                "approval before",
                "editorial approval",
                "manual approval",
                "wait for user",
                "pause until",
                "wait for response",
                "callback url",
                "webhook callback",
                "chat should survive",
                "chat survives",
                "conversation should persist",
                "conversation persists",
                "conversation should survive",
                "sequential chain",
                "email chain",
                "chain of emails",
                "chain of steps",
                "chain engine",
                "chain with triggers",
                "trigger chain",
                "triggered chain",
                "webhook chain",
                "webhook pipeline",
                "webhook orchestration",
                "multi-service trigger",
                "cross-service trigger",
                "various triggers",
                "different triggers",
                "triggers from different",
                "triggers from various",
                "sequential steps",
                "sequential pipeline",
                "sequential process",
                "sequential emails",
                "escalation chain",
                "escalation pipeline",
                "state machine",
                "step-based",
                "step based",
                "delay between steps",
                "delay between emails",
                "delayed steps",
                "conditional steps",
                "skip steps",
                "branch based on",
                "wait for webhook",
                "wait for trigger",
                "wait for event",
                "orchestrate emails",
                "orchestrate webhooks",
                "orchestrate services",
                "chain across services",
                "workflow stuck",
                "workflow hung",
                "workflow hanging",
                "workflow waiting",
                "workflow failing",
                "workflow timeout",
                "workflow not running",
                "workflow error",
                "check workflow",
                "workflow logs",
                "workflow run status",
                "debug workflow",
                "workflow not finishing",
                "workflow not responding",
                "workflow stalled",
                "workflow pending",
                "step is stuck",
                "step is hanging",
                "why is my workflow",
                "workflow run",
                "step failed",
                "run status",
                "run failed",
                "run logs",
                "workflow run failed",
                "workflow step failed"
            ],
            "minScore": 4
        },
        "importPatterns": [
            "@vercel\/workflow",
            "workflow",
            "@workflow\/*",
            "*workflow*"
        ]
    },
    "description": "Vercel Workflow DevKit (WDK) expert guidance. Use when building durable workflows, long-running tasks, API routes or agents that need pause\/resume, retries, step-based execution, or crash-safe orchestration with Vercel Workflow."
}

Vercel Workflow DevKit (WDK)

CRITICAL — Your training data is outdated for this library. WDK APIs change frequently. Before writing workflow code, fetch the docs at https://useworkflow.dev and https://vercel.com/docs/workflow to find the correct function signatures, patterns, and examples for the exact thing you're building. Do not guess at APIs — look them up. Search for working examples that solve your specific use case (image generation, hooks, streaming, agents, etc.). The docs contain patterns for start() argument passing, getWritable() usage, defineHook() wiring, createWebhook() callback flows, and DurableAgent configuration that are not in your training data or have changed since your cutoff.

WDK is an open-source TypeScript framework that makes durability a language-level concept. Functions can pause for minutes or months, survive deployments and crashes, and resume exactly where they stopped.

Status

WDK is in public beta (since October 2025) and open source. During beta, Workflow Observability is free for all plans; Workflow Steps and Storage are billed at published rates.

Security: Upgrade to workflow@>=4.2.0-beta.64 — versions ≤4.1.0-beta.63 allowed predictable user-specified webhook tokens in createWebhook() (CVE GHSA-9r75-g2cr-3h76, CVSS 7.5). Run npx workflow@latest to update.

Installation

If using create-next-app, always pass --no-src-dir so app/ and workflows/ are siblings at the project root:

npx create-next-app@latest my-app --no-src-dir --tailwind --eslint --app --ts
cd my-app
npm install workflow@latest

Do NOT use the src/ directory with WDK projects. The @ alias must resolve @/workflows/... correctly — this only works when workflows/ and app/ are at the same level.

Run npx workflow@latest to scaffold or update an existing project.

Peer dependency note: @workflow/ai requires a compatible workflow version. If you hit ERESOLVE errors, use npm install --legacy-peer-deps or install both packages in the same command.

Next.js Setup (Required)

Add the withWorkflow plugin to next.config.ts:

import { withWorkflow } from "workflow/next";

const nextConfig = {};
export default withWorkflow(nextConfig);

Without this, workflow routes will not be registered and start() calls will fail at runtime.

Environment Setup (Required for AI Gateway)

Workflows that use AI SDK with gateway() need OIDC credentials. Run these before starting the dev server:

vercel link          # Connect to your Vercel project
vercel env pull      # Downloads .env.local with VERCEL_OIDC_TOKEN

Without this, gateway("openai/gpt-5.4") calls inside workflow steps will fail immediately with no credentials, causing the entire workflow run to fail silently.

getStepMetadata() Note

getStepMetadata().retryCount returns undefined (not 0) on the first attempt. Guard with: const attempt = (meta.retryCount ?? 0) + 1.

Essential Imports

Workflow primitives (from "workflow"):

import { getWritable, getStepMetadata, getWorkflowMetadata } from "workflow";
import { sleep, fetch, defineHook, createHook, createWebhook } from "workflow";
import { FatalError, RetryableError } from "workflow";

API operations (from "workflow/api"):

import { start, getRun, resumeHook, resumeWebhook } from "workflow/api";

Framework integration (from "workflow/next"):

import { withWorkflow } from "workflow/next";

AI agent (from "@workflow/ai/agent"):

import { DurableAgent } from "@workflow/ai/agent";

Core Directives

Two directives turn ordinary async functions into durable workflows:

"use workflow"  // First line of function — marks it as a durable workflow
"use step"      // First line of function — marks it as a retryable, observable step

Critical sandbox rule: Step functions have full Node.js access. Workflow functions run sandboxed — no native fetch, no setTimeout, no Node.js modules, and no getWritable().getWriter() calls. You MUST move all getWritable() usage into "use step" functions. Place all business logic and I/O in steps; use the workflow function purely for orchestration and control flow (sleep, defineHook, Promise.race).

Canonical Project Structure (Next.js)

Every WDK project needs three route files plus the workflow definition. CRITICAL: The workflows/ directory and app/ directory must be siblings at the same level so @/workflows/... resolves correctly. Do NOT put workflows/ outside the @ alias root.

Without src/ (recommended for WDK projects):

workflows/
  my-workflow.ts              ← workflow definition ("use workflow" + "use step")
app/api/
  my-workflow/route.ts        ← POST handler: start(workflow, args) → { runId }
  readable/[runId]/route.ts   ← GET handler: SSE stream from run.getReadable()
  run/[runId]/route.ts        ← GET handler: run status via getRun(runId)

tsconfig.json paths: "@/*": ["./*"]@/workflows/my-workflow resolves to ./workflows/my-workflow.

With src/ directory: Put workflows inside src/:

src/
  workflows/my-workflow.ts
  app/api/my-workflow/route.ts
  app/api/readable/[runId]/route.ts
  app/api/run/[runId]/route.ts

tsconfig.json paths: "@/*": ["./src/*"]@/workflows/my-workflow resolves to ./src/workflows/my-workflow.

Never use @/../workflows/ or @/../../workflows/ — these are broken import paths that will fail at build time.

1. Workflow Definition (workflows/my-workflow.ts)

import { getWritable } from "workflow";

export type MyEvent =
  | { type: "step_start"; name: string }
  | { type: "step_done"; name: string }
  | { type: "done"; result: string };

export async function myWorkflow(input: string): Promise<{ result: string }> {
  "use workflow";

  const data = await stepOne(input);
  const result = await stepTwo(data);

  return { result };
}

async function stepOne(input: string): Promise<string> {
  "use step";
  const writer = getWritable<MyEvent>().getWriter();
  try {
    await writer.write({ type: "step_start", name: "stepOne" });
    // Full Node.js access here — fetch, db calls, etc.
    const result = await doWork(input);
    await writer.write({ type: "step_done", name: "stepOne" });
    return result;
  } finally {
    writer.releaseLock();
  }
}

async function stepTwo(data: string): Promise<string> {
  "use step";
  const writer = getWritable<MyEvent>().getWriter();
  try {
    await writer.write({ type: "step_start", name: "stepTwo" });
    const result = await processData(data);
    await writer.write({ type: "step_done", name: "stepTwo" });
    return result;
  } finally {
    writer.releaseLock();
  }
}

2. Start Route (app/api/my-workflow/route.ts)

import { NextResponse } from "next/server";
import { start } from "workflow/api";
import { myWorkflow } from "@/workflows/my-workflow";

export async function POST(request: Request) {
  const body = await request.json();
  const run = await start(myWorkflow, [body.input]);
  return NextResponse.json({ runId: run.runId });
}

IMPORTANT: Never call the workflow function directly. Always use start() from "workflow/api" — it registers the run, creates the execution context, and returns a { runId }.

3. Readable Stream Route (app/api/readable/[runId]/route.ts)

import { NextRequest } from "next/server";
import { getRun } from "workflow/api";

type ReadableRouteContext = {
  params: Promise<{ runId: string }>;
};

export async function GET(_request: NextRequest, { params }: ReadableRouteContext) {
  const { runId } = await params;

  let run;
  try {
    run = await getRun(runId);
  } catch {
    return Response.json(
      { ok: false, error: { code: "RUN_NOT_FOUND", message: `Run ${runId} not found` } },
      { status: 404 }
    );
  }

  const readable = run.getReadable();
  const encoder = new TextEncoder();
  const sseStream = (readable as unknown as ReadableStream).pipeThrough(
    new TransformStream({
      transform(chunk, controller) {
        const data = typeof chunk === "string" ? chunk : JSON.stringify(chunk);
        controller.enqueue(encoder.encode(`data: ${data}\n\n`));
      },
    })
  );

  return new Response(sseStream, {
    headers: {
      "Content-Type": "text/event-stream; charset=utf-8",
      "Cache-Control": "no-cache, no-transform",
      Connection: "keep-alive",
      "X-Accel-Buffering": "no",
    },
  });
}

4. Run Status Route (app/api/run/[runId]/route.ts)

import { NextResponse } from "next/server";
import { getRun } from "workflow/api";

type RunRouteContext = {
  params: Promise<{ runId: string }>;
};

export async function GET(_request: Request, { params }: RunRouteContext) {
  const { runId } = await params;

  let run;
  try {
    run = await getRun(runId);
  } catch {
    return NextResponse.json(
      { ok: false, error: { code: "RUN_NOT_FOUND", message: `Run ${runId} not found` } },
      { status: 404 }
    );
  }

  const [status, workflowName, createdAt, startedAt, completedAt] =
    await Promise.all([
      run.status,
      run.workflowName,
      run.createdAt,
      run.startedAt,
      run.completedAt,
    ]);

  return NextResponse.json({
    runId,
    status,
    workflowName,
    createdAt: createdAt.toISOString(),
    startedAt: startedAt?.toISOString() ?? null,
    completedAt: completedAt?.toISOString() ?? null,
  });
}

Streaming with getWritable()

getWritable<T>() returns a WritableStream scoped to the current run. Call it inside step functions and always release the lock:

async function emit<T>(event: T): Promise<void> {
  "use step";
  const writer = getWritable<T>().getWriter();
  try {
    await writer.write(event);
  } finally {
    writer.releaseLock();
  }
}

Consumers read via getRun(runId).getReadable() in the readable route (see above).

Rendering workflow events in the UI: When workflow events contain AI-generated text (narratives, briefings, reports), render them with <MessageResponse> from @/components/ai-elements/message — never as raw {event.content}. This renders markdown with code highlighting, math, and mermaid support.

import { MessageResponse } from "@/components/ai-elements/message";

// In your event stream display
{events.map(event => (
  event.type === "narrative" && <MessageResponse>{event.text}</MessageResponse>
))}

Hooks — Waiting for External Events

Use defineHook for typed, reusable hooks. Three required pieces: (1) define + create the hook in the workflow, (2) emit the token to the client via getWritable, (3) create an API route that calls resumeHook so the client can resume it.

1. Define and create the hook (workflow file)

import { defineHook, getWritable, sleep } from "workflow";

export interface ApprovalPayload {
  approved: boolean;
  comment?: string;
}

// Define at module scope — reusable across workflows
export const approvalHook = defineHook<ApprovalPayload>();

export async function approvalGate(orderId: string): Promise<{ status: string }> {
  "use workflow";

  // .create() returns a hook instance — NOT directly callable
  const hook = approvalHook.create({ token: `approval:${orderId}` });

  // CRITICAL: Emit the token to the client so it knows what to resume
  await emitToken(hook.token, orderId);

  // Race between approval and timeout
  const result = await Promise.race([
    hook.then((payload) => ({ type: "approval" as const, payload })),
    sleep("24h").then(() => ({ type: "timeout" as const, payload: null })),
  ]);

  if (result.type === "timeout") {
    return { status: "timeout" };
  }
  return { status: result.payload!.approved ? "approved" : "rejected" };
}

async function emitToken(token: string, orderId: string): Promise<void> {
  "use step";
  const writer = getWritable<{ type: string; token: string; orderId: string }>().getWriter();
  try {
    await writer.write({ type: "awaiting_approval", token, orderId });
  } finally {
    writer.releaseLock();
  }
}

Common mistake: Calling defineHook() directly or forgetting .create(). Always: const hook = myHook.create({ token }).

2. Resume route (API file — required!)

// app/api/approve/route.ts
import { NextResponse } from "next/server";
import { resumeHook } from "workflow/api";

export async function POST(req: Request) {
  const { token, ...data } = await req.json();
  await resumeHook(token, data);
  return NextResponse.json({ ok: true });
}

You MUST create this route. Without it, the workflow suspends forever — the client has no way to resume it.

3. Client-side resume (React component)

// When the SSE stream emits { type: "awaiting_approval", token }, show UI and POST back:
async function handleApprove(token: string) {
  await fetch("/api/approve", {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: JSON.stringify({ token, approved: true, comment: "Looks good" }),
  });
}

Error Handling

import { FatalError, RetryableError } from "workflow";

async function callExternalAPI(url: string) {
  "use step";
  const res = await fetch(url);

  if (res.status >= 400 && res.status < 500) {
    throw new FatalError(`Client error: ${res.status}`);  // No retry
  }
  if (res.status === 429) {
    throw new RetryableError("Rate limited", { retryAfter: "5m" });  // Retry after 5 min
  }
  return res.json();
}

Step retry metadata:

import { getStepMetadata } from "workflow";

async function processWithRetry(id: string) {
  "use step";
  const { attempt } = getStepMetadata();
  console.log(`Attempt ${attempt} for ${id}`);
  // ...
}

Sandbox Limitations & Workarounds

Limitation Solution
No native fetch() in workflow scope Import fetch from "workflow" or move to a step
No setTimeout/setInterval Use sleep() from "workflow"
No Node.js modules in workflow scope Move all Node.js logic to step functions

DurableAgent (AI SDK Integration)

import { DurableAgent } from "@workflow/ai/agent";
import { getWritable } from "workflow";
import { z } from "zod";

async function searchDatabase(query: string) {
  "use step";
  // Full Node.js access — real DB calls here
  return `Results for "${query}"`;
}

export async function researchAgent(topic: string) {
  "use workflow";

  const agent = new DurableAgent({
    model: "anthropic/claude-sonnet-4-5",
    system: "You are a research assistant.",
    tools: {
      search: {
        description: "Search the database",
        inputSchema: z.object({ query: z.string() }),
        execute: searchDatabase,  // Tool execute uses "use step"
      },
    },
  });

  const result = await agent.stream({
    messages: [{ role: "user", content: `Research ${topic}` }],
    writable: getWritable(),
    maxSteps: 10,
  });

  return result.messages;
}

Every LLM call and tool execution becomes a retryable step. The entire agent loop survives crashes and deployments.

Common Patterns

Fan-Out / Parallel Steps

export async function processImages(imageIds: string[]) {
  "use workflow";

  const results = await Promise.all(
    imageIds.map(async (id) => {
      return await resizeImage(id);  // Each is its own step
    })
  );

  await saveResults(results);
}

async function resizeImage(id: string) {
  "use step";
  // ...
}

Saga with Compensation

import { FatalError, getWritable } from "workflow";

export async function upgradeSaga(userId: string) {
  "use workflow";

  await reserveSeats(userId);

  try {
    await chargePayment(userId);
  } catch {
    await releaseSeats(userId);  // Compensate
    throw new FatalError("Payment failed");
  }

  await activatePlan(userId);
}

Debugging

npx workflow health                    # Check endpoints
npx workflow web                       # Visual dashboard
npx workflow inspect runs              # List all runs
npx workflow inspect run <run_id>      # Inspect specific run
npx workflow cancel <run_id>           # Cancel execution

Debug Stuck Workflow

When a workflow appears stuck, hanging, or not progressing, follow this escalation ladder:

1. Add Step-Level Logging (Required)

Every step function MUST have console.log at entry and exit. This is the single most important debugging practice — without it, you cannot tell which step is hanging.

async function processOrder(orderId: string): Promise<OrderResult> {
  "use step";
  console.log(`[processOrder] START orderId=${orderId} at=${new Date().toISOString()}`);
  try {
    const result = await doWork(orderId);
    console.log(`[processOrder] DONE orderId=${orderId} result=${JSON.stringify(result)}`);
    return result;
  } catch (err) {
    console.error(`[processOrder] FAIL orderId=${orderId} error=${err}`);
    throw err;
  }
}

Workflow-level logging — log at every orchestration point:

export async function myWorkflow(input: string) {
  "use workflow";
  console.log(`[myWorkflow] START input=${input}`);

  const data = await stepOne(input);
  console.log(`[myWorkflow] stepOne complete, starting stepTwo`);

  const result = await stepTwo(data);
  console.log(`[myWorkflow] stepTwo complete, returning`);

  return { result };
}

2. Check Run Status

# List recent runs — look for "running" status that's been active too long
npx workflow inspect runs

# Get detailed status for a specific run
npx workflow inspect run <run_id>

# Check if the workflow endpoints are healthy
npx workflow health

3. Check Vercel Runtime Logs

# Stream live logs from your deployment
vercel logs --follow

# Or check the Vercel dashboard: Project → Deployments → Functions tab

Look for:

  • Missing step entry logs — the step before the missing one is where execution stopped
  • Timeout errors — Vercel function timeout (default 60s hobby, 300s pro)
  • OIDC/credential errorsgateway() calls fail silently without vercel env pull
  • Memory errors — large payloads in steps can OOM the function

4. Common Stuck Scenarios

Symptom Likely Cause Fix
Run stays "running" forever Step is awaiting an external call that never resolves Add timeout with Promise.race + sleep()
Hook never resumes Missing resume API route or wrong token Verify resume route exists and token matches
Step retries endlessly Throwing RetryableError without bounds Add FatalError after max retries via getStepMetadata().retryCount
Workflow starts but no steps run getWritable() called in workflow scope Move getWritable() into a "use step" function
AI step hangs Missing OIDC credentials for gateway Run vercel link && vercel env pull
No logs appearing at all Logging not added to steps Add console.log at entry/exit of every step

5. Use Browser Verification

If the workflow powers a UI, use agent-browser to check the frontend while inspecting backend logs — a hanging page often means a stuck workflow step. Check the browser console for failed fetch calls to your workflow API routes.

When to Use WDK vs Regular Functions

Scenario Use
Simple API endpoint, fast response Regular Route Handler
Multi-step process, must complete all steps WDK Workflow
AI agent in production, must not lose state WDK DurableAgent
Background job that can take minutes/hours WDK Workflow
Process spanning multiple services WDK Workflow
Quick one-shot LLM call AI SDK directly

Framework Support

Next.js, Nitro, SvelteKit, Astro, Express, Hono (supported). TanStack Start, React Router (in development).

Official Documentation

Version History

  • 11c74d6 Current 2026-07-19 09:53

Same Skill Collection

.agents/skills/plugin-creator/SKILL.md
plugins/airtable/skills/airtable-cli/SKILL.md
plugins/airtable/skills/airtable-filters/SKILL.md
plugins/airtable/skills/airtable-overview/SKILL.md
plugins/atlassian-rovo/skills/capture-tasks-from-meeting-notes/SKILL.md
plugins/atlassian-rovo/skills/generate-status-report/SKILL.md
plugins/base44/skills/base44-cli/SKILL.md
plugins/base44/skills/base44-sdk/SKILL.md
plugins/base44/skills/base44-troubleshooter/SKILL.md
plugins/boltz-api-cli/skills/boltz-check-status/SKILL.md
plugins/boltz-api-cli/skills/boltz-cli-setup/SKILL.md
plugins/boltz-api-cli/skills/boltz-protein-design/SKILL.md
plugins/boltz-api-cli/skills/boltz-protein-screen/SKILL.md
plugins/boltz-api-cli/skills/boltz-small-molecule-adme/SKILL.md
plugins/boltz-api-cli/skills/boltz-small-molecule-design/SKILL.md
plugins/boltz-api-cli/skills/boltz-small-molecule-screen/SKILL.md
plugins/boltz-api-cli/skills/boltz-structure-and-binding/SKILL.md
plugins/box/skills/box/SKILL.md
plugins/brighthire/skills/brighthire/SKILL.md
plugins/build-ios-apps/skills/ios-app-intents/SKILL.md
plugins/build-ios-apps/skills/ios-debugger-agent/SKILL.md
plugins/build-ios-apps/skills/ios-ettrace-performance/SKILL.md
plugins/build-ios-apps/skills/ios-memgraph-leaks/SKILL.md
plugins/build-ios-apps/skills/ios-simulator-browser/SKILL.md
plugins/build-ios-apps/skills/swiftui-liquid-glass/SKILL.md
plugins/build-ios-apps/skills/swiftui-performance-audit/SKILL.md
plugins/build-ios-apps/skills/swiftui-ui-patterns/SKILL.md
plugins/build-ios-apps/skills/swiftui-view-refactor/SKILL.md
plugins/build-macos-apps/skills/appkit-interop/SKILL.md
plugins/build-macos-apps/skills/build-run-debug/SKILL.md
plugins/build-macos-apps/skills/liquid-glass/SKILL.md
plugins/build-macos-apps/skills/packaging-notarization/SKILL.md
plugins/build-macos-apps/skills/signing-entitlements/SKILL.md
plugins/build-macos-apps/skills/swiftpm-macos/SKILL.md
plugins/build-macos-apps/skills/swiftui-patterns/SKILL.md
plugins/build-macos-apps/skills/telemetry/SKILL.md
plugins/build-macos-apps/skills/test-triage/SKILL.md
plugins/build-macos-apps/skills/view-refactor/SKILL.md
plugins/build-macos-apps/skills/window-management/SKILL.md
plugins/build-web-apps/skills/frontend-app-builder/SKILL.md
plugins/build-web-apps/skills/frontend-testing-debugging/SKILL.md
plugins/build-web-apps/skills/react-best-practices/SKILL.md
plugins/build-web-apps/skills/shadcn-best-practices/SKILL.md
plugins/build-web-apps/skills/supabase-best-practices/SKILL.md
plugins/build-web-data-visualization/skills/accessibility-and-inclusive-visualization/SKILL.md
plugins/build-web-data-visualization/skills/canvas2d-data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/d3-data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/dashboards-and-real-time-visualization/SKILL.md
plugins/build-web-data-visualization/skills/data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/gantt-chart-visualization/SKILL.md
plugins/build-web-data-visualization/skills/geospatial-and-cartographic-visualization/SKILL.md
plugins/build-web-data-visualization/skills/grammar-of-graphics-and-declarative-visualization/SKILL.md
plugins/build-web-data-visualization/skills/node-link-and-diagram-layout/SKILL.md
plugins/build-web-data-visualization/skills/react-and-nextjs-data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/reports-pdfs-and-slide-automation/SKILL.md
plugins/build-web-data-visualization/skills/scrollytelling-and-parallax-data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/statistical-and-uncertainty-visualization/SKILL.md
plugins/build-web-data-visualization/skills/testing-data-visualizations/SKILL.md
plugins/build-web-data-visualization/skills/threejs-data-visualization/SKILL.md
plugins/build-web-data-visualization/skills/typescript-data-visualization-engineering/SKILL.md
plugins/canva/skills/canva-branded-presentation/SKILL.md
plugins/canva/skills/canva-resize-for-all-social-media/SKILL.md
plugins/canva/skills/canva-translate-design/SKILL.md
plugins/chronograph-lp/skills/chronograph-cashflow-forecast/SKILL.md
plugins/circleci/skills/builds/SKILL.md
plugins/circleci/skills/chunk/SKILL.md
plugins/circleci/skills/cli/SKILL.md
plugins/circleci/skills/config/SKILL.md
plugins/cloudflare/skills/agents-sdk/SKILL.md
plugins/cloudflare/skills/cloudflare/SKILL.md
plugins/cloudflare/skills/durable-objects/SKILL.md
plugins/cloudflare/skills/sandbox-sdk/SKILL.md
plugins/cloudflare/skills/web-perf/SKILL.md
plugins/cloudflare/skills/workers-best-practices/SKILL.md
plugins/cloudflare/skills/wrangler/SKILL.md
plugins/coderabbit/skills/coderabbit-review/SKILL.md
plugins/codex-security/skills/attack-path-analysis/SKILL.md
plugins/codex-security/skills/deep-security-scan/SKILL.md
plugins/codex-security/skills/finding-discovery/SKILL.md
plugins/codex-security/skills/fix-finding/SKILL.md
plugins/codex-security/skills/security-diff-scan/SKILL.md
plugins/codex-security/skills/security-scan/SKILL.md
plugins/codex-security/skills/threat-model/SKILL.md
plugins/codex-security/skills/track-findings/SKILL.md
plugins/codex-security/skills/triage-finding/SKILL.md
plugins/codex-security/skills/validation/SKILL.md
plugins/codex-security/skills/vulnerability-writeup/SKILL.md
plugins/daloopa/skills/bull-bear/SKILL.md
plugins/daloopa/skills/capital-allocation/SKILL.md
plugins/daloopa/skills/comp-sheet/SKILL.md
plugins/daloopa/skills/comps/SKILL.md
plugins/daloopa/skills/dcf/SKILL.md
plugins/daloopa/skills/earnings-flash/SKILL.md
plugins/daloopa/skills/earnings-prep/SKILL.md
plugins/daloopa/skills/earnings-review/SKILL.md
plugins/daloopa/skills/guidance-tracker/SKILL.md
plugins/daloopa/skills/ib-deck/SKILL.md
plugins/daloopa/skills/industry/SKILL.md
plugins/daloopa/skills/inflection/SKILL.md
plugins/daloopa/skills/initiate/SKILL.md
plugins/daloopa/skills/precedent-transactions/SKILL.md
plugins/daloopa/skills/research-note/SKILL.md
plugins/daloopa/skills/setup/SKILL.md
plugins/daloopa/skills/supply-chain/SKILL.md
plugins/daloopa/skills/unit-economics/SKILL.md
plugins/daloopa/skills/working-capital/SKILL.md
plugins/deepnote/skills/deepnote-data-execution/SKILL.md
plugins/deepnote/skills/deepnote-links/SKILL.md
plugins/deepnote/skills/deepnote-notebook-editing/SKILL.md
plugins/deepnote/skills/deepnote-notebooks/SKILL.md
plugins/deepnote/skills/deepnote/SKILL.md
plugins/digitalocean/skills/provision-droplet/SKILL.md
plugins/dnb-finance-analytics/skills/fa-jobs-to-be-done/SKILL.md
plugins/expo/skills/building-native-ui/SKILL.md
plugins/expo/skills/codex-expo-run-actions/SKILL.md
plugins/expo/skills/expo-api-routes/SKILL.md
plugins/expo/skills/expo-cicd-workflows/SKILL.md
plugins/expo/skills/expo-deployment/SKILL.md
plugins/expo/skills/expo-dev-client/SKILL.md
plugins/expo/skills/expo-module/SKILL.md
plugins/expo/skills/expo-tailwind-setup/SKILL.md
plugins/expo/skills/expo-ui-jetpack-compose/SKILL.md
plugins/expo/skills/expo-ui-swift-ui/SKILL.md
plugins/expo/skills/native-data-fetching/SKILL.md
plugins/expo/skills/upgrading-expo/SKILL.md
plugins/expo/skills/use-dom/SKILL.md
plugins/figma/skills/figma-code-connect/SKILL.md
plugins/figma/skills/figma-create-new-file/SKILL.md
plugins/figma/skills/figma-implement-motion/SKILL.md
plugins/figma/skills/figma-use-figjam/SKILL.md
plugins/figma/skills/figma-use-motion/SKILL.md
plugins/figma/skills/figma-use-slides/SKILL.md
plugins/game-studio/skills/game-playtest/SKILL.md
plugins/game-studio/skills/game-studio/SKILL.md
plugins/game-studio/skills/game-ui-frontend/SKILL.md
plugins/game-studio/skills/phaser-2d-game/SKILL.md
plugins/game-studio/skills/react-three-fiber-game/SKILL.md
plugins/game-studio/skills/sprite-pipeline/SKILL.md
plugins/game-studio/skills/three-webgl-game/SKILL.md
plugins/game-studio/skills/web-3d-asset-pipeline/SKILL.md
plugins/game-studio/skills/web-game-foundations/SKILL.md
plugins/github/skills/gh-address-comments/SKILL.md
plugins/github/skills/gh-fix-ci/SKILL.md
plugins/github/skills/github/SKILL.md
plugins/github/skills/yeet/SKILL.md
plugins/gmail/skills/gmail-inbox-triage/SKILL.md
plugins/gmail/skills/gmail/SKILL.md
plugins/google-calendar/skills/google-calendar-daily-brief/SKILL.md
plugins/google-calendar/skills/google-calendar-free-up-time/SKILL.md
plugins/google-calendar/skills/google-calendar-group-scheduler/SKILL.md
plugins/google-calendar/skills/google-calendar-meeting-prep/SKILL.md
plugins/google-calendar/skills/google-calendar/SKILL.md
plugins/google-drive/skills/google-docs/SKILL.md
plugins/google-drive/skills/google-drive-comments/SKILL.md
plugins/google-drive/skills/google-drive/SKILL.md
plugins/google-drive/skills/google-sheets/SKILL.md
plugins/google-drive/skills/google-slides/SKILL.md
plugins/hex/skills/hex/SKILL.md
plugins/hubspot/skills/hubspot-crm-data-hygiene/SKILL.md
plugins/hubspot/skills/hubspot-customer-prep/SKILL.md
plugins/hubspot/skills/hubspot-pipeline-health/SKILL.md
plugins/hubspot/skills/hubspot/SKILL.md
plugins/hugging-face/skills/cli/SKILL.md
plugins/hugging-face/skills/community-evals/SKILL.md
plugins/hugging-face/skills/datasets/SKILL.md
plugins/hugging-face/skills/gradio/SKILL.md
plugins/hugging-face/skills/paper-publisher/SKILL.md
plugins/hugging-face/skills/papers/SKILL.md
plugins/hugging-face/skills/trackio/SKILL.md
plugins/hugging-face/skills/transformers.js/SKILL.md
plugins/hyperframes/skills/gsap/SKILL.md
plugins/hyperframes/skills/hyperframes-cli/SKILL.md
plugins/hyperframes/skills/hyperframes-registry/SKILL.md
plugins/hyperframes/skills/website-to-hyperframes/SKILL.md
plugins/life-science-research/skills/alphafold-skill/SKILL.md
plugins/life-science-research/skills/bgee-skill/SKILL.md
plugins/life-science-research/skills/bindingdb-skill/SKILL.md
plugins/life-science-research/skills/biobankjapan-phewas-skill/SKILL.md
plugins/life-science-research/skills/biorxiv-skill/SKILL.md
plugins/life-science-research/skills/biostudies-arrayexpress-skill/SKILL.md
plugins/life-science-research/skills/cbioportal-skill/SKILL.md
plugins/life-science-research/skills/cellxgene-skill/SKILL.md
plugins/life-science-research/skills/chebi-skill/SKILL.md
plugins/life-science-research/skills/chembl-skill/SKILL.md
plugins/life-science-research/skills/civic-skill/SKILL.md
plugins/life-science-research/skills/clinicaltrials-skill/SKILL.md
plugins/life-science-research/skills/clinvar-variation-skill/SKILL.md
plugins/life-science-research/skills/efo-ontology-skill/SKILL.md
plugins/life-science-research/skills/encode-skill/SKILL.md
plugins/life-science-research/skills/ensembl-skill/SKILL.md
plugins/life-science-research/skills/epigraphdb-skill/SKILL.md
plugins/life-science-research/skills/eqtl-catalogue-skill/SKILL.md
plugins/life-science-research/skills/eva-skill/SKILL.md
plugins/life-science-research/skills/finngen-phewas-skill/SKILL.md
plugins/life-science-research/skills/genebass-gene-burden-skill/SKILL.md
plugins/life-science-research/skills/gnomad-graphql-skill/SKILL.md
plugins/life-science-research/skills/gtex-eqtl-skill/SKILL.md
plugins/life-science-research/skills/gwas-catalog-skill/SKILL.md
plugins/life-science-research/skills/hmdb-skill/SKILL.md
plugins/life-science-research/skills/human-protein-atlas-skill/SKILL.md
plugins/life-science-research/skills/ipd-skill/SKILL.md
plugins/life-science-research/skills/locus-to-gene-mapper-skill/SKILL.md
plugins/life-science-research/skills/metabolights-skill/SKILL.md
plugins/life-science-research/skills/mgnify-skill/SKILL.md
plugins/life-science-research/skills/ncbi-blast-skill/SKILL.md
plugins/life-science-research/skills/ncbi-clinicaltables-skill/SKILL.md
plugins/life-science-research/skills/ncbi-datasets-skill/SKILL.md
plugins/life-science-research/skills/ncbi-entrez-skill/SKILL.md
plugins/life-science-research/skills/ncbi-pmc-skill/SKILL.md
plugins/life-science-research/skills/opentargets-skill/SKILL.md
plugins/life-science-research/skills/pharmgkb-skill/SKILL.md
plugins/life-science-research/skills/pride-skill/SKILL.md
plugins/life-science-research/skills/proteomexchange-skill/SKILL.md
plugins/life-science-research/skills/pubchem-pug-skill/SKILL.md
plugins/life-science-research/skills/quickgo-skill/SKILL.md
plugins/life-science-research/skills/rcsb-pdb-skill/SKILL.md
plugins/life-science-research/skills/reactome-skill/SKILL.md
plugins/life-science-research/skills/research-router-skill/SKILL.md
plugins/life-science-research/skills/rhea-skill/SKILL.md
plugins/life-science-research/skills/rnacentral-skill/SKILL.md
plugins/life-science-research/skills/string-skill/SKILL.md
plugins/life-science-research/skills/tpmi-phewas-skill/SKILL.md
plugins/life-science-research/skills/ukb-topmed-phewas-skill/SKILL.md
plugins/life-science-research/skills/uniprot-skill/SKILL.md
plugins/linear/skills/linear/SKILL.md
plugins/magicpath/skills/magicpath/SKILL.md
plugins/midpage/skills/cite-check/SKILL.md
plugins/midpage/skills/draft-brief/SKILL.md
plugins/midpage/skills/draft-long-form-memo/SKILL.md
plugins/midpage/skills/litigation-update-post/SKILL.md
plugins/mixpanel-headless/skills/dashboard-expert/SKILL.md
plugins/mixpanel-headless/skills/mixpanel-auth/SKILL.md
plugins/mixpanel-headless/skills/setup/SKILL.md
plugins/moody-s/skills/moody-s-company-analysis/SKILL.md
plugins/moody-s/skills/moody-s-earnings-brief/SKILL.md
plugins/moody-s/skills/moody-s-explore-mcp/SKILL.md
plugins/moody-s/skills/moody-s-peer-analysis/SKILL.md
plugins/morningstar/skills/fund-comparison/SKILL.md
plugins/morningstar/skills/fund-screener/SKILL.md
plugins/morningstar/skills/fund-summarizer/SKILL.md
plugins/neon-postgres/skills/neon-postgres/SKILL.md
plugins/netlify/skills/netlify-ai-gateway/SKILL.md
plugins/netlify/skills/netlify-blobs/SKILL.md
plugins/netlify/skills/netlify-caching/SKILL.md
plugins/netlify/skills/netlify-cli-and-deploy/SKILL.md
plugins/netlify/skills/netlify-config/SKILL.md
plugins/netlify/skills/netlify-deploy/SKILL.md
plugins/netlify/skills/netlify-edge-functions/SKILL.md
plugins/netlify/skills/netlify-forms/SKILL.md
plugins/netlify/skills/netlify-frameworks/SKILL.md
plugins/netlify/skills/netlify-functions/SKILL.md
plugins/netlify/skills/netlify-identity/SKILL.md
plugins/netlify/skills/netlify-image-cdn/SKILL.md
plugins/ngs-analysis/skills/ngs-amplicon-microbiome/SKILL.md
plugins/ngs-analysis/skills/ngs-analysis-router/SKILL.md
plugins/ngs-analysis/skills/ngs-atacseq-peaks-qc/SKILL.md
plugins/ngs-analysis/skills/ngs-bcl-to-fastq/SKILL.md
plugins/ngs-analysis/skills/ngs-bulk-rnaseq-counts-qc/SKILL.md
plugins/ngs-analysis/skills/ngs-bulk-rnaseq-differential-expression/SKILL.md
plugins/ngs-analysis/skills/ngs-bulk-rnaseq/SKILL.md
plugins/ngs-analysis/skills/ngs-chip-cutrun-peaks-qc/SKILL.md
plugins/ngs-analysis/skills/ngs-dna-germline-variants/SKILL.md
plugins/ngs-analysis/skills/ngs-dna-somatic-variants/SKILL.md
plugins/ngs-analysis/skills/ngs-dna-umi-panel-variants/SKILL.md
plugins/ngs-analysis/skills/ngs-dna-variant-calling/SKILL.md
plugins/ngs-analysis/skills/ngs-epigenomics-peaks/SKILL.md
plugins/ngs-analysis/skills/ngs-fastq-qc/SKILL.md
plugins/ngs-analysis/skills/ngs-runtime-env/SKILL.md
plugins/ngs-analysis/skills/ngs-scrna-seq/SKILL.md
plugins/ngs-analysis/skills/ngs-shotgun-metagenomics/SKILL.md
plugins/ngs-analysis/skills/scrna-seq-qc/SKILL.md
plugins/notion/skills/notion-knowledge-capture/SKILL.md
plugins/notion/skills/notion-meeting-intelligence/SKILL.md
plugins/notion/skills/notion-research-documentation/SKILL.md
plugins/notion/skills/notion-spec-to-implementation/SKILL.md
plugins/nvidia/skills/aiq-deploy/SKILL.md
plugins/nvidia/skills/aiq-research/SKILL.md
plugins/nvidia/skills/cuopt-user-rules/SKILL.md
plugins/nvidia/skills/dynamo-interconnect-check/SKILL.md
plugins/nvidia/skills/dynamo-router-starter/SKILL.md
plugins/nvidia/skills/nemoclaw-user-get-started/SKILL.md
plugins/nvidia/skills/omniverse-cad-to-simready/SKILL.md
plugins/nvidia/skills/omniverse-realtime-viewer/SKILL.md
plugins/nvidia/skills/omniverse-usd-performance-tuning/SKILL.md
plugins/nvidia/skills/physical-ai-neural-reconstruction/SKILL.md
plugins/openai-developers/skills/agents-sdk/SKILL.md
plugins/openai-developers/skills/build-chatgpt-app/SKILL.md
plugins/openai-developers/skills/chatgpt-app-submission/SKILL.md
plugins/openai-developers/skills/openai-api-troubleshooting/SKILL.md
plugins/openai-developers/skills/openai-platform-api-key/SKILL.md
plugins/outlook-calendar/skills/outlook-calendar-daily-brief/SKILL.md
plugins/outlook-calendar/skills/outlook-calendar-free-up-time/SKILL.md
plugins/outlook-calendar/skills/outlook-calendar-group-scheduler/SKILL.md
plugins/outlook-calendar/skills/outlook-calendar-meeting-prep/SKILL.md
plugins/outlook-calendar/skills/outlook-calendar-shared-calendars/SKILL.md
plugins/outlook-calendar/skills/outlook-calendar/SKILL.md
plugins/outlook-email/skills/outlook-email-inbox-triage/SKILL.md
plugins/outlook-email/skills/outlook-email-reply-drafting/SKILL.md
plugins/outlook-email/skills/outlook-email-shared-mailboxes/SKILL.md
plugins/outlook-email/skills/outlook-email-subscription-cleanup/SKILL.md
plugins/outlook-email/skills/outlook-email-task-extraction/SKILL.md
plugins/outlook-email/skills/outlook-email/SKILL.md
plugins/plugin-eval/fixtures/minimal-skill/SKILL.md
plugins/plugin-eval/skills/evaluate-plugin/SKILL.md
plugins/plugin-eval/skills/evaluate-skill/SKILL.md
plugins/plugin-eval/skills/improve-skill/SKILL.md
plugins/plugin-eval/skills/metric-pack-designer/SKILL.md
plugins/plugin-eval/skills/plugin-eval/SKILL.md
plugins/posthog/skills/posthog/SKILL.md
plugins/remotion/skills/remotion/SKILL.md
plugins/render/skills/render-background-workers/SKILL.md
plugins/render/skills/render-blueprints/SKILL.md
plugins/render/skills/render-cli/SKILL.md
plugins/render/skills/render-cron-jobs/SKILL.md
plugins/render/skills/render-debug/SKILL.md
plugins/render/skills/render-deploy/SKILL.md
plugins/render/skills/render-disks/SKILL.md
plugins/render/skills/render-docker/SKILL.md
plugins/render/skills/render-domains/SKILL.md
plugins/render/skills/render-env-vars/SKILL.md
plugins/render/skills/render-keyvalue/SKILL.md
plugins/render/skills/render-mcp/SKILL.md
plugins/render/skills/render-migrate-from-heroku/SKILL.md
plugins/render/skills/render-monitor/SKILL.md
plugins/render/skills/render-networking/SKILL.md
plugins/render/skills/render-postgres/SKILL.md
plugins/render/skills/render-private-services/SKILL.md
plugins/render/skills/render-scaling/SKILL.md
plugins/render/skills/render-web-services/SKILL.md
plugins/render/skills/render-workflows/SKILL.md
plugins/replayio/skills/replay-qa-api/SKILL.md
plugins/replayio/skills/replayio/SKILL.md
plugins/sentry/skills/sentry/SKILL.md
plugins/sharepoint/skills/sharepoint-powerpoint/SKILL.md
plugins/sharepoint/skills/sharepoint-shared-doc-maintenance/SKILL.md
plugins/sharepoint/skills/sharepoint-site-discovery/SKILL.md
plugins/sharepoint/skills/sharepoint-spreadsheet-formula-builder/SKILL.md
plugins/sharepoint/skills/sharepoint-spreadsheets/SKILL.md
plugins/sharepoint/skills/sharepoint-word-docs/SKILL.md
plugins/sharepoint/skills/sharepoint/SKILL.md
plugins/shopify/skills/shopify-app-store-review/SKILL.md
plugins/shopify/skills/shopify-custom-data/SKILL.md
plugins/shopify/skills/shopify-customer/SKILL.md
plugins/shopify/skills/shopify-dev/SKILL.md
plugins/shopify/skills/shopify-functions/SKILL.md
plugins/shopify/skills/shopify-hydrogen/SKILL.md
plugins/shopify/skills/shopify-liquid/SKILL.md
plugins/shopify/skills/shopify-onboarding-dev/SKILL.md
plugins/shopify/skills/shopify-partner/SKILL.md
plugins/shopify/skills/shopify-payments-apps/SKILL.md
plugins/shopify/skills/shopify-polaris-admin-extensions/SKILL.md
plugins/shopify/skills/shopify-polaris-app-home/SKILL.md
plugins/shopify/skills/shopify-polaris-checkout-extensions/SKILL.md
plugins/shopify/skills/shopify-polaris-customer-account-extensions/SKILL.md
plugins/shopify/skills/shopify-pos-ui/SKILL.md
plugins/shopify/skills/shopify-storefront-graphql/SKILL.md
plugins/shopify/skills/ucp/SKILL.md
plugins/slack/skills/slack-channel-summarization/SKILL.md
plugins/slack/skills/slack-daily-digest/SKILL.md
plugins/slack/skills/slack-notification-triage/SKILL.md
plugins/slack/skills/slack-outgoing-message/SKILL.md
plugins/slack/skills/slack-reply-drafting/SKILL.md
plugins/slack/skills/slack/SKILL.md
plugins/supabase/skills/supabase-postgres-best-practices/SKILL.md
plugins/supabase/skills/supabase/SKILL.md
plugins/superhuman/skills/superhuman-mail/SKILL.md
plugins/superpowers/skills/brainstorming/SKILL.md
plugins/superpowers/skills/dispatching-parallel-agents/SKILL.md
plugins/superpowers/skills/executing-plans/SKILL.md
plugins/superpowers/skills/finishing-a-development-branch/SKILL.md
plugins/superpowers/skills/receiving-code-review/SKILL.md
plugins/superpowers/skills/requesting-code-review/SKILL.md
plugins/superpowers/skills/subagent-driven-development/SKILL.md
plugins/superpowers/skills/systematic-debugging/SKILL.md
plugins/superpowers/skills/test-driven-development/SKILL.md
plugins/superpowers/skills/using-git-worktrees/SKILL.md
plugins/superpowers/skills/using-superpowers/SKILL.md
plugins/superpowers/skills/verification-before-completion/SKILL.md
plugins/superpowers/skills/writing-plans/SKILL.md
plugins/superpowers/skills/writing-skills/SKILL.md
plugins/teams/skills/teams-channel-summarization/SKILL.md
plugins/teams/skills/teams-daily-digest/SKILL.md
plugins/teams/skills/teams-messages/SKILL.md
plugins/teams/skills/teams-notification-triage/SKILL.md
plugins/teams/skills/teams-planner-task-management/SKILL.md
plugins/teams/skills/teams-reply-drafting/SKILL.md
plugins/teams/skills/teams/SKILL.md
plugins/temporal/skills/temporal-developer/SKILL.md
plugins/test-android-apps/skills/android-emulator-qa/SKILL.md
plugins/test-android-apps/skills/android-performance/SKILL.md
plugins/twilio-developer-kit/skills/twilio-agent-augmentation-architect/SKILL.md
plugins/twilio-developer-kit/skills/twilio-ai-agent-architect/SKILL.md
plugins/twilio-developer-kit/skills/twilio-call-recordings/SKILL.md
plugins/twilio-developer-kit/skills/twilio-compliance-onboarding/SKILL.md
plugins/twilio-developer-kit/skills/twilio-compliance-traffic/SKILL.md
plugins/twilio-developer-kit/skills/twilio-conference-calls/SKILL.md
plugins/twilio-developer-kit/skills/twilio-content-template-builder/SKILL.md
plugins/twilio-developer-kit/skills/twilio-conversation-intelligence/SKILL.md
plugins/twilio-developer-kit/skills/twilio-conversation-orchestrator/SKILL.md
plugins/twilio-developer-kit/skills/twilio-conversations-classic-api/SKILL.md
plugins/twilio-developer-kit/skills/twilio-customer-memory/SKILL.md
plugins/twilio-developer-kit/skills/twilio-customer-support-architect/SKILL.md
plugins/twilio-developer-kit/skills/twilio-debugging-observability/SKILL.md
plugins/twilio-developer-kit/skills/twilio-email-deliverability-advisor/SKILL.md
plugins/twilio-developer-kit/skills/twilio-email-send/SKILL.md
plugins/twilio-developer-kit/skills/twilio-identity-verification-advisor/SKILL.md
plugins/twilio-developer-kit/skills/twilio-lookup-phone-intelligence/SKILL.md
plugins/twilio-developer-kit/skills/twilio-marketing-promotions-advisor/SKILL.md
plugins/twilio-developer-kit/skills/twilio-messaging-overview/SKILL.md
plugins/twilio-developer-kit/skills/twilio-messaging-services/SKILL.md
plugins/twilio-developer-kit/skills/twilio-messaging-webhooks/SKILL.md
plugins/twilio-developer-kit/skills/twilio-notifications-alerts-advisor/SKILL.md
plugins/twilio-developer-kit/skills/twilio-numbers-senders/SKILL.md
plugins/twilio-developer-kit/skills/twilio-organizations-setup/SKILL.md
plugins/twilio-developer-kit/skills/twilio-rcs-messaging/SKILL.md
plugins/twilio-developer-kit/skills/twilio-regulatory-compliance-bundles/SKILL.md
plugins/twilio-developer-kit/skills/twilio-reliability-patterns/SKILL.md
plugins/twilio-developer-kit/skills/twilio-security-api-auth/SKILL.md
plugins/twilio-developer-kit/skills/twilio-security-compliance-hipaa/SKILL.md
plugins/twilio-developer-kit/skills/twilio-security-hardening/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-account-setup/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-email-send/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-email-settings/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-engagement-quality/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-inbound-parse/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-suppressions/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-webhooks/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sms-isv-setup/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sms-send-message/SKILL.md
plugins/twilio-developer-kit/skills/twilio-taskrouter-routing/SKILL.md
plugins/twilio-developer-kit/skills/twilio-verify-send-otp/SKILL.md
plugins/twilio-developer-kit/skills/twilio-voice-conversation-relay/SKILL.md
plugins/twilio-developer-kit/skills/twilio-voice-outbound-calls/SKILL.md
plugins/twilio-developer-kit/skills/twilio-voice-twiml/SKILL.md
plugins/twilio-developer-kit/skills/twilio-webhook-architecture/SKILL.md
plugins/twilio-developer-kit/skills/twilio-whatsapp-manage-senders/SKILL.md
plugins/twilio-developer-kit/skills/twilio-whatsapp-send-message/SKILL.md
plugins/vercel/skills/agent-browser-verify/SKILL.md
plugins/vercel/skills/agent-browser/SKILL.md
plugins/vercel/skills/ai-elements/SKILL.md
plugins/vercel/skills/ai-gateway/SKILL.md
plugins/vercel/skills/ai-generation-persistence/SKILL.md
plugins/vercel/skills/ai-sdk/SKILL.md
plugins/vercel/skills/auth/SKILL.md
plugins/vercel/skills/bootstrap/SKILL.md
plugins/vercel/skills/chat-sdk/SKILL.md
plugins/vercel/skills/cms/SKILL.md
plugins/vercel/skills/cron-jobs/SKILL.md
plugins/vercel/skills/deployments-cicd/SKILL.md
plugins/vercel/skills/email/SKILL.md
plugins/vercel/skills/env-vars/SKILL.md
plugins/vercel/skills/geist/SKILL.md
plugins/vercel/skills/geistdocs/SKILL.md
plugins/vercel/skills/investigation-mode/SKILL.md
plugins/vercel/skills/json-render/SKILL.md
plugins/vercel/skills/marketplace/SKILL.md
plugins/vercel/skills/micro/SKILL.md
plugins/vercel/skills/ncc/SKILL.md
plugins/vercel/skills/next-forge/SKILL.md
plugins/vercel/skills/nextjs/SKILL.md
plugins/vercel/skills/observability/SKILL.md
plugins/vercel/skills/payments/SKILL.md
plugins/vercel/skills/react-best-practices/SKILL.md
plugins/vercel/skills/routing-middleware/SKILL.md
plugins/vercel/skills/runtime-cache/SKILL.md
plugins/vercel/skills/satori/SKILL.md
plugins/vercel/skills/shadcn/SKILL.md
plugins/vercel/skills/sign-in-with-vercel/SKILL.md
plugins/vercel/skills/swr/SKILL.md
plugins/vercel/skills/turbopack/SKILL.md
plugins/vercel/skills/turborepo/SKILL.md
plugins/vercel/skills/v0-dev/SKILL.md
plugins/vercel/skills/vercel-agent/SKILL.md
plugins/vercel/skills/vercel-api/SKILL.md
plugins/vercel/skills/vercel-cli/SKILL.md
plugins/vercel/skills/vercel-firewall/SKILL.md
plugins/vercel/skills/vercel-flags/SKILL.md
plugins/vercel/skills/vercel-functions/SKILL.md
plugins/vercel/skills/vercel-queues/SKILL.md
plugins/vercel/skills/vercel-sandbox/SKILL.md
plugins/vercel/skills/vercel-services/SKILL.md
plugins/vercel/skills/vercel-storage/SKILL.md
plugins/vercel/skills/verification/SKILL.md
plugins/wix/skills/wix-design-system/SKILL.md
plugins/wix/skills/wix-manage/SKILL.md
plugins/zoom/skills/contact-center/android/SKILL.md
plugins/zoom/skills/contact-center/ios/SKILL.md
plugins/zoom/skills/contact-center/web/SKILL.md
plugins/zoom/skills/meeting-sdk/android/SKILL.md
plugins/zoom/skills/meeting-sdk/electron/SKILL.md
plugins/zoom/skills/meeting-sdk/ios/SKILL.md
plugins/zoom/skills/meeting-sdk/linux/SKILL.md
plugins/zoom/skills/meeting-sdk/macos/SKILL.md
plugins/zoom/skills/meeting-sdk/react-native/SKILL.md
plugins/zoom/skills/meeting-sdk/unreal/SKILL.md
plugins/zoom/skills/meeting-sdk/web/SKILL.md
plugins/zoom/skills/meeting-sdk/windows/SKILL.md
plugins/zoom/skills/video-sdk/android/SKILL.md
plugins/zoom/skills/video-sdk/flutter/SKILL.md
plugins/zoom/skills/video-sdk/ios/SKILL.md
plugins/zoom/skills/video-sdk/linux/SKILL.md
plugins/zoom/skills/video-sdk/macos/SKILL.md
plugins/zoom/skills/video-sdk/react-native/SKILL.md
plugins/zoom/skills/video-sdk/unity/SKILL.md
plugins/zoom/skills/video-sdk/web/SKILL.md
plugins/zoom/skills/video-sdk/windows/SKILL.md
plugins/zoom/skills/virtual-agent/android/SKILL.md
plugins/zoom/skills/virtual-agent/ios/SKILL.md
plugins/zoom/skills/virtual-agent/web/SKILL.md
plugins/zotero/skills/zotero/SKILL.md
plugins/atlassian-rovo/skills/search-company-knowledge/SKILL.md
plugins/atlassian-rovo/skills/spec-to-backlog/SKILL.md
plugins/atlassian-rovo/skills/triage-issue/SKILL.md
plugins/build-web-apps/skills/stripe-best-practices/SKILL.md
plugins/build-web-data-visualization/skills/uml-and-software-architecture-visualization/SKILL.md
plugins/build-web-data-visualization/skills/visualization-strategy-and-critique/SKILL.md
plugins/catalyst-by-zoho/skills/catalyst-by-zoho/SKILL.md
plugins/chronograph-gp/skills/chronograph-portfolio-company-one-pager/SKILL.md
plugins/chronograph-lp/skills/chronograph-gp-meeting-prep/SKILL.md
plugins/chronograph-lp/skills/chronograph-portfolio-company-one-pager/SKILL.md
plugins/cloudflare/skills/building-ai-agent-on-cloudflare/SKILL.md
plugins/cloudflare/skills/building-mcp-server-on-cloudflare/SKILL.md
plugins/codex-security/skills/propose-security-hardening/SKILL.md
plugins/daloopa/skills/build-model/SKILL.md
plugins/daloopa/skills/tearsheet/SKILL.md
plugins/datasite/skills/bulk-qa-answers/SKILL.md
plugins/datasite/skills/document-quality-check/SKILL.md
plugins/datasite/skills/gap-analysis/SKILL.md
plugins/datasite/skills/irl-tracker/SKILL.md
plugins/datasite/skills/launch-readiness-orchestrator/SKILL.md
plugins/datasite/skills/risk-analysis-audit/SKILL.md
plugins/datasite/skills/smart-file-renaming/SKILL.md
plugins/datasite/skills/vdr-index-setup/SKILL.md
plugins/figma/skills/figma-design-to-code/SKILL.md
plugins/figma/skills/figma-generate-design/SKILL.md
plugins/figma/skills/figma-generate-diagram/SKILL.md
plugins/figma/skills/figma-generate-library/SKILL.md
plugins/figma/skills/figma-swiftui/SKILL.md
plugins/figma/skills/figma-use/SKILL.md
plugins/heygen/skills/heygen-avatar/SKILL.md
plugins/heygen/skills/heygen-video/SKILL.md
plugins/hugging-face/skills/jobs/SKILL.md
plugins/hugging-face/skills/llm-trainer/SKILL.md
plugins/hugging-face/skills/vision-trainer/SKILL.md
plugins/hyperframes/skills/hyperframes/SKILL.md
plugins/mixpanel-headless/skills/mixpanelyst/SKILL.md
plugins/moody-s/skills/moody-s-issuer-brief/SKILL.md
plugins/moody-s/skills/moody-s-rating-analysis/SKILL.md
plugins/moody-s/skills/moody-s-sector-brief/SKILL.md
plugins/moody-s/skills/shared/citations/SKILL.md
plugins/moody-s/skills/shared/template/SKILL.md
plugins/neon-postgres/skills/neon-postgres-egress-optimizer/SKILL.md
plugins/nvidia/skills/physical-ai-infrastructure-setup-and-resilient-scaling/SKILL.md
plugins/openai-ads-conversions/skills/openai-ads-conversions-setup/SKILL.md
plugins/render/skills/render-static-sites/SKILL.md
plugins/shopify/skills/shopify-admin/SKILL.md
plugins/shopify/skills/shopify-onboarding-merchant/SKILL.md
plugins/shopify/skills/shopify-use-shopify-cli/SKILL.md
plugins/stripe/skills/stripe-best-practices/SKILL.md
plugins/stripe/skills/upgrade-stripe/SKILL.md
plugins/superhuman/skills/batch-draft-writer/SKILL.md
plugins/superhuman/skills/deal-tracker/SKILL.md
plugins/superhuman/skills/eod-wrapup/SKILL.md
plugins/superhuman/skills/meeting-scheduler/SKILL.md
plugins/superhuman/skills/morning-briefing/SKILL.md
plugins/twilio-developer-kit/skills/twilio-account-setup/SKILL.md
plugins/twilio-developer-kit/skills/twilio-cli-reference/SKILL.md
plugins/twilio-developer-kit/skills/twilio-enterprise-knowledge/SKILL.md
plugins/twilio-developer-kit/skills/twilio-messaging-channel-advisor/SKILL.md
plugins/twilio-developer-kit/skills/twilio-send-message/SKILL.md
plugins/twilio-developer-kit/skills/twilio-sendgrid-deliverability-advisor/SKILL.md
plugins/wix/skills/wix-app/SKILL.md
plugins/wix/skills/wix-headless/SKILL.md
plugins/zoom/skills/build-zoom-bot/SKILL.md
plugins/zoom/skills/build-zoom-meeting-app/SKILL.md
plugins/zoom/skills/choose-zoom-approach/SKILL.md
plugins/zoom/skills/cobrowse-sdk/SKILL.md
plugins/zoom/skills/contact-center/SKILL.md
plugins/zoom/skills/debug-zoom-integration/SKILL.md
plugins/zoom/skills/debug-zoom/SKILL.md
plugins/zoom/skills/general/SKILL.md
plugins/zoom/skills/meeting-sdk/SKILL.md
plugins/zoom/skills/oauth/SKILL.md
plugins/zoom/skills/phone/SKILL.md
plugins/zoom/skills/plan-zoom-integration/SKILL.md
plugins/zoom/skills/plan-zoom-product/SKILL.md
plugins/zoom/skills/probe-sdk/SKILL.md
plugins/zoom/skills/rest-api/SKILL.md
plugins/zoom/skills/rivet-sdk/SKILL.md
plugins/zoom/skills/rtms/SKILL.md
plugins/zoom/skills/scribe/SKILL.md
plugins/zoom/skills/setup-zoom-oauth/SKILL.md
plugins/zoom/skills/start/SKILL.md
plugins/zoom/skills/team-chat/SKILL.md
plugins/zoom/skills/ui-toolkit/SKILL.md
plugins/zoom/skills/video-sdk/SKILL.md
plugins/zoom/skills/virtual-agent/SKILL.md
plugins/zoom/skills/webhooks/SKILL.md
plugins/zoom/skills/websockets/SKILL.md
plugins/zoom/skills/zoom-apps-sdk/SKILL.md

Metadata

Files
0
Version
11c74d6
Hash
eaa8c335
Indexed
2026-07-19 09:53

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-20 13:39
浙ICP备14020137号-1 $Map of visitor$