{
  "schemaVersion": "1.0",
  "item": {
    "slug": "deploy-agent",
    "name": "C.R.A.B Deploy Agent",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/sherajdev/deploy-agent",
    "canonicalUrl": "https://clawhub.ai/sherajdev/deploy-agent",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/deploy-agent",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=deploy-agent",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/deploy-agent.sh"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/deploy-agent"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/deploy-agent",
    "agentPageUrl": "https://openagent3.xyz/skills/deploy-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/deploy-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/deploy-agent/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "deploy-agent",
        "body": "Deploy full-stack applications via a multi-step workflow with human approval at each stage."
      },
      {
        "title": "Quick Start",
        "body": "# Install via ClawdHub\nclawdhub install deploy-agent\n\n# Initialize a new deployment\ndeploy-agent init my-app\n\n# Check status\ndeploy-agent status my-app\n\n# Continue through steps\ndeploy-agent continue my-app"
      },
      {
        "title": "Workflow Steps",
        "body": "StepCommandDescriptionRequires Approval1deploy-agent init <name>Start deployment✅ Design phase2deploy-agent build <name>Build app✅ Before testing3deploy-agent test <name>Test locally✅ Before GitHub4deploy-agent push <name>Push to GitHub✅ Before Cloudflare5deploy-agent deploy <name>Deploy to Cloudflare✅ Final"
      },
      {
        "title": "Initialize Deployment",
        "body": "deploy-agent init my-app\n\nCreates a new deployment state and waits for design input."
      },
      {
        "title": "Check Status",
        "body": "deploy-agent status my-app\n\nShows current step, approvals, and deployment info."
      },
      {
        "title": "Continue",
        "body": "deploy-agent continue my-app\n\nGet guidance on what to do next in the current step."
      },
      {
        "title": "Build (Step 2)",
        "body": "deploy-agent build my-app\n\nAfter designing with C.R.A.B, run this to build the app."
      },
      {
        "title": "Test (Step 3)",
        "body": "deploy-agent test my-app\n\nVerify the app is running locally before pushing."
      },
      {
        "title": "Push to GitHub (Step 4)",
        "body": "deploy-agent push my-app [repo-name]\n\nCreates GitHub repo and pushes code. Default repo name = app name."
      },
      {
        "title": "Deploy to Cloudflare (Step 5)",
        "body": "deploy-agent deploy my-app [custom-domain]\n\nDeploys to Cloudflare Pages. Default domain: {name}.sheraj.org"
      },
      {
        "title": "Cancel",
        "body": "deploy-agent cancel my-app\n\nAborts and cleans up the deployment."
      },
      {
        "title": "List",
        "body": "deploy-agent list\n\nShows all active deployments."
      },
      {
        "title": "Example Session",
        "body": "# Start new deployment\n$ deploy-agent init my-blog\n🚀 Deployment initialized: my-blog\nStep 1: Design your app with C.R.A.B\n\n# ... design phase with C.R.A.B ...\n\n$ deploy-agent build my-blog\n🚀 Build complete! Step 2: Local Testing\nStart dev server: cd my-blog && npm run dev\n\n# ... test locally ...\n\n$ deploy-agent push my-blog\n🚀 GitHub repository ready!\nSay 'deploy-agent deploy my-blog' to deploy to Cloudflare\n\n$ deploy-agent deploy my-blog my-blog.sheraj.org\n🎉 Deployment complete!\nApp live at: https://my-blog.sheraj.org"
      },
      {
        "title": "State Management",
        "body": "State stored in: ~/.clawdbot/skills/deploy-agent/state/{deployment-name}.json\n\n{\n  \"name\": \"my-blog\",\n  \"step\": 5,\n  \"status\": \"deployed\",\n  \"created_at\": \"2026-01-18T08:00:00Z\",\n  \"repo_url\": \"https://github.com/user/my-blog\",\n  \"domain\": \"https://my-blog.sheraj.org\"\n}"
      },
      {
        "title": "Requirements",
        "body": "ToolPurposeghGitHub repo creation and managementwranglerCloudflare Pages deploymentgitVersion controljqJSON parsing (for state management)"
      },
      {
        "title": "Configuration",
        "body": "Cloudflare token should be configured in ~/.wrangler.toml:\n\n[account]\napi_token = \"your-cloudflare-token\""
      },
      {
        "title": "Notes",
        "body": "Each deployment is independent\nState persists across sessions\nHuman approval required at each major step\nUse \"cancel\" to abort anytime"
      },
      {
        "title": "Next.js + Cloudflare D1 Deployment Guide",
        "body": "This section covers common pitfalls and fixes for deploying Next.js apps with D1 on Cloudflare Pages."
      },
      {
        "title": "Pre-Deployment Checklist",
        "body": "CheckCommandFix if FailedNext.js versionnpm list nextnpm install next@15.5.2Package lock syncrm -rf node_modules package-lock.json && npm installCommit lock fileCloudflare adapternpm list @cloudflare/next-on-pagesnpm install -D @cloudflare/next-on-pageswrangler installednpm list wranglernpm install -D wrangler"
      },
      {
        "title": "Required Configuration",
        "body": "1. package.json\n\n{\n  \"dependencies\": {\n    \"next\": \"15.5.2\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\"\n  },\n  \"devDependencies\": {\n    \"@cloudflare/next-on-pages\": \"^1.13.16\",\n    \"wrangler\": \"^4.x\"\n  }\n}\n\n2. wrangler.toml\n\nname = \"my-app\"\ncompatibility_date = \"2026-01-18\"\ncompatibility_flags = [\"nodejs_compat\"]\n\n[[d1_databases]]\nbinding = \"DB\"\ndatabase_name = \"my-db\"\ndatabase_id = \"your-db-id\"\n\n3. API Routes (each file)\n\nimport { getRequestContext } from '@cloudflare/next-on-pages';\n\nexport const runtime = 'edge';\n\nexport async function GET() {\n  const { env } = getRequestContext();\n  const { results } = await env.DB.prepare(\"SELECT * FROM tasks\").all();\n  return Response.json({ data: results });\n}"
      },
      {
        "title": "Cloudflare Pages Build Settings",
        "body": "SettingValueBuild commandnpx @cloudflare/next-on-pagesOutput directory.vercel/output/staticFunctionsEnable (for D1 API routes)"
      },
      {
        "title": "Common Issues & Fixes",
        "body": "IssueErrorFixLock file mismatchnpm ci can only install packages when your package.json and package-lock.json are in syncrm -rf node_modules package-lock.json && npm install && git add package-lock.jsonNext.js versionpeer next@\">=14.3.0 && <=15.5.2\" from @cloudflare/next-on-pagesDowngrade to next: \"15.5.2\"API routes not edgeThe following routes were not configured to run with the Edge RuntimeAdd export const runtime = 'edge';D1 access patternUsing context.env.DBUse getRequestContext().env.DBMissing typesTypeScript errors for D1 bindingsCreate env.d.ts with CloudflareEnv interface"
      },
      {
        "title": "CSS Fix (Scrollbar Flicker)",
        "body": "html {\n  overflow-x: hidden;\n  scrollbar-gutter: stable;\n}\nbody {\n  overflow-x: hidden;\n}"
      },
      {
        "title": "Post-Deployment",
        "body": "Cloudflare Dashboard → Settings → Functions\nAdd D1 binding: Variable name DB → Select your database"
      },
      {
        "title": "Reference Documents",
        "body": "Full guide: docs/issues/nextjs-cloudflare-d1-deployment.md\nCloudflare docs: https://developers.cloudflare.com/pages/framework-guides/nextjs/"
      }
    ],
    "body": "deploy-agent\n\nDeploy full-stack applications via a multi-step workflow with human approval at each stage.\n\nQuick Start\n# Install via ClawdHub\nclawdhub install deploy-agent\n\n# Initialize a new deployment\ndeploy-agent init my-app\n\n# Check status\ndeploy-agent status my-app\n\n# Continue through steps\ndeploy-agent continue my-app\n\nWorkflow Steps\nStep\tCommand\tDescription\tRequires Approval\n1\tdeploy-agent init <name>\tStart deployment\t✅ Design phase\n2\tdeploy-agent build <name>\tBuild app\t✅ Before testing\n3\tdeploy-agent test <name>\tTest locally\t✅ Before GitHub\n4\tdeploy-agent push <name>\tPush to GitHub\t✅ Before Cloudflare\n5\tdeploy-agent deploy <name>\tDeploy to Cloudflare\t✅ Final\nCommands\nInitialize Deployment\ndeploy-agent init my-app\n\n\nCreates a new deployment state and waits for design input.\n\nCheck Status\ndeploy-agent status my-app\n\n\nShows current step, approvals, and deployment info.\n\nContinue\ndeploy-agent continue my-app\n\n\nGet guidance on what to do next in the current step.\n\nBuild (Step 2)\ndeploy-agent build my-app\n\n\nAfter designing with C.R.A.B, run this to build the app.\n\nTest (Step 3)\ndeploy-agent test my-app\n\n\nVerify the app is running locally before pushing.\n\nPush to GitHub (Step 4)\ndeploy-agent push my-app [repo-name]\n\n\nCreates GitHub repo and pushes code. Default repo name = app name.\n\nDeploy to Cloudflare (Step 5)\ndeploy-agent deploy my-app [custom-domain]\n\n\nDeploys to Cloudflare Pages. Default domain: {name}.sheraj.org\n\nCancel\ndeploy-agent cancel my-app\n\n\nAborts and cleans up the deployment.\n\nList\ndeploy-agent list\n\n\nShows all active deployments.\n\nExample Session\n# Start new deployment\n$ deploy-agent init my-blog\n🚀 Deployment initialized: my-blog\nStep 1: Design your app with C.R.A.B\n\n# ... design phase with C.R.A.B ...\n\n$ deploy-agent build my-blog\n🚀 Build complete! Step 2: Local Testing\nStart dev server: cd my-blog && npm run dev\n\n# ... test locally ...\n\n$ deploy-agent push my-blog\n🚀 GitHub repository ready!\nSay 'deploy-agent deploy my-blog' to deploy to Cloudflare\n\n$ deploy-agent deploy my-blog my-blog.sheraj.org\n🎉 Deployment complete!\nApp live at: https://my-blog.sheraj.org\n\nState Management\n\nState stored in: ~/.clawdbot/skills/deploy-agent/state/{deployment-name}.json\n\n{\n  \"name\": \"my-blog\",\n  \"step\": 5,\n  \"status\": \"deployed\",\n  \"created_at\": \"2026-01-18T08:00:00Z\",\n  \"repo_url\": \"https://github.com/user/my-blog\",\n  \"domain\": \"https://my-blog.sheraj.org\"\n}\n\nRequirements\nTool\tPurpose\ngh\tGitHub repo creation and management\nwrangler\tCloudflare Pages deployment\ngit\tVersion control\njq\tJSON parsing (for state management)\nConfiguration\n\nCloudflare token should be configured in ~/.wrangler.toml:\n\n[account]\napi_token = \"your-cloudflare-token\"\n\nNotes\nEach deployment is independent\nState persists across sessions\nHuman approval required at each major step\nUse \"cancel\" to abort anytime\nNext.js + Cloudflare D1 Deployment Guide\n\nThis section covers common pitfalls and fixes for deploying Next.js apps with D1 on Cloudflare Pages.\n\nPre-Deployment Checklist\nCheck\tCommand\tFix if Failed\nNext.js version\tnpm list next\tnpm install next@15.5.2\nPackage lock sync\trm -rf node_modules package-lock.json && npm install\tCommit lock file\nCloudflare adapter\tnpm list @cloudflare/next-on-pages\tnpm install -D @cloudflare/next-on-pages\nwrangler installed\tnpm list wrangler\tnpm install -D wrangler\nRequired Configuration\n\n1. package.json\n\n{\n  \"dependencies\": {\n    \"next\": \"15.5.2\",\n    \"react\": \"^18.3.1\",\n    \"react-dom\": \"^18.3.1\"\n  },\n  \"devDependencies\": {\n    \"@cloudflare/next-on-pages\": \"^1.13.16\",\n    \"wrangler\": \"^4.x\"\n  }\n}\n\n\n2. wrangler.toml\n\nname = \"my-app\"\ncompatibility_date = \"2026-01-18\"\ncompatibility_flags = [\"nodejs_compat\"]\n\n[[d1_databases]]\nbinding = \"DB\"\ndatabase_name = \"my-db\"\ndatabase_id = \"your-db-id\"\n\n\n3. API Routes (each file)\n\nimport { getRequestContext } from '@cloudflare/next-on-pages';\n\nexport const runtime = 'edge';\n\nexport async function GET() {\n  const { env } = getRequestContext();\n  const { results } = await env.DB.prepare(\"SELECT * FROM tasks\").all();\n  return Response.json({ data: results });\n}\n\nCloudflare Pages Build Settings\nSetting\tValue\nBuild command\tnpx @cloudflare/next-on-pages\nOutput directory\t.vercel/output/static\nFunctions\tEnable (for D1 API routes)\nCommon Issues & Fixes\nIssue\tError\tFix\nLock file mismatch\tnpm ci can only install packages when your package.json and package-lock.json are in sync\trm -rf node_modules package-lock.json && npm install && git add package-lock.json\nNext.js version\tpeer next@\">=14.3.0 && <=15.5.2\" from @cloudflare/next-on-pages\tDowngrade to next: \"15.5.2\"\nAPI routes not edge\tThe following routes were not configured to run with the Edge Runtime\tAdd export const runtime = 'edge';\nD1 access pattern\tUsing context.env.DB\tUse getRequestContext().env.DB\nMissing types\tTypeScript errors for D1 bindings\tCreate env.d.ts with CloudflareEnv interface\nCSS Fix (Scrollbar Flicker)\nhtml {\n  overflow-x: hidden;\n  scrollbar-gutter: stable;\n}\nbody {\n  overflow-x: hidden;\n}\n\nPost-Deployment\nCloudflare Dashboard → Settings → Functions\nAdd D1 binding: Variable name DB → Select your database\nReference Documents\nFull guide: docs/issues/nextjs-cloudflare-d1-deployment.md\nCloudflare docs: https://developers.cloudflare.com/pages/framework-guides/nextjs/"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/sherajdev/deploy-agent",
    "publisherUrl": "https://clawhub.ai/sherajdev/deploy-agent",
    "owner": "sherajdev",
    "version": "1.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/deploy-agent",
    "downloadUrl": "https://openagent3.xyz/downloads/deploy-agent",
    "agentUrl": "https://openagent3.xyz/skills/deploy-agent/agent",
    "manifestUrl": "https://openagent3.xyz/skills/deploy-agent/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/deploy-agent/agent.md"
  }
}