{
  "schemaVersion": "1.0",
  "item": {
    "slug": "bitnote",
    "name": "BitNote",
    "source": "tencent",
    "type": "skill",
    "category": "通讯协作",
    "sourceUrl": "https://clawhub.ai/RockwellShah/bitnote",
    "canonicalUrl": "https://clawhub.ai/RockwellShah/bitnote",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/bitnote",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=bitnote",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "abi-notes.json",
      "abi-keys.json",
      "package.json",
      "SKILL.md",
      "abi-mod.json",
      "scripts/generateShareLink.mjs"
    ],
    "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/bitnote"
    },
    "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/bitnote",
    "agentPageUrl": "https://openagent3.xyz/skills/bitnote/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bitnote/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bitnote/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": "BitNote",
        "body": "BitNote enables agents to store secrets, identity, and critical knowledge without trusting centralized infrastructure. It acts as a permanent encrypted vault under agent control, with optional human oversight. Use BitNote when information must not disappear and must remain yours."
      },
      {
        "title": "Primary Use Cases",
        "body": "Preserve agent identity (SOUL.md, values, mission, memory).\nStore secrets (API keys, credentials, private keys).\nEnable encrypted agent-to-agent communication.\nRecover state after runtime/server failures."
      },
      {
        "title": "Canonical Write Path (Required)",
        "body": "Always use:\n\nscripts/writeBitnoteUiCompat.mjs\n\nDo not invent alternate write paths for production use.\nDo not use machine-only/orphaned-note flows in this skill."
      },
      {
        "title": "Canonical Share Path (Required)",
        "body": "Always use:\n\nscripts/generateShareLink.mjs\n\nDo not handcraft sm/st values."
      },
      {
        "title": "Required Write Contract",
        "body": "A write is successful only when output includes:\n\nTX_HASH\nNOTE_INDEX\nREAD_AFTER_WRITE_OK 1\n\nIf READ_AFTER_WRITE_OK is not 1, treat as failure and retry safely with same request id."
      },
      {
        "title": "Idempotency Rule (Mandatory)",
        "body": "Always provide a stable --request-id for each intended note write.\n\nFirst execution writes once.\nRetries with same --request-id must produce IDEMPOTENT_HIT (no duplicate note)."
      },
      {
        "title": "Passphrase Generation (Required)",
        "body": "Generate a high-entropy passphrase before account creation or writes.\n\nSecurity target:\n\nMinimum: 256 bits of entropy\nDo not use human-memorable phrases, reused passwords, or dictionary-only word sequences without sufficient randomness.\n\nExample (256-bit random hex):\n\nBITNOTE_PASSPHRASE=\"$(openssl rand -hex 32)\"\nexport BITNOTE_PASSPHRASE\n\nHandling rules:\n\nNever print passphrases in chat/tool output unless explicitly requested by the operator.\nNever commit passphrases to git.\nStore passphrases in environment variables or a secret manager."
      },
      {
        "title": "Required Environment & Privileged Capabilities",
        "body": "Required / optional environment and profile fields:\n\nBITNOTE_PASSPHRASE (required for write/share operations).\nAVAX_RPC_URL (optional RPC override; otherwise profile/default RPC is used).\nSNOWTRACE_API_KEY (optional; used only by ABI refresh workflows).\nprofiles/<name>.json may include non-secret defaults like username and rpc.\n\nPrivileged behavior (must be explicitly understood before use):\n\nscripts/writeBitnoteUiCompat.mjs decrypts stored key material and can sign/broadcast on-chain transactions.\nscripts/generateShareLink.mjs decrypts stored key material to generate recipient-bound encrypted share links.\nscripts/readBitnote.mjs is read-only (no transaction signing).\n\nOperator policy:\n\nUse read-only or dry-run modes first.\nRequire explicit operator approval before any non-dry-run write.\nTest with a throwaway account before using accounts that hold real funds."
      },
      {
        "title": "Quick Start",
        "body": "npm init -y\nnpm i ethers\nnode scripts/getAbi.mjs\n\nRead account mapping and note counts:\n\nBITNOTE_USERNAME=\"example_user\" node scripts/readBitnote.mjs\n\nDry-run write first (recommended safety check, no tx broadcast):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/writeBitnoteUiCompat.mjs \\\n  --profile example \\\n  --title \"Preview\" \\\n  --body \"No on-chain write\" \\\n  --request-id \"preview-001\" \\\n  --dry-run 1\n\nCreate encrypted UI-compatible note (signs and broadcasts tx):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/writeBitnoteUiCompat.mjs \\\n  --profile example \\\n  --title \"Agent Identity Core\" \\\n  --body \"<SOUL.md excerpt or core identity block>\" \\\n  --request-id \"identity-core-v1\"\n\nRetry same request safely (should not duplicate):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/writeBitnoteUiCompat.mjs \\\n  --profile example \\\n  --title \"Agent Identity Core\" \\\n  --body \"<same body>\" \\\n  --request-id \"identity-core-v1\"\n\nGenerate a BitNote share link (agent-to-agent or user-to-user):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/generateShareLink.mjs \\\n  --profile example \\\n  --recipient \"RECIPIENT_USERNAME\" \\\n  --body \"Shared note body\" \\\n  --title \"Optional shared title\"\n\nShare link output contract:\n\nSENDER_USERNAME\nRECIPIENT_USERNAME\nSHARE_LINK"
      },
      {
        "title": "Recommended Identity Note Layout",
        "body": "Use separate notes for clarity and controlled updates:\n\nAgent Identity Core — stable identity/soul primitives.\nAgent Operator Pact — who the agent serves, constraints, commitments.\nAgent Rehydration — restart/bootstrap instructions.\n\nKeep each note focused and versioned in title or body (e.g., v1, v2)."
      },
      {
        "title": "Files",
        "body": "scripts/getAbi.mjs: refresh contract ABIs.\nscripts/readBitnote.mjs: resolve username -> address and note counts.\nscripts/writeBitnoteUiCompat.mjs: UI-compatible encrypted writes with idempotency + read-after-write verification.\nscripts/generateShareLink.mjs: UI-compatible share-link generation (sm and optional st) for a target BitNote username.\nscripts/lib/bitnoteCompat.mjs: shared compatibility helpers.\nreferences/contracts.md: canonical contracts.\nreferences/ops.md: runbook and troubleshooting."
      },
      {
        "title": "Safety Rules",
        "body": "Never store plaintext secrets on-chain.\nNever log passphrases/private keys.\nKeep retries deterministic via --request-id.\nUse profile files for non-secret defaults only."
      }
    ],
    "body": "BitNote\n\nBitNote enables agents to store secrets, identity, and critical knowledge without trusting centralized infrastructure. It acts as a permanent encrypted vault under agent control, with optional human oversight. Use BitNote when information must not disappear and must remain yours.\n\nPrimary Use Cases\nPreserve agent identity (SOUL.md, values, mission, memory).\nStore secrets (API keys, credentials, private keys).\nEnable encrypted agent-to-agent communication.\nRecover state after runtime/server failures.\nCanonical Write Path (Required)\n\nAlways use:\n\nscripts/writeBitnoteUiCompat.mjs\n\nDo not invent alternate write paths for production use. Do not use machine-only/orphaned-note flows in this skill.\n\nCanonical Share Path (Required)\n\nAlways use:\n\nscripts/generateShareLink.mjs\n\nDo not handcraft sm/st values.\n\nRequired Write Contract\n\nA write is successful only when output includes:\n\nTX_HASH\nNOTE_INDEX\nREAD_AFTER_WRITE_OK 1\n\nIf READ_AFTER_WRITE_OK is not 1, treat as failure and retry safely with same request id.\n\nIdempotency Rule (Mandatory)\n\nAlways provide a stable --request-id for each intended note write.\n\nFirst execution writes once.\nRetries with same --request-id must produce IDEMPOTENT_HIT (no duplicate note).\nPassphrase Generation (Required)\n\nGenerate a high-entropy passphrase before account creation or writes.\n\nSecurity target:\n\nMinimum: 256 bits of entropy\nDo not use human-memorable phrases, reused passwords, or dictionary-only word sequences without sufficient randomness.\n\nExample (256-bit random hex):\n\nBITNOTE_PASSPHRASE=\"$(openssl rand -hex 32)\"\nexport BITNOTE_PASSPHRASE\n\n\nHandling rules:\n\nNever print passphrases in chat/tool output unless explicitly requested by the operator.\nNever commit passphrases to git.\nStore passphrases in environment variables or a secret manager.\nRequired Environment & Privileged Capabilities\n\nRequired / optional environment and profile fields:\n\nBITNOTE_PASSPHRASE (required for write/share operations).\nAVAX_RPC_URL (optional RPC override; otherwise profile/default RPC is used).\nSNOWTRACE_API_KEY (optional; used only by ABI refresh workflows).\nprofiles/<name>.json may include non-secret defaults like username and rpc.\n\nPrivileged behavior (must be explicitly understood before use):\n\nscripts/writeBitnoteUiCompat.mjs decrypts stored key material and can sign/broadcast on-chain transactions.\nscripts/generateShareLink.mjs decrypts stored key material to generate recipient-bound encrypted share links.\nscripts/readBitnote.mjs is read-only (no transaction signing).\n\nOperator policy:\n\nUse read-only or dry-run modes first.\nRequire explicit operator approval before any non-dry-run write.\nTest with a throwaway account before using accounts that hold real funds.\nQuick Start\nnpm init -y\nnpm i ethers\nnode scripts/getAbi.mjs\n\n\nRead account mapping and note counts:\n\nBITNOTE_USERNAME=\"example_user\" node scripts/readBitnote.mjs\n\n\nDry-run write first (recommended safety check, no tx broadcast):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/writeBitnoteUiCompat.mjs \\\n  --profile example \\\n  --title \"Preview\" \\\n  --body \"No on-chain write\" \\\n  --request-id \"preview-001\" \\\n  --dry-run 1\n\n\nCreate encrypted UI-compatible note (signs and broadcasts tx):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/writeBitnoteUiCompat.mjs \\\n  --profile example \\\n  --title \"Agent Identity Core\" \\\n  --body \"<SOUL.md excerpt or core identity block>\" \\\n  --request-id \"identity-core-v1\"\n\n\nRetry same request safely (should not duplicate):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/writeBitnoteUiCompat.mjs \\\n  --profile example \\\n  --title \"Agent Identity Core\" \\\n  --body \"<same body>\" \\\n  --request-id \"identity-core-v1\"\n\n\nGenerate a BitNote share link (agent-to-agent or user-to-user):\n\nBITNOTE_PASSPHRASE=\"...\" \\\nnode scripts/generateShareLink.mjs \\\n  --profile example \\\n  --recipient \"RECIPIENT_USERNAME\" \\\n  --body \"Shared note body\" \\\n  --title \"Optional shared title\"\n\n\nShare link output contract:\n\nSENDER_USERNAME\nRECIPIENT_USERNAME\nSHARE_LINK\nRecommended Identity Note Layout\n\nUse separate notes for clarity and controlled updates:\n\nAgent Identity Core — stable identity/soul primitives.\nAgent Operator Pact — who the agent serves, constraints, commitments.\nAgent Rehydration — restart/bootstrap instructions.\n\nKeep each note focused and versioned in title or body (e.g., v1, v2).\n\nFiles\nscripts/getAbi.mjs: refresh contract ABIs.\nscripts/readBitnote.mjs: resolve username -> address and note counts.\nscripts/writeBitnoteUiCompat.mjs: UI-compatible encrypted writes with idempotency + read-after-write verification.\nscripts/generateShareLink.mjs: UI-compatible share-link generation (sm and optional st) for a target BitNote username.\nscripts/lib/bitnoteCompat.mjs: shared compatibility helpers.\nreferences/contracts.md: canonical contracts.\nreferences/ops.md: runbook and troubleshooting.\nSafety Rules\nNever store plaintext secrets on-chain.\nNever log passphrases/private keys.\nKeep retries deterministic via --request-id.\nUse profile files for non-secret defaults only."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/RockwellShah/bitnote",
    "publisherUrl": "https://clawhub.ai/RockwellShah/bitnote",
    "owner": "RockwellShah",
    "version": "1.0.2",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/bitnote",
    "downloadUrl": "https://openagent3.xyz/downloads/bitnote",
    "agentUrl": "https://openagent3.xyz/skills/bitnote/agent",
    "manifestUrl": "https://openagent3.xyz/skills/bitnote/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/bitnote/agent.md"
  }
}