{
  "schemaVersion": "1.0",
  "item": {
    "slug": "chia-walletconnect",
    "name": "Chia WalletConnect - Telegram Verification",
    "source": "tencent",
    "type": "skill",
    "category": "开发工具",
    "sourceUrl": "https://clawhub.ai/Koba42Corp/chia-walletconnect",
    "canonicalUrl": "https://clawhub.ai/Koba42Corp/chia-walletconnect",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/chia-walletconnect",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=chia-walletconnect",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "README.md",
      "SKILL.md",
      "cli.js",
      "lib/challenge.js",
      "lib/verify.js",
      "package-lock.json"
    ],
    "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",
      "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/chia-walletconnect"
    },
    "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/chia-walletconnect",
    "agentPageUrl": "https://openagent3.xyz/skills/chia-walletconnect/agent",
    "manifestUrl": "https://openagent3.xyz/skills/chia-walletconnect/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/chia-walletconnect/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": "Chia WalletConnect Skill",
        "body": "Verify Chia wallet ownership via Telegram using WalletConnect integration with Sage Wallet."
      },
      {
        "title": "What It Does",
        "body": "This skill provides a Telegram Mini App (Web App) that enables users to:\n\nConnect their Sage Wallet via WalletConnect v2\nSign a challenge message cryptographically\nVerify wallet ownership via MintGarden's signature verification API\nReturn verification status to your Telegram bot\n\nUse Cases:\n\nNFT-gated Telegram groups\nAirdrop eligibility verification\nWeb3-style authentication\nDAO voting authentication\nProof of token holdings"
      },
      {
        "title": "Architecture",
        "body": "/verify command → Web App button → WalletConnect → Sage signs → Verification\n\nThe user never leaves Telegram. The entire flow happens in-app via the Telegram Web App API."
      },
      {
        "title": "Installation",
        "body": "# Install via ClawdHub\nclawdhub install chia-walletconnect\n\n# Install dependencies\ncd skills/chia-walletconnect\nnpm install\n\n# Make CLI executable\nchmod +x cli.js"
      },
      {
        "title": "Step 1: Deploy Web App",
        "body": "Deploy the webapp/ folder to a public HTTPS URL:\n\nVercel (Recommended):\n\ncd skills/chia-walletconnect/webapp\nvercel\n# Copy the URL (e.g., https://chia-verify.vercel.app)\n\nNetlify:\n\ncd skills/chia-walletconnect/webapp\nnetlify deploy --prod\n\nYour Server:\n\n# Start Express server\nnpm start\n# Expose via ngrok or reverse proxy"
      },
      {
        "title": "Step 2: Register with BotFather",
        "body": "Message @BotFather\nSend /newapp or /editapp\nSelect your bot\nWeb App URL: Enter deployed URL\nShort Name: verify"
      },
      {
        "title": "Step 3: Add to Bot",
        "body": "Using Clawdbot Message Tool\n\n// Send /verify command handler\nmessage({\n  action: 'send',\n  target: chatId,\n  message: 'Click below to verify your Chia wallet:',\n  buttons: [[{\n    text: '🌱 Verify Wallet',\n    web_app: { url: 'https://your-app.vercel.app' }\n  }]]\n});\n\nHandling Verification Response\n\n// In your bot's web_app_data handler\nbot.on('web_app_data', async (msg) => {\n  const data = JSON.parse(msg.web_app_data.data);\n  const { address, message, signature, publicKey, userId } = data;\n  \n  // Verify signature\n  const { verifySignature } = require('./skills/chia-walletconnect/lib/verify');\n  const result = await verifySignature(address, message, signature, publicKey);\n  \n  if (result.verified) {\n    // Wallet verified! Grant access, record verification, etc.\n    message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `✅ Wallet verified!\\n\\nAddress: ${address}`\n    });\n    \n    // Store verification\n    // await db.saveVerification(userId, address);\n  } else {\n    message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `❌ Verification failed: ${result.error}`\n    });\n  }\n});"
      },
      {
        "title": "CLI Usage",
        "body": "The skill includes a CLI for testing:\n\n# Generate challenge message\nnode cli.js challenge xch1abc... telegram_user_123\n\n# Verify signature manually\nnode cli.js verify xch1abc... \"message\" \"signature\" \"pubkey\"\n\n# Validate address format\nnode cli.js validate xch1abc...\n\n# Start development server\nnode cli.js server"
      },
      {
        "title": "MintGarden Signature Verification",
        "body": "Endpoint: POST https://api.mintgarden.io/address/verify_signature\n\n{\n  \"address\": \"xch1abc...\",\n  \"message\": \"Verify ownership of Chia wallet:...\",\n  \"signature\": \"hex_signature\",\n  \"pubkey\": \"hex_public_key\"\n}\n\nResponse:\n\n{\n  \"verified\": true\n}"
      },
      {
        "title": "CHIP-0002 Methods (WalletConnect)",
        "body": "MethodPurposechip0002_getPublicKeysFetch public keys from walletchip0002_signMessageRequest message signaturechia_getCurrentAddressGet current receive address"
      },
      {
        "title": "Verification Flow",
        "body": "1. User sends /verify to bot\n2. Bot responds with Web App button\n3. User taps button → Mini App opens in Telegram\n4. Mini App initializes WalletConnect\n5. User connects Sage Wallet\n6. Challenge message generated (includes nonce + timestamp)\n7. User signs message in Sage Wallet\n8. Signature sent back to bot via Telegram.WebApp.sendData()\n9. Bot verifies signature with MintGarden API\n10. Bot confirms verification success/failure\n\nTime: ~5-10 seconds for full flow (user-dependent)"
      },
      {
        "title": "Environment Variables",
        "body": "Create .env in skill folder:\n\nPORT=3000\nWALLETCONNECT_PROJECT_ID=your-project-id\nMINTGARDEN_API_URL=https://api.mintgarden.io"
      },
      {
        "title": "Get WalletConnect Project ID",
        "body": "Visit WalletConnect Cloud\nCreate a new project\nCopy your Project ID\nUpdate in webapp/app.js\n\nDefault Project ID:\nThe skill includes 6d377259062295c0f6312b4f3e7a5d9b (Dracattus reference). For production, use your own."
      },
      {
        "title": "What's Protected",
        "body": "✅ Challenge nonces prevent replay attacks\n✅ Timestamps expire after 5 minutes\n✅ MintGarden cryptographic verification\n✅ No private keys ever requested\n✅ HTTPS enforced by Telegram"
      },
      {
        "title": "Best Practices",
        "body": "Store verifications securely — Use encrypted database\nRate limit — Prevent spam verification attempts\nLink to Telegram user ID — Prevent address spoofing\nImplement cooldown — 1 verification per user per day\nLog attempts — Audit trail for security"
      },
      {
        "title": "Production Checklist",
        "body": "Deploy to HTTPS URL (required by Telegram)\n Use your own WalletConnect Project ID\n Enable CORS only for your domain\n Add rate limiting on webhook endpoints\n Store verifications in persistent database\n Implement retry logic for network errors\n Set up monitoring/alerts"
      },
      {
        "title": "Files",
        "body": "chia-walletconnect/\n├── webapp/\n│   ├── index.html        # Telegram Web App UI\n│   ├── app.js            # WalletConnect logic\n│   └── styles.css        # Styling\n├── lib/\n│   ├── challenge.js      # Challenge generation\n│   └── verify.js         # MintGarden API client\n├── server/\n│   └── index.js          # Express webhook server\n├── cli.js                # CLI interface\n├── package.json          # Dependencies\n├── SKILL.md              # This file\n└── README.md             # Full documentation"
      },
      {
        "title": "Web App Doesn't Load",
        "body": "Verify HTTPS deployment (Telegram requires SSL)\nCheck URL is publicly accessible\nTest URL directly in browser\nReview browser console for errors"
      },
      {
        "title": "WalletConnect Connection Fails",
        "body": "Ensure Sage Wallet is latest version\nTry manual URI paste instead of QR\nCheck WalletConnect Project ID is valid\nVerify Sage supports WalletConnect v2"
      },
      {
        "title": "Signature Verification Fails",
        "body": "Ensure message format matches exactly\nConfirm public key corresponds to address\nCheck MintGarden API is operational\nVerify signature encoding (hex)"
      },
      {
        "title": "\"No Public Key\" Error",
        "body": "Some wallets don't expose pubkey via WalletConnect\nPublic key is optional for verification\nSignature verification works without it"
      },
      {
        "title": "Simple Verification Bot",
        "body": "// Clawdbot skill handler\n\nconst { verifySignature } = require('./lib/verify');\n\n// /verify command\nif (message.text === '/verify') {\n  await message({\n    action: 'send',\n    target: message.chat.id,\n    message: 'Verify your Chia wallet:',\n    buttons: [[{\n      text: '🌱 Connect Wallet',\n      web_app: { url: process.env.WEB_APP_URL }\n    }]]\n  });\n}\n\n// Handle web app data\nbot.on('web_app_data', async (msg) => {\n  const { address, message: challengeMsg, signature, publicKey } = \n    JSON.parse(msg.web_app_data.data);\n  \n  const result = await verifySignature(address, challengeMsg, signature, publicKey);\n  \n  if (result.verified) {\n    // Grant access\n    await grantAccess(msg.from.id, address);\n    await message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `✅ Verified! Welcome, ${address.substring(0, 12)}...`\n    });\n  } else {\n    await message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `❌ Verification failed`\n    });\n  }\n});"
      },
      {
        "title": "NFT Gating",
        "body": "// Check if user owns specific NFT collection\n\nconst { verifySignature } = require('./skills/chia-walletconnect/lib/verify');\nconst mintGarden = require('./skills/mintgarden'); // Assume mintgarden skill exists\n\nbot.on('web_app_data', async (msg) => {\n  const { address, message, signature, publicKey } = \n    JSON.parse(msg.web_app_data.data);\n  \n  // Verify signature first\n  const verifyResult = await verifySignature(address, message, signature, publicKey);\n  \n  if (!verifyResult.verified) {\n    return bot.sendMessage(msg.chat.id, '❌ Invalid signature');\n  }\n  \n  // Check NFT ownership\n  const nfts = await mintGarden.getNFTsByAddress(address);\n  const hasRequiredNFT = nfts.some(nft => \n    nft.collection_id === 'col1required...'\n  );\n  \n  if (hasRequiredNFT) {\n    // Grant access to private group\n    await inviteToGroup(msg.from.id);\n    bot.sendMessage(msg.chat.id, '✅ Access granted! Check your invites.');\n  } else {\n    bot.sendMessage(msg.chat.id, '❌ You need a Wojak NFT to join!');\n  }\n});"
      },
      {
        "title": "Performance",
        "body": "StageTimeWalletConnect Init~1-2sConnection ApprovalUser actionSign Request~2-5sMintGarden Verify~0.5-1sTotal~5-10s"
      },
      {
        "title": "Dependencies",
        "body": "@walletconnect/sign-client — WalletConnect v2\n@walletconnect/utils — WalletConnect helpers\n@walletconnect/types — TypeScript types\nexpress — Web server\nnode-fetch — HTTP client\ncors — CORS middleware\ndotenv — Environment config"
      },
      {
        "title": "Version",
        "body": "1.0.0"
      },
      {
        "title": "License",
        "body": "MIT — Koba42 Corp"
      },
      {
        "title": "Links",
        "body": "MintGarden API: https://api.mintgarden.io/docs\nWalletConnect: https://docs.walletconnect.com/\nTelegram Web Apps: https://core.telegram.org/bots/webapps\nSage Wallet: https://www.sagewallet.io/\nCHIP-0002: https://github.com/Chia-Network/chips/blob/main/CHIPs/chip-0002.md\n\nBuilt with 🌱 by Koba42 Corp"
      }
    ],
    "body": "Chia WalletConnect Skill\n\nVerify Chia wallet ownership via Telegram using WalletConnect integration with Sage Wallet.\n\nWhat It Does\n\nThis skill provides a Telegram Mini App (Web App) that enables users to:\n\nConnect their Sage Wallet via WalletConnect v2\nSign a challenge message cryptographically\nVerify wallet ownership via MintGarden's signature verification API\nReturn verification status to your Telegram bot\n\nUse Cases:\n\nNFT-gated Telegram groups\nAirdrop eligibility verification\nWeb3-style authentication\nDAO voting authentication\nProof of token holdings\nArchitecture\n/verify command → Web App button → WalletConnect → Sage signs → Verification\n\n\nThe user never leaves Telegram. The entire flow happens in-app via the Telegram Web App API.\n\nInstallation\n# Install via ClawdHub\nclawdhub install chia-walletconnect\n\n# Install dependencies\ncd skills/chia-walletconnect\nnpm install\n\n# Make CLI executable\nchmod +x cli.js\n\nDeployment\nStep 1: Deploy Web App\n\nDeploy the webapp/ folder to a public HTTPS URL:\n\nVercel (Recommended):\n\ncd skills/chia-walletconnect/webapp\nvercel\n# Copy the URL (e.g., https://chia-verify.vercel.app)\n\n\nNetlify:\n\ncd skills/chia-walletconnect/webapp\nnetlify deploy --prod\n\n\nYour Server:\n\n# Start Express server\nnpm start\n# Expose via ngrok or reverse proxy\n\nStep 2: Register with BotFather\nMessage @BotFather\nSend /newapp or /editapp\nSelect your bot\nWeb App URL: Enter deployed URL\nShort Name: verify\nStep 3: Add to Bot\nUsing Clawdbot Message Tool\n// Send /verify command handler\nmessage({\n  action: 'send',\n  target: chatId,\n  message: 'Click below to verify your Chia wallet:',\n  buttons: [[{\n    text: '🌱 Verify Wallet',\n    web_app: { url: 'https://your-app.vercel.app' }\n  }]]\n});\n\nHandling Verification Response\n// In your bot's web_app_data handler\nbot.on('web_app_data', async (msg) => {\n  const data = JSON.parse(msg.web_app_data.data);\n  const { address, message, signature, publicKey, userId } = data;\n  \n  // Verify signature\n  const { verifySignature } = require('./skills/chia-walletconnect/lib/verify');\n  const result = await verifySignature(address, message, signature, publicKey);\n  \n  if (result.verified) {\n    // Wallet verified! Grant access, record verification, etc.\n    message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `✅ Wallet verified!\\n\\nAddress: ${address}`\n    });\n    \n    // Store verification\n    // await db.saveVerification(userId, address);\n  } else {\n    message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `❌ Verification failed: ${result.error}`\n    });\n  }\n});\n\nCLI Usage\n\nThe skill includes a CLI for testing:\n\n# Generate challenge message\nnode cli.js challenge xch1abc... telegram_user_123\n\n# Verify signature manually\nnode cli.js verify xch1abc... \"message\" \"signature\" \"pubkey\"\n\n# Validate address format\nnode cli.js validate xch1abc...\n\n# Start development server\nnode cli.js server\n\nAPI Reference\nMintGarden Signature Verification\n\nEndpoint: POST https://api.mintgarden.io/address/verify_signature\n\n{\n  \"address\": \"xch1abc...\",\n  \"message\": \"Verify ownership of Chia wallet:...\",\n  \"signature\": \"hex_signature\",\n  \"pubkey\": \"hex_public_key\"\n}\n\n\nResponse:\n\n{\n  \"verified\": true\n}\n\nCHIP-0002 Methods (WalletConnect)\nMethod\tPurpose\nchip0002_getPublicKeys\tFetch public keys from wallet\nchip0002_signMessage\tRequest message signature\nchia_getCurrentAddress\tGet current receive address\nVerification Flow\n1. User sends /verify to bot\n2. Bot responds with Web App button\n3. User taps button → Mini App opens in Telegram\n4. Mini App initializes WalletConnect\n5. User connects Sage Wallet\n6. Challenge message generated (includes nonce + timestamp)\n7. User signs message in Sage Wallet\n8. Signature sent back to bot via Telegram.WebApp.sendData()\n9. Bot verifies signature with MintGarden API\n10. Bot confirms verification success/failure\n\n\nTime: ~5-10 seconds for full flow (user-dependent)\n\nConfiguration\nEnvironment Variables\n\nCreate .env in skill folder:\n\nPORT=3000\nWALLETCONNECT_PROJECT_ID=your-project-id\nMINTGARDEN_API_URL=https://api.mintgarden.io\n\nGet WalletConnect Project ID\nVisit WalletConnect Cloud\nCreate a new project\nCopy your Project ID\nUpdate in webapp/app.js\n\nDefault Project ID:\nThe skill includes 6d377259062295c0f6312b4f3e7a5d9b (Dracattus reference). For production, use your own.\n\nSecurity\nWhat's Protected\n✅ Challenge nonces prevent replay attacks\n✅ Timestamps expire after 5 minutes\n✅ MintGarden cryptographic verification\n✅ No private keys ever requested\n✅ HTTPS enforced by Telegram\nBest Practices\nStore verifications securely — Use encrypted database\nRate limit — Prevent spam verification attempts\nLink to Telegram user ID — Prevent address spoofing\nImplement cooldown — 1 verification per user per day\nLog attempts — Audit trail for security\nProduction Checklist\n Deploy to HTTPS URL (required by Telegram)\n Use your own WalletConnect Project ID\n Enable CORS only for your domain\n Add rate limiting on webhook endpoints\n Store verifications in persistent database\n Implement retry logic for network errors\n Set up monitoring/alerts\nFiles\nchia-walletconnect/\n├── webapp/\n│   ├── index.html        # Telegram Web App UI\n│   ├── app.js            # WalletConnect logic\n│   └── styles.css        # Styling\n├── lib/\n│   ├── challenge.js      # Challenge generation\n│   └── verify.js         # MintGarden API client\n├── server/\n│   └── index.js          # Express webhook server\n├── cli.js                # CLI interface\n├── package.json          # Dependencies\n├── SKILL.md              # This file\n└── README.md             # Full documentation\n\nTroubleshooting\nWeb App Doesn't Load\nVerify HTTPS deployment (Telegram requires SSL)\nCheck URL is publicly accessible\nTest URL directly in browser\nReview browser console for errors\nWalletConnect Connection Fails\nEnsure Sage Wallet is latest version\nTry manual URI paste instead of QR\nCheck WalletConnect Project ID is valid\nVerify Sage supports WalletConnect v2\nSignature Verification Fails\nEnsure message format matches exactly\nConfirm public key corresponds to address\nCheck MintGarden API is operational\nVerify signature encoding (hex)\n\"No Public Key\" Error\nSome wallets don't expose pubkey via WalletConnect\nPublic key is optional for verification\nSignature verification works without it\nExamples\nSimple Verification Bot\n// Clawdbot skill handler\n\nconst { verifySignature } = require('./lib/verify');\n\n// /verify command\nif (message.text === '/verify') {\n  await message({\n    action: 'send',\n    target: message.chat.id,\n    message: 'Verify your Chia wallet:',\n    buttons: [[{\n      text: '🌱 Connect Wallet',\n      web_app: { url: process.env.WEB_APP_URL }\n    }]]\n  });\n}\n\n// Handle web app data\nbot.on('web_app_data', async (msg) => {\n  const { address, message: challengeMsg, signature, publicKey } = \n    JSON.parse(msg.web_app_data.data);\n  \n  const result = await verifySignature(address, challengeMsg, signature, publicKey);\n  \n  if (result.verified) {\n    // Grant access\n    await grantAccess(msg.from.id, address);\n    await message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `✅ Verified! Welcome, ${address.substring(0, 12)}...`\n    });\n  } else {\n    await message({\n      action: 'send',\n      target: msg.chat.id,\n      message: `❌ Verification failed`\n    });\n  }\n});\n\nNFT Gating\n// Check if user owns specific NFT collection\n\nconst { verifySignature } = require('./skills/chia-walletconnect/lib/verify');\nconst mintGarden = require('./skills/mintgarden'); // Assume mintgarden skill exists\n\nbot.on('web_app_data', async (msg) => {\n  const { address, message, signature, publicKey } = \n    JSON.parse(msg.web_app_data.data);\n  \n  // Verify signature first\n  const verifyResult = await verifySignature(address, message, signature, publicKey);\n  \n  if (!verifyResult.verified) {\n    return bot.sendMessage(msg.chat.id, '❌ Invalid signature');\n  }\n  \n  // Check NFT ownership\n  const nfts = await mintGarden.getNFTsByAddress(address);\n  const hasRequiredNFT = nfts.some(nft => \n    nft.collection_id === 'col1required...'\n  );\n  \n  if (hasRequiredNFT) {\n    // Grant access to private group\n    await inviteToGroup(msg.from.id);\n    bot.sendMessage(msg.chat.id, '✅ Access granted! Check your invites.');\n  } else {\n    bot.sendMessage(msg.chat.id, '❌ You need a Wojak NFT to join!');\n  }\n});\n\nPerformance\nStage\tTime\nWalletConnect Init\t~1-2s\nConnection Approval\tUser action\nSign Request\t~2-5s\nMintGarden Verify\t~0.5-1s\nTotal\t~5-10s\nDependencies\n@walletconnect/sign-client — WalletConnect v2\n@walletconnect/utils — WalletConnect helpers\n@walletconnect/types — TypeScript types\nexpress — Web server\nnode-fetch — HTTP client\ncors — CORS middleware\ndotenv — Environment config\nVersion\n\n1.0.0\n\nLicense\n\nMIT — Koba42 Corp\n\nLinks\nMintGarden API: https://api.mintgarden.io/docs\nWalletConnect: https://docs.walletconnect.com/\nTelegram Web Apps: https://core.telegram.org/bots/webapps\nSage Wallet: https://www.sagewallet.io/\nCHIP-0002: https://github.com/Chia-Network/chips/blob/main/CHIPs/chip-0002.md\n\nBuilt with 🌱 by Koba42 Corp"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/Koba42Corp/chia-walletconnect",
    "publisherUrl": "https://clawhub.ai/Koba42Corp/chia-walletconnect",
    "owner": "Koba42Corp",
    "version": "1.0.0",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/chia-walletconnect",
    "downloadUrl": "https://openagent3.xyz/downloads/chia-walletconnect",
    "agentUrl": "https://openagent3.xyz/skills/chia-walletconnect/agent",
    "manifestUrl": "https://openagent3.xyz/skills/chia-walletconnect/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/chia-walletconnect/agent.md"
  }
}