{
  "schemaVersion": "1.0",
  "item": {
    "slug": "cloud-backup",
    "name": "Cloud Backup",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/obuchowski/cloud-backup",
    "canonicalUrl": "https://clawhub.ai/obuchowski/cloud-backup",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/cloud-backup",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=cloud-backup",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "references/providers/aws-s3.md",
      "references/providers/backblaze-b2.md",
      "references/providers/cloudflare-r2.md",
      "references/providers/digitalocean-spaces.md",
      "references/providers/minio.md"
    ],
    "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/cloud-backup"
    },
    "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/cloud-backup",
    "agentPageUrl": "https://openagent3.xyz/skills/cloud-backup/agent",
    "manifestUrl": "https://openagent3.xyz/skills/cloud-backup/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/cloud-backup/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": "OpenClaw Cloud Backup",
        "body": "Backs up OpenClaw state to a local archive and uploads it to cloud storage.\n\nFollow the steps below. Inform the user about implicit defaults applied after execution."
      },
      {
        "title": "Step 1: Run the backup",
        "body": "bash \"{baseDir}/scripts/cloud-backup.sh\" backup full\n\nDefault mode is full. Use workspace, skills, or settings only when the user explicitly asks for a narrower backup scope."
      },
      {
        "title": "Step 2: Check backup output for encryption warning",
        "body": "Look at the script output from Step 1. If it contains:\n\nWARN: Encryption is disabled — backup archive will be stored in plaintext.\n\nask the user:\n\n\"Your backups are not encrypted. Archives contain config, credentials, and API keys in cleartext. Want to set a passphrase? (AES-256, just the passphrase needed to restore — no key files.)\"\n\nIf user provides a passphrase → write both via gateway config.patch and tell the user what was saved:\n\nskills.entries.cloud-backup.config.encrypt = true\nskills.entries.cloud-backup.env.GPG_PASSPHRASE = \"<passphrase>\"\nThen re-run the backup so the archive is encrypted.\n\n\nIf user says no / skip → continue to Step 3.\nIf the warning is not present (encryption already enabled) → continue to Step 3.\n\nAlways execute this step and report the result. Backups may contain secrets — prompt every time encryption is off."
      },
      {
        "title": "Step 3: Check script output for warnings",
        "body": "Look at the script output. If it contains WARN: Cloud storage is not configured, go to Step 4. Otherwise go to Step 5."
      },
      {
        "title": "Step 4: Cloud not configured — ask user to set it up",
        "body": "Tell the user the backup was saved locally, then ask:\n\n\"Cloud storage isn't configured yet — backups are local only. Want to set up cloud upload? I support AWS S3, Cloudflare R2, Backblaze B2, MinIO, DigitalOcean Spaces, or any other S3-compatible service.\"\n\nIf user says yes → go to Cloud setup section below, then re-run the backup.\nIf user says no / local-only → set config.upload=false via gateway config.patch and confirm the change to the user. Done.\n\nAlways execute this step — offer cloud setup when it's missing and report what was configured."
      },
      {
        "title": "Step 5: Report result and ensure scheduling",
        "body": "Report the backup paths from the script output to the user.\n\nThen check if a daily cron job already exists for cloud-backup (cron action=list). If no cron job exists, create one with the default schedule and tell the user:\n\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * *\" },\n  \"payload\": { \"kind\": \"agentTurn\", \"message\": \"Run cloud-backup: backup full\" },\n  \"sessionTarget\": \"isolated\"\n}\n\nDefault: daily at 2 AM. Use a different schedule if it was explicitly asked for one.\n\nTell the user: \"Scheduled daily backup at 2 AM.\" (or whatever time was set).\n\nThis step should be executed by default unless user asked not to do it. Report about the result — cron job created or failed to be created."
      },
      {
        "title": "Cloud setup",
        "body": "When the user agrees to configure cloud storage:\n\nAsk which provider: AWS S3, Cloudflare R2, Backblaze B2, MinIO, DigitalOcean Spaces, or other.\nRead the matching provider guide from references/providers/ — it has exact config keys, endpoint format, and credential steps.\nCollect and write config via gateway config.patch — bucket, credentials, endpoint (if non-AWS).\nRun status to verify connectivity, then re-run backup."
      },
      {
        "title": "Commands",
        "body": "bash \"{baseDir}/scripts/cloud-backup.sh\" <command>\n\nCommandWhat it doesbackup [full|workspace|skills|settings]Create archive + upload if configured. Default: fulllistShow local + remote backupsrestore <name> [--dry-run] [--yes]Restore from local or cloud. Always --dry-run firstcleanupPrune old archives (local: capped at 7; cloud: count + age)statusShow current config and dependency check"
      },
      {
        "title": "Config reference",
        "body": "All in skills.entries.cloud-backup in OpenClaw config. Don't write defaults — the script handles them."
      },
      {
        "title": "config.*",
        "body": "KeyDefaultDescriptionbucket—Storage bucket name (required for cloud)regionus-east-1Region hintendpoint(none)S3-compatible endpoint (required for non-AWS)profile(none)Named AWS CLI profile (alternative to keys)uploadtrueUpload to cloud after backupencryptfalseGPG-encrypt archivesretentionCount10Cloud: keep N backups. Local: capped at 7retentionDays30Cloud only: delete archives older than N days"
      },
      {
        "title": "env.*",
        "body": "KeyDescriptionACCESS_KEY_IDS3-compatible access keySECRET_ACCESS_KEYS3-compatible secret keySESSION_TOKENOptional temporary tokenGPG_PASSPHRASEFor automated encryption/decryption"
      },
      {
        "title": "Provider guides",
        "body": "Read the relevant one only during setup:\n\nreferences/providers/aws-s3.md\nreferences/providers/cloudflare-r2.md\nreferences/providers/backblaze-b2.md\nreferences/providers/minio.md\nreferences/providers/digitalocean-spaces.md\nreferences/providers/other.md — any S3-compatible service"
      },
      {
        "title": "Security",
        "body": "See references/security.md for credential handling and troubleshooting."
      }
    ],
    "body": "OpenClaw Cloud Backup\n\nBacks up OpenClaw state to a local archive and uploads it to cloud storage.\n\nFollow the steps below. Inform the user about implicit defaults applied after execution.\n\nBackup procedure (follow every step)\nStep 1: Run the backup\nbash \"{baseDir}/scripts/cloud-backup.sh\" backup full\n\n\nDefault mode is full. Use workspace, skills, or settings only when the user explicitly asks for a narrower backup scope.\n\nStep 2: Check backup output for encryption warning\n\nLook at the script output from Step 1. If it contains:\n\nWARN: Encryption is disabled — backup archive will be stored in plaintext.\n\nask the user:\n\n\"Your backups are not encrypted. Archives contain config, credentials, and API keys in cleartext. Want to set a passphrase? (AES-256, just the passphrase needed to restore — no key files.)\"\n\nIf user provides a passphrase → write both via gateway config.patch and tell the user what was saved:\nskills.entries.cloud-backup.config.encrypt = true\nskills.entries.cloud-backup.env.GPG_PASSPHRASE = \"<passphrase>\" Then re-run the backup so the archive is encrypted.\nIf user says no / skip → continue to Step 3.\nIf the warning is not present (encryption already enabled) → continue to Step 3.\n\nAlways execute this step and report the result. Backups may contain secrets — prompt every time encryption is off.\n\nStep 3: Check script output for warnings\n\nLook at the script output. If it contains WARN: Cloud storage is not configured, go to Step 4. Otherwise go to Step 5.\n\nStep 4: Cloud not configured — ask user to set it up\n\nTell the user the backup was saved locally, then ask:\n\n\"Cloud storage isn't configured yet — backups are local only. Want to set up cloud upload? I support AWS S3, Cloudflare R2, Backblaze B2, MinIO, DigitalOcean Spaces, or any other S3-compatible service.\"\n\nIf user says yes → go to Cloud setup section below, then re-run the backup.\nIf user says no / local-only → set config.upload=false via gateway config.patch and confirm the change to the user. Done.\n\nAlways execute this step — offer cloud setup when it's missing and report what was configured.\n\nStep 5: Report result and ensure scheduling\n\nReport the backup paths from the script output to the user.\n\nThen check if a daily cron job already exists for cloud-backup (cron action=list). If no cron job exists, create one with the default schedule and tell the user:\n\n{\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * *\" },\n  \"payload\": { \"kind\": \"agentTurn\", \"message\": \"Run cloud-backup: backup full\" },\n  \"sessionTarget\": \"isolated\"\n}\n\n\nDefault: daily at 2 AM. Use a different schedule if it was explicitly asked for one.\n\nTell the user: \"Scheduled daily backup at 2 AM.\" (or whatever time was set).\n\nThis step should be executed by default unless user asked not to do it. Report about the result — cron job created or failed to be created.\n\nCloud setup\n\nWhen the user agrees to configure cloud storage:\n\nAsk which provider: AWS S3, Cloudflare R2, Backblaze B2, MinIO, DigitalOcean Spaces, or other.\nRead the matching provider guide from references/providers/ — it has exact config keys, endpoint format, and credential steps.\nCollect and write config via gateway config.patch — bucket, credentials, endpoint (if non-AWS).\nRun status to verify connectivity, then re-run backup.\nCommands\nbash \"{baseDir}/scripts/cloud-backup.sh\" <command>\n\nCommand\tWhat it does\nbackup [full|workspace|skills|settings]\tCreate archive + upload if configured. Default: full\nlist\tShow local + remote backups\nrestore <name> [--dry-run] [--yes]\tRestore from local or cloud. Always --dry-run first\ncleanup\tPrune old archives (local: capped at 7; cloud: count + age)\nstatus\tShow current config and dependency check\nConfig reference\n\nAll in skills.entries.cloud-backup in OpenClaw config. Don't write defaults — the script handles them.\n\nconfig.*\nKey\tDefault\tDescription\nbucket\t—\tStorage bucket name (required for cloud)\nregion\tus-east-1\tRegion hint\nendpoint\t(none)\tS3-compatible endpoint (required for non-AWS)\nprofile\t(none)\tNamed AWS CLI profile (alternative to keys)\nupload\ttrue\tUpload to cloud after backup\nencrypt\tfalse\tGPG-encrypt archives\nretentionCount\t10\tCloud: keep N backups. Local: capped at 7\nretentionDays\t30\tCloud only: delete archives older than N days\nenv.*\nKey\tDescription\nACCESS_KEY_ID\tS3-compatible access key\nSECRET_ACCESS_KEY\tS3-compatible secret key\nSESSION_TOKEN\tOptional temporary token\nGPG_PASSPHRASE\tFor automated encryption/decryption\nProvider guides\n\nRead the relevant one only during setup:\n\nreferences/providers/aws-s3.md\nreferences/providers/cloudflare-r2.md\nreferences/providers/backblaze-b2.md\nreferences/providers/minio.md\nreferences/providers/digitalocean-spaces.md\nreferences/providers/other.md — any S3-compatible service\nSecurity\n\nSee references/security.md for credential handling and troubleshooting."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/obuchowski/cloud-backup",
    "publisherUrl": "https://clawhub.ai/obuchowski/cloud-backup",
    "owner": "obuchowski",
    "version": "1.1.5",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/cloud-backup",
    "downloadUrl": "https://openagent3.xyz/downloads/cloud-backup",
    "agentUrl": "https://openagent3.xyz/skills/cloud-backup/agent",
    "manifestUrl": "https://openagent3.xyz/skills/cloud-backup/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/cloud-backup/agent.md"
  }
}