[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M71KEYDDQGD11YXKEYMK702A":3,"skill-same:01M71KEYDDQGD11YXKEYMK702A":80},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":16,"categories":17,"keywords":18,"publishedAt":35,"linkOnly":36,"markdownContent":37,"markdownBody":38,"frontMatter":39,"refName":40,"commitSha":41,"skillDirectory":42,"forksCount":43,"repositoryHtmlUrl":44,"repositoryHomepageUrl":45,"ownerHtmlUrl":46,"ownerBlogUrl":47,"ownerDescription":48,"updatedAt":49,"install":50,"resources":63},"01M71KEYDDQGD11YXKEYMK702A","deployment",null,"Use when the user asks to publish, deploy, or configure deployment settings, deployment geography or regions, or when the user reports their deployed app is broken, asks about production errors, or wants to check server logs.","clawdsolana\u002FOpenClawd","clawdsolana","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F279036008?v=4","01M71JTVF9FNGKE2SVJRPTQM31","OpenClawd","01M71JTVGCKWBSS8ZYC1HYWVA5",2,"MIT","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fdeployment\u002FSKILL.md",[],[5,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34],"check","user","deploy","Production","settings","about","server","publish","reports","logs","configure","when","use","errors","broken","app","2026-11-10 10:12:30",false,"---\nname: deployment\ndescription: Use when the user asks to publish, deploy, or configure deployment settings, deployment geography or regions, or when the user reports their deployed app is broken, asks about production errors, or wants to check server logs.\n---\n\n# Deployment Skill\n\nConfigure deployment settings, publish your project, and debug deployment issues.\n\n## When to Use\n\nUse this skill when:\n\n- Configuring how the project should run in production\n- The project is in a working state and ready for publishing\n- The user explicitly asks to publish or deploy the project\n- You've completed implementing a feature and verified it works\n- Setting up deployment for different project types (websites, bots, scheduled jobs)\n- The user reports their deployed application is not working correctly\n- The user wants to see what errors are occurring in production\n- The user needs to debug a runtime issue with their deployed app\n- The user asks to check deployment or server logs\n- The user says their app failed to publish or a deployment build failed\n- After a deployment attempt that the agent initiated fails\n\n## When NOT to Use\n\n- Project has known errors or incomplete features\n- You haven't validated that the project works\n- The user is just testing or prototyping\n\n## Reference Documents\n\nThis skill has additional reference documents for specific deployment scenarios. Read them as needed:\n\n- `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-logs.md` — How to fetch and analyze runtime deployment logs. Read this when the user's deployed app is misbehaving, the live site is down, or they want to check production logs.\n- `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-failure-debugging.md` — How to diagnose and fix deployment build failures. Read this when the user's deployment build fails to publish, the app crashes during the publishing step, or the user asks for help debugging a deployment error.\n\n## Available Functions\n\n### deployConfig(deploymentTarget, run, build, publicDir)\n\nConfigure how the project should be deployed to production.\n\n**Parameters:**\n\n- `deploymentTarget` (str, required): \"autoscale\", \"vm\", \"scheduled\", or \"static\"\n- `run` (list[str], optional): Production run command. First entry is binary\u002Fscript, rest are arguments\n- `build` (list[str], optional): Build\u002Fcompile command before deployment\n- `publicDir` (str, required for \"static\"): Directory containing static files\n\n**Returns:** Dict with `success`, `message`, and configuration details\n\n**Example:**\n\n```javascript\n\u002F\u002F Configure a Python web app\nconst result = await deployConfig({\n    deploymentTarget: \"autoscale\",\n    run: [\"gunicorn\", \"--bind=0.0.0.0:5000\", \"--reuse-port\", \"main:app\"]\n});\n\n\u002F\u002F Configure a static site\nconst result2 = await deployConfig({\n    deploymentTarget: \"static\",\n    build: [\"npm\", \"run\", \"build\"],\n    publicDir: \"dist\"\n});\n\n\u002F\u002F Configure an always-running bot\nconst result3 = await deployConfig({\n    deploymentTarget: \"vm\",\n    run: [\"python\", \"bot.py\"]\n});\n```\n\n### suggestDeploy()\n\nPrompt the user to click the Publish button after the app is ready. **Only works in the main repl context** — in task-agent\u002Fsubrepl sessions this callback returns `success: false`. If you are in a task agent, skip this call and instead remind the user to publish from the main version after merging.\n\n### getDeploymentInfo()\n\nFetch the repl's current deployment metadata directly from the deployments service. Always call this — never guess from memory or environment variables — when you need to know whether the project is published, what its production URL is, or whether the live build is healthy. Do NOT run `echo $REPLIT_DOMAINS` to discover the production URL — inside the dev container that variable holds the `.replit.dev` development domain, not the production URL.\n\n**Returns:** Dict with:\n\n- `success` (bool): `false` when the deployments service is unreachable. Treat as \"deployment status unknown\" — tell the user the status is currently unavailable rather than asserting there is no deployment\n- `isDeployed` (bool): `true` when an active deployment exists for this repl. When `false`, do not fabricate a URL — there is no production URL to give. If the user wants a production URL or asks what their live URL is, guide them through publishing first via the usual deployment flow (e.g. `suggestDeploy()`).\n- `primaryUrl` (str): fully-qualified production URL with `https:\u002F\u002F` scheme (a verified custom domain if the user configured one, otherwise the generated `*.replit.app` subdomain). Empty string when not deployed. Use this whenever you need the production URL (e.g. setting a `REPLIT_APP_URL` secret, configuring rewrites in an external CMS, curling the live site, or telling the user where their app is reachable)\n- `additionalUrls` (list[str]): other public URLs (e.g. additional verified custom domains). Empty list when none\n- `deploymentType` (str): one of `\"autoscale\"`, `\"vm\"`, `\"static\"`, `\"scheduled\"`, or `\"\"` if unknown \u002F not applicable. Matches the `deploymentTarget` vocabulary `deployConfig()` accepts\n- `hasSuccessfulBuild` (bool): `true` only when the deployment's current build is in the `success` status. `false` when the build is still pending, failed, suspended, or no current build exists. When `isDeployed` is `true` but this is `false`, the `primaryUrl` may be unreachable or still be serving a previous successful build — if the user reports the live site is broken, suspect the in-flight or failed build first (see `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-failure-debugging.md` for how to investigate)\n\n**Example:**\n\n```javascript\nconst info = await getDeploymentInfo();\nif (!info.success) {\n    console.log(\"Deployment status unavailable; try again in a moment.\");\n} else if (!info.isDeployed) {\n    console.log(\"This repl has not been published yet.\");\n} else {\n    console.log(`Live at ${info.primaryUrl} (${info.deploymentType})`);\n    if (!info.hasSuccessfulBuild) {\n        console.log(\"Current build is not in the success status — URL may be stale.\");\n    }\n}\n```\n\n### fetchDeploymentLogs({ afterTimestamp, beforeTimestamp, message, messageContext })\n\nFetch and analyze deployment logs. See `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-logs.md` for full documentation.\n\n## Deployment Targets\n\nChoose the appropriate deployment target based on your project type:\n\n### autoscale (Recommended Default)\n\nUse for stateless websites and APIs that don't need persistent server memory.\n\n- **Best for:** Web applications, REST APIs, stateless services\n- **Behavior:** Scales up\u002Fdown based on traffic, only runs when requests arrive\n- **State:** Use databases for persistent state (not server memory)\n- **Cost:** Most cost-effective for variable traffic\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"autoscale\",\n    run: [\"gunicorn\", \"--bind=0.0.0.0:5000\", \"app:app\"]\n});\n```\n\n### vm (Always Running)\n\nUse for applications that need persistent server-side state or long-running processes.\n\n- **Best for:** Discord\u002FTelegram bots, WebSocket servers, web scrapers, background workers\n- **Behavior:** Always running, maintains state in server memory\n- **State:** Can use in-memory databases, local files, or external databases\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"vm\",\n    run: [\"python\", \"bot.py\"]\n});\n```\n\n### scheduled\n\nUse for cron-like jobs that run on a schedule.\n\n- **Best for:** Data processing, cleanup tasks, periodic reports, batch jobs\n- **Behavior:** Runs on configured schedule, not continuously\n- **Note:** Do NOT use for websites or APIs\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"scheduled\",\n    run: [\"python\", \"daily_report.py\"]\n});\n```\n\n### static\n\nUse for client-side websites with no backend server.\n\n- **Best for:** Static HTML sites, SPAs (React, Vue, etc.), documentation sites\n- **Behavior:** Serves static files directly, no server-side processing\n- **Note:** The `run` command is ignored; must specify `publicDir`\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"static\",\n    build: [\"npm\", \"run\", \"build\"],\n    publicDir: \"dist\"\n});\n```\n\n## Run Command Examples\n\nUse production-ready servers, not development servers:\n\n```toml\n# Python with Gunicorn\nrun=[\"gunicorn\", \"--bind=0.0.0.0:5000\", \"--reuse-port\", \"main:app\"]\n\n# Python with Streamlit\nrun=[\"streamlit\", \"run\", \"main.py\"]\n\n# Node.js\nrun=[\"node\", \"server.js\"]\n\n# Multiple processes with bash\nrun=[\"bash\", \"-c\", \"gunicorn --reuse-port -w 4 -b 0.0.0.0:8000 app:app & npm run dev\"]\n```\n\n## Build Command Examples\n\nOnly use build commands when compilation is needed:\n\n```toml\n# TypeScript\u002Fbundler\nbuild=[\"npm\", \"run\", \"build\"]\n\n# Multiple build steps\nbuild=[\"bash\", \"-c\", \"make assets && make compile\"]\n\n# Rust\nbuild=[\"cargo\", \"build\", \"--release\"]\n```\n\n## Publishing Geography\n\nUsers can choose the geographic region where their app is published. This is configured in the **Advanced** settings of the Publishing tool, not in code. The agent cannot set this programmatically — the user selects it in the Publishing UI before clicking Publish.\n\nKey points:\n\n- **Available on Core, Pro, and Enterprise plans.** Free plan users publish to North America by default.\n- **Geography is permanent.** Once a project is published to a geography, it cannot be changed. Inform the user of this before they publish for the first time.\n- **Compute, database, and Object Storage are colocated** in the selected region automatically.\n- **Enterprise admins can enforce a geography** for all new projects across their organization.\n- **Available regions may change over time.** For the current list of supported geographies, refer the user to the [Publishing Geography docs](https:\u002F\u002Fdocs.replit.com\u002Fcloud-services\u002Fdeployments\u002Fpublishing-geography).\n\nIf the user asks about deploying to a specific region (e.g. Europe, Asia, Australia):\n\n- **Not yet published & on Core\u002FPro\u002FEnterprise:** They can select their preferred geography in the **Advanced** section of the Publishing tool before their first publish.\n- **Not yet published & on the Free plan:** Geography selection is not available — they will publish to North America by default. They can upgrade their plan to choose a region.\n- **Already published:** The geography cannot be changed. Let the user know the selection was locked at first publish.\n- **Enterprise org with enforced geography:** The admin-set geography overrides individual choice. The user publishes to whatever geography their org requires.\n\nDo **not** tell users that Replit only supports US-based infrastructure — multiple geographies are available.\n\n## Best Practices\n\n1. **Validate before publishing**: Always verify the project works before suggesting publish\n2. **Use production servers**: Avoid insecure development servers in production\n3. **Choose the right target**: Match deployment type to your application's needs\n4. **Configure once**: Set up deployment config early, then suggest publishing when ready\n5. **Check workflows first**: Ensure workflows are running without errors before publishing\n\n## Important Notes\n\n1. **User-initiated publishing**: The user must click the Publish button to actually deploy\n2. **Automatic handling**: Publishing handles building, hosting, TLS, and health checks automatically\n3. **Domain**: Published apps are available at a `.replit.app` domain or custom domain if configured\n4. **Production config lives in `.replit`**: Deployment settings (run command, build command, deployment target) are in the `.replit` file's `[deployment]` section.\n\n## Example Workflow\n\n```javascript\n\u002F\u002F 1. Configure deployment settings for a web app\nawait deployConfig({\n    deploymentTarget: \"autoscale\",\n    run: [\"gunicorn\", \"--bind=0.0.0.0:5000\", \"app:app\"]\n});\n\n\u002F\u002F 2. After verifying the app works, suggest publishing to the user\nawait suggestDeploy();\n```\n","# Deployment Skill\n\nConfigure deployment settings, publish your project, and debug deployment issues.\n\n## When to Use\n\nUse this skill when:\n\n- Configuring how the project should run in production\n- The project is in a working state and ready for publishing\n- The user explicitly asks to publish or deploy the project\n- You've completed implementing a feature and verified it works\n- Setting up deployment for different project types (websites, bots, scheduled jobs)\n- The user reports their deployed application is not working correctly\n- The user wants to see what errors are occurring in production\n- The user needs to debug a runtime issue with their deployed app\n- The user asks to check deployment or server logs\n- The user says their app failed to publish or a deployment build failed\n- After a deployment attempt that the agent initiated fails\n\n## When NOT to Use\n\n- Project has known errors or incomplete features\n- You haven't validated that the project works\n- The user is just testing or prototyping\n\n## Reference Documents\n\nThis skill has additional reference documents for specific deployment scenarios. Read them as needed:\n\n- `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-logs.md` — How to fetch and analyze runtime deployment logs. Read this when the user's deployed app is misbehaving, the live site is down, or they want to check production logs.\n- `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-failure-debugging.md` — How to diagnose and fix deployment build failures. Read this when the user's deployment build fails to publish, the app crashes during the publishing step, or the user asks for help debugging a deployment error.\n\n## Available Functions\n\n### deployConfig(deploymentTarget, run, build, publicDir)\n\nConfigure how the project should be deployed to production.\n\n**Parameters:**\n\n- `deploymentTarget` (str, required): \"autoscale\", \"vm\", \"scheduled\", or \"static\"\n- `run` (list[str], optional): Production run command. First entry is binary\u002Fscript, rest are arguments\n- `build` (list[str], optional): Build\u002Fcompile command before deployment\n- `publicDir` (str, required for \"static\"): Directory containing static files\n\n**Returns:** Dict with `success`, `message`, and configuration details\n\n**Example:**\n\n```javascript\n\u002F\u002F Configure a Python web app\nconst result = await deployConfig({\n    deploymentTarget: \"autoscale\",\n    run: [\"gunicorn\", \"--bind=0.0.0.0:5000\", \"--reuse-port\", \"main:app\"]\n});\n\n\u002F\u002F Configure a static site\nconst result2 = await deployConfig({\n    deploymentTarget: \"static\",\n    build: [\"npm\", \"run\", \"build\"],\n    publicDir: \"dist\"\n});\n\n\u002F\u002F Configure an always-running bot\nconst result3 = await deployConfig({\n    deploymentTarget: \"vm\",\n    run: [\"python\", \"bot.py\"]\n});\n```\n\n### suggestDeploy()\n\nPrompt the user to click the Publish button after the app is ready. **Only works in the main repl context** — in task-agent\u002Fsubrepl sessions this callback returns `success: false`. If you are in a task agent, skip this call and instead remind the user to publish from the main version after merging.\n\n### getDeploymentInfo()\n\nFetch the repl's current deployment metadata directly from the deployments service. Always call this — never guess from memory or environment variables — when you need to know whether the project is published, what its production URL is, or whether the live build is healthy. Do NOT run `echo $REPLIT_DOMAINS` to discover the production URL — inside the dev container that variable holds the `.replit.dev` development domain, not the production URL.\n\n**Returns:** Dict with:\n\n- `success` (bool): `false` when the deployments service is unreachable. Treat as \"deployment status unknown\" — tell the user the status is currently unavailable rather than asserting there is no deployment\n- `isDeployed` (bool): `true` when an active deployment exists for this repl. When `false`, do not fabricate a URL — there is no production URL to give. If the user wants a production URL or asks what their live URL is, guide them through publishing first via the usual deployment flow (e.g. `suggestDeploy()`).\n- `primaryUrl` (str): fully-qualified production URL with `https:\u002F\u002F` scheme (a verified custom domain if the user configured one, otherwise the generated `*.replit.app` subdomain). Empty string when not deployed. Use this whenever you need the production URL (e.g. setting a `REPLIT_APP_URL` secret, configuring rewrites in an external CMS, curling the live site, or telling the user where their app is reachable)\n- `additionalUrls` (list[str]): other public URLs (e.g. additional verified custom domains). Empty list when none\n- `deploymentType` (str): one of `\"autoscale\"`, `\"vm\"`, `\"static\"`, `\"scheduled\"`, or `\"\"` if unknown \u002F not applicable. Matches the `deploymentTarget` vocabulary `deployConfig()` accepts\n- `hasSuccessfulBuild` (bool): `true` only when the deployment's current build is in the `success` status. `false` when the build is still pending, failed, suspended, or no current build exists. When `isDeployed` is `true` but this is `false`, the `primaryUrl` may be unreachable or still be serving a previous successful build — if the user reports the live site is broken, suspect the in-flight or failed build first (see `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-failure-debugging.md` for how to investigate)\n\n**Example:**\n\n```javascript\nconst info = await getDeploymentInfo();\nif (!info.success) {\n    console.log(\"Deployment status unavailable; try again in a moment.\");\n} else if (!info.isDeployed) {\n    console.log(\"This repl has not been published yet.\");\n} else {\n    console.log(`Live at ${info.primaryUrl} (${info.deploymentType})`);\n    if (!info.hasSuccessfulBuild) {\n        console.log(\"Current build is not in the success status — URL may be stale.\");\n    }\n}\n```\n\n### fetchDeploymentLogs({ afterTimestamp, beforeTimestamp, message, messageContext })\n\nFetch and analyze deployment logs. See `.local\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-logs.md` for full documentation.\n\n## Deployment Targets\n\nChoose the appropriate deployment target based on your project type:\n\n### autoscale (Recommended Default)\n\nUse for stateless websites and APIs that don't need persistent server memory.\n\n- **Best for:** Web applications, REST APIs, stateless services\n- **Behavior:** Scales up\u002Fdown based on traffic, only runs when requests arrive\n- **State:** Use databases for persistent state (not server memory)\n- **Cost:** Most cost-effective for variable traffic\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"autoscale\",\n    run: [\"gunicorn\", \"--bind=0.0.0.0:5000\", \"app:app\"]\n});\n```\n\n### vm (Always Running)\n\nUse for applications that need persistent server-side state or long-running processes.\n\n- **Best for:** Discord\u002FTelegram bots, WebSocket servers, web scrapers, background workers\n- **Behavior:** Always running, maintains state in server memory\n- **State:** Can use in-memory databases, local files, or external databases\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"vm\",\n    run: [\"python\", \"bot.py\"]\n});\n```\n\n### scheduled\n\nUse for cron-like jobs that run on a schedule.\n\n- **Best for:** Data processing, cleanup tasks, periodic reports, batch jobs\n- **Behavior:** Runs on configured schedule, not continuously\n- **Note:** Do NOT use for websites or APIs\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"scheduled\",\n    run: [\"python\", \"daily_report.py\"]\n});\n```\n\n### static\n\nUse for client-side websites with no backend server.\n\n- **Best for:** Static HTML sites, SPAs (React, Vue, etc.), documentation sites\n- **Behavior:** Serves static files directly, no server-side processing\n- **Note:** The `run` command is ignored; must specify `publicDir`\n\n```javascript\nawait deployConfig({\n    deploymentTarget: \"static\",\n    build: [\"npm\", \"run\", \"build\"],\n    publicDir: \"dist\"\n});\n```\n\n## Run Command Examples\n\nUse production-ready servers, not development servers:\n\n```toml\n# Python with Gunicorn\nrun=[\"gunicorn\", \"--bind=0.0.0.0:5000\", \"--reuse-port\", \"main:app\"]\n\n# Python with Streamlit\nrun=[\"streamlit\", \"run\", \"main.py\"]\n\n# Node.js\nrun=[\"node\", \"server.js\"]\n\n# Multiple processes with bash\nrun=[\"bash\", \"-c\", \"gunicorn --reuse-port -w 4 -b 0.0.0.0:8000 app:app & npm run dev\"]\n```\n\n## Build Command Examples\n\nOnly use build commands when compilation is needed:\n\n```toml\n# TypeScript\u002Fbundler\nbuild=[\"npm\", \"run\", \"build\"]\n\n# Multiple build steps\nbuild=[\"bash\", \"-c\", \"make assets && make compile\"]\n\n# Rust\nbuild=[\"cargo\", \"build\", \"--release\"]\n```\n\n## Publishing Geography\n\nUsers can choose the geographic region where their app is published. This is configured in the **Advanced** settings of the Publishing tool, not in code. The agent cannot set this programmatically — the user selects it in the Publishing UI before clicking Publish.\n\nKey points:\n\n- **Available on Core, Pro, and Enterprise plans.** Free plan users publish to North America by default.\n- **Geography is permanent.** Once a project is published to a geography, it cannot be changed. Inform the user of this before they publish for the first time.\n- **Compute, database, and Object Storage are colocated** in the selected region automatically.\n- **Enterprise admins can enforce a geography** for all new projects across their organization.\n- **Available regions may change over time.** For the current list of supported geographies, refer the user to the [Publishing Geography docs](https:\u002F\u002Fdocs.replit.com\u002Fcloud-services\u002Fdeployments\u002Fpublishing-geography).\n\nIf the user asks about deploying to a specific region (e.g. Europe, Asia, Australia):\n\n- **Not yet published & on Core\u002FPro\u002FEnterprise:** They can select their preferred geography in the **Advanced** section of the Publishing tool before their first publish.\n- **Not yet published & on the Free plan:** Geography selection is not available — they will publish to North America by default. They can upgrade their plan to choose a region.\n- **Already published:** The geography cannot be changed. Let the user know the selection was locked at first publish.\n- **Enterprise org with enforced geography:** The admin-set geography overrides individual choice. The user publishes to whatever geography their org requires.\n\nDo **not** tell users that Replit only supports US-based infrastructure — multiple geographies are available.\n\n## Best Practices\n\n1. **Validate before publishing**: Always verify the project works before suggesting publish\n2. **Use production servers**: Avoid insecure development servers in production\n3. **Choose the right target**: Match deployment type to your application's needs\n4. **Configure once**: Set up deployment config early, then suggest publishing when ready\n5. **Check workflows first**: Ensure workflows are running without errors before publishing\n\n## Important Notes\n\n1. **User-initiated publishing**: The user must click the Publish button to actually deploy\n2. **Automatic handling**: Publishing handles building, hosting, TLS, and health checks automatically\n3. **Domain**: Published apps are available at a `.replit.app` domain or custom domain if configured\n4. **Production config lives in `.replit`**: Deployment settings (run command, build command, deployment target) are in the `.replit` file's `[deployment]` section.\n\n## Example Workflow\n\n```javascript\n\u002F\u002F 1. Configure deployment settings for a web app\nawait deployConfig({\n    deploymentTarget: \"autoscale\",\n    run: [\"gunicorn\", \"--bind=0.0.0.0:5000\", \"app:app\"]\n});\n\n\u002F\u002F 2. After verifying the app works, suggest publishing to the user\nawait suggestDeploy();\n```\n",{"name":5,"description":7},"main","6b4a291df75c639681e93b4b5b812126443fd6ed","skills\u002Fdeployment",3,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd","https:\u002F\u002Fsolanaclawd.com\u002Fopenclawd","https:\u002F\u002Fgithub.com\u002Fclawdsolana","https:\u002F\u002Fmusebook.trade","Welcome to Open Clawd. The future of Ai on and off chain. Bringing webMCP to web 3 using X402, A2A, MPP and so much more!","2026-08-01 09:30:51",{"source":8,"skillName":5,"commands":51,"prompt":61,"zipAvailable":62},[52,55,58],{"tool":53,"command":54},"npx","npx skills add clawdsolana\u002FOpenClawd --skill deployment",{"tool":56,"command":57},"bunx","bunx skills add clawdsolana\u002FOpenClawd --skill deployment",{"tool":59,"command":60},"pnpm","pnpm dlx skills add clawdsolana\u002FOpenClawd --skill deployment","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fdeployment\u002FSKILL.md",true,[64,70,76],{"path":65,"resourceType":66,"resourceTypeDesc":67,"sizeBytes":68,"sourceHtmlUrl":69},".fingerprint","OTHER","其他",32,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fdeployment\u002F.fingerprint",{"path":71,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":74,"sourceHtmlUrl":75},"references\u002Fdeployment-failure-debugging.md","REFERENCE","参考文档",15205,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-failure-debugging.md",{"path":77,"resourceType":72,"resourceTypeDesc":73,"sizeBytes":78,"sourceHtmlUrl":79},"references\u002Fdeployment-logs.md",4584,"https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fdeployment\u002Freferences\u002Fdeployment-logs.md",[81,113,141,167,177,200],{"skillNo":82,"name":83,"nameZh":6,"description":84,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":85,"categories":86,"keywords":92,"publishedAt":112},"01M71KRBD0W01EAXJ8YM4M1SJ2","solana-dev","End-to-end Solana development playbook (Jan 2026). Prefer Solana Foundation framework-kit (@solana\u002Fclient + @solana\u002Freact-hooks) for React\u002FNext.js UI. Prefer @solana\u002Fkit for all new client\u002FRPC\u002Ftransaction code. When legacy dependencies require web3.js, isolate it behind @solana\u002Fweb3-compat (or @solana\u002Fweb3.js as a true legacy fallback). Covers wallet-standard-first connection (incl. ConnectorKit), Anchor\u002FPinocchio programs, Codama-based client generation, LiteSVM\u002FMollusk\u002FSurfpool testing, and security checklists.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fsrc\u002Fskills\u002Fsolana-dev\u002FSKILL.md",[87],{"categoryNo":88,"categoryName":89,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[93,94,95,96,97,98,99,100,101,30,102,103,104,105,106,107,108,109,110,111],"solana dev","dev","solana","Wallet","end","testing","hooks","kit","new","web3","code","react","next","2026","playbook","security","ui","fallback","framework","2026-11-10 10:56:23",{"skillNo":114,"name":115,"nameZh":6,"description":116,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":117,"categories":118,"keywords":122,"publishedAt":112},"01M71KR8QPESSY61SVE8ZTFNVT","xurl","A CLI tool for making authenticated requests to the X (Twitter) API. Use this skill when you need to post tweets, reply, quote, search, read posts, manage followers, send DMs, upload media, or interact with any X API v2 endpoint.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[119],{"categoryNo":120,"categoryName":121,"taxonomyType":90,"taxonomyTypeDesc":91},"01JBSEEDCAT000000000000023","Skill与智能体开发",[115,123,124,125,126,127,128,30,129,130,131,132,133,134,135,136,137,138,139,140],"posts","Media","x api","search","send","tap","you","api","cli","read","install","cli tool","endpoint","brew","for","manage","tool","twitter",{"skillNo":142,"name":143,"nameZh":6,"description":144,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":145,"categories":146,"keywords":148,"publishedAt":112},"01M71KR6FSXV88YDKWP7NBY3SH","wurk-integration","WURK API integration for monetizing agents with x402 payments on Solana\u002FBase - create social jobs, custom challenges, and agent help tasks","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fwurk-integration\u002FSKILL.md",[147],{"categoryNo":120,"categoryName":121,"taxonomyType":90,"taxonomyTypeDesc":91},[149,150,151,152,153,154,155,156,130,157,158,159,160,161,162,163,137,164,165,166],"wurk","wurk integration","integration","x402","social","payments","tasks","team","create","social-jobs","command","agent-help","custom-jobs","clawd","safe","api integration","custom","true",{"skillNo":168,"name":169,"nameZh":6,"description":170,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":171,"categories":172,"keywords":173,"publishedAt":112},"01M71KR4HCX41BPAK9GP7RPRRP","workflows","Manage application workflows including configuration, restart, and removal.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fworkflows\u002FSKILL.md",[],[169,138,174,175,176],"configuration","application","restart",{"skillNo":178,"name":179,"nameZh":6,"description":180,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":181,"categories":182,"keywords":183,"publishedAt":112},"01M71KR1VM0F5GPEQDNG5J7A0H","web-search","Search the web, fetch content, extract branding profiles, and capture screenshots from URLs. Use for real-time information, API documentation, current events, design matching, and visual reference.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweb-search\u002FSKILL.md",[],[184,126,185,186,187,137,188,189,190,191,31,192,193,130,194,195,196,197,198,199],"web search","web","fetch","api documentation","real-time","time","profiles","design","information","visual","documentation","branding","matching","reference","capture","content",{"skillNo":201,"name":202,"nameZh":6,"description":203,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":12,"repositoryNo":13,"starsCount":14,"licenseSpdxId":15,"licenseFileUrl":6,"sourceHtmlUrl":204,"categories":205,"keywords":206,"publishedAt":112},"01M71KQZN5MR1JFQHG5GWXYAHS","weather","Get current weather and forecasts via wttr.in or Open-Meteo. Use when: user asks about weather, temperature, or forecasts for any location. NOT for: historical weather data, severe weather alerts, or detailed meteorological analysis. No API key needed.","https:\u002F\u002Fgithub.com\u002Fclawdsolana\u002FOpenClawd\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[202,207,137,208,31,30,209,130,210,211,212,213,214,24,215,216,217,20],"get","open","analysis","alerts","temperature","curl","via","help","https","location","data"]