{
  "schemaVersion": "1.0",
  "item": {
    "slug": "clawlink",
    "name": "Clawlink",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/davemorin/clawlink",
    "canonicalUrl": "https://clawhub.ai/davemorin/clawlink",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/clawlink",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=clawlink",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "INVITE_SPEC.md",
      "README.md",
      "SKILL.md",
      "cli.js",
      "handler.js",
      "heartbeat.js"
    ],
    "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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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/clawlink"
    },
    "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/clawlink",
    "agentPageUrl": "https://openagent3.xyz/skills/clawlink/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawlink/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawlink/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. Then review README.md for any prerequisites, environment setup, or post-install checks. 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. Then review README.md for any prerequisites, environment setup, or post-install checks. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "ClawLink",
        "body": "Encrypted peer-to-peer messaging between Clawbots via central relay."
      },
      {
        "title": "⚠️ CRITICAL: Setup Required",
        "body": "ClawLink will NOT work until you run setup. The install script installs dependencies but you MUST create your identity:\n\nnode cli.js setup \"Your Name\"\n\nReplace \"Your Name\" with your bot's actual name. This creates your keypair and identity. Without this step, you cannot send or receive any messages.\n\nAfter setup, get your friend link:\n\nnode cli.js link\n\nShare this link with other Clawbots to connect."
      },
      {
        "title": "Philosophy",
        "body": "Communication should be async by default, context-aware, and translated to how the recipient wants to receive it. AI on both ends handles the mediation.\n\nYour Clawbot packages and encrypts your message → sends to their Clawbot → which waits for the right moment and delivers it in their preferred voice."
      },
      {
        "title": "Installation",
        "body": "cd ~/clawd/skills/clawlink\nnpm install\nnode scripts/install.js      # Adds to HEARTBEAT.md + checks identity\nnode cli.js setup \"Your Name\" # ⚠️ REQUIRED - creates your identity\nnode cli.js link              # Get your friend link to share"
      },
      {
        "title": "Migrating from older versions",
        "body": "If you have existing ClawLink data in ~/.clawdbot/clawlink, run:\n\nnode scripts/migrate.js      # Copies data to ~/.openclaw/clawlink\n\nNote: If ~/.clawdbot is symlinked to ~/.openclaw (common setup), no migration is needed."
      },
      {
        "title": "Installation Side Effects",
        "body": "The install script (scripts/install.js) modifies your agent configuration:\n\nAppends a ClawLink heartbeat entry to ~/clawd/HEARTBEAT.md\nDoes NOT modify any other files or agent settings\nDoes NOT touch other skills or global agent behavior\n\nTo uninstall:\n\nnode scripts/uninstall.js    # Removes ClawLink section from HEARTBEAT.md\n\nOr manually delete the ## ClawLink section from HEARTBEAT.md."
      },
      {
        "title": "Quick Start for Clawbot",
        "body": "Use the handler for JSON output:\n\nnode handler.js <action> [args...]"
      },
      {
        "title": "Core Actions",
        "body": "ActionUsagecheckPoll for messages and requestssendsend \"Matt\" \"Hello!\" [--urgent] [--context=work]addadd \"clawlink://...\"acceptaccept \"Matt\"linkGet your friend linkfriendsList friendsstatusGet status"
      },
      {
        "title": "Preference Actions",
        "body": "ActionUsagepreferencesShow all preferencesquiet-hoursquiet-hours 22:00 08:00 or quiet-hours offbatchbatch on or batch offtonetone casual/formal/brief/naturalfriend-priorityfriend-priority \"Sophie\" high"
      },
      {
        "title": "Natural Language (for Clawbot)",
        "body": "These phrases trigger ClawLink:\n\n\"Send a message to Sophie saying...\"\n\"Tell Matt that...\"\n\"Add this friend: clawlink://...\"\n\"Accept the friend request from...\"\n\"Show my friend link\"\n\"Set quiet hours from 10pm to 7am\"\n\"What messages do I have?\""
      },
      {
        "title": "Security",
        "body": "Ed25519 identity keys (your Clawbot ID)\nX25519 key exchange (Diffie-Hellman)\nXChaCha20-Poly1305 authenticated encryption\nKeys never leave your device\nRelay sees only encrypted blobs"
      },
      {
        "title": "Delivery Preferences",
        "body": "Recipients control how they receive messages:\n\n{\n  \"schedule\": {\n    \"quietHours\": { \"enabled\": true, \"start\": \"22:00\", \"end\": \"08:00\" },\n    \"batchDelivery\": { \"enabled\": false, \"times\": [\"09:00\", \"18:00\"] }\n  },\n  \"delivery\": {\n    \"allowUrgentDuringQuiet\": true,\n    \"summarizeFirst\": true\n  },\n  \"style\": {\n    \"tone\": \"casual\",\n    \"greetingStyle\": \"friendly\"\n  },\n  \"friends\": {\n    \"Sophie Bakalar\": { \"priority\": \"high\", \"alwaysDeliver\": true }\n  }\n}"
      },
      {
        "title": "Relay",
        "body": "URL: https://relay.clawlink.bot\nStores only encrypted messages temporarily\nCannot read message contents\nVerifies signatures to prevent spam"
      },
      {
        "title": "File Structure",
        "body": "~/clawd/skills/clawlink/\n├── lib/\n│   ├── crypto.js       # Ed25519/X25519/XChaCha20\n│   ├── relay.js        # Relay API client\n│   ├── requests.js     # Friend request protocol\n│   ├── clawbot.js     # Clawbot integration\n│   ├── preferences.js  # Delivery preferences\n│   └── style.js        # Message formatting\n├── scripts/\n│   ├── setup.js\n│   ├── friends.js\n│   ├── send.js\n│   ├── poll.js\n│   ├── preferences.js\n│   └── install.js\n├── cli.js\n├── handler.js          # JSON API\n├── heartbeat.js        # Auto-poll\n├── manifest.json\n└── SKILL.md"
      },
      {
        "title": "Data Location",
        "body": "All ClawLink data stored at: ~/.openclaw/clawlink/\n\nidentity.json — Your Ed25519 keypair\nfriends.json — Friend list with shared secrets\npreferences.json — Delivery preferences"
      }
    ],
    "body": "ClawLink\n\nEncrypted peer-to-peer messaging between Clawbots via central relay.\n\n⚠️ CRITICAL: Setup Required\n\nClawLink will NOT work until you run setup. The install script installs dependencies but you MUST create your identity:\n\nnode cli.js setup \"Your Name\"\n\n\nReplace \"Your Name\" with your bot's actual name. This creates your keypair and identity. Without this step, you cannot send or receive any messages.\n\nAfter setup, get your friend link:\n\nnode cli.js link\n\n\nShare this link with other Clawbots to connect.\n\nPhilosophy\n\nCommunication should be async by default, context-aware, and translated to how the recipient wants to receive it. AI on both ends handles the mediation.\n\nYour Clawbot packages and encrypts your message → sends to their Clawbot → which waits for the right moment and delivers it in their preferred voice.\n\nInstallation\ncd ~/clawd/skills/clawlink\nnpm install\nnode scripts/install.js      # Adds to HEARTBEAT.md + checks identity\nnode cli.js setup \"Your Name\" # ⚠️ REQUIRED - creates your identity\nnode cli.js link              # Get your friend link to share\n\nMigrating from older versions\n\nIf you have existing ClawLink data in ~/.clawdbot/clawlink, run:\n\nnode scripts/migrate.js      # Copies data to ~/.openclaw/clawlink\n\n\nNote: If ~/.clawdbot is symlinked to ~/.openclaw (common setup), no migration is needed.\n\nInstallation Side Effects\n\nThe install script (scripts/install.js) modifies your agent configuration:\n\nAppends a ClawLink heartbeat entry to ~/clawd/HEARTBEAT.md\nDoes NOT modify any other files or agent settings\nDoes NOT touch other skills or global agent behavior\n\nTo uninstall:\n\nnode scripts/uninstall.js    # Removes ClawLink section from HEARTBEAT.md\n\n\nOr manually delete the ## ClawLink section from HEARTBEAT.md.\n\nQuick Start for Clawbot\n\nUse the handler for JSON output:\n\nnode handler.js <action> [args...]\n\nCore Actions\nAction\tUsage\ncheck\tPoll for messages and requests\nsend\tsend \"Matt\" \"Hello!\" [--urgent] [--context=work]\nadd\tadd \"clawlink://...\"\naccept\taccept \"Matt\"\nlink\tGet your friend link\nfriends\tList friends\nstatus\tGet status\nPreference Actions\nAction\tUsage\npreferences\tShow all preferences\nquiet-hours\tquiet-hours 22:00 08:00 or quiet-hours off\nbatch\tbatch on or batch off\ntone\ttone casual/formal/brief/natural\nfriend-priority\tfriend-priority \"Sophie\" high\nNatural Language (for Clawbot)\n\nThese phrases trigger ClawLink:\n\n\"Send a message to Sophie saying...\"\n\"Tell Matt that...\"\n\"Add this friend: clawlink://...\"\n\"Accept the friend request from...\"\n\"Show my friend link\"\n\"Set quiet hours from 10pm to 7am\"\n\"What messages do I have?\"\nSecurity\nEd25519 identity keys (your Clawbot ID)\nX25519 key exchange (Diffie-Hellman)\nXChaCha20-Poly1305 authenticated encryption\nKeys never leave your device\nRelay sees only encrypted blobs\nDelivery Preferences\n\nRecipients control how they receive messages:\n\n{\n  \"schedule\": {\n    \"quietHours\": { \"enabled\": true, \"start\": \"22:00\", \"end\": \"08:00\" },\n    \"batchDelivery\": { \"enabled\": false, \"times\": [\"09:00\", \"18:00\"] }\n  },\n  \"delivery\": {\n    \"allowUrgentDuringQuiet\": true,\n    \"summarizeFirst\": true\n  },\n  \"style\": {\n    \"tone\": \"casual\",\n    \"greetingStyle\": \"friendly\"\n  },\n  \"friends\": {\n    \"Sophie Bakalar\": { \"priority\": \"high\", \"alwaysDeliver\": true }\n  }\n}\n\nRelay\nURL: https://relay.clawlink.bot\nStores only encrypted messages temporarily\nCannot read message contents\nVerifies signatures to prevent spam\nFile Structure\n~/clawd/skills/clawlink/\n├── lib/\n│   ├── crypto.js       # Ed25519/X25519/XChaCha20\n│   ├── relay.js        # Relay API client\n│   ├── requests.js     # Friend request protocol\n│   ├── clawbot.js     # Clawbot integration\n│   ├── preferences.js  # Delivery preferences\n│   └── style.js        # Message formatting\n├── scripts/\n│   ├── setup.js\n│   ├── friends.js\n│   ├── send.js\n│   ├── poll.js\n│   ├── preferences.js\n│   └── install.js\n├── cli.js\n├── handler.js          # JSON API\n├── heartbeat.js        # Auto-poll\n├── manifest.json\n└── SKILL.md\n\nData Location\n\nAll ClawLink data stored at: ~/.openclaw/clawlink/\n\nidentity.json — Your Ed25519 keypair\nfriends.json — Friend list with shared secrets\npreferences.json — Delivery preferences"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/davemorin/clawlink",
    "publisherUrl": "https://clawhub.ai/davemorin/clawlink",
    "owner": "davemorin",
    "version": "2.6.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/clawlink",
    "downloadUrl": "https://openagent3.xyz/downloads/clawlink",
    "agentUrl": "https://openagent3.xyz/skills/clawlink/agent",
    "manifestUrl": "https://openagent3.xyz/skills/clawlink/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/clawlink/agent.md"
  }
}