{
  "schemaVersion": "1.0",
  "item": {
    "slug": "dynamodb",
    "name": "DynamoDB",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/ivangdavila/dynamodb",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/dynamodb",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/dynamodb",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dynamodb",
    "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",
      "slug": "dynamodb",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T06:07:38.605Z",
      "expiresAt": "2026-05-08T06:07:38.605Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dynamodb",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dynamodb",
        "contentDisposition": "attachment; filename=\"dynamodb-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "dynamodb"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/dynamodb"
    },
    "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/dynamodb",
    "agentPageUrl": "https://openagent3.xyz/skills/dynamodb/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dynamodb/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dynamodb/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": "Key Design",
        "body": "Partition key determines data distribution—high-cardinality keys spread load evenly\nHot partition = one key gets all traffic—use composite keys or add random suffix\nSort key enables range queries within partition—design for access patterns\nCan't change keys after creation—model all access patterns before creating table"
      },
      {
        "title": "Query vs Scan",
        "body": "Query uses partition key + optional sort key—O(items in partition), always prefer\nScan reads entire table—expensive, slow, avoids indexes; almost never correct\n\"I need to filter by X\" usually means missing GSI—add index, don't scan\nFilterExpression applies AFTER read—still consumes full read capacity"
      },
      {
        "title": "Global Secondary Indexes",
        "body": "GSI = different partition/sort key—enables alternate access patterns\nGSI is eventually consistent—writes propagate with slight delay\nGSI consumes separate capacity—provision or pay for each GSI independently\nSparse index trick: only items with attribute appear in GSI"
      },
      {
        "title": "Single-Table Design",
        "body": "One table for multiple entity types—prefix partition key: USER#123, ORDER#456\nOverloaded sort key: METADATA, ORDER#2024-01-15, ITEM#abc\nQuery returns mixed types—filter client-side or use begins_with\nNot always right—start with access patterns, not doctrine"
      },
      {
        "title": "Pagination",
        "body": "Results capped at 1MB per request—must handle pagination\nLastEvaluatedKey in response means more pages—pass as ExclusiveStartKey\nLoop until LastEvaluatedKey is absent—common mistake: assume one call gets all\nLimit limits evaluated items, not returned—still need pagination logic"
      },
      {
        "title": "Consistency",
        "body": "Reads are eventually consistent by default—may return stale data\nConsistentRead: true for strong consistency—costs 2x read capacity\nGSI reads always eventually consistent—no strong consistency option\nWrite-then-read needs consistent read or retry—eventual consistency bites here"
      },
      {
        "title": "Conditional Writes",
        "body": "ConditionExpression for optimistic locking—fails if condition false\nPrevent overwrites: attribute_not_exists(pk)\nVersion check: version = :expected then increment\nConditionCheckFailedException = retry with fresh data, don't just fail"
      },
      {
        "title": "Batch Operations",
        "body": "BatchWriteItem is NOT atomic—partial success possible, check UnprocessedItems\nRetry unprocessed with exponential backoff—built into AWS SDK\nMax 25 items per batch, 16MB total—split larger batches\nNo conditional writes in batch—use TransactWriteItems for atomicity"
      },
      {
        "title": "Transactions",
        "body": "TransactWriteItems for atomic multi-item writes—all or nothing\nMax 100 items per transaction, 4MB total\nTransactGetItems for consistent multi-read—snapshot isolation\n2x cost of normal operations—use only when atomicity required"
      },
      {
        "title": "TTL",
        "body": "Enable TTL on timestamp attribute—DynamoDB deletes expired items automatically\nDeletion is background process—items may persist hours after expiration\nTTL value is Unix epoch seconds—milliseconds silently fails\nFilter attribute_exists(ttl) AND ttl > :now for queries if needed"
      },
      {
        "title": "Capacity",
        "body": "On-demand: pay per request, auto-scales—good for unpredictable traffic\nProvisioned: set RCU/WCU, cheaper at scale—needs capacity planning\nProvisioned with auto-scaling for predictable patterns—set min/max/target\nProvisionedThroughputExceededException = throttled—back off and retry"
      },
      {
        "title": "Limits",
        "body": "Item size max 400KB—store large objects in S3, reference in DynamoDB\nPartition throughput: 3000 RCU, 1000 WCU—spread across partitions\nQuery/Scan returns max 1MB—pagination required for more\nAttribute name max 64KB total per item—don't use long attribute names"
      }
    ],
    "body": "Key Design\nPartition key determines data distribution—high-cardinality keys spread load evenly\nHot partition = one key gets all traffic—use composite keys or add random suffix\nSort key enables range queries within partition—design for access patterns\nCan't change keys after creation—model all access patterns before creating table\nQuery vs Scan\nQuery uses partition key + optional sort key—O(items in partition), always prefer\nScan reads entire table—expensive, slow, avoids indexes; almost never correct\n\"I need to filter by X\" usually means missing GSI—add index, don't scan\nFilterExpression applies AFTER read—still consumes full read capacity\nGlobal Secondary Indexes\nGSI = different partition/sort key—enables alternate access patterns\nGSI is eventually consistent—writes propagate with slight delay\nGSI consumes separate capacity—provision or pay for each GSI independently\nSparse index trick: only items with attribute appear in GSI\nSingle-Table Design\nOne table for multiple entity types—prefix partition key: USER#123, ORDER#456\nOverloaded sort key: METADATA, ORDER#2024-01-15, ITEM#abc\nQuery returns mixed types—filter client-side or use begins_with\nNot always right—start with access patterns, not doctrine\nPagination\nResults capped at 1MB per request—must handle pagination\nLastEvaluatedKey in response means more pages—pass as ExclusiveStartKey\nLoop until LastEvaluatedKey is absent—common mistake: assume one call gets all\nLimit limits evaluated items, not returned—still need pagination logic\nConsistency\nReads are eventually consistent by default—may return stale data\nConsistentRead: true for strong consistency—costs 2x read capacity\nGSI reads always eventually consistent—no strong consistency option\nWrite-then-read needs consistent read or retry—eventual consistency bites here\nConditional Writes\nConditionExpression for optimistic locking—fails if condition false\nPrevent overwrites: attribute_not_exists(pk)\nVersion check: version = :expected then increment\nConditionCheckFailedException = retry with fresh data, don't just fail\nBatch Operations\nBatchWriteItem is NOT atomic—partial success possible, check UnprocessedItems\nRetry unprocessed with exponential backoff—built into AWS SDK\nMax 25 items per batch, 16MB total—split larger batches\nNo conditional writes in batch—use TransactWriteItems for atomicity\nTransactions\nTransactWriteItems for atomic multi-item writes—all or nothing\nMax 100 items per transaction, 4MB total\nTransactGetItems for consistent multi-read—snapshot isolation\n2x cost of normal operations—use only when atomicity required\nTTL\nEnable TTL on timestamp attribute—DynamoDB deletes expired items automatically\nDeletion is background process—items may persist hours after expiration\nTTL value is Unix epoch seconds—milliseconds silently fails\nFilter attribute_exists(ttl) AND ttl > :now for queries if needed\nCapacity\nOn-demand: pay per request, auto-scales—good for unpredictable traffic\nProvisioned: set RCU/WCU, cheaper at scale—needs capacity planning\nProvisioned with auto-scaling for predictable patterns—set min/max/target\nProvisionedThroughputExceededException = throttled—back off and retry\nLimits\nItem size max 400KB—store large objects in S3, reference in DynamoDB\nPartition throughput: 3000 RCU, 1000 WCU—spread across partitions\nQuery/Scan returns max 1MB—pagination required for more\nAttribute name max 64KB total per item—don't use long attribute names"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/dynamodb",
    "publisherUrl": "https://clawhub.ai/ivangdavila/dynamodb",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/dynamodb",
    "downloadUrl": "https://openagent3.xyz/downloads/dynamodb",
    "agentUrl": "https://openagent3.xyz/skills/dynamodb/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dynamodb/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dynamodb/agent.md"
  }
}