AGENTS.md · vercel/workflow
AGENTS.md from vercel/workflow: 571 lines covering Overview, Architecture, Development commands, Key workflow concepts and more.
Template by vercel
Install
Works with Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code. Read the repository before you give any tool access to your data.
curl -fsSL https://raw.githubusercontent.com/vercel/workflow/main/AGENTS.md -o AGENTS.md
Read it and adapt it to your project before use.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: prompt-engineering
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
What's in it
An AGENTS.md file: instructions coding agents (Codex, Cursor, Copilot, Gemini CLI and others) read before working in a repo.
- For
- Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode, Claude Code
- Length
- 571 lines
- File
AGENTS.md
Sections
- Overview
- Architecture
- Development commands
- Key workflow concepts
- File structure conventions
- Package manager
- Code style
- Local checks vs. CI
- Bundle size
- Documentation standards
- SWC plugin
- Versioning & release strategy
- Common patterns
- Architecture notes
First lines (shown under the repo's Apache-2.0 license)
# Agent instructions **CRITICAL RULES:** - NEVER push directly to the `main` or `stable` branches - Do not remove or break agent-discoverable docs sitemap behavior: keep docs/app/sitemap.md/route.ts and docs/app/[lang]/sitemap.md/route.ts, and keep the sitemap link in docs/app/[lang]/llms.mdx/[[...slug]]/route.ts. ## Overview Workflow SDK is a durable functions framework for JavaScript/TypeScript that enables writing long-running, stateful application logic on top of stateless compute. The runtime persists progress as an event log and deterministically replays code to reconstruct state after cold starts, failures, or scale events. This repository contains the client-side SDK code for workflows, along with example apps that showcase Workflow SDK in action. ## Architecture ### Core components - **packages/core**: Core workflow runtime and primitives (`@workflow/core`) - **packages/next**: Next.js integration (`@workflow/next`) - **packages/cli**: Command-line interface (`@workflow/cli`) - **packages/world**: Core interfaces and types for workflow storage backends (`@workflow/world`) - **packages/world-local**: Filesystem-based workflow backend for local development and testing (`@workflow/world-local`) - **packages/world-vercel**: Production workflow backend for Vercel platform deployments (`@workflow/world-vercel`) - **packages/swc-plugin-workflow**: SWC compiler plugin for workflow transformations - **workbench/example**: Basic workflow examples using the CLI (aka "standalone mode") - **workbench/nextjs-turbopack**: Workflow examples using the Next.js integration ### Workflow execution model Workflows consist of two types of functions: 1. **Workflow functions** (`"use workflow"`): Orchestrators that run in a sandboxed VM without full Node.js access 2. **Step functions** (`"use step"`): Individual pieces of logic with full Node.js runtime access The framework uses compiler transformations to split workflow files into separate bundles for client, workflow, and step execution contexts. ## Development commands ### Workspace-level commands ```bash # Build all packages pnpm build # Run tests across all packages pnpm test # Run end-to-end tests pnpm test:e2e # Format code with Biome pnpm format # Lint with Biome pnpm lint # Typecheck TypeScript pnpm typecheck # Clean build artifacts pnpm clean ``` ### Core package testing ```bash # Test core functionality cd packages/core && pnpm test # Test specific file cd packages/core && pnpm vitest run src/[filename].test.ts # Run E2E tests (requires environment variables and running dev server) # Note: Use nextjs-turbopack for local e2e testing (not example app - it has no dev server) # Step 1: Start the dev server in background # NOTE: WORKFLOW_PUBLIC_MANIFEST=1 is required for e2e tests to access the workflow manifest cd workbench/nextjs-turbopack && WORKFLOW_PUBLIC_MANIFEST=1 pnpm dev > /tmp/nextjs-dev.log 2>&1 & # Step 2: Wait for server to be ready (usually 15-20 seconds) sleep 15 # Step 3: Run the e2e tests from the project root DEPLOYMENT_URL="http://localhost:3000" APP_NAME="nextjs-turbopack" pnpm vitest run packages/core/e2e/e2e.test.ts # Step 4: Stop the dev server when done pkill -f "pnpm dev" # To run specific tests, use the -t flag: DEPLOYMENT_URL="http://localhost:3000" APP_NAME="nextjs-turbopack" pnpm vitest run packages/core/e2e/e2e.test.ts -t "sleeping" # For running E2E locally against a deployed Vercel preview/production app: # The test matrix in .github/workflows/tests.yml is the source of truth — # each app entry defines the project-id / project-slug needed below. # # Required environment variables (matches the CI `e2e-vercel-prod` job): # - DEPLOYMENT_URL: Full URL of the deployed app (e.g. a preview deployment URL) # - VERCEL_DEPLOYMENT_ID: The dpl_... ID of the deployment (get via `vercel inspect <url>`) # - APP_NAME: App name (example, nextjs-turbopack, nextjs-webpack, nitro, vite, # nuxt, sveltekit, hono, express, fastify, astro) # - WORKFLOW_VERCEL_ENV: "preview" or "production" # - WORKFLOW_VERCEL_AUTH_TOKEN: Vercel auth token with access to the team # - WORKFLOW_VERCEL_TEAM: Vercel team ID (CI uses team_nO2mCG4W8IxPIeKoSsqwAxxB for labs) # - WORKFLOW_VERCEL_PROJECT: Vercel project ID (prj_...) — see test matrix # - WORKFLOW_VERCEL_PROJECT_SLUG: Vercel project slug — see test matrix # - VERCEL_OIDC_TOKEN: Short-lived OIDC token used to bypass # deployment protection via Trusted Sources. # In CI this is auto-minted from the GitHub # Actions runner. Locally, run # `vercel env pull` from any workbench app's # directory and the resulting `.env.local` # will contain a `VERCEL_OIDC_TOKEN` value # that all workbench projects accept (they # are configured to trust each other under # `trustedSources.projects`). # # Example (nextjs-turbopack preview deployment): NODE_OPTIONS="--enable-source-maps" \ DEPLOYMENT_URL="https://example-nextjs-workflow-turbopack-<hash>.labs.vercel.dev" \ VERCEL_DEPLOYMENT_ID="dpl_..." \ APP_NAME="nextjs-turbopack" \ WORKFLOW_VERCEL_ENV="preview" \ WORKFLOW_VERCEL_AUTH_TOKEN="<vercel_labs_token>" \ WORKFLOW_VERCEL_TEAM="team_nO2mCG4W8IxPIeKoSsqwAxxB" \ WORKFLOW_VERCEL_PROJECT="prj_yjkM7UdHliv8bfxZ1sMJQf1pMpdi" \ WORKFLOW_VERCEL_PROJECT_SLUG="example-nextjs-workflow-turbopack" \ VERCEL_OIDC_TOKEN="$(grep VERCEL_OIDC_TOKEN workbench/nextjs-turbopack/.env.local | cut -d= -f2-)" \ pnpm run test:e2e ``` ### Event log race repro `packages/core/e2e/event-log-race-repro.test.ts` is a dedicated harness for `CORRUPTED_EVENT_LOG`. It drives six scenarios against one deployment: `step-storm` and `hook-storm` (concurrent replays of a single run racing the per-branch watchdog; `hook-storm` is a production shape), `blocked-branch` (each branch parks on a launch step before its hook race, so a woken replay can hold a log that predates a sibling's launch completion and take the ordinal that sibling's wait is about to get; it covers the class the wake-order fixes miss), `wake-loop` (one sequential loop racing a reusable hook read against a heartbeat sleep, no fan-out; the driver supplies the concurrency with bursty resumes and resumes aimed at the heartbeat deadline, the shape of a production run whose replays of one immutable prefix diverged non-deterministically on an unconsumable `wait_created`), `dag-runner` (a ready-set scheduler over a fixed DAG, width above the inline step limit so waves mix inline and dispatched steps, whose worker nodes bind a hook and await `hook.getConflict()` mid-fan-out; it needs no racing driver, only worker callbacks, and is the shape of a production runner whose single-writer logs failed to replay), plus a `hook-sleep` control that provides the calibration baseline. Any outcome other than `completed` fails the run, except `infra`, which means the harness could not reach the deployment. Run it against a locally started workbench app. No Vercel deployment or credentials are required: ```bash pnpm run test:e2e:event-log-race-repro:local # world-postgres pnpm run test:e2e:event-log-race-repro:local --world local # world-local ``` The script (`scripts/event-log-race-repro-local.sh`, `--help` for flags) builds
Signals
- Stars
- 2,471
- Forks
- 385
- Open issues
- 139
- Last commit (this folder)
- Sep 30, 2026 (29 days ago)
- Last release
- Oct 20, 2026 (9 days ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- Apache-2.0
- Repository
- github.com/vercel/workflow
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from vercel
- 0.636score
add-harness-package
vercelOfficial
Guide for adding new AI SDK harness packages.
SkillAFreshness: A★ 27.5KClaude Code +9 - 0.636score
adr-skill
vercelOfficial
Create and maintain Architecture Decision Records (ADRs) optimized for agentic coding workflows.
SkillAFreshness: A★ 27.5KClaude Code +9 - 0.636score
list-npm-package-content
vercelOfficial
List the contents of an npm package tarball before publishing.
SkillAFreshness: A★ 27.5KClaude Code +9 - 0.632score
develop-ai-functions-example
vercelOfficial
Develop examples for AI SDK functions.
SkillAFreshness: A★ 27.5KClaude Code +9 - 0.632score
major-version-mode
vercelOfficial
Context for working on the next AI SDK major release.
SkillAFreshness: A★ 27.5KClaude Code +9 - 0.632score
migrate-ai-sdk-v6-to-v7
vercelOfficial
Migrate applications from AI SDK 6.x to AI SDK 7.0.
SkillAFreshness: A★ 27.5KClaude Code +9
Cite this page
AGENTS.md · vercel/workflow. Agent Mart. https://agentmart.dev/templates/vercel-workflow-agents-md (last updated 2026-10-24)