{
  "schemaVersion": "1.0",
  "item": {
    "slug": "hookcatch",
    "name": "HookCatch",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/HookCatch/hookcatch",
    "canonicalUrl": "https://clawhub.ai/HookCatch/hookcatch",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/hookcatch",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hookcatch",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "bin/hookcatch-skill.js",
      "package.json",
      "README.md",
      "SKILL.md",
      "STRUCTURE.md",
      "test.sh"
    ],
    "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",
      "slug": "hookcatch",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-04T05:24:17.026Z",
      "expiresAt": "2026-05-11T05:24:17.026Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hookcatch",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=hookcatch",
        "contentDisposition": "attachment; filename=\"hookcatch-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "hookcatch"
      },
      "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/hookcatch"
    },
    "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/hookcatch",
    "agentPageUrl": "https://openagent3.xyz/skills/hookcatch/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hookcatch/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hookcatch/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": "HookCatch - Webhook Testing & Tunneling for OpenClaw",
        "body": "HookCatch is a webhook testing and localhost tunneling tool that lets you:\n\nCreate webhook bins to capture and inspect HTTP requests\nTunnel your localhost to test webhooks locally\nManage bins and view captured requests programmatically\n\nPerfect for testing webhook integrations (Stripe, Twilio, GitHub, etc.) from your OpenClaw skills."
      },
      {
        "title": "Quick Start",
        "body": "Authenticate with HookCatch:\nhookcatch login\n# Or use API token (recommended for automation):\nhookcatch token generate\nexport HOOKCATCH_API_KEY=\"hc_live_...\"\n\n\n\nCreate a webhook bin:\nhookcatch bin create --name \"Test Stripe Webhooks\"\n# Returns: https://hookcatch.dev/b/abc123xyz\n\n\n\nView created bins:\nhookcatch bin list\n\n\n\nView captured requests:\nhookcatch bin requests abc123xyz --format json\n\nOR\nhookcatch bin requests --binId abc123xyz --format json"
      },
      {
        "title": "Bin Management",
        "body": "Create a new webhook bin:\n\nhookcatch bin create [--name \"My Bin\"] [--private] [--password \"secret\"] [--format json]\n\nOptions:\n\n--name: Optional bin name for organization\n--private: Create private bin (PLUS+ tier required)\n--password: Set password for private bin (min 4 chars)\n--format: Output format (json recommended for automation)\n\nReturns: Bin ID, webhook URL, and view URL\n\nList your bins:\n\nhookcatch bin list [--format json]\n\nShows all your bins with request counts and status.\n\nGet requests for a bin:\n\nhookcatch bin requests <binId> [--limit 50] [--format json|table] [--method GET] [--password \"secret\"]\n\nOptions:\n\n--limit: Number of requests to fetch (default: 50)\n--format: Output format - json for scripts, table for viewing\n--method: Filter by HTTP method (GET, POST, etc.)\n--password: Password for private bins (if required; owners can use their auth token)\n\nShow a single request:\n\nhookcatch request <requestId> <binId> [--format json|pretty] [--password \"secret\"]\n\nDelete a bin:\n\nhookcatch bin delete <binId> --yes\n\nUpdate a bin:\n\nhookcatch bin update <binId> --name \"New Name\"\nhookcatch bin update <binId> --private --password \"secret123\"\nhookcatch bin update <binId> --public\n\nShow a single request:\n\nhookcatch request <requestId> <binId> [--format json|pretty]\n\nReplay a request to a new URL:\n\nhookcatch replay <binId> <requestId> <url>\nhookcatch replay --binId <binId> --requestId <requestId> --url <url>"
      },
      {
        "title": "Localhost Tunneling",
        "body": "Expose your localhost:\n\nhookcatch tunnel 3000\n# Creates: https://hookcatch.dev/tunnel/xyz789\n\nList active tunnels:\n\nhookcatch tunnel list\n\nStop a tunnel:\n\nhookcatch stop <tunnelId>\n\nForward incoming requests from the public URL to your local port 3000.\n\nTunnel limits:\n\nFREE: 5 min/session, 3 sessions/day\nPLUS: 1h/session, unlimited\nPRO/ENTERPRISE: Unlimited"
      },
      {
        "title": "API Token Management",
        "body": "Generate long-lived API token:\n\nhookcatch token generate\n# Store the token for automation\nexport HOOKCATCH_API_KEY=\"hc_live_...\"\n\nCheck token status:\n\nhookcatch token status\n\nRevoke token:\n\nhookcatch token revoke --yes\n\nAccount status:\n\nhookcatch status\nhookcatch whoami"
      },
      {
        "title": "Example 1: Test Stripe Webhooks",
        "body": "# Create a bin for Stripe\nBIN_URL=$(hookcatch bin create --name \"Stripe Test\" --format json | jq -r '.url')\n\n# Use this URL in Stripe dashboard as webhook endpoint\necho \"Configure Stripe webhooks to: $BIN_URL\"\n\n# Wait for webhooks...\nsleep 10\n\n# Fetch and analyze captured webhooks\nhookcatch bin requests abc123xyz --format json | jq '.[] | {event: .body.type, amount: .body.data.object.amount}'"
      },
      {
        "title": "Example 2: Test Local API",
        "body": "# Start your local API on port 8000\n# python -m http.server 8000 &\n\n# Expose it via tunnel\nhookcatch tunnel 8000 --password <password>\n\n# Now external services can reach your local API via:\n# https://hookcatch.dev/tunnel/xyz789"
      },
      {
        "title": "Example 3: Debug GitHub Webhooks",
        "body": "# Create bin\nhookcatch bin create --name \"GitHub Webhooks\"\n\n# In GitHub repo settings, add webhook URL\n# Trigger events (push, PR, etc.)\n\n# View requests\nhookcatch bin requests abc123xyz --method POST --limit 10"
      },
      {
        "title": "Integration with OpenClaw Skills",
        "body": "When building OpenClaw skills that need to test webhooks:\n\n// In your skill script\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\n// Create a bin\nconst { stdout } = await execAsync('hookcatch bin create --format json');\nconst { binId, url } = JSON.parse(stdout);\n\n// Use the webhook URL in your integration\nconsole.log(`Webhook URL: ${url}`);\n\n// Later, fetch requests\nconst { stdout: requests } = await execAsync(\n  `hookcatch bin requests ${binId} --format json`\n);\nconst captured = JSON.parse(requests);\n\n// Process captured webhooks\nfor (const req of captured) {\n  console.log(`${req.method} ${req.path}: ${JSON.stringify(req.body)}`);\n}"
      },
      {
        "title": "Environment Variables",
        "body": "HOOKCATCH_API_KEY - API token for authentication (recommended for automation)\nHOOKCATCH_API_URL - Override API URL (default: https://api.hookcatch.dev)"
      },
      {
        "title": "Benefits for OpenClaw Users",
        "body": "No more ngrok setup: Use HookCatch tunnels for quick local testing\nWebhook inspection: See exactly what Stripe/Twilio/etc. is sending\nAutomation-friendly: JSON output for easy parsing in skills\nPrivate bins: Keep your test data secure with password protection\nFast & simple: One command to create bins or tunnels"
      },
      {
        "title": "Getting Help",
        "body": "Documentation: https://docs.hookcatch.dev\nDiscord: Join #hookcatch in OpenClaw Discord\nGitHub: https://github.com/hookcatch/cli\nEmail: support@hookcatch.dev"
      },
      {
        "title": "Tips",
        "body": "Use API tokens for skills: Generate a token once and use it in HOOKCATCH_API_KEY\nJSON format for automation: Always use --format json when parsing in scripts\nPrivate bins for sensitive data: Use --private for production webhook testing\nClean up after testing: Delete bins with hookcatch bin delete to stay within limits\n\nBuilt for OpenClaw by the HookCatch team 🪝"
      }
    ],
    "body": "HookCatch - Webhook Testing & Tunneling for OpenClaw\n\nHookCatch is a webhook testing and localhost tunneling tool that lets you:\n\nCreate webhook bins to capture and inspect HTTP requests\nTunnel your localhost to test webhooks locally\nManage bins and view captured requests programmatically\n\nPerfect for testing webhook integrations (Stripe, Twilio, GitHub, etc.) from your OpenClaw skills.\n\nQuick Start\n\nAuthenticate with HookCatch:\n\nhookcatch login\n# Or use API token (recommended for automation):\nhookcatch token generate\nexport HOOKCATCH_API_KEY=\"hc_live_...\"\n\n\nCreate a webhook bin:\n\nhookcatch bin create --name \"Test Stripe Webhooks\"\n# Returns: https://hookcatch.dev/b/abc123xyz\n\n\nView created bins:\n\nhookcatch bin list\n\n\nView captured requests:\n\nhookcatch bin requests abc123xyz --format json\n\n\nOR\n\nhookcatch bin requests --binId abc123xyz --format json\n\nAvailable Commands\nBin Management\n\nCreate a new webhook bin:\n\nhookcatch bin create [--name \"My Bin\"] [--private] [--password \"secret\"] [--format json]\n\n\nOptions:\n\n--name: Optional bin name for organization\n--private: Create private bin (PLUS+ tier required)\n--password: Set password for private bin (min 4 chars)\n--format: Output format (json recommended for automation)\n\nReturns: Bin ID, webhook URL, and view URL\n\nList your bins:\n\nhookcatch bin list [--format json]\n\n\nShows all your bins with request counts and status.\n\nGet requests for a bin:\n\nhookcatch bin requests <binId> [--limit 50] [--format json|table] [--method GET] [--password \"secret\"]\n\n\nOptions:\n\n--limit: Number of requests to fetch (default: 50)\n--format: Output format - json for scripts, table for viewing\n--method: Filter by HTTP method (GET, POST, etc.)\n--password: Password for private bins (if required; owners can use their auth token)\n\nShow a single request:\n\nhookcatch request <requestId> <binId> [--format json|pretty] [--password \"secret\"]\n\n\nDelete a bin:\n\nhookcatch bin delete <binId> --yes\n\n\nUpdate a bin:\n\nhookcatch bin update <binId> --name \"New Name\"\nhookcatch bin update <binId> --private --password \"secret123\"\nhookcatch bin update <binId> --public\n\n\nShow a single request:\n\nhookcatch request <requestId> <binId> [--format json|pretty]\n\n\nReplay a request to a new URL:\n\nhookcatch replay <binId> <requestId> <url>\nhookcatch replay --binId <binId> --requestId <requestId> --url <url>\n\nLocalhost Tunneling\n\nExpose your localhost:\n\nhookcatch tunnel 3000\n# Creates: https://hookcatch.dev/tunnel/xyz789\n\n\nList active tunnels:\n\nhookcatch tunnel list\n\n\nStop a tunnel:\n\nhookcatch stop <tunnelId>\n\n\nForward incoming requests from the public URL to your local port 3000.\n\nTunnel limits:\n\nFREE: 5 min/session, 3 sessions/day\nPLUS: 1h/session, unlimited\nPRO/ENTERPRISE: Unlimited\nAPI Token Management\n\nGenerate long-lived API token:\n\nhookcatch token generate\n# Store the token for automation\nexport HOOKCATCH_API_KEY=\"hc_live_...\"\n\n\nCheck token status:\n\nhookcatch token status\n\n\nRevoke token:\n\nhookcatch token revoke --yes\n\n\nAccount status:\n\nhookcatch status\nhookcatch whoami\n\nUsage Examples for OpenClaw Skills\nExample 1: Test Stripe Webhooks\n# Create a bin for Stripe\nBIN_URL=$(hookcatch bin create --name \"Stripe Test\" --format json | jq -r '.url')\n\n# Use this URL in Stripe dashboard as webhook endpoint\necho \"Configure Stripe webhooks to: $BIN_URL\"\n\n# Wait for webhooks...\nsleep 10\n\n# Fetch and analyze captured webhooks\nhookcatch bin requests abc123xyz --format json | jq '.[] | {event: .body.type, amount: .body.data.object.amount}'\n\nExample 2: Test Local API\n# Start your local API on port 8000\n# python -m http.server 8000 &\n\n# Expose it via tunnel\nhookcatch tunnel 8000 --password <password>\n\n# Now external services can reach your local API via:\n# https://hookcatch.dev/tunnel/xyz789\n\nExample 3: Debug GitHub Webhooks\n# Create bin\nhookcatch bin create --name \"GitHub Webhooks\"\n\n# In GitHub repo settings, add webhook URL\n# Trigger events (push, PR, etc.)\n\n# View requests\nhookcatch bin requests abc123xyz --method POST --limit 10\n\nIntegration with OpenClaw Skills\n\nWhen building OpenClaw skills that need to test webhooks:\n\n// In your skill script\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\n\n// Create a bin\nconst { stdout } = await execAsync('hookcatch bin create --format json');\nconst { binId, url } = JSON.parse(stdout);\n\n// Use the webhook URL in your integration\nconsole.log(`Webhook URL: ${url}`);\n\n// Later, fetch requests\nconst { stdout: requests } = await execAsync(\n  `hookcatch bin requests ${binId} --format json`\n);\nconst captured = JSON.parse(requests);\n\n// Process captured webhooks\nfor (const req of captured) {\n  console.log(`${req.method} ${req.path}: ${JSON.stringify(req.body)}`);\n}\n\nEnvironment Variables\nHOOKCATCH_API_KEY - API token for authentication (recommended for automation)\nHOOKCATCH_API_URL - Override API URL (default: https://api.hookcatch.dev)\nBenefits for OpenClaw Users\nNo more ngrok setup: Use HookCatch tunnels for quick local testing\nWebhook inspection: See exactly what Stripe/Twilio/etc. is sending\nAutomation-friendly: JSON output for easy parsing in skills\nPrivate bins: Keep your test data secure with password protection\nFast & simple: One command to create bins or tunnels\nGetting Help\nDocumentation: https://docs.hookcatch.dev\nDiscord: Join #hookcatch in OpenClaw Discord\nGitHub: https://github.com/hookcatch/cli\nEmail: support@hookcatch.dev\nTips\nUse API tokens for skills: Generate a token once and use it in HOOKCATCH_API_KEY\nJSON format for automation: Always use --format json when parsing in scripts\nPrivate bins for sensitive data: Use --private for production webhook testing\nClean up after testing: Delete bins with hookcatch bin delete to stay within limits\n\nBuilt for OpenClaw by the HookCatch team 🪝"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/HookCatch/hookcatch",
    "publisherUrl": "https://clawhub.ai/HookCatch/hookcatch",
    "owner": "HookCatch",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/hookcatch",
    "downloadUrl": "https://openagent3.xyz/downloads/hookcatch",
    "agentUrl": "https://openagent3.xyz/skills/hookcatch/agent",
    "manifestUrl": "https://openagent3.xyz/skills/hookcatch/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/hookcatch/agent.md"
  }
}