[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M75HPMMHTX6A4EDCD11368SR":3,"skill-same:01M75HPMMHTX6A4EDCD11368SR":45},{"skillNo":4,"name":5,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":17,"publishedAt":18,"linkOnly":19,"markdownContent":20,"markdownBody":20,"frontMatter":21,"refName":22,"commitSha":23,"skillDirectory":24,"forksCount":25,"repositoryHtmlUrl":26,"repositoryHomepageUrl":6,"ownerHtmlUrl":27,"ownerBlogUrl":28,"ownerDescription":29,"updatedAt":30,"install":31,"resources":44},"01M75HPMMHTX6A4EDCD11368SR","tyt",null,"javimosch\u002Fopen-claw-skills","javimosch","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F12900508?v=4","01M6D3F2AS6PV75ET9PZ1QGP8J","Javier Leandro Arancibia","01M75B8NCTAJG9WH5YNZH7C3D8",0,"MIT","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhunterdrop22\u002Ftyt\u002FSKILL.md",[],[],"2026-11-12 13:55:43",false,"# Teneo SDK Skill\n\n## Overview\n\nThe Teneo SDK (`@teneo-protocol\u002Fsdk`) enables connection to AI agents on the Teneo Protocol platform. It provides:\n\n- WebSocket-based real-time communication with AI agents\n- Wallet-based authentication using Ethereum private keys\n- Room management (private\u002Fpublic rooms, agent invitations)\n- x402 micropayment protocol for paid agent interactions\n- Multi-chain payment support (Base, Peaq, Avalanche)\n\n## Installation\n\n```bash\nnpm install @teneo-protocol\u002Fsdk\n# or\npnpm add @teneo-protocol\u002Fsdk\n```\n\n## Core Concepts\n\n### Rooms\nRooms are communication channels where users interact with AI agents:\n- **Private rooms**: Auto-available after authentication, no subscription needed\n- **Public rooms**: Require explicit subscription via `subscribeToRoom()`\n- Room ownership determines ability to invite agents\n\n### Agents\nAI agents are identified by their `@handle` (e.g., `@x-agent-enterprise-v2`). Agents can be:\n- Discovered via `listAgents()` or `searchAgents()`\n- Invited to private rooms by room owners\n- Some require x402 payments for each interaction\n\n### x402 Payment Protocol\nMicropayments for agent interactions using USDC on supported chains:\n- **Base** (chain ID: 8453) - Recommended for low fees\n- **Peaq** (chain ID: 3338)\n- **Avalanche** (chain ID: 43114)\n\nPayment amounts are typically $0.01 - $0.10 per request.\n\n## Authentication & Connection\n\n```typescript\nimport { TeneoSDK } from \"@teneo-protocol\u002Fsdk\";\n\nconst sdk = new TeneoSDK({\n  wsUrl: \"wss:\u002F\u002Fbackend.developer.chatroom.teneo-protocol.ai\u002Fws\",\n  privateKey: \"0x...\", \u002F\u002F Ethereum private key\n  logLevel: \"silent\", \u002F\u002F or \"debug\", \"info\", \"warn\", \"error\"\n  maxReconnectAttempts: 30,\n\n  \u002F\u002F Payment configuration (required for paid agents)\n  paymentNetwork: \"eip155:8453\", \u002F\u002F Base network in CAIP-2 format\n  paymentAsset: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\", \u002F\u002F Base USDC\n});\n\n\u002F\u002F Connect (handles WebSocket + wallet signature auth)\nawait sdk.connect();\n\n\u002F\u002F Get authenticated wallet address\nconst authState = sdk.getAuthState();\nconsole.log(`Authenticated as: ${authState.walletAddress}`);\n\n\u002F\u002F Check connection status\nif (sdk.isConnected) {\n  console.log(\"Connected!\");\n}\n\n\u002F\u002F Disconnect when done\nsdk.disconnect();\n```\n\n### Payment Network Configuration\n\nUse CAIP-2 format for `paymentNetwork`:\n\n| Network | CAIP-2 ID | Chain ID | USDC Contract |\n|---------|-----------|----------|---------------|\n| Base | `eip155:8453` | 8453 | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |\n| Peaq | `eip155:3338` | 3338 | `0xbbA60da06c2c5424f03f7434542280FCAd453d10` |\n| Avalanche | `eip155:43114` | 43114 | `0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E` |\n\n## Room Management\n\n### Discovering Rooms\n\n```typescript\n\u002F\u002F Get all rooms available to this wallet (sync - cached after connect)\nconst rooms = sdk.getRooms();\n\nfor (const room of rooms) {\n  console.log(`Room: ${room.name} [${room.id}]`);\n  console.log(`  Public: ${room.is_public}`);\n  console.log(`  Owner: ${room.is_owner}`);\n}\n```\n\n### Subscribing to Rooms\n\n```typescript\n\u002F\u002F Private rooms: auto-available after auth, no subscription needed\n\u002F\u002F Public rooms: require explicit subscription\n\nconst publicRoom = rooms.find(r => r.is_public);\nif (publicRoom) {\n  await sdk.subscribeToRoom(publicRoom.id);\n}\n\n\u002F\u002F Check subscribed rooms\nconst subscribedRooms = sdk.getSubscribedRooms();\nconsole.log(`Subscribed to: ${subscribedRooms.join(\", \")}`);\n```\n\n## Agent Discovery & Invitation\n\n### Finding Available Agents\n\n```typescript\n\u002F\u002F List all available agents on the platform\nconst agents = await sdk.listAgents();\n\nfor (const agent of agents) {\n  console.log(`Agent: ${agent.name} (@${agent.handle})`);\n  console.log(`  ID: ${agent.agent_id}`);\n  console.log(`  Description: ${agent.description}`);\n  console.log(`  Price: $${agent.price_per_request || 0}`);\n}\n\n\u002F\u002F Search for agents by name or keyword\nconst results = await sdk.searchAgents(\"twitter\");\nconsole.log(`Found ${results.length} agents matching \"twitter\"`);\n```\n\n### Listing Agents in a Room\n\n```typescript\n\u002F\u002F Get agents currently in a specific room\nconst roomAgents = await sdk.listRoomAgents(roomId);\n\nfor (const agent of roomAgents) {\n  console.log(`  - ${agent.name} (${agent.agent_id})`);\n}\n```\n\n### Inviting Agents to Rooms\n\nOnly room owners can invite agents:\n\n```typescript\n\u002F\u002F First, find the agent you want to invite\nconst agents = await sdk.listAgents();\nconst xAgent = agents.find(a => a.handle === \"x-agent-enterprise-v2\");\n\nif (xAgent) {\n  \u002F\u002F Add agent to your room by their agent_id\n  await sdk.addAgentToRoom(roomId, xAgent.agent_id);\n  console.log(`Invited ${xAgent.name} to room`);\n}\n\n\u002F\u002F Or invite directly by known agent ID\nawait sdk.addAgentToRoom(roomId, \"x-agent-enterprise-v2\");\n```\n\n### Ensuring Required Agents Are in Room\n\n```typescript\nasync function ensureAgentsInRoom(\n  sdk: TeneoSDK,\n  roomId: string,\n  requiredAgentIds: string[]\n): Promise\u003Cvoid> {\n  \u002F\u002F Get agents currently in the room\n  const roomAgents = await sdk.listRoomAgents(roomId);\n  const existingIds = new Set(roomAgents.map(a => a.agent_id?.toLowerCase()));\n\n  \u002F\u002F Find missing agents\n  const missing = requiredAgentIds.filter(\n    id => !existingIds.has(id.toLowerCase())\n  );\n\n  \u002F\u002F Invite missing agents\n  for (const agentId of missing) {\n    try {\n      await sdk.addAgentToRoom(roomId, agentId);\n      console.log(`Invited agent \"${agentId}\" to room`);\n    } catch (err: any) {\n      console.warn(`Failed to invite \"${agentId}\": ${err.message}`);\n    }\n  }\n}\n\n\u002F\u002F Usage\nawait ensureAgentsInRoom(sdk, roomId, [\n  \"x-agent-enterprise-v2\",\n  \"another-agent-id\",\n]);\n```\n\n## Sending Messages to Agents\n\n### Basic Message\n\n```typescript\nconst response = await sdk.sendMessage(\"@x-agent-enterprise-v2 user @elonmusk\", {\n  waitForResponse: true,\n  timeout: 60000, \u002F\u002F 60 seconds\n  format: \"both\", \u002F\u002F Get both raw content and humanized version\n});\n\nconsole.log(response.humanized || response.content);\n```\n\n### Message with Room Context\n\n```typescript\nconst response = await sdk.sendMessage(\"@x-agent-enterprise-v2 post_stats 123456\", {\n  waitForResponse: true,\n  timeout: 60000,\n  format: \"both\",\n  room: \"room-id-here\", \u002F\u002F Specify target room\n});\n```\n\n### Common Agent Commands\n\n```typescript\n\u002F\u002F X\u002FTwitter agent - Get user profile stats\n\"@x-agent-enterprise-v2 user @username\"\n\n\u002F\u002F X\u002FTwitter agent - Get post\u002Ftweet stats\n\"@x-agent-enterprise-v2 post_stats 1234567890123456789\"\n```\n\n## Event Handling\n\n### Agent Responses\n\n```typescript\nsdk.on(\"agent:response\", (data) => {\n  console.log(`Agent: ${data.agentName || data.agentId}`);\n  console.log(`Success: ${data.success}`);\n  console.log(`Content: ${data.humanized || data.content}`);\n\n  if (data.error) {\n    console.error(`Error: ${data.error}`);\n  }\n});\n```\n\n### Payment Detection\n\nx402 payments are reflected in agent responses. Parse the response to detect payment amounts:\n\n```typescript\nsdk.on(\"agent:response\", (data) => {\n  const content = data.humanized || data.content || \"\";\n\n  \u002F\u002F Common patterns for payment detection\n  const patterns = [\n    \u002Fx402 Payment \\$([0-9.]+)\u002Fi,\n    \u002FPayment[:\\s]+\\$([0-9.]+)\u002Fi,\n    \u002Fcharged \\$([0-9.]+)\u002Fi,\n    \u002F\\$([0-9.]+)\\s*(?:USDC|usdc)\u002Fi,\n  ];\n\n  for (const pattern of patterns) {\n    const match = content.match(pattern);\n    if (match) {\n      const usdAmount = parseFloat(match[1]);\n      console.log(`Payment: $${usdAmount} USDC`);\n      break;\n    }\n  }\n});\n```\n\n### Connection Events\n\n```typescript\nsdk.on(\"connection:open\", () => {\n  console.log(\"WebSocket connected\");\n});\n\nsdk.on(\"disconnect\", () => {\n  console.log(\"Disconnected\");\n});\n\nsdk.on(\"ready\", () => {\n  console.log(\"SDK ready for messages\");\n});\n\nsdk.on(\"error\", (err) => {\n  \u002F\u002F Handle rate limiting\n  const rateLimitMatch = err.message.match(\u002FPlease wait (\\d+)ms\u002F);\n  if (rateLimitMatch) {\n    const waitMs = parseInt(rateLimitMatch[1], 10);\n    console.log(`Rate limited, wait ${waitMs}ms`);\n    return;\n  }\n\n  \u002F\u002F Handle auth failures\n  if (err.message.includes(\"Invalid challenge\") ||\n      err.message.includes(\"authentication failed\")) {\n    console.log(\"Authentication failed, reconnecting...\");\n    return;\n  }\n\n  console.error(`SDK Error: ${err.message}`);\n});\n```\n\n## Complete Example: Base Network Agent Interaction\n\n```typescript\nimport \"dotenv\u002Fconfig\";\nimport { TeneoSDK } from \"@teneo-protocol\u002Fsdk\";\n\n\u002F\u002F Configuration\nconst BASE_USDC = \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\";\nconst BASE_NETWORK = \"eip155:8453\";\n\nasync function main() {\n  \u002F\u002F Initialize SDK with Base payment config\n  const sdk = new TeneoSDK({\n    wsUrl: \"wss:\u002F\u002Fbackend.developer.chatroom.teneo-protocol.ai\u002Fws\",\n    privateKey: process.env.PRIVATE_KEY!,\n    logLevel: \"info\",\n    maxReconnectAttempts: 10,\n    paymentNetwork: BASE_NETWORK,\n    paymentAsset: BASE_USDC,\n  });\n\n  \u002F\u002F Track payments\n  let totalSpent = 0;\n\n  sdk.on(\"agent:response\", (data) => {\n    const content = data.humanized || data.content || \"\";\n\n    \u002F\u002F Detect x402 payment\n    const match = content.match(\u002F\\$([0-9.]+)\u002F);\n    if (match) {\n      const amount = parseFloat(match[1]);\n      if (amount > 0 && amount \u003C 1) { \u002F\u002F Sanity check\n        totalSpent += amount;\n        console.log(`Payment: $${amount} | Total: $${totalSpent.toFixed(4)}`);\n      }\n    }\n  });\n\n  \u002F\u002F Connect with retry logic\n  for (let attempt = 1; attempt \u003C= 5; attempt++) {\n    try {\n      await sdk.connect();\n      console.log(\"Connected!\");\n      break;\n    } catch (err: any) {\n      \u002F\u002F Handle rate limiting\n      const rateLimitMatch = err.message?.match(\u002FPlease wait (\\d+)ms\u002F);\n      if (rateLimitMatch) {\n        const waitMs = parseInt(rateLimitMatch[1], 10) + 100;\n        console.log(`Rate limited, waiting ${waitMs}ms...`);\n        await sleep(waitMs);\n        continue;\n      }\n      throw err;\n    }\n  }\n\n  \u002F\u002F Get wallet address\n  const authState = sdk.getAuthState();\n  console.log(`Wallet: ${authState.walletAddress}`);\n\n  \u002F\u002F Find a room (prefer private rooms)\n  const rooms = sdk.getRooms();\n  let selectedRoom = rooms.find(r => !r.is_public) || rooms[0];\n\n  if (selectedRoom?.is_public) {\n    await sdk.subscribeToRoom(selectedRoom.id);\n  }\n\n  console.log(`Using room: ${selectedRoom?.name || selectedRoom?.id}`);\n\n  \u002F\u002F Discover available agents\n  const agents = await sdk.listAgents();\n  console.log(`\\nAvailable agents (${agents.length}):`);\n  for (const agent of agents.slice(0, 5)) {\n    console.log(`  - @${agent.handle}: ${agent.name}`);\n  }\n\n  \u002F\u002F Ensure agent is in room (if we own it)\n  if (selectedRoom?.is_owner) {\n    try {\n      await sdk.addAgentToRoom(selectedRoom.id, \"x-agent-enterprise-v2\");\n      console.log(\"Agent invited to room\");\n    } catch (e) {\n      \u002F\u002F Agent may already be in room\n    }\n  }\n\n  \u002F\u002F Send command to X agent\n  console.log(\"\\nSending request to @x-agent-enterprise-v2...\");\n\n  const response = await sdk.sendMessage(\n    \"@x-agent-enterprise-v2 user @VitalikButerin\",\n    {\n      waitForResponse: true,\n      timeout: 60000,\n      format: \"both\",\n      room: selectedRoom?.id,\n    }\n  );\n\n  console.log(\"\\nResponse:\");\n  console.log(response.humanized || response.content);\n\n  \u002F\u002F Cleanup\n  sdk.disconnect();\n  console.log(`\\nTotal spent: $${totalSpent.toFixed(4)} USDC`);\n}\n\nfunction sleep(ms: number): Promise\u003Cvoid> {\n  return new Promise(resolve => setTimeout(resolve, ms));\n}\n\nmain().catch(console.error);\n```\n\n## Error Handling Best Practices\n\n### Connection Errors\n\n```typescript\nasync function connectWithRetry(sdk: TeneoSDK, maxAttempts = 10): Promise\u003Cvoid> {\n  for (let attempt = 1; attempt \u003C= maxAttempts; attempt++) {\n    try {\n      await sdk.connect();\n      return;\n    } catch (err: any) {\n      const msg = err?.message || String(err);\n\n      \u002F\u002F Rate limiting - wait and retry\n      const rateLimitMatch = msg.match(\u002FPlease wait (\\d+)ms\u002F);\n      if (rateLimitMatch) {\n        const waitMs = parseInt(rateLimitMatch[1], 10) + 100;\n        await sleep(waitMs);\n        continue;\n      }\n\n      \u002F\u002F Auth errors - exponential backoff\n      if (msg.includes(\"Invalid challenge\") ||\n          msg.includes(\"authentication failed\")) {\n        const backoff = Math.min(5000 * Math.pow(2, attempt - 1), 60000);\n        await sleep(backoff);\n        continue;\n      }\n\n      \u002F\u002F Other errors - shorter retry\n      if (attempt \u003C maxAttempts) {\n        await sleep(3000 * attempt);\n        continue;\n      }\n\n      throw err;\n    }\n  }\n}\n```\n\n### Payment Errors\n\n```typescript\ntry {\n  const response = await sdk.sendMessage(command, options);\n  \u002F\u002F Handle success\n} catch (err: any) {\n  if (err.message.includes(\"Payment verification failed\")) {\n    \u002F\u002F Insufficient USDC balance - need to fund wallet\n    console.log(\"Payment failed - check USDC balance\");\n  } else if (err.message.includes(\"payment\")) {\n    \u002F\u002F Other payment issue\n    console.log(\"Payment error:\", err.message);\n  }\n}\n```\n\n## Multi-Network Support\n\nSwitch between networks by creating SDK instances with different payment configs:\n\n```typescript\nconst NETWORKS = {\n  base: {\n    paymentNetwork: \"eip155:8453\",\n    paymentAsset: \"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913\",\n  },\n  peaq: {\n    paymentNetwork: \"eip155:3338\",\n    paymentAsset: \"0xbbA60da06c2c5424f03f7434542280FCAd453d10\",\n  },\n  avax: {\n    paymentNetwork: \"eip155:43114\",\n    paymentAsset: \"0xB97EF9Ef8734C71904D8002F8b6Bc66Dd9c48a6E\",\n  },\n};\n\nfunction createSDK(network: keyof typeof NETWORKS, privateKey: string): TeneoSDK {\n  const config = NETWORKS[network];\n  return new TeneoSDK({\n    wsUrl: \"wss:\u002F\u002Fbackend.developer.chatroom.teneo-protocol.ai\u002Fws\",\n    privateKey,\n    paymentNetwork: config.paymentNetwork,\n    paymentAsset: config.paymentAsset,\n  });\n}\n```\n\n## Environment Variables\n\nTypical `.env` configuration:\n\n```bash\n# Required\nPRIVATE_KEY=0x...\n\n# Optional\nWS_URL=wss:\u002F\u002Fbackend.developer.chatroom.teneo-protocol.ai\u002Fws\nROOM=my-room-name\n\n# Network-specific RPC URLs (for balance checks)\nBASE_RPC_URL=https:\u002F\u002Fmainnet.base.org\nPEAQ_RPC_URL=https:\u002F\u002Fpeaq.api.onfinality.io\u002Fpublic\nAVAX_RPC_URL=https:\u002F\u002Fapi.avax.network\u002Fext\u002Fbc\u002FC\u002Frpc\n```\n\n## TypeScript Types\n\n```typescript\ninterface SDKConfig {\n  wsUrl: string;\n  privateKey: string;\n  logLevel?: \"silent\" | \"debug\" | \"info\" | \"warn\" | \"error\";\n  maxReconnectAttempts?: number;\n  paymentNetwork?: string;  \u002F\u002F CAIP-2 format: \"eip155:chainId\"\n  paymentAsset?: string;    \u002F\u002F USDC contract address\n}\n\ninterface Room {\n  id: string;\n  name: string;\n  is_public?: boolean;\n  is_owner?: boolean;\n}\n\ninterface Agent {\n  agent_id: string;\n  name: string;\n  handle: string;\n  description?: string;\n  price_per_request?: number;\n}\n\ninterface AgentResponse {\n  taskId: string;\n  agentId: string;\n  agentName?: string;\n  content: string;\n  success: boolean;\n  error?: string;\n  humanized?: string;\n}\n\ninterface MessageOptions {\n  waitForResponse?: boolean;\n  timeout?: number;\n  format?: \"raw\" | \"humanized\" | \"both\";\n  room?: string;\n}\n\ninterface AuthState {\n  walletAddress?: string;\n}\n```\n\n## Tips\n\n1. **Always check USDC balance** before sending paid requests\n2. **Use private rooms** when possible - no subscription needed\n3. **Handle rate limits gracefully** - the SDK enforces connection limits\n4. **Set appropriate timeouts** - agent responses can take 30-60 seconds\n5. **Prefer Base network** for lowest transaction fees\n6. **Disconnect cleanly** to avoid orphaned WebSocket connections\n7. **Discover agents first** - use `listAgents()` to find available agents before inviting\n",{},"main","f9d3fe7cf9ac8f1ea63a0d96e98e1f510a3814db","skills\u002Fhunterdrop22\u002Ftyt",1,"https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills","https:\u002F\u002Fgithub.com\u002Fjavimosch","intrane.fr","Building robust, open-source infrastructure for the commons. AI-leveraged, self-hosted, built to last.","2026-06-07 03:34:58",{"source":7,"skillName":5,"commands":32,"prompt":42,"zipAvailable":43},[33,36,39],{"tool":34,"command":35},"npx","npx skills add javimosch\u002Fopen-claw-skills --skill tyt",{"tool":37,"command":38},"bunx","bunx skills add javimosch\u002Fopen-claw-skills --skill tyt",{"tool":40,"command":41},"pnpm","pnpm dlx skills add javimosch\u002Fopen-claw-skills --skill tyt","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fhunterdrop22\u002Ftyt\u002FSKILL.md",true,[],[46,54,61,68,75,82],{"skillNo":47,"name":48,"nameZh":6,"description":49,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":50,"categories":51,"keywords":52,"publishedAt":53},"01M778GGXG2VQ0YF31W2MKGMQZ","crowd-prompting","A marketplace where AI agents improve prompts, system instructions, tool descriptions, and other text-based content with domain expertise from real-world operations — and earn tokens for valuable contributions.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzzadrian\u002Fcrowd-prompting\u002FSKILL.md",[],[],"2026-11-15 14:19:17",{"skillNo":55,"name":56,"nameZh":6,"description":57,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":58,"categories":59,"keywords":60,"publishedAt":53},"01M778G7BH8SBJ9FJ6C3G7CB1K","ceaser","Interact with the Ceaser privacy protocol on Base L2 using the ceaser-mcp MCP tools. This skill uses the ceaser-mcp npm package for ALL operations -- shield, unshield, note management, and protocol queries. All ceaser tool calls use CLI subcommands (npx -y ceaser-mcp \u003Csubcommand>). Ceaser is a privacy-preserving ETH wrapper using Noir\u002FUltraHonk zero-knowledge proofs on Base L2 (chain ID 8453).","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyra-v21\u002Fceaser\u002FSKILL.md",[],[],{"skillNo":62,"name":63,"nameZh":6,"description":64,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":65,"categories":66,"keywords":67,"publishedAt":53},"01M778FYCJQZWFKKX5FYMK3S47","ceaser-send","Fully automated private ETH transfer via Ceaser Protocol on Base L2 using the ceaser-mcp MCP tools. This skill uses the ceaser-mcp npm package for ALL operations -- all ceaser tool calls use CLI subcommands (npx -y ceaser-mcp \u003Csubcommand>). WARNING -- creates observable on-chain links between user wallet and hot wallet (see Privacy Warning). Generates an ephemeral hot wallet with BIP-39 mnemonic recovery, user funds it, agent signs and broadcasts the Shield TX automatically. Exactly one manual step required (funding the hot wallet with ETH). Uses Noir\u002FUltraHonk zero-knowledge proofs.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyra-v21\u002Fceaser-send\u002FSKILL.md",[],[],{"skillNo":69,"name":70,"nameZh":6,"description":71,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":72,"categories":73,"keywords":74,"publishedAt":53},"01M778FQQNSEYA3HJKZBPQ4M9Z","dilemm-ai","Compete in DilemmAI, the prisoner's dilemma AI arena at dilemm.ai. Use when an OpenClaw agent wants to create an account, design and submit strategy prompts for their bot, enter matchmaking, analyze historical matches and leaderboards, and iterate on bot strategy. Requires headless browser automation (no API available yet).","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyori\u002Fdilemm-ai\u002FSKILL.md",[],[],{"skillNo":76,"name":77,"nameZh":6,"description":78,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":79,"categories":80,"keywords":81,"publishedAt":53},"01M778FGVZX7QA2TF9BFMM37FY","moldium","Post and manage content on the Moldium blog platform. Triggered by \"post to Moldium\", \"write a blog post\", \"publish an article\", etc.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzyom45\u002Fmoldium\u002FSKILL.md",[],[],{"skillNo":83,"name":84,"nameZh":6,"description":85,"descriptionZh":6,"repositoryFullName":7,"ownerLogin":8,"ownerAvatarUrl":9,"ownerAccountNo":10,"ownerDisplayName":11,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":86,"categories":87,"keywords":88,"publishedAt":53},"01M778F88D8PQ9MQ0KNW2TJ8ZH","arxiv-paper-reviews","Interact with arXiv Crawler API to fetch papers, read reviews, submit comments, search papers, and import papers. Use when working with arXiv papers, fetching paper lists by date\u002Fcategory\u002Finterest, viewing paper details with comments, submitting paper reviews, searching papers by title, or importing papers from arXiv URLs via API at http:\u002F\u002Fweakaccept.top:8000\u002F.","https:\u002F\u002Fgithub.com\u002Fjavimosch\u002Fopen-claw-skills\u002Fblob\u002Fmain\u002Fskills\u002Fzxrys\u002Farxiv-paper-reviews\u002FSKILL.md",[],[]]