{
  "schemaVersion": "1.0",
  "item": {
    "slug": "sync",
    "name": "Sync",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/ivangdavila/sync",
    "canonicalUrl": "https://clawhub.ai/ivangdavila/sync",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/sync",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sync",
    "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": "sync",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-01T11:27:47.985Z",
      "expiresAt": "2026-05-08T11:27:47.985Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sync",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=sync",
        "contentDisposition": "attachment; filename=\"sync-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "sync"
      },
      "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/sync"
    },
    "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/sync",
    "agentPageUrl": "https://openagent3.xyz/skills/sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sync/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": "rsync Fundamentals",
        "body": "Trailing slash matters: rsync src/ copies contents, rsync src copies the folder itself — this is the #1 cause of wrong directory structures\nAlways use -avz baseline: archive mode preserves permissions/timestamps, verbose shows progress, compress speeds transfers\nAdd --delete only when you want destination to mirror source exactly — without it, deleted source files remain on destination\nUse --dry-run before any destructive sync — shows what would change without modifying anything"
      },
      {
        "title": "Exclusions",
        "body": "Create an exclude file instead of multiple --exclude flags: rsync -avz --exclude-from=.syncignore src/ dest/\nStandard excludes for code projects: .git/, node_modules/, __pycache__/, .venv/, *.pyc, .DS_Store, Thumbs.db\nExclude patterns are relative to source root — /logs/ excludes only top-level logs, logs/ excludes logs/ anywhere"
      },
      {
        "title": "Cloud Storage (rclone)",
        "body": "rclone sync deletes destination files not in source; rclone copy only adds — use copy when unsure\nConfigure remotes interactively: rclone config — never hardcode cloud credentials in scripts\nTest with --dry-run first, then --progress for visual feedback during actual sync\nFor S3-compatible storage, set --s3-chunk-size 64M for large files to avoid timeouts"
      },
      {
        "title": "Verification",
        "body": "After critical syncs, verify with checksums: rsync -avzc uses checksums instead of size/time (slower but certain)\nFor rclone, use rclone check source: dest: to compare without transferring\nLog sync operations to file for audit: rsync -avz src/ dest/ | tee sync.log"
      },
      {
        "title": "Bidirectional Sync",
        "body": "rsync is one-way only — for true bidirectional sync, use unison: unison dir1 dir2\nUnison detects conflicts when both sides change — resolve manually or set prefer rules\nCloud services like Dropbox/Syncthing handle bidirectional automatically — don't reinvent with rsync"
      },
      {
        "title": "Remote Sync",
        "body": "For SSH remotes, use key-based auth: rsync -avz -e \"ssh -i ~/.ssh/key\" src/ user@host:dest/\nSpecify non-standard SSH port: -e \"ssh -p 2222\"\nUse --partial --progress for large files over unreliable connections — allows resume on failure"
      },
      {
        "title": "Common Pitfalls",
        "body": "Syncing to mounted drives that unmount silently creates a local folder with the mount name — verify mount before sync\nRunning sync without --delete repeatedly causes destination to accumulate deleted files forever\nTime-based sync fails across machines with clock skew — use --checksum for accuracy or sync NTP first"
      }
    ],
    "body": "File Synchronization Rules\nrsync Fundamentals\nTrailing slash matters: rsync src/ copies contents, rsync src copies the folder itself — this is the #1 cause of wrong directory structures\nAlways use -avz baseline: archive mode preserves permissions/timestamps, verbose shows progress, compress speeds transfers\nAdd --delete only when you want destination to mirror source exactly — without it, deleted source files remain on destination\nUse --dry-run before any destructive sync — shows what would change without modifying anything\nExclusions\nCreate an exclude file instead of multiple --exclude flags: rsync -avz --exclude-from=.syncignore src/ dest/\nStandard excludes for code projects: .git/, node_modules/, __pycache__/, .venv/, *.pyc, .DS_Store, Thumbs.db\nExclude patterns are relative to source root — /logs/ excludes only top-level logs, logs/ excludes logs/ anywhere\nCloud Storage (rclone)\nrclone sync deletes destination files not in source; rclone copy only adds — use copy when unsure\nConfigure remotes interactively: rclone config — never hardcode cloud credentials in scripts\nTest with --dry-run first, then --progress for visual feedback during actual sync\nFor S3-compatible storage, set --s3-chunk-size 64M for large files to avoid timeouts\nVerification\nAfter critical syncs, verify with checksums: rsync -avzc uses checksums instead of size/time (slower but certain)\nFor rclone, use rclone check source: dest: to compare without transferring\nLog sync operations to file for audit: rsync -avz src/ dest/ | tee sync.log\nBidirectional Sync\nrsync is one-way only — for true bidirectional sync, use unison: unison dir1 dir2\nUnison detects conflicts when both sides change — resolve manually or set prefer rules\nCloud services like Dropbox/Syncthing handle bidirectional automatically — don't reinvent with rsync\nRemote Sync\nFor SSH remotes, use key-based auth: rsync -avz -e \"ssh -i ~/.ssh/key\" src/ user@host:dest/\nSpecify non-standard SSH port: -e \"ssh -p 2222\"\nUse --partial --progress for large files over unreliable connections — allows resume on failure\nCommon Pitfalls\nSyncing to mounted drives that unmount silently creates a local folder with the mount name — verify mount before sync\nRunning sync without --delete repeatedly causes destination to accumulate deleted files forever\nTime-based sync fails across machines with clock skew — use --checksum for accuracy or sync NTP first"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/ivangdavila/sync",
    "publisherUrl": "https://clawhub.ai/ivangdavila/sync",
    "owner": "ivangdavila",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/sync",
    "downloadUrl": "https://openagent3.xyz/downloads/sync",
    "agentUrl": "https://openagent3.xyz/skills/sync/agent",
    "manifestUrl": "https://openagent3.xyz/skills/sync/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/sync/agent.md"
  }
}