vercel-to-createos

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Vercel → CreateOS Migration

Vercel → CreateOS 迁移指南

This skill migrates a project currently deployed on Vercel to CreateOS. It reads the existing Vercel configuration, translates it into a CreateOS project, provisions environments and environment variables, and triggers the first deployment — all through the CreateOS MCP server.

本技能可将当前部署在Vercel上的项目迁移至CreateOS。它会读取现有Vercel配置,将其转换为CreateOS项目,配置环境及环境变量,并触发首次部署——所有操作均通过CreateOS MCP服务器完成。

When to use this skill

何时使用此技能

Activate this skill when any of the following is true:
  • The user explicitly asks to migrate, move, or deploy from Vercel to CreateOS.
  • The user expresses intent to leave Vercel (pricing, reliability, security, ownership concerns).
  • The repository contains a
    vercel.json
    ,
    .vercel/
    directory, or
    @vercel/*
    dependencies in
    package.json
    .
  • The user asks for a "Vercel alternative" or references the April 2026 Vercel security incident.
Do NOT use this skill when:
  • The user is deploying a fresh project with no prior Vercel deployment — use the standard
    createos
    skill instead.
  • The project is a pure Next.js application with heavy dependencies on Vercel-specific features (Edge Middleware, Vercel KV, Vercel Blob, Vercel Postgres). Surface compatibility notes before proceeding.

满足以下任意条件时,激活此技能:
  • 用户明确要求将项目从Vercel迁移、转移或部署至CreateOS。
  • 用户表达了离开Vercel的意愿(如对定价、可靠性、安全性、所有权的担忧)。
  • 仓库中包含
    vercel.json
    .vercel/
    目录,或
    package.json
    中有
    @vercel/*
    依赖。
  • 用户询问“Vercel替代方案”或提及2026年4月Vercel安全事件。
请勿在以下场景使用此技能:
  • 用户部署全新项目且无Vercel部署历史——请使用标准
    createos
    技能。
  • 项目为重度依赖Vercel专属功能(Edge Middleware、Vercel KV、Vercel Blob、Vercel Postgres)的纯Next.js应用。继续操作前需告知兼容性说明。

Prerequisites

前置条件

Before running any migration steps, confirm the user has:
  1. A CreateOS account — if not, direct them to
    https://createos.nodeops.network
    to sign in via Email, GitHub, Google, or Wallet.
  2. CreateOS MCP connected OR a
    CREATEOS_API_KEY
    environment variable set.
  3. Access to their current Vercel project's environment variables (they may need to export these from the Vercel dashboard).
  4. GitHub repository access for the project (CreateOS deploys from GitHub for VCS projects).
If the user does not have their Vercel environment variables accessible, pause the migration and provide these instructions:
Export your Vercel environment variables by running
vercel env pull .env.vercel.backup
in your project directory, or download them from Project Settings → Environment Variables in the Vercel dashboard. Keep this file local and do not commit it.

执行任何迁移步骤前,确认用户已具备:
  1. CreateOS账户——若没有,引导用户访问
    https://createos.nodeops.network
    ,通过邮箱、GitHub、Google或钱包登录。
  2. CreateOS MCP已连接,或已设置
    CREATEOS_API_KEY
    环境变量。
  3. 可访问当前Vercel项目的环境变量(用户可能需要从Vercel控制台导出)。
  4. 项目的GitHub仓库访问权限(CreateOS通过GitHub部署版本控制类项目)。
若用户无法访问Vercel环境变量,请暂停迁移并提供以下说明:
在项目目录中运行
vercel env pull .env.vercel.backup
导出Vercel环境变量,或从Vercel控制台的“项目设置→环境变量”中下载。请将此文件保存在本地,不要提交到仓库。

Migration workflow

迁移流程

Follow these steps in order. Do not skip steps. Report progress to the user after each completed step.
请按顺序执行以下步骤,请勿跳过。完成每个步骤后向用户汇报进度。

Step 1: Inventory the Vercel project

步骤1:盘点Vercel项目

Read the following files from the repository if they exist:
  • vercel.json
    — build, routing, function, and header configuration
  • package.json
    — detect framework, build scripts, and Node.js version
  • next.config.js
    /
    next.config.mjs
    /
    next.config.ts
    — Next.js specific configuration
  • .nvmrc
    — Node version pin
  • Any
    .env*
    files for reference (do NOT read secrets; only note which keys exist)
Produce a short summary for the user:
Detected project:
- Framework: [Next.js 14 / Vite / Remix / etc.]
- Node version: [20.x]
- Build command: [npm run build]
- Output directory: [.next]
- Environment variables needed: [count, with names — NOT values]
- Vercel-specific features in use: [list any edge middleware, KV, blob, etc.]
读取仓库中以下(若存在的)文件:
  • vercel.json
    ——构建、路由、函数及头部配置
  • package.json
    ——检测框架、构建脚本及Node.js版本
  • next.config.js
    /
    next.config.mjs
    /
    next.config.ts
    ——Next.js专属配置
  • .nvmrc
    ——Node版本锁定文件
  • 所有
    .env*
    文件(仅作参考,不读取密钥;仅记录存在的键名)
向用户生成简短总结:
检测到的项目信息:
- 框架:[Next.js 14 / Vite / Remix / 等]
- Node版本:[20.x]
- 构建命令:[npm run build]
- 输出目录:[.next]
- 需要的环境变量:[数量及名称——不含值]
- 使用的Vercel专属功能:[列出Edge Middleware、KV、Blob等]

Step 2: Flag incompatibilities before proceeding

步骤2:提前标记不兼容项

Check for Vercel-specific features that do not have direct CreateOS equivalents. If any are present, STOP and confirm with the user how they want to handle each before continuing.
Vercel featureCreateOS handling
Edge Functions / MiddlewareRuns as standard Node runtime on CreateOS — confirm latency impact is acceptable
Vercel KVMigrate to CreateOS Valkey (Redis-compatible managed service)
Vercel PostgresMigrate to CreateOS managed PostgreSQL
Vercel BlobUse any S3-compatible storage; CreateOS does not provide blob storage natively
Image OptimizationNext.js image optimization works on CreateOS but uses the standard Node adapter
ISR / On-demand revalidationSupported via standard Next.js caching; confirm revalidation paths work
Cron jobsUse CreateOS cronjob support (see
CreateCronjob
MCP tool)
Preview deploymentsMap to CreateOS preview environments (one per branch)
检查是否存在无直接CreateOS等效替代的Vercel专属功能。若存在,先暂停操作,与用户确认如何处理后再继续。
Vercel功能CreateOS处理方式
Edge Functions / Middleware在CreateOS上以标准Node运行时运行——需确认用户可接受延迟影响
Vercel KV迁移至CreateOS Valkey(兼容Redis的托管服务)
Vercel Postgres迁移至CreateOS托管PostgreSQL
Vercel Blob使用任意兼容S3的存储服务;CreateOS不原生提供Blob存储
图片优化Next.js图片优化在CreateOS上可正常工作,但使用标准Node适配器
ISR / 按需重新验证通过标准Next.js缓存支持;需确认重新验证路径正常工作
定时任务使用CreateOS定时任务支持(参见
CreateCronjob
MCP工具)
预览部署映射至CreateOS预览环境(每个分支对应一个)

Step 3: Create the CreateOS project

步骤3:创建CreateOS项目

Use the CreateOS MCP to create a new VCS-type project. Note: CreateOS uses a nested shape —
source
carries the GitHub linkage and
settings
carries build/runtime config. The deployment branch is set on the project's environment (Step 3b), not on the project itself.
  1. Call
    ListConnectedGithubAccounts
    to verify GitHub is connected. The response includes the
    installationId
    you need for the next call. If no accounts are connected, call
    InstallGithubApp
    and pause for user action.
  2. Call
    ListGithubRepositories(installationId)
    and confirm the target repo with the user. Capture the repo's
    id
    — that is the
    vcsRepoId
    .
  3. Call
    CheckProjectUniqueName({uniqueName})
    to validate the proposed project name.
    uniqueName
    must match
    ^[a-zA-Z0-9-]+$
    , 4–32 chars.
  4. Call
    CreateProject
    with the nested
    source
    /
    settings
    shape. Two valid patterns — pick one:
    Pattern A — Build AI (recommended default). Use this when you cannot derive exact
    installCommand
    /
    buildCommand
    /
    runCommand
    from
    vercel.json
    +
    package.json
    with high confidence. CreateOS auto-detects from the repo:
    json
    CreateProject({
      "uniqueName": "<derived from project name>",
      "displayName": "<human-friendly name>",
      "type": "vcs",
      "source": {
        "vcsName": "github",
        "vcsInstallationId": "<from step 1>",
        "vcsRepoId": "<from step 2>"
      },
      "settings": {
        "useBuildAI": true,
        "runtime": "<see runtime mapping below — required>",
        "port": 80
      }
    })
    Pattern B — Explicit commands. Use this when
    vercel.json
    gives you concrete commands and a known framework. All command fields, when included, must be non-empty strings — omit fields entirely rather than passing
    ""
    (empty strings cause a 400):
    json
    CreateProject({
      "uniqueName": "<derived from project name>",
      "displayName": "<human-friendly name>",
      "type": "vcs",
      "source": {
        "vcsName": "github",
        "vcsInstallationId": "<from step 1>",
        "vcsRepoId": "<from step 2>"
      },
      "settings": {
        "framework": "<see mapping table below — omit if no slug fits>",
        "runtime": "<see runtime mapping below>",
        "port": 3000,
        "directoryPath": ".",
        "installCommand": "<from package.json or vercel.json installCommand>",
        "buildCommand": "<from vercel.json buildCommand or package.json build script>",
        "runCommand": "<framework default, e.g. 'npm start' for Next.js>",
        "buildDir": "<from vercel.json outputDirectory or framework default, e.g. '.next'>"
      }
    })
    Required-in-practice fields (the API rejects without them, even though some are marked optional in the schema):
    • port
      — always include. Use
      80
      for static-shaped sites,
      3000
      for Node app defaults, or whatever the app actually listens on.
    • runtime
      — always include unless
      framework
      is set (and even then, include it for safety).
    • Either
      useBuildAI: true
      OR a complete command set (
      installCommand
      +
      buildCommand
      +
      runCommand
      ). Mixing partial commands with
      useBuildAI: false
      causes a 400.
3b. Call
CreateProjectEnvironment(project_id, body)
to create the
production
environment. All five body fields below are required by the API
description
,
settings
, and
resources
are not optional even though the docs may suggest otherwise. The
resources
triplet is all-or-nothing: include
cpu
,
memory
, and
replicas
together or omit
resources
entirely.
json
CreateProjectEnvironment(project_id, {
  "displayName": "Production",
  "uniqueName": "production",
  "description": "Production environment migrated from Vercel",
  "branch": "main",
  "isAutoPromoteEnabled": true,
  "settings": { "runEnvs": {} },
  "resources": { "cpu": 200, "memory": 500, "replicas": 1 }
})
Without this call, the project has no environment to deploy to. Resource limits:
cpu
200–500 millicores,
memory
500–1024 MB,
replicas
1–3.
Framework mapping (
settings.framework
):
CreateOS supports a fixed set of framework slugs. If your detected framework has no slug, omit the
framework
field
and rely on
useBuildAI: true
(Pattern A) or
runtime
+
buildCommand
+
runCommand
(Pattern B) instead.
Detected
settings.framework
Notes
Next.js
nextjs
React SPA (CRA, Vite React static)
reactjs-spa
React SSR
reactjs-ssr
Vue SPA
vuejs-spa
Vue SSR
vuejs-ssr
Nuxt
nuxtjs
Astro
astro
Remix
remix
SvelteKit / SvelteomitUse Pattern A (
useBuildAI: true
) or Pattern B with
runtime: "node:20"
AngularomitBuild to static, set
buildCommand: "ng build"
+
buildDir: "dist/<app>"
Vite (generic, non-React/Vue)omitUse Pattern A, or Pattern B with
runtime: "node:20"
Pure static exportomit frameworkUse Pattern A with
runtime: "node:20"
and
port: 80
. Do NOT use
runtime: "static"
for
type: "vcs"
projects — it is rejected.
runtime: "static"
only works for
type: "upload"
projects
Runtime mapping (
settings.runtime
):
Read
.nvmrc
or
package.json
engines.node
, then map to the closest supported runtime:
Source value
settings.runtime
Node 18.x
node:18
Node 20.x
node:20
Node 22.x
node:22
No version pinned
node:20
(current LTS default)
Static-only (no server)
node:20
(with
useBuildAI: true
) — not
static
for VCS projects
If the user's
.nvmrc
pins an unsupported version (e.g., Node 16), surface this and ask whether to upgrade to
node:20
.
使用CreateOS MCP创建新的版本控制(VCS)类型项目。注意:CreateOS采用嵌套结构——
source
关联GitHub,
settings
包含构建/运行时配置。部署分支设置在项目的环境(步骤3b)中,而非项目本身。
  1. 调用
    ListConnectedGithubAccounts
    验证GitHub已连接。响应结果包含下一步所需的
    installationId
    。若未连接任何账户,调用
    InstallGithubApp
    并等待用户操作。
  2. 调用
    ListGithubRepositories(installationId)
    并与用户确认目标仓库。记录仓库的
    id
    ——即
    vcsRepoId
  3. 调用
    CheckProjectUniqueName({uniqueName})
    验证拟用项目名称是否合法。
    uniqueName
    必须匹配
    ^[a-zA-Z0-9-]+$
    ,长度为4–32字符。
  4. 调用
    CreateProject
    ,使用嵌套的
    source
    /
    settings
    结构。两种有效模式,任选其一:
    模式A——构建AI(推荐默认)。当无法从
    vercel.json
    +
    package.json
    高置信度推导确切的
    installCommand
    /
    buildCommand
    /
    runCommand
    时使用。CreateOS会自动从仓库检测配置:
    json
    CreateProject({
      "uniqueName": "<从项目名称派生>",
      "displayName": "<人性化名称>",
      "type": "vcs",
      "source": {
        "vcsName": "github",
        "vcsInstallationId": "<来自步骤1>",
        "vcsRepoId": "<来自步骤2>"
      },
      "settings": {
        "useBuildAI": true,
        "runtime": "<参见下方运行时映射——必填>",
        "port": 80
      }
    })
    模式B——显式命令。当
    vercel.json
    提供明确命令且框架已知时使用。所有命令字段若包含则必须为非空字符串——若为空请完全省略字段(空字符串会导致400错误):
    json
    CreateProject({
      "uniqueName": "<从项目名称派生>",
      "displayName": "<人性化名称>",
      "type": "vcs",
      "source": {
        "vcsName": "github",
        "vcsInstallationId": "<来自步骤1>",
        "vcsRepoId": "<来自步骤2>"
      },
      "settings": {
        "framework": "<参见下方映射表——若无匹配slug则省略>",
        "runtime": "<参见下方运行时映射>",
        "port": 3000,
        "directoryPath": ".",
        "installCommand": "<来自package.json或vercel.json的installCommand>",
        "buildCommand": "<来自vercel.json的buildCommand或package.json的build脚本>",
        "runCommand": "<框架默认命令,如Next.js的'npm start'>",
        "buildDir": "<来自vercel.json的outputDirectory或框架默认值,如'.next'>"
      }
    })
    实际必填字段(即使架构中标记为可选,API仍会拒绝缺少这些字段的请求):
    • port
      ——必须包含。静态站点使用
      80
      ,Node应用默认使用
      3000
      ,或应用实际监听的端口。
    • runtime
      ——必须包含,除非已设置
      framework
      (即使设置了
      framework
      ,包含
      runtime
      更安全)。
    • 要么设置
      useBuildAI: true
      ,要么提供完整命令集(
      installCommand
      +
      buildCommand
      +
      runCommand
      )。混合部分命令与
      useBuildAI: false
      会导致400错误。
3b. 调用
CreateProjectEnvironment(project_id, body)
创建
production
环境。API要求以下5个请求体字段均为必填——即使文档提示可选,
description
settings
resources
也不可省略。
resources
需同时包含
cpu
memory
replicas
,或完全省略
resources
字段。
json
CreateProjectEnvironment(project_id, {
  "displayName": "Production",
  "uniqueName": "production",
  "description": "从Vercel迁移的生产环境",
  "branch": "main",
  "isAutoPromoteEnabled": true,
  "settings": { "runEnvs": {} },
  "resources": { "cpu": 200, "memory": 500, "replicas": 1 }
})
若不执行此调用,项目将无部署目标环境。资源限制:
cpu
200–500毫核,
memory
500–1024 MB,
replicas
1–3。
框架映射(
settings.framework
):
CreateOS支持固定的框架slug集合。若检测到的框架无对应slug,请省略
framework
字段
,转而依赖
useBuildAI: true
(模式A)或
runtime
+
buildCommand
+
runCommand
(模式B)。
检测到的框架
settings.framework
说明
Next.js
nextjs
React SPA(CRA、Vite React静态)
reactjs-spa
React SSR
reactjs-ssr
Vue SPA
vuejs-spa
Vue SSR
vuejs-ssr
Nuxt
nuxtjs
Astro
astro
Remix
remix
SvelteKit / Svelte省略使用模式A(
useBuildAI: true
)或模式B并设置
runtime: "node:20"
Angular省略构建为静态文件,设置
buildCommand: "ng build"
+
buildDir: "dist/<app>"
Vite(通用型,非React/Vue)省略使用模式A,或模式B并设置
runtime: "node:20"
纯静态导出省略framework使用模式A并设置
runtime: "node:20"
port: 80
。VCS类型项目请勿使用
runtime: "static"
——会被拒绝。
runtime: "static"
仅适用于
type: "upload"
项目
运行时映射(
settings.runtime
):
读取
.nvmrc
package.json
中的
engines.node
,映射至最接近的支持运行时:
源值
settings.runtime
Node 18.x
node:18
Node 20.x
node:20
Node 22.x
node:22
未锁定版本
node:20
(当前LTS默认值)
仅静态(无服务器)
node:20
(需配合
useBuildAI: true
)——VCS项目请勿使用
static
若用户的
.nvmrc
锁定了不支持的版本(如Node 16),请告知用户并询问是否升级至
node:20

Step 4: Migrate environment variables

步骤4:迁移环境变量

This is the highest-risk step. Handle with care.
  1. Ask the user to paste their Vercel env var list (names only, NOT values) OR upload the
    .env.vercel.backup
    file.
  2. Show them the list and confirm which variables should be migrated. Some Vercel-injected vars do NOT need migration:
    • VERCEL_*
      vars — these are Vercel-specific runtime vars and are not needed on CreateOS.
    • VERCEL_URL
      ,
      VERCEL_ENV
      ,
      VERCEL_REGION
      — handled differently by CreateOS.
  3. For each remaining variable, ask the user to provide the value (do NOT log or persist these values in the skill output).
  4. Call
    UpdateProjectEnvironmentEnvironmentVariables
    to set them on the
    production
    environment.
  5. Remind the user to mark sensitive values (API keys, tokens, database URLs) as sensitive in the CreateOS dashboard for encryption at rest.
Security note to surface to the user: If any Vercel environment variables were exposed during the April 2026 Vercel security incident, advise the user to rotate those credentials at the source (e.g., regenerate API keys in the issuing platform) before setting them on CreateOS.
此步骤风险最高,请谨慎处理。
  1. 请用户粘贴Vercel环境变量列表(仅名称,不含值)或上传
    .env.vercel.backup
    文件。
  2. 向用户展示列表并确认哪些变量需要迁移。部分Vercel注入的变量无需迁移:
    • VERCEL_*
      变量——这些是Vercel专属运行时变量,CreateOS无需使用。
    • VERCEL_URL
      VERCEL_ENV
      VERCEL_REGION
      ——CreateOS的处理方式不同。
  3. 对剩余每个变量,请用户提供对应值(请勿在技能输出中记录或保存这些值)。
  4. 调用
    UpdateProjectEnvironmentEnvironmentVariables
    将变量设置到
    production
    环境。
  5. 提醒用户在CreateOS控制台中将敏感值(API密钥、令牌、数据库URL)标记为敏感,以实现静态加密。
需告知用户的安全提示: 若任何Vercel环境变量在2026年4月Vercel安全事件中泄露,建议用户先在源平台重置这些凭据(如重新生成API密钥),再设置到CreateOS。

Step 5: Handle Vercel-specific dependencies in code

步骤5:处理代码中的Vercel专属依赖

Scan for and flag these patterns in the codebase. Do NOT auto-rewrite code unless the user explicitly approves.
PatternAction
@vercel/kv
import
Flag for replacement with
ioredis
or
redis
pointed at CreateOS Valkey
@vercel/postgres
import
Flag for replacement with
pg
or
postgres
pointed at CreateOS PostgreSQL
@vercel/blob
import
Flag for replacement with S3-compatible client
@vercel/analytics
import
Safe to remove or leave; no CreateOS replacement needed
@vercel/speed-insights
import
Safe to remove; use Amplitude or similar if needed
runtime: 'edge'
in route config
Flag — will run as standard Node on CreateOS
middleware.ts
with edge runtime
Flag — will run as standard Node middleware
Produce a summary of required code changes and ask the user whether they want the skill to generate a migration branch with these changes, or whether they will handle them manually.
扫描代码库中的以下模式并标记。除非用户明确批准,否则请勿自动重写代码。
模式操作
@vercel/kv
导入
标记为需替换为指向CreateOS Valkey的
ioredis
redis
@vercel/postgres
导入
标记为需替换为指向CreateOS PostgreSQL的
pg
postgres
@vercel/blob
导入
标记为需替换为兼容S3的客户端
@vercel/analytics
导入
可安全移除或保留;CreateOS无替代方案
@vercel/speed-insights
导入
可安全移除;如需使用可选择Amplitude等类似工具
路由配置中的
runtime: 'edge'
标记——在CreateOS上将以标准Node运行
使用edge运行时的
middleware.ts
标记——在CreateOS上将以标准Node中间件运行
生成所需代码变更的总结,并询问用户是否希望技能生成包含这些变更的迁移分支,还是由用户手动处理。

Step 6: Trigger the first deployment

步骤6:触发首次部署

  1. Call
    TriggerLatestDeployment
    to kick off the first build.
  2. Poll
    GetDeployment
    status until the build completes (or fails).
  3. If the build fails:
    • Call
      GetBuildLogs
      to retrieve logs.
    • Summarize the failure for the user.
    • Suggest likely fixes based on common Vercel-to-CreateOS migration issues (see
      references/common-issues.md
      if bundled).
  4. If the build succeeds, report:
    • The CreateOS deployment URL as returned by the API response (do NOT construct or guess the URL; use the exact
      url
      field from
      GetDeployment
      ). The default subdomain pattern is
      https://[project].createos.nodeops.network
      , but always defer to the API's returned value.
    • Build duration
    • Deployment ID for reference
  1. 调用
    TriggerLatestDeployment
    启动首次构建。
  2. 轮询
    GetDeployment
    状态,直至构建完成(或失败)。
  3. 若构建失败:
    • 调用
      GetBuildLogs
      获取日志。
    • 向用户总结失败原因。
    • 根据Vercel转CreateOS迁移的常见问题给出可能的修复建议(若包含
      references/common-issues.md
      可参考)。
  4. 若构建成功,汇报:
    • API响应返回的CreateOS部署URL(请勿自行构造或猜测URL;使用
      GetDeployment
      返回的精确
      url
      字段)。默认子域名格式为
      https://[project].createos.nodeops.network
      ,但请始终以API返回值为准。
    • 构建时长
    • 供参考的部署ID

Step 7: Domain handoff (guided, not automated)

步骤7:域名交接(引导式,非自动化)

Do NOT cut over DNS automatically. Walk the user through domain migration manually.
  1. Ask if they want to configure a custom domain now.
  2. If yes, call
    CreateDomain
    with their domain.
  3. Surface the DNS records they need to configure at their DNS provider (not at Vercel).
  4. Advise them to:
    • Test the CreateOS deployment thoroughly at the
      createos.nodeops.network
      subdomain first.
    • Lower their DNS TTL at the current provider to 300 seconds 24 hours before cutover.
    • Keep the Vercel deployment live until the CreateOS deployment is verified.
    • Cut DNS over only when ready.
    • Keep the Vercel deployment active for at least 72 hours post-cutover as a fallback.
请勿自动切换DNS。请手动引导用户完成域名迁移。
  1. 询问用户是否现在配置自定义域名。
  2. 若用户同意,调用
    CreateDomain
    并传入其域名。
  3. 告知用户需在DNS服务商处配置的DNS记录(而非在Vercel)。
  4. 建议用户:
    • 先在
      createos.nodeops.network
      子域名上全面测试CreateOS部署。
    • 在切换前24小时将当前服务商的DNS TTL降至300秒。
    • 在CreateOS部署验证通过前,保持Vercel部署处于活跃状态。
    • 准备就绪后再切换DNS。
    • 切换后至少72小时内保持Vercel部署活跃,作为 fallback。

Step 8: Post-migration checklist

步骤8:迁移后检查清单

Produce a final report for the user covering:
  • First deployment succeeded on CreateOS
  • All environment variables migrated and tested
  • Vercel-specific dependencies flagged (and resolved if applicable)
  • Custom domain configured (if requested)
  • DNS cutover plan understood
  • Concierge support contact shared for complex issues
Share these resources:
  • Docs:
    https://nodeops.network/createos/docs/deploy
  • Migration guide:
    https://nodeops.network/createos/docs/Migrations/Vercel
  • Concierge migration (for projects that need white-glove support):
    mailto:business@nodeops.xyz

向用户生成最终报告,涵盖以下内容:
  • CreateOS首次部署成功
  • 所有环境变量已迁移并测试
  • Vercel专属依赖已标记(若适用已解决)
  • 自定义域名已配置(若用户要求)
  • DNS切换方案已理解
  • 已提供复杂问题的专属支持联系方式
分享以下资源:
  • 文档:
    https://nodeops.network/createos/docs/deploy
  • 迁移指南:
    https://nodeops.network/createos/docs/Migrations/Vercel
  • 专属迁移支持(针对需要白手套服务的项目):
    mailto:business@nodeops.xyz

Failure modes and rollback

失败模式与回滚

If the migration fails at any step and the user wants to abort:
  1. The CreateOS project can be deleted with
    DeleteProject
    — no charges are incurred for a project that never successfully deployed.
  2. The user's Vercel deployment is untouched throughout this workflow. Nothing in this skill modifies Vercel resources.
  3. Offer the concierge migration path as a fallback for complex projects.

若迁移在任意步骤失败且用户希望中止:
  1. 可调用
    DeleteProject
    删除CreateOS项目——从未成功部署的项目不会产生费用。
  2. 整个流程中不会修改用户的Vercel部署。本技能不会修改任何Vercel资源。
  3. 对于复杂项目,可提供专属迁移路径作为 fallback。

What this skill does NOT do

本技能不支持的操作

Be explicit with the user about these boundaries:
  • Does not modify or delete anything on Vercel.
  • Does not automatically rewrite application code that uses Vercel-specific SDKs — only flags them.
  • Does not perform DNS cutover — the user must do this intentionally.
  • Does not migrate data from Vercel KV, Postgres, or Blob — data migration requires separate tooling.
  • Does not migrate Vercel team members or access controls.

请明确告知用户以下边界:
  • 不会修改或删除Vercel上的任何内容。
  • 不会自动重写使用Vercel专属SDK的应用代码——仅标记此类代码。
  • 不会执行DNS切换——用户需手动操作。
  • 不会从Vercel KV、Postgres或Blob迁移数据——数据迁移需使用单独工具。
  • 不会迁移Vercel团队成员或访问控制权限。

Resources

资源

  • CreateOS MCP tools reference:
    https://nodeops.network/createos/docs/api-mcp/mcp-operations
  • Skill repository:
    https://github.com/NodeOps-app/skills
  • Full migration guide:
    https://nodeops.network/createos/docs/Migrations/Vercel
  • CreateOS MCP工具参考:
    https://nodeops.network/createos/docs/api-mcp/mcp-operations
  • 技能仓库:
    https://github.com/NodeOps-app/skills
  • 完整迁移指南:
    https://nodeops.network/createos/docs/Migrations/Vercel