{
  "schemaVersion": "1.0",
  "item": {
    "slug": "claude-watchdog",
    "name": "Skill",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/chapati23/claude-watchdog",
    "canonicalUrl": "https://clawhub.ai/chapati23/claude-watchdog",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/claude-watchdog",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=claude-watchdog",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "scripts/latency-probe.py",
      "scripts/setup.sh",
      "scripts/status-check.py"
    ],
    "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/claude-watchdog"
    },
    "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/claude-watchdog",
    "agentPageUrl": "https://openagent3.xyz/skills/claude-watchdog/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claude-watchdog/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claude-watchdog/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": "Claude Watchdog 🐕",
        "body": "Monitor the Anthropic/Claude API for outages and latency spikes. Sends rich alerts to Telegram — no agent tokens consumed for status checks."
      },
      {
        "title": "Status Monitor (status-check.py)",
        "body": "Polls status.claude.com every 15 minutes via cron\nAlerts with incident name, latest update text, per-component status\nTags incidents as \"(not our model)\" if e.g. Haiku is affected but you use Sonnet\nSends all-clear on recovery\nZero token cost"
      },
      {
        "title": "Latency Probe (latency-probe.py)",
        "body": "Sends a minimal request through OpenClaw's local gateway every 15 minutes\nMeasures real end-to-end latency to Anthropic API\nMaintains rolling baseline (median of last 20 samples)\nAlerts with 🟡/🟠/🔴 severity based on spike magnitude\nSends all-clear when latency recovers\n~$0.000001 per probe"
      },
      {
        "title": "Setup",
        "body": "Run the interactive setup script:\n\nbash /path/to/skills/claude-watchdog/scripts/setup.sh\n\nYou'll need:\n\nTelegram Bot Token — from @BotFather\nTelegram Chat ID — send a message to your bot, then check https://api.telegram.org/bot<TOKEN>/getUpdates\nOpenClaw Gateway Token — run:\npython3 -c \"from pathlib import Path; import json; print(json.load(open(Path.home() / '.openclaw/openclaw.json'))['gateway']['auth']['token'])\"\n\n\nGateway Port — default 18789\n\nThe setup script writes config, installs cron jobs, and runs an initial check.\n\nTo uninstall (removes cron jobs, optionally config/state):\n\nbash /path/to/skills/claude-watchdog/scripts/setup.sh --uninstall"
      },
      {
        "title": "Config",
        "body": "Stored in ~/.openclaw/skills/claude-watchdog/claude-watchdog.env. To reconfigure, either re-run setup.sh or edit this file directly — changes take effect on the next cron run (within 15 minutes).\n\nTELEGRAM_BOT_TOKEN=...\nTELEGRAM_CHAT_ID=...\nOPENCLAW_GATEWAY_TOKEN=...\nOPENCLAW_GATEWAY_PORT=18789\nMONITOR_MODEL=sonnet\nPROBE_MODEL=openclaw\nPROBE_AGENT_ID=main\n\nVariableDefaultDescriptionTELEGRAM_BOT_TOKEN(required)Telegram bot token from @BotFatherTELEGRAM_CHAT_ID(required)Target chat for alertsOPENCLAW_GATEWAY_TOKEN(required)Auth token for the local OpenClaw gatewayOPENCLAW_GATEWAY_PORT18789Port the OpenClaw gateway listens onMONITOR_MODELsonnetModel name to match in status incidents (e.g. \"sonnet\", \"haiku\")PROBE_MODELopenclawModel alias sent to the gateway for latency probes. openclaw uses the gateway's default model routingPROBE_AGENT_IDmainValue of the x-openclaw-agent-id header sent with probesFILTER_KEYWORDS(none)Comma-separated keywords to filter out of status alerts (e.g. \"skills,Artifacts,Memory\"). Empty = receive all alerts\n\nScripts also accept these as environment variables (env file takes priority)."
      },
      {
        "title": "Security Note",
        "body": "The env file contains sensitive tokens (Telegram bot token, gateway token). The setup script sets permissions to 600 (owner-only read/write). If you create or edit the file manually, ensure restricted permissions:\n\nchmod 600 ~/.openclaw/skills/claude-watchdog/claude-watchdog.env"
      },
      {
        "title": "Alert Examples",
        "body": "Status incident:\n\n🟠 Anthropic Status: Partially Degraded Service\n\n📌 Elevated error rates on Claude 3.5 Haiku (not our model)\nStatus: Investigating\nUpdate: \"We are investigating increased error rates...\"\n\nComponents:\n  🟠 API: partial outage\n\n🔗 https://status.claude.com\n\nLatency spike:\n\n🟡 Anthropic API — High Latency Detected\n\nCurrent: 12.3s\nBaseline: 3.1s (median of last 19 samples)\nRatio: 4.0×\n\nSlow responses are expected right now.\n\nRecovery:\n\n✅ Anthropic API — Latency Back to Normal\n\nCurrent: 2.8s\nBaseline: 3.1s\nWas: 12.3s when alert fired"
      },
      {
        "title": "State & Logs",
        "body": "All state and log files are stored in ~/.openclaw/skills/claude-watchdog/:\n\nFilePurposeclaude-watchdog-status.jsonStatus check stateclaude-watchdog-latency.jsonLatency probe state & samplesclaude-watchdog-status.logStatus check logclaude-watchdog-latency.logLatency probe log"
      },
      {
        "title": "Tuning Thresholds",
        "body": "Edit constants at the top of latency-probe.py:\n\nConstantDefaultMeaningALERT_MULTIPLIER2.5Alert if latency > N× baseline medianALERT_HARD_FLOOR10.0sAlways alert above this absolute thresholdRECOVER_MULTIPLIER1.5Clear alert when below N× baselineBASELINE_WINDOW20Rolling sample window sizeBASELINE_MIN_SAMPLES5Minimum samples before alerting startsPROBE_TIMEOUT45sGive up on probe after this long"
      },
      {
        "title": "Requirements",
        "body": "Python 3.10+ (stdlib only, no pip dependencies)\nOpenClaw gateway running locally\nTelegram bot with access to the target chat"
      }
    ],
    "body": "Claude Watchdog 🐕\n\nMonitor the Anthropic/Claude API for outages and latency spikes. Sends rich alerts to Telegram — no agent tokens consumed for status checks.\n\nWhat It Does\nStatus Monitor (status-check.py)\nPolls status.claude.com every 15 minutes via cron\nAlerts with incident name, latest update text, per-component status\nTags incidents as \"(not our model)\" if e.g. Haiku is affected but you use Sonnet\nSends all-clear on recovery\nZero token cost\nLatency Probe (latency-probe.py)\nSends a minimal request through OpenClaw's local gateway every 15 minutes\nMeasures real end-to-end latency to Anthropic API\nMaintains rolling baseline (median of last 20 samples)\nAlerts with 🟡/🟠/🔴 severity based on spike magnitude\nSends all-clear when latency recovers\n~$0.000001 per probe\nSetup\n\nRun the interactive setup script:\n\nbash /path/to/skills/claude-watchdog/scripts/setup.sh\n\n\nYou'll need:\n\nTelegram Bot Token — from @BotFather\nTelegram Chat ID — send a message to your bot, then check https://api.telegram.org/bot<TOKEN>/getUpdates\nOpenClaw Gateway Token — run:\npython3 -c \"from pathlib import Path; import json; print(json.load(open(Path.home() / '.openclaw/openclaw.json'))['gateway']['auth']['token'])\"\n\nGateway Port — default 18789\n\nThe setup script writes config, installs cron jobs, and runs an initial check.\n\nTo uninstall (removes cron jobs, optionally config/state):\n\nbash /path/to/skills/claude-watchdog/scripts/setup.sh --uninstall\n\nConfig\n\nStored in ~/.openclaw/skills/claude-watchdog/claude-watchdog.env. To reconfigure, either re-run setup.sh or edit this file directly — changes take effect on the next cron run (within 15 minutes).\n\nTELEGRAM_BOT_TOKEN=...\nTELEGRAM_CHAT_ID=...\nOPENCLAW_GATEWAY_TOKEN=...\nOPENCLAW_GATEWAY_PORT=18789\nMONITOR_MODEL=sonnet\nPROBE_MODEL=openclaw\nPROBE_AGENT_ID=main\n\nVariable\tDefault\tDescription\nTELEGRAM_BOT_TOKEN\t(required)\tTelegram bot token from @BotFather\nTELEGRAM_CHAT_ID\t(required)\tTarget chat for alerts\nOPENCLAW_GATEWAY_TOKEN\t(required)\tAuth token for the local OpenClaw gateway\nOPENCLAW_GATEWAY_PORT\t18789\tPort the OpenClaw gateway listens on\nMONITOR_MODEL\tsonnet\tModel name to match in status incidents (e.g. \"sonnet\", \"haiku\")\nPROBE_MODEL\topenclaw\tModel alias sent to the gateway for latency probes. openclaw uses the gateway's default model routing\nPROBE_AGENT_ID\tmain\tValue of the x-openclaw-agent-id header sent with probes\nFILTER_KEYWORDS\t(none)\tComma-separated keywords to filter out of status alerts (e.g. \"skills,Artifacts,Memory\"). Empty = receive all alerts\n\nScripts also accept these as environment variables (env file takes priority).\n\nSecurity Note\n\nThe env file contains sensitive tokens (Telegram bot token, gateway token). The setup script sets permissions to 600 (owner-only read/write). If you create or edit the file manually, ensure restricted permissions:\n\nchmod 600 ~/.openclaw/skills/claude-watchdog/claude-watchdog.env\n\nAlert Examples\n\nStatus incident:\n\n🟠 Anthropic Status: Partially Degraded Service\n\n📌 Elevated error rates on Claude 3.5 Haiku (not our model)\nStatus: Investigating\nUpdate: \"We are investigating increased error rates...\"\n\nComponents:\n  🟠 API: partial outage\n\n🔗 https://status.claude.com\n\n\nLatency spike:\n\n🟡 Anthropic API — High Latency Detected\n\nCurrent: 12.3s\nBaseline: 3.1s (median of last 19 samples)\nRatio: 4.0×\n\nSlow responses are expected right now.\n\n\nRecovery:\n\n✅ Anthropic API — Latency Back to Normal\n\nCurrent: 2.8s\nBaseline: 3.1s\nWas: 12.3s when alert fired\n\nState & Logs\n\nAll state and log files are stored in ~/.openclaw/skills/claude-watchdog/:\n\nFile\tPurpose\nclaude-watchdog-status.json\tStatus check state\nclaude-watchdog-latency.json\tLatency probe state & samples\nclaude-watchdog-status.log\tStatus check log\nclaude-watchdog-latency.log\tLatency probe log\nTuning Thresholds\n\nEdit constants at the top of latency-probe.py:\n\nConstant\tDefault\tMeaning\nALERT_MULTIPLIER\t2.5\tAlert if latency > N× baseline median\nALERT_HARD_FLOOR\t10.0s\tAlways alert above this absolute threshold\nRECOVER_MULTIPLIER\t1.5\tClear alert when below N× baseline\nBASELINE_WINDOW\t20\tRolling sample window size\nBASELINE_MIN_SAMPLES\t5\tMinimum samples before alerting starts\nPROBE_TIMEOUT\t45s\tGive up on probe after this long\nRequirements\nPython 3.10+ (stdlib only, no pip dependencies)\nOpenClaw gateway running locally\nTelegram bot with access to the target chat"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/chapati23/claude-watchdog",
    "publisherUrl": "https://clawhub.ai/chapati23/claude-watchdog",
    "owner": "chapati23",
    "version": "1.2.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/claude-watchdog",
    "downloadUrl": "https://openagent3.xyz/downloads/claude-watchdog",
    "agentUrl": "https://openagent3.xyz/skills/claude-watchdog/agent",
    "manifestUrl": "https://openagent3.xyz/skills/claude-watchdog/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/claude-watchdog/agent.md"
  }
}