{
  "schemaVersion": "1.0",
  "item": {
    "slug": "signal-cli",
    "name": "Signal CLI",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/pseudobun/signal-cli",
    "canonicalUrl": "https://clawhub.ai/pseudobun/signal-cli",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/signal-cli",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=signal-cli",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "scripts/send_message.py",
      "scripts/find_contact.py",
      "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-05-07T17:22:31.273Z",
      "expiresAt": "2026-05-14T17:22:31.273Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=afrexai-annual-report",
        "contentDisposition": "attachment; filename=\"afrexai-annual-report-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/signal-cli"
    },
    "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/signal-cli",
    "agentPageUrl": "https://openagent3.xyz/skills/signal-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/signal-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/signal-cli/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": "signal-cli (Signal Messaging)",
        "body": "Use the local signal-cli binary."
      },
      {
        "title": "Preconditions",
        "body": "signal-cli is installed and already linked/registered.\nFor safety: confirm recipient + final message text with the user before sending."
      },
      {
        "title": "Discover available accounts",
        "body": "signal-cli listAccounts"
      },
      {
        "title": "List contacts (JSON)",
        "body": "signal-cli -o json -u \"+386...\" listContacts"
      },
      {
        "title": "Find a contact by name/nickname/number",
        "body": "Prefer the bundled script (handles fuzzy-ish matching + multiple matches):\n\npython3 scripts/find_contact.py --account \"+386...\" --query \"Name\""
      },
      {
        "title": "Send a message",
        "body": "Prefer the bundled script (resolves contact names to numbers):\n\npython3 scripts/send_message.py --account \"+386...\" --to \"Name\" --text \"Heyo ...\"\n\nIf --to is already a phone number in E.164 (e.g. +386...), it sends directly."
      },
      {
        "title": "Safety checklist (always)",
        "body": "If resolving by name returns multiple matches, present options and ask the user which one.\nIf message contains sensitive info, ask explicitly before sending via Signal.\nDefault to --service-environment live (signal-cli default) and normal trust behavior."
      }
    ],
    "body": "signal-cli (Signal Messaging)\n\nUse the local signal-cli binary.\n\nPreconditions\nsignal-cli is installed and already linked/registered.\nFor safety: confirm recipient + final message text with the user before sending.\nQuick patterns\nDiscover available accounts\nsignal-cli listAccounts\n\nList contacts (JSON)\nsignal-cli -o json -u \"+386...\" listContacts\n\nFind a contact by name/nickname/number\n\nPrefer the bundled script (handles fuzzy-ish matching + multiple matches):\n\npython3 scripts/find_contact.py --account \"+386...\" --query \"Name\"\n\nSend a message\n\nPrefer the bundled script (resolves contact names to numbers):\n\npython3 scripts/send_message.py --account \"+386...\" --to \"Name\" --text \"Heyo ...\"\n\n\nIf --to is already a phone number in E.164 (e.g. +386...), it sends directly.\n\nSafety checklist (always)\nIf resolving by name returns multiple matches, present options and ask the user which one.\nIf message contains sensitive info, ask explicitly before sending via Signal.\nDefault to --service-environment live (signal-cli default) and normal trust behavior."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/pseudobun/signal-cli",
    "publisherUrl": "https://clawhub.ai/pseudobun/signal-cli",
    "owner": "pseudobun",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/signal-cli",
    "downloadUrl": "https://openagent3.xyz/downloads/signal-cli",
    "agentUrl": "https://openagent3.xyz/skills/signal-cli/agent",
    "manifestUrl": "https://openagent3.xyz/skills/signal-cli/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/signal-cli/agent.md"
  }
}