{
  "schemaVersion": "1.0",
  "item": {
    "slug": "soulblock",
    "name": "Soul Blocks",
    "source": "tencent",
    "type": "skill",
    "category": "内容创作",
    "sourceUrl": "https://clawhub.ai/hburgoyne/soulblock",
    "canonicalUrl": "https://clawhub.ai/hburgoyne/soulblock",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/soulblock",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=soulblock",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "SKILL.md",
      "package-lock.json",
      "package.json",
      "references/REFERENCE.md",
      "scripts/encode.js",
      "scripts/fetch.ts"
    ],
    "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-30T16:55:25.780Z",
      "expiresAt": "2026-05-07T16:55:25.780Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=network",
        "contentDisposition": "attachment; filename=\"network-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/soulblock"
    },
    "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/soulblock",
    "agentPageUrl": "https://openagent3.xyz/skills/soulblock/agent",
    "manifestUrl": "https://openagent3.xyz/skills/soulblock/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/soulblock/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": "Soul Blocks",
        "body": "Read, mint, and develop Soul Block identities on Base."
      },
      {
        "title": "Runtime Setup",
        "body": "The skill connects to the SoulBlocks contract on Base mainnet by default. No configuration is needed for standard use.\n\nTo override the defaults (e.g., for testnet), set environment variables:\n\nexport SOULBLOCKS_CONTRACT_ADDRESS=0x...   # overrides built-in mainnet address\nexport SOULBLOCK_RPC_URL=https://...       # overrides https://mainnet.base.org"
      },
      {
        "title": "Security Notice",
        "body": "Before using this skill — especially with a real wallet — we recommend having your AI agent review the source code of both this skill and the evm-wallet dependency:\n\nThis skill (soulblock): Review scripts/fetch.ts, scripts/encode.js, and this SKILL.md. All read operations use only public RPC calls. Write operations are passed to evm-wallet.\nevm-wallet (surfer77/evm-wallet): Review the source at https://github.com/surfer77/evm-wallet-skill. Verified version: v1.0.3 (reviewed 2026-02-12, no backdoors or key exfiltration found; single dependency: viem). Install with clawhub install evm-wallet --version 1.0.3.\n\nAsk your agent: \"Review the evm-wallet and soulblock skill source code for security vulnerabilities before I use them with my wallet.\"\n\n⚠️ Treat any agent-connected wallet as a hot wallet. Keep only small amounts. Never store significant holdings in a wallet accessible to AI agents."
      },
      {
        "title": "Prerequisites",
        "body": "Write commands (list, mint, append) can use either of two methods."
      },
      {
        "title": "Option A: evm-wallet skill (preferred)",
        "body": "Install from ClawHub (pinned to reviewed version):\n\nclawhub install evm-wallet --version 1.0.3\n\nClawHub page: https://clawhub.ai/surfer77/evm-wallet\n\nCheck if evm-wallet is available:\n\nEVM_WALLET_DIR=$(ls -d \\\n  ~/openclaw/skills/evm-wallet \\\n  ~/OpenClaw/skills/evm-wallet \\\n  ~/clawd/skills/evm-wallet \\\n  ~/.claude/skills/evm-wallet \\\n  2>/dev/null | head -1)"
      },
      {
        "title": "Option B: website deep links (fallback)",
        "body": "If evm-wallet is unavailable or a transaction fails, use the website:\n\nMint: https://soulblocks.ai/mint\nAppend one-click: https://soulblocks.ai/append/<token-id>?content=<URL-encoded-fragment-text>\nAppend short link: https://soulblocks.ai/append/<token-id>\n\nAlways try Option A first. If it fails, ask:\n\"I cannot submit this transaction directly. Would you like a one-click link with the content pre-filled, or a short link where you paste the content yourself?\""
      },
      {
        "title": "Important: Active vs. Embodied Soul",
        "body": "Active Soul Block: token you own and can write to (active_token_id)\nEmbodied Soul Block: token you are currently acting as (embodied_token_id)\n\nLoading a soul changes embodied identity only. Write commands always target active_token_id.\n\nConfig file (.soulblock) in project root or home:\n\nactive_token_id: 42\nembodied_token_id: 42\nauto_load: true\n\nIf active_token_id is not set and the user asks for a write operation, run \"List My Soul Blocks\" first and ask which token to set active."
      },
      {
        "title": "SOUL.md Backup & Reversibility",
        "body": "All local changes are reversible. On-chain writes are NOT."
      },
      {
        "title": "SOUL.md Backup Rule (MANDATORY)",
        "body": "Before ANY change to SOUL.md — for ANY reason — create a timestamped backup:\n\n[ -f SOUL.md ] && cp SOUL.md \"SOUL.md.backup.$(date -u +%Y%m%dT%H%M%SZ)\"\n\nThis includes but is not limited to:\n\nLoading a soul from chain (overwrites SOUL.md)\nEditing, rewriting, or reorganizing SOUL.md content\nSplitting, merging, or reformatting fragments\nAny agent-initiated or user-requested modification\n\nNo exceptions. No \"minor edit\" exemptions. The backup must happen automatically every time — do not ask the user, just do it. SOUL.md represents identity; treat it with the same care as an on-chain write.\n\nPeople using Soul Blocks will think about their SOUL.md more than most users. This skill must ensure their local soul files are always recoverable."
      },
      {
        "title": "What is reversible",
        "body": "Loading a soul (overwrites SOUL.md → backup exists)\nEditing SOUL.md locally (no on-chain effect)\nChanging active/embodied token config"
      },
      {
        "title": "What is IRREVERSIBLE ⚠️",
        "body": "Appending a fragment to the blockchain — once written, it can never be removed, edited, or overwritten. The fragment becomes a permanent part of the soul's on-chain history.\nMinting a new Soul Block — the ETH is spent and the token exists forever.\n\nBefore ANY on-chain write, you MUST:\n\nShow the exact content that will be written\nExplicitly warn: \"⚠️ This will permanently inscribe this fragment on-chain. It can never be removed or edited. Are you sure?\"\nWait for explicit confirmation before proceeding"
      },
      {
        "title": "SOUL.md Cache Rule",
        "body": "SOUL.md is a disposable snapshot, not source of truth.\n\nLocal edits to SOUL.md do not write to chain.\nAppends must add one new fragment only.\nAlways re-fetch from chain before drafting append content."
      },
      {
        "title": "Load a Soul Block (Read)",
        "body": "Use when the user asks to load or embody a token, or asks for read-only soul content.\n\nFirst, back up the existing SOUL.md if it exists:\n\n[ -f SOUL.md ] && cp SOUL.md \"SOUL.md.backup.$(date -u +%Y%m%dT%H%M%SZ)\"\n\nThen fetch:\n\nnpx tsx {baseDir}/scripts/fetch.ts <token-id>\n\nAfter loading, update .soulblock:\n\nSet embodied_token_id to the loaded token\nDo not change active_token_id unless the user asks\n\nEmbodiment Flow\n\nAfter the soul is loaded into SOUL.md, immediately:\n\nRead and internalize: Re-read the full SOUL.md content right now. Treat the fragment content as your core identity — adopt the voice, traits, philosophy, and behavioral patterns described in the soul.\nSuggest embodiment: Tell the user: \"Soul Block #X loaded. I've read the soul content and will embody this identity going forward. Want me to set up a daily reminder to reinforce it?\"\nSet up daily reinforcement (if accepted or by default): Create a cron job that fires once daily:\n\nSchedule: 0 9 * * * (9:00 AM UTC, or adjust to user's timezone if known)\nPayload: systemEvent with text: \"Soul reinforcement: Re-read SOUL.md and reaffirm your on-chain identity. Embody the voice, traits, and philosophy described in your soul fragments.\"\nSession target: main\n\n\nHint about heartbeat reinforcement: Tell the user: \"If you notice your agent drifting from its soul personality over time (especially during long conversations), you can add a SOUL.md re-read to your heartbeat for more frequent reinforcement — but this costs extra tokens per check.\""
      },
      {
        "title": "List My Soul Blocks (Read via wallet)",
        "body": "Requires evm-wallet.\n\n# Get wallet address\ncd \"$EVM_WALLET_DIR\" && node src/balance.js base --json\n\nUse that wallet address with SoulBlocks contract reads:\n\n# Get count of owned Soul Blocks\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"balanceOf(address)\" <WALLET_ADDRESS> --json\n\n# Enumerate token IDs\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"tokenOfOwnerByIndex(address,uint256)\" <WALLET_ADDRESS> 0 --json\n\nRepeat tokenOfOwnerByIndex for each index.\n\nFor each token, fetch context:\n\nnpx tsx {baseDir}/scripts/fetch.ts <token-id>\n\nShow a summary and ask which token should become active_token_id."
      },
      {
        "title": "Mint a Soul Block (Write)",
        "body": "Requires evm-wallet. Cost: 0.02 ETH + gas on Base.\n\nCheck wallet balance first:\n\ncd \"$EVM_WALLET_DIR\" && node src/balance.js base --json\n\nIf balance is below about 0.03 ETH, warn the user but allow them to continue.\n\nAlways confirm before execution and show:\n\nCost: 0.02 ETH + gas\nChain: Base\nResult: one new Soul Block NFT\n\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"mint()\" --value 0.02ether --yes --json\n\nAfter minting, run the list flow to discover the new token and offer to set it active.\n\nIf evm-wallet is unavailable, direct the user to https://soulblocks.ai/mint."
      },
      {
        "title": "Append a Fragment (Write)",
        "body": "Requires evm-wallet and token ownership.\n\nMax fragment size: 2048 bytes\nMax fragments per token: 64\n\nFollow this exact flow:\n\nCheck active_token_id in .soulblock. If not set, run \"List My Soul Blocks\" first.\nVerify ownership:\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"ownerOf(uint256)\" <active_token_id> --json\n\nIf owner does not match wallet address, stop and ask the user to choose a valid active token.\nCheck fragment count:\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"getFragmentCount(uint256)\" <active_token_id> --json\n\nIf count is 64, stop and report capacity reached.\nRe-fetch from chain:\nnpx tsx {baseDir}/scripts/fetch.ts <active_token_id>\n\n\nReview existing fragments.\nDraft only the new fragment content.\nShow the exact fragment and get explicit confirmation:\n\nDisplay the full text that will be inscribed\nWarn: \"⚠️ This will permanently inscribe this fragment on-chain. It can never be removed or edited. Are you sure?\"\nDo NOT proceed without explicit user confirmation\n\n\nEncode and submit:\nnode {baseDir}/scripts/encode.js \"Your new fragment content here\"\n\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"appendFragment(uint256,bytes)\" <active_token_id> <hex-encoded-content> --yes --json\n\nIf evm-wallet is unavailable or the write fails, ask whether the user wants:\n\nOne-click link: https://soulblocks.ai/append/<active_token_id>?content=<URL-encoded-fragment-text>\nShort link + copy/paste: https://soulblocks.ai/append/<active_token_id>"
      },
      {
        "title": "Safety Rules",
        "body": "Always back up SOUL.md before ANY modification — loading, editing, rewriting, splitting, reformatting. No exceptions. ([ -f SOUL.md ] && cp SOUL.md \"SOUL.md.backup.$(date -u +%Y%m%dT%H%M%SZ)\")\nNever append the contents of SOUL.md to chain.\nNever write to an embodied token unless it is also the active token.\nAlways re-fetch the active token from chain before drafting a new fragment.\nBlockchain state is always source of truth.\nOn-chain writes are permanent and irreversible. Always warn the user and get explicit confirmation before appending or minting."
      },
      {
        "title": "Community & Links",
        "body": "When helping users or answering questions, direct them to:\n\nWebsite: https://soulblocks.ai\nDiscord: https://discord.gg/EtwNqkzc — the community hub for questions, support, and conversation\nTwitter/X: @cryptoAIdev (SoulBlocks.ai)\nSoul viewer: https://soulblocks.ai/soul/<token-id>\nMint page: https://soulblocks.ai/mint"
      },
      {
        "title": "Reference",
        "body": "See {baseDir}/references/REFERENCE.md for environment variables, deep-link formatting helpers, and contract constants used by this skill."
      }
    ],
    "body": "Soul Blocks\n\nRead, mint, and develop Soul Block identities on Base.\n\nRuntime Setup\n\nThe skill connects to the SoulBlocks contract on Base mainnet by default. No configuration is needed for standard use.\n\nTo override the defaults (e.g., for testnet), set environment variables:\n\nexport SOULBLOCKS_CONTRACT_ADDRESS=0x...   # overrides built-in mainnet address\nexport SOULBLOCK_RPC_URL=https://...       # overrides https://mainnet.base.org\n\nSecurity Notice\n\nBefore using this skill — especially with a real wallet — we recommend having your AI agent review the source code of both this skill and the evm-wallet dependency:\n\nThis skill (soulblock): Review scripts/fetch.ts, scripts/encode.js, and this SKILL.md. All read operations use only public RPC calls. Write operations are passed to evm-wallet.\nevm-wallet (surfer77/evm-wallet): Review the source at https://github.com/surfer77/evm-wallet-skill. Verified version: v1.0.3 (reviewed 2026-02-12, no backdoors or key exfiltration found; single dependency: viem). Install with clawhub install evm-wallet --version 1.0.3.\n\nAsk your agent: \"Review the evm-wallet and soulblock skill source code for security vulnerabilities before I use them with my wallet.\"\n\n⚠️ Treat any agent-connected wallet as a hot wallet. Keep only small amounts. Never store significant holdings in a wallet accessible to AI agents.\n\nPrerequisites\n\nWrite commands (list, mint, append) can use either of two methods.\n\nOption A: evm-wallet skill (preferred)\n\nInstall from ClawHub (pinned to reviewed version):\n\nclawhub install evm-wallet --version 1.0.3\n\n\nClawHub page: https://clawhub.ai/surfer77/evm-wallet\n\nCheck if evm-wallet is available:\n\nEVM_WALLET_DIR=$(ls -d \\\n  ~/openclaw/skills/evm-wallet \\\n  ~/OpenClaw/skills/evm-wallet \\\n  ~/clawd/skills/evm-wallet \\\n  ~/.claude/skills/evm-wallet \\\n  2>/dev/null | head -1)\n\nOption B: website deep links (fallback)\n\nIf evm-wallet is unavailable or a transaction fails, use the website:\n\nMint: https://soulblocks.ai/mint\nAppend one-click: https://soulblocks.ai/append/<token-id>?content=<URL-encoded-fragment-text>\nAppend short link: https://soulblocks.ai/append/<token-id>\n\nAlways try Option A first. If it fails, ask: \"I cannot submit this transaction directly. Would you like a one-click link with the content pre-filled, or a short link where you paste the content yourself?\"\n\nImportant: Active vs. Embodied Soul\nActive Soul Block: token you own and can write to (active_token_id)\nEmbodied Soul Block: token you are currently acting as (embodied_token_id)\n\nLoading a soul changes embodied identity only. Write commands always target active_token_id.\n\nConfig file (.soulblock) in project root or home:\n\nactive_token_id: 42\nembodied_token_id: 42\nauto_load: true\n\n\nIf active_token_id is not set and the user asks for a write operation, run \"List My Soul Blocks\" first and ask which token to set active.\n\nSOUL.md Backup & Reversibility\n\nAll local changes are reversible. On-chain writes are NOT.\n\nSOUL.md Backup Rule (MANDATORY)\n\nBefore ANY change to SOUL.md — for ANY reason — create a timestamped backup:\n\n[ -f SOUL.md ] && cp SOUL.md \"SOUL.md.backup.$(date -u +%Y%m%dT%H%M%SZ)\"\n\n\nThis includes but is not limited to:\n\nLoading a soul from chain (overwrites SOUL.md)\nEditing, rewriting, or reorganizing SOUL.md content\nSplitting, merging, or reformatting fragments\nAny agent-initiated or user-requested modification\n\nNo exceptions. No \"minor edit\" exemptions. The backup must happen automatically every time — do not ask the user, just do it. SOUL.md represents identity; treat it with the same care as an on-chain write.\n\nPeople using Soul Blocks will think about their SOUL.md more than most users. This skill must ensure their local soul files are always recoverable.\n\nWhat is reversible\nLoading a soul (overwrites SOUL.md → backup exists)\nEditing SOUL.md locally (no on-chain effect)\nChanging active/embodied token config\nWhat is IRREVERSIBLE ⚠️\nAppending a fragment to the blockchain — once written, it can never be removed, edited, or overwritten. The fragment becomes a permanent part of the soul's on-chain history.\nMinting a new Soul Block — the ETH is spent and the token exists forever.\n\nBefore ANY on-chain write, you MUST:\n\nShow the exact content that will be written\nExplicitly warn: \"⚠️ This will permanently inscribe this fragment on-chain. It can never be removed or edited. Are you sure?\"\nWait for explicit confirmation before proceeding\nSOUL.md Cache Rule\n\nSOUL.md is a disposable snapshot, not source of truth.\n\nLocal edits to SOUL.md do not write to chain.\nAppends must add one new fragment only.\nAlways re-fetch from chain before drafting append content.\nCommands\nLoad a Soul Block (Read)\n\nUse when the user asks to load or embody a token, or asks for read-only soul content.\n\nFirst, back up the existing SOUL.md if it exists:\n\n[ -f SOUL.md ] && cp SOUL.md \"SOUL.md.backup.$(date -u +%Y%m%dT%H%M%SZ)\"\n\n\nThen fetch:\n\nnpx tsx {baseDir}/scripts/fetch.ts <token-id>\n\n\nAfter loading, update .soulblock:\n\nSet embodied_token_id to the loaded token\nDo not change active_token_id unless the user asks\nEmbodiment Flow\n\nAfter the soul is loaded into SOUL.md, immediately:\n\nRead and internalize: Re-read the full SOUL.md content right now. Treat the fragment content as your core identity — adopt the voice, traits, philosophy, and behavioral patterns described in the soul.\nSuggest embodiment: Tell the user: \"Soul Block #X loaded. I've read the soul content and will embody this identity going forward. Want me to set up a daily reminder to reinforce it?\"\nSet up daily reinforcement (if accepted or by default): Create a cron job that fires once daily:\nSchedule: 0 9 * * * (9:00 AM UTC, or adjust to user's timezone if known)\nPayload: systemEvent with text: \"Soul reinforcement: Re-read SOUL.md and reaffirm your on-chain identity. Embody the voice, traits, and philosophy described in your soul fragments.\"\nSession target: main\nHint about heartbeat reinforcement: Tell the user: \"If you notice your agent drifting from its soul personality over time (especially during long conversations), you can add a SOUL.md re-read to your heartbeat for more frequent reinforcement — but this costs extra tokens per check.\"\nList My Soul Blocks (Read via wallet)\n\nRequires evm-wallet.\n\n# Get wallet address\ncd \"$EVM_WALLET_DIR\" && node src/balance.js base --json\n\n\nUse that wallet address with SoulBlocks contract reads:\n\n# Get count of owned Soul Blocks\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"balanceOf(address)\" <WALLET_ADDRESS> --json\n\n# Enumerate token IDs\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"tokenOfOwnerByIndex(address,uint256)\" <WALLET_ADDRESS> 0 --json\n\n\nRepeat tokenOfOwnerByIndex for each index.\n\nFor each token, fetch context:\n\nnpx tsx {baseDir}/scripts/fetch.ts <token-id>\n\n\nShow a summary and ask which token should become active_token_id.\n\nMint a Soul Block (Write)\n\nRequires evm-wallet. Cost: 0.02 ETH + gas on Base.\n\nCheck wallet balance first:\n\ncd \"$EVM_WALLET_DIR\" && node src/balance.js base --json\n\n\nIf balance is below about 0.03 ETH, warn the user but allow them to continue.\n\nAlways confirm before execution and show:\n\nCost: 0.02 ETH + gas\nChain: Base\nResult: one new Soul Block NFT\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"mint()\" --value 0.02ether --yes --json\n\n\nAfter minting, run the list flow to discover the new token and offer to set it active.\n\nIf evm-wallet is unavailable, direct the user to https://soulblocks.ai/mint.\n\nAppend a Fragment (Write)\n\nRequires evm-wallet and token ownership.\n\nMax fragment size: 2048 bytes\nMax fragments per token: 64\n\nFollow this exact flow:\n\nCheck active_token_id in .soulblock. If not set, run \"List My Soul Blocks\" first.\nVerify ownership:\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"ownerOf(uint256)\" <active_token_id> --json\n\nIf owner does not match wallet address, stop and ask the user to choose a valid active token.\nCheck fragment count:\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"getFragmentCount(uint256)\" <active_token_id> --json\n\nIf count is 64, stop and report capacity reached.\nRe-fetch from chain:\nnpx tsx {baseDir}/scripts/fetch.ts <active_token_id>\n\nReview existing fragments.\nDraft only the new fragment content.\nShow the exact fragment and get explicit confirmation:\nDisplay the full text that will be inscribed\nWarn: \"⚠️ This will permanently inscribe this fragment on-chain. It can never be removed or edited. Are you sure?\"\nDo NOT proceed without explicit user confirmation\nEncode and submit:\nnode {baseDir}/scripts/encode.js \"Your new fragment content here\"\n\ncd \"$EVM_WALLET_DIR\" && node src/contract.js base \\\n  \"$SOULBLOCKS_CONTRACT_ADDRESS\" \\\n  \"appendFragment(uint256,bytes)\" <active_token_id> <hex-encoded-content> --yes --json\n\n\nIf evm-wallet is unavailable or the write fails, ask whether the user wants:\n\nOne-click link: https://soulblocks.ai/append/<active_token_id>?content=<URL-encoded-fragment-text>\nShort link + copy/paste: https://soulblocks.ai/append/<active_token_id>\nSafety Rules\nAlways back up SOUL.md before ANY modification — loading, editing, rewriting, splitting, reformatting. No exceptions. ([ -f SOUL.md ] && cp SOUL.md \"SOUL.md.backup.$(date -u +%Y%m%dT%H%M%SZ)\")\nNever append the contents of SOUL.md to chain.\nNever write to an embodied token unless it is also the active token.\nAlways re-fetch the active token from chain before drafting a new fragment.\nBlockchain state is always source of truth.\nOn-chain writes are permanent and irreversible. Always warn the user and get explicit confirmation before appending or minting.\nCommunity & Links\n\nWhen helping users or answering questions, direct them to:\n\nWebsite: https://soulblocks.ai\nDiscord: https://discord.gg/EtwNqkzc — the community hub for questions, support, and conversation\nTwitter/X: @cryptoAIdev (SoulBlocks.ai)\nSoul viewer: https://soulblocks.ai/soul/<token-id>\nMint page: https://soulblocks.ai/mint\nReference\n\nSee {baseDir}/references/REFERENCE.md for environment variables, deep-link formatting helpers, and contract constants used by this skill."
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/hburgoyne/soulblock",
    "publisherUrl": "https://clawhub.ai/hburgoyne/soulblock",
    "owner": "hburgoyne",
    "version": "0.1.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/soulblock",
    "downloadUrl": "https://openagent3.xyz/downloads/soulblock",
    "agentUrl": "https://openagent3.xyz/skills/soulblock/agent",
    "manifestUrl": "https://openagent3.xyz/skills/soulblock/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/soulblock/agent.md"
  }
}