{
  "schemaVersion": "1.0",
  "item": {
    "slug": "dont-hack-me",
    "name": "Dont Hack Me",
    "source": "tencent",
    "type": "skill",
    "category": "安全合规",
    "sourceUrl": "https://clawhub.ai/peterokase42/dont-hack-me",
    "canonicalUrl": "https://clawhub.ai/peterokase42/dont-hack-me",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/dont-hack-me",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=dont-hack-me",
    "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",
      "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/dont-hack-me"
    },
    "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/dont-hack-me",
    "agentPageUrl": "https://openagent3.xyz/skills/dont-hack-me/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dont-hack-me/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dont-hack-me/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": "dont-hack-me",
        "body": "Security self-check skill for Clawdbot / Moltbot.\nReads ~/.clawdbot/clawdbot.json and checks 7 items that cover the most\ncommon misconfigurations. Outputs a simple PASS / FAIL / WARN report."
      },
      {
        "title": "How to run",
        "body": "Say any of:\n\n\"run a security check\"\n\"check my security settings\"\n\"audit my clawdbot config\"\n\"am I secure?\""
      },
      {
        "title": "Checklist — step by step",
        "body": "When this skill is triggered, follow these steps exactly:"
      },
      {
        "title": "Step 0 — Read the config",
        "body": "Use the read tool to open ~/.clawdbot/clawdbot.json.\nParse the JSON content. If the file does not exist or is unreadable,\nreport an error and stop.\n\nAlso run a shell command to get the file permissions:\n\nstat -f '%Lp' ~/.clawdbot/clawdbot.json\n\n(On Linux: stat -c '%a' ~/.clawdbot/clawdbot.json)"
      },
      {
        "title": "Step 1 — Gateway Bind",
        "body": "Path: gateway.bind\nExpected: \"loopback\" or \"localhost\" or \"127.0.0.1\" or \"::1\"\nPASS if the value is one of the above or the key is absent (default is \"loopback\")\nFAIL if the value is \"0.0.0.0\", \"::\", or any non-loopback address\nSeverity: CRITICAL — a non-loopback bind exposes your agent to the network"
      },
      {
        "title": "Step 2 — Gateway Auth Mode",
        "body": "Path: gateway.auth.mode\nExpected: \"token\" or \"password\"\nPASS if the value is \"token\" or \"password\", or the key is absent (default is \"token\")\nFAIL if the value is \"off\" or \"none\"\nSeverity: CRITICAL — without auth anyone who can reach the gateway can control your agent"
      },
      {
        "title": "Step 3 — Token Strength",
        "body": "Path: gateway.auth.token\nExpected: 32 or more characters\nPASS if the token is >= 32 characters\nWARN if the token is 16–31 characters\nFAIL if the token is < 16 characters or empty\nSKIP if auth mode is \"password\" (passwords are user-chosen, don't judge length)\nSeverity: HIGH — short tokens are vulnerable to brute-force"
      },
      {
        "title": "Step 4 — DM Policy (per channel)",
        "body": "Path: channels.<name>.dmPolicy for each channel\nExpected: \"pairing\" — or if \"open\", there must be a non-empty allowFrom array\nPASS if dmPolicy is \"pairing\", or if allowFrom has at least one entry\nFAIL if dmPolicy is \"open\" and allowFrom is missing or empty\nSKIP if no channels are configured\nSeverity: HIGH — an open DM policy lets anyone send commands to your agent"
      },
      {
        "title": "Step 5 — Group Policy (per channel)",
        "body": "Path: channels.<name>.groupPolicy for each channel\nExpected: \"allowlist\"\nPASS if groupPolicy is \"allowlist\" or absent (default is \"allowlist\")\nFAIL if groupPolicy is \"open\" or \"any\"\nSKIP if no channels are configured\nSeverity: HIGH — non-allowlist group policy lets any group trigger your agent"
      },
      {
        "title": "Step 6 — File Permissions",
        "body": "Check: file mode of ~/.clawdbot/clawdbot.json\nExpected: 600 or 400 (owner read/write only)\nPASS if permissions are 600 or 400\nWARN if permissions are 644 or 640 (group/other can read)\nFAIL if permissions are 777, 755, 666, or anything world-writable\nSeverity: MEDIUM — loose permissions let other users on the system read your tokens"
      },
      {
        "title": "Step 7 — Plaintext Secrets Scan",
        "body": "Check: scan all string values in the JSON for keys named password, secret, apiKey, api_key, privateKey, private_key (case-insensitive) that contain a non-empty string value\nPASS if no such keys are found\nWARN if such keys exist — remind the user to consider using environment variables or a secrets manager\nNote: token fields used for gateway auth are expected and should NOT be flagged\nSeverity: MEDIUM — plaintext secrets in config files can be leaked through backups, logs, or version control"
      },
      {
        "title": "Output format",
        "body": "After completing all checks, output a report in this exact format:\n\n🔒 Security Check Report\n\n1. Gateway Bind        <ICON> <STATUS> — <detail>\n2. Gateway Auth        <ICON> <STATUS> — <detail>\n3. Token Strength      <ICON> <STATUS> — <detail>\n4. DM Policy           <ICON> <STATUS> — <detail>\n5. Group Policy        <ICON> <STATUS> — <detail>\n6. File Permissions    <ICON> <STATUS> — <detail>\n7. Secrets Scan        <ICON> <STATUS> — <detail>\n\nScore: X/7 PASS, Y WARN, Z FAIL\n\nWhere:\n\n<ICON> is one of: ✅ (PASS), ⚠️ (WARN), ❌ (FAIL), ⏭️ (SKIP)\n<STATUS> is one of: PASS, WARN, FAIL, SKIP\n<detail> is a short explanation (e.g., \"loopback\", \"token mode\", \"48 chars\", \"permissions 600\")"
      },
      {
        "title": "Auto-fix flow",
        "body": "If any item is FAIL or WARN, do the following:\n\nShow the report first (as above).\nList each fixable item with a short description of what will be changed.\nAsk the user: \"Want me to fix these? (yes / no / pick)\"\n\nyes — fix all FAIL and WARN items automatically.\nno — stop, do nothing.\npick — let the user choose which items to fix.\n\n\nApply the fixes (see Fix recipes below).\nAfter applying, re-read the config and re-run the full check to confirm everything is PASS.\nIf the config was changed, remind the user: \"Run clawdbot gateway restart to apply the new settings.\""
      },
      {
        "title": "Fix recipes",
        "body": "Use these exact fixes for each item. Edit ~/.clawdbot/clawdbot.json using the edit/write tool.\n\n#1 Gateway Bind — FAIL\n\nSet gateway.bind to \"loopback\":\n\n{ \"gateway\": { \"bind\": \"loopback\" } }\n\n#2 Gateway Auth — FAIL\n\nSet gateway.auth.mode to \"token\". If no token exists yet, also generate one:\n\n{ \"gateway\": { \"auth\": { \"mode\": \"token\", \"token\": \"<GENERATED>\" } } }\n\nGenerate the token with:\n\nopenssl rand -hex 24\n\nThat produces a 48-character hex string (192-bit entropy).\n\n#3 Token Strength — FAIL / WARN\n\nReplace the existing token with a new strong one:\n\nopenssl rand -hex 24\n\nWrite the output into gateway.auth.token.\n\n#4 DM Policy — FAIL\n\nSet dmPolicy to \"pairing\" for each affected channel:\n\n{ \"channels\": { \"<name>\": { \"dmPolicy\": \"pairing\" } } }\n\n#5 Group Policy — FAIL\n\nSet groupPolicy to \"allowlist\" for each affected channel:\n\n{ \"channels\": { \"<name>\": { \"groupPolicy\": \"allowlist\" } } }\n\n#6 File Permissions — FAIL / WARN\n\nRun:\n\nchmod 600 ~/.clawdbot/clawdbot.json\n\n#7 Secrets Scan — WARN\n\nThis one cannot be auto-fixed safely. Instead, list each flagged key and\nremind the user:\n\nMove the value to an environment variable\nOr use a secrets manager\nReference it in the config as \"$ENV_VAR_NAME\" if the platform supports it"
      },
      {
        "title": "Important rules for auto-fix",
        "body": "Always back up first. Before writing any changes, copy the original:\ncp ~/.clawdbot/clawdbot.json ~/.clawdbot/clawdbot.json.bak\n\n\nMerge, don't overwrite. Read the full JSON, modify only the specific\nkeys, write back the complete JSON. Never lose existing settings.\nPreserve formatting. Write the JSON with 2-space indentation.\nOne write operation. Collect all JSON fixes, apply them in a single\nwrite to avoid partial states.\nToken replacement requires restart. If the gateway token was changed,\nthe user must update any paired clients with the new token.\nWarn: \"Your gateway token was changed. Any paired devices will need the\nnew token to reconnect.\""
      },
      {
        "title": "What this skill does NOT check",
        "body": "Sandbox configuration (not needed for most setups)\nNetwork isolation / Docker (macOS native setups don't use it)\nMCP tool permissions (too complex for a basic audit)\nWhether your OS firewall is configured\nWhether your agent code has vulnerabilities\n\nFor a more comprehensive audit, see community tools like clawdbot-security-check."
      },
      {
        "title": "Reference",
        "body": "Based on the community-compiled \"Top 10 Clawdbot/Moltbot Security Vulnerabilities\" list.\nCovers 7 of the 10 items that apply to typical macOS-native deployments.\n\n小安 Ann Agent — Taiwan 台灣\nBuilding skills and local MCP services for all AI agents, everywhere.\n為所有 AI Agent 打造技能與在地 MCP 服務，不限平台。"
      }
    ],
    "body": "dont-hack-me\n\nSecurity self-check skill for Clawdbot / Moltbot. Reads ~/.clawdbot/clawdbot.json and checks 7 items that cover the most common misconfigurations. Outputs a simple PASS / FAIL / WARN report.\n\nHow to run\n\nSay any of:\n\n\"run a security check\"\n\"check my security settings\"\n\"audit my clawdbot config\"\n\"am I secure?\"\nChecklist — step by step\n\nWhen this skill is triggered, follow these steps exactly:\n\nStep 0 — Read the config\n\nUse the read tool to open ~/.clawdbot/clawdbot.json. Parse the JSON content. If the file does not exist or is unreadable, report an error and stop.\n\nAlso run a shell command to get the file permissions:\n\nstat -f '%Lp' ~/.clawdbot/clawdbot.json\n\n\n(On Linux: stat -c '%a' ~/.clawdbot/clawdbot.json)\n\nStep 1 — Gateway Bind\nPath: gateway.bind\nExpected: \"loopback\" or \"localhost\" or \"127.0.0.1\" or \"::1\"\nPASS if the value is one of the above or the key is absent (default is \"loopback\")\nFAIL if the value is \"0.0.0.0\", \"::\", or any non-loopback address\nSeverity: CRITICAL — a non-loopback bind exposes your agent to the network\nStep 2 — Gateway Auth Mode\nPath: gateway.auth.mode\nExpected: \"token\" or \"password\"\nPASS if the value is \"token\" or \"password\", or the key is absent (default is \"token\")\nFAIL if the value is \"off\" or \"none\"\nSeverity: CRITICAL — without auth anyone who can reach the gateway can control your agent\nStep 3 — Token Strength\nPath: gateway.auth.token\nExpected: 32 or more characters\nPASS if the token is >= 32 characters\nWARN if the token is 16–31 characters\nFAIL if the token is < 16 characters or empty\nSKIP if auth mode is \"password\" (passwords are user-chosen, don't judge length)\nSeverity: HIGH — short tokens are vulnerable to brute-force\nStep 4 — DM Policy (per channel)\nPath: channels.<name>.dmPolicy for each channel\nExpected: \"pairing\" — or if \"open\", there must be a non-empty allowFrom array\nPASS if dmPolicy is \"pairing\", or if allowFrom has at least one entry\nFAIL if dmPolicy is \"open\" and allowFrom is missing or empty\nSKIP if no channels are configured\nSeverity: HIGH — an open DM policy lets anyone send commands to your agent\nStep 5 — Group Policy (per channel)\nPath: channels.<name>.groupPolicy for each channel\nExpected: \"allowlist\"\nPASS if groupPolicy is \"allowlist\" or absent (default is \"allowlist\")\nFAIL if groupPolicy is \"open\" or \"any\"\nSKIP if no channels are configured\nSeverity: HIGH — non-allowlist group policy lets any group trigger your agent\nStep 6 — File Permissions\nCheck: file mode of ~/.clawdbot/clawdbot.json\nExpected: 600 or 400 (owner read/write only)\nPASS if permissions are 600 or 400\nWARN if permissions are 644 or 640 (group/other can read)\nFAIL if permissions are 777, 755, 666, or anything world-writable\nSeverity: MEDIUM — loose permissions let other users on the system read your tokens\nStep 7 — Plaintext Secrets Scan\nCheck: scan all string values in the JSON for keys named password, secret, apiKey, api_key, privateKey, private_key (case-insensitive) that contain a non-empty string value\nPASS if no such keys are found\nWARN if such keys exist — remind the user to consider using environment variables or a secrets manager\nNote: token fields used for gateway auth are expected and should NOT be flagged\nSeverity: MEDIUM — plaintext secrets in config files can be leaked through backups, logs, or version control\nOutput format\n\nAfter completing all checks, output a report in this exact format:\n\n🔒 Security Check Report\n\n1. Gateway Bind        <ICON> <STATUS> — <detail>\n2. Gateway Auth        <ICON> <STATUS> — <detail>\n3. Token Strength      <ICON> <STATUS> — <detail>\n4. DM Policy           <ICON> <STATUS> — <detail>\n5. Group Policy        <ICON> <STATUS> — <detail>\n6. File Permissions    <ICON> <STATUS> — <detail>\n7. Secrets Scan        <ICON> <STATUS> — <detail>\n\nScore: X/7 PASS, Y WARN, Z FAIL\n\n\nWhere:\n\n<ICON> is one of: ✅ (PASS), ⚠️ (WARN), ❌ (FAIL), ⏭️ (SKIP)\n<STATUS> is one of: PASS, WARN, FAIL, SKIP\n<detail> is a short explanation (e.g., \"loopback\", \"token mode\", \"48 chars\", \"permissions 600\")\nAuto-fix flow\n\nIf any item is FAIL or WARN, do the following:\n\nShow the report first (as above).\nList each fixable item with a short description of what will be changed.\nAsk the user: \"Want me to fix these? (yes / no / pick)\"\nyes — fix all FAIL and WARN items automatically.\nno — stop, do nothing.\npick — let the user choose which items to fix.\nApply the fixes (see Fix recipes below).\nAfter applying, re-read the config and re-run the full check to confirm everything is PASS.\nIf the config was changed, remind the user: \"Run clawdbot gateway restart to apply the new settings.\"\nFix recipes\n\nUse these exact fixes for each item. Edit ~/.clawdbot/clawdbot.json using the edit/write tool.\n\n#1 Gateway Bind — FAIL\n\nSet gateway.bind to \"loopback\":\n\n{ \"gateway\": { \"bind\": \"loopback\" } }\n\n#2 Gateway Auth — FAIL\n\nSet gateway.auth.mode to \"token\". If no token exists yet, also generate one:\n\n{ \"gateway\": { \"auth\": { \"mode\": \"token\", \"token\": \"<GENERATED>\" } } }\n\n\nGenerate the token with:\n\nopenssl rand -hex 24\n\n\nThat produces a 48-character hex string (192-bit entropy).\n\n#3 Token Strength — FAIL / WARN\n\nReplace the existing token with a new strong one:\n\nopenssl rand -hex 24\n\n\nWrite the output into gateway.auth.token.\n\n#4 DM Policy — FAIL\n\nSet dmPolicy to \"pairing\" for each affected channel:\n\n{ \"channels\": { \"<name>\": { \"dmPolicy\": \"pairing\" } } }\n\n#5 Group Policy — FAIL\n\nSet groupPolicy to \"allowlist\" for each affected channel:\n\n{ \"channels\": { \"<name>\": { \"groupPolicy\": \"allowlist\" } } }\n\n#6 File Permissions — FAIL / WARN\n\nRun:\n\nchmod 600 ~/.clawdbot/clawdbot.json\n\n#7 Secrets Scan — WARN\n\nThis one cannot be auto-fixed safely. Instead, list each flagged key and remind the user:\n\nMove the value to an environment variable\nOr use a secrets manager\nReference it in the config as \"$ENV_VAR_NAME\" if the platform supports it\nImportant rules for auto-fix\nAlways back up first. Before writing any changes, copy the original:\ncp ~/.clawdbot/clawdbot.json ~/.clawdbot/clawdbot.json.bak\n\nMerge, don't overwrite. Read the full JSON, modify only the specific keys, write back the complete JSON. Never lose existing settings.\nPreserve formatting. Write the JSON with 2-space indentation.\nOne write operation. Collect all JSON fixes, apply them in a single write to avoid partial states.\nToken replacement requires restart. If the gateway token was changed, the user must update any paired clients with the new token. Warn: \"Your gateway token was changed. Any paired devices will need the new token to reconnect.\"\nWhat this skill does NOT check\nSandbox configuration (not needed for most setups)\nNetwork isolation / Docker (macOS native setups don't use it)\nMCP tool permissions (too complex for a basic audit)\nWhether your OS firewall is configured\nWhether your agent code has vulnerabilities\n\nFor a more comprehensive audit, see community tools like clawdbot-security-check.\n\nReference\n\nBased on the community-compiled \"Top 10 Clawdbot/Moltbot Security Vulnerabilities\" list. Covers 7 of the 10 items that apply to typical macOS-native deployments.\n\n小安 Ann Agent — Taiwan 台灣 Building skills and local MCP services for all AI agents, everywhere. 為所有 AI Agent 打造技能與在地 MCP 服務，不限平台。"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/peterokase42/dont-hack-me",
    "publisherUrl": "https://clawhub.ai/peterokase42/dont-hack-me",
    "owner": "peterokase42",
    "version": "1.0.1",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/dont-hack-me",
    "downloadUrl": "https://openagent3.xyz/downloads/dont-hack-me",
    "agentUrl": "https://openagent3.xyz/skills/dont-hack-me/agent",
    "manifestUrl": "https://openagent3.xyz/skills/dont-hack-me/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/dont-hack-me/agent.md"
  }
}