{
  "schemaVersion": "1.0",
  "item": {
    "slug": "s3",
    "name": "S3",
    "source": "tencent",
    "type": "skill",
    "category": "数据分析",
    "sourceUrl": "https://clawhub.ai/ivangdavila/s3",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/s3",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/s3",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=s3",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.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-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.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/s3"
    },
    "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/s3",
    "agentPageUrl": "https://openagent3.xyz/skills/s3/agent",
    "manifestUrl": "https://openagent3.xyz/skills/s3/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/s3/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": "Public Access Control",
        "body": "Default deny public access—only open when explicitly needed (static hosting)\nBucket policy vs IAM: bucket policy for cross-account/public, IAM for same-account roles\nCheck both bucket-level AND account-level block settings—account can override bucket\nFor web assets, prefer CDN in front of bucket over direct public access"
      },
      {
        "title": "Presigned URLs",
        "body": "Set shortest expiration practical—minutes for immediate use, not days\nURL is a bearer token—anyone with it has access; treat as secret\nSpecify HTTP method in signature—GET for download, PUT for upload\nInclude Content-Type for uploads—mismatch between signature and request causes 403\nGenerate server-side, never expose credentials to client"
      },
      {
        "title": "Lifecycle Rules",
        "body": "Transition to cheaper tiers for infrequent access—but check minimum storage duration penalties\nAuto-delete for temp files, logs, old versions—prevents unbounded storage growth\nClean incomplete multipart uploads—accumulate invisibly; set abort rule (7 days typical)\nVersioned buckets: separate rules for current vs noncurrent versions"
      },
      {
        "title": "Versioning Behavior",
        "body": "Enable before you need it—can't recover deleted objects without versioning\n\"Delete\" creates delete marker—object hidden but versions remain; storage still consumed\nPermanent deletion requires explicit version ID—without it, just adds marker\nNoncurrent version expiration essential—otherwise old versions accumulate forever"
      },
      {
        "title": "Multipart Uploads",
        "body": "Required above 5GB, recommended above 100MB—single PUT has size limits\nIncomplete uploads invisible in normal listings—consume storage silently\nAbort incomplete uploads via lifecycle—or manually with list-multipart-uploads\nParallel part uploads for speed—parts can upload concurrently"
      },
      {
        "title": "CORS for Browser Access",
        "body": "Required for JavaScript direct upload/download—blocked without CORS headers\nSpecify exact origins—avoid wildcard * for authenticated requests\nExpose headers that JavaScript needs to read—Content-Length, ETag, custom headers\nAllowedMethods: GET for download, PUT for upload, DELETE if needed"
      },
      {
        "title": "Key Naming",
        "body": "Use prefixes like directories: users/123/avatar.jpg—but S3 is flat, not hierarchical\nAvoid sequential prefixes for high throughput—2024-01-01/file1 can hotspot\nRandom prefix or hash for write-heavy buckets—distributes across partitions\nNo leading slash—/images/file.jpg creates empty-string prefix"
      },
      {
        "title": "Cost Awareness",
        "body": "Request volume matters—many small files more expensive than few large files\nEgress typically costly—CDN reduces egress by caching at edge\nMinimum storage duration varies by tier—early deletion still charged full period\nLifecycle transitions have per-object cost—millions of tiny files expensive to transition"
      },
      {
        "title": "Replication",
        "body": "Cross-region for disaster recovery, same-region for compliance copies\nVersioning required on both source and destination\nOnly new objects replicate—existing objects need manual copy or batch operation\nDelete markers not replicated by default—explicitly enable if needed"
      },
      {
        "title": "Provider Differences",
        "body": "AWS S3: full feature set, most tools assume AWS behavior\nCloudflare R2: no egress fees, subset of features\nBackblaze B2: S3-compatible API, different pricing model\nMinIO: self-hosted, full S3 API compatibility\nCheck presigned URL compatibility—some providers have quirks"
      }
    ],
    "body": "Public Access Control\nDefault deny public access—only open when explicitly needed (static hosting)\nBucket policy vs IAM: bucket policy for cross-account/public, IAM for same-account roles\nCheck both bucket-level AND account-level block settings—account can override bucket\nFor web assets, prefer CDN in front of bucket over direct public access\nPresigned URLs\nSet shortest expiration practical—minutes for immediate use, not days\nURL is a bearer token—anyone with it has access; treat as secret\nSpecify HTTP method in signature—GET for download, PUT for upload\nInclude Content-Type for uploads—mismatch between signature and request causes 403\nGenerate server-side, never expose credentials to client\nLifecycle Rules\nTransition to cheaper tiers for infrequent access—but check minimum storage duration penalties\nAuto-delete for temp files, logs, old versions—prevents unbounded storage growth\nClean incomplete multipart uploads—accumulate invisibly; set abort rule (7 days typical)\nVersioned buckets: separate rules for current vs noncurrent versions\nVersioning Behavior\nEnable before you need it—can't recover deleted objects without versioning\n\"Delete\" creates delete marker—object hidden but versions remain; storage still consumed\nPermanent deletion requires explicit version ID—without it, just adds marker\nNoncurrent version expiration essential—otherwise old versions accumulate forever\nMultipart Uploads\nRequired above 5GB, recommended above 100MB—single PUT has size limits\nIncomplete uploads invisible in normal listings—consume storage silently\nAbort incomplete uploads via lifecycle—or manually with list-multipart-uploads\nParallel part uploads for speed—parts can upload concurrently\nCORS for Browser Access\nRequired for JavaScript direct upload/download—blocked without CORS headers\nSpecify exact origins—avoid wildcard * for authenticated requests\nExpose headers that JavaScript needs to read—Content-Length, ETag, custom headers\nAllowedMethods: GET for download, PUT for upload, DELETE if needed\nKey Naming\nUse prefixes like directories: users/123/avatar.jpg—but S3 is flat, not hierarchical\nAvoid sequential prefixes for high throughput—2024-01-01/file1 can hotspot\nRandom prefix or hash for write-heavy buckets—distributes across partitions\nNo leading slash—/images/file.jpg creates empty-string prefix\nCost Awareness\nRequest volume matters—many small files more expensive than few large files\nEgress typically costly—CDN reduces egress by caching at edge\nMinimum storage duration varies by tier—early deletion still charged full period\nLifecycle transitions have per-object cost—millions of tiny files expensive to transition\nReplication\nCross-region for disaster recovery, same-region for compliance copies\nVersioning required on both source and destination\nOnly new objects replicate—existing objects need manual copy or batch operation\nDelete markers not replicated by default—explicitly enable if needed\nProvider Differences\nAWS S3: full feature set, most tools assume AWS behavior\nCloudflare R2: no egress fees, subset of features\nBackblaze B2: S3-compatible API, different pricing model\nMinIO: self-hosted, full S3 API compatibility\nCheck presigned URL compatibility—some providers have quirks"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/s3",
    "publisherUrl": "https://clawhub.ai/ivangdavila/s3",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/s3",
    "downloadUrl": "https://openagent3.xyz/downloads/s3",
    "agentUrl": "https://openagent3.xyz/skills/s3/agent",
    "manifestUrl": "https://openagent3.xyz/skills/s3/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/s3/agent.md"
  }
}