[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698SPPW3CXH4C9C774EAWES":3,"skill-same:01M698SPPW3CXH4C9C774EAWES":302},{"skillNo":4,"name":5,"nameZh":6,"description":7,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":15,"categories":16,"keywords":22,"publishedAt":43,"linkOnly":44,"markdownContent":45,"markdownBody":46,"frontMatter":47,"refName":51,"commitSha":52,"skillDirectory":53,"forksCount":54,"repositoryHtmlUrl":55,"repositoryHomepageUrl":56,"ownerHtmlUrl":57,"ownerBlogUrl":56,"ownerDescription":58,"updatedAt":59,"install":60,"resources":73},"01M698SPPW3CXH4C9C774EAWES","telegram-e2e-userbot",null,"Prove user-visible OpenClaw Telegram behavior on Telegram's Test Server with Convex-leased team credentials; drive real-user turns and record messages, edits, deletions, reactions, typing, or rich content.","openclaw\u002Fopenclaw","openclaw","https:\u002F\u002Favatars.githubusercontent.com\u002Fu\u002F252820863?v=4","01M698P3FSAZ6B4R928ZF19KPT","01M698PDMDRVH56MV30D253NFP",394302,"MIT","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002FSKILL.md",[17],{"categoryNo":18,"categoryName":19,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000008","测试与质量","SCENARIO","使用场景",[23,24,25,26,27,28,29,30,31,32,33,34,35,9,36,37,38,39,40,41,42],"telegram e2e userbot","e2e","telegram","behavior","prove","rich","with","typing","driver","via","reactions","message","record","command","team","credentials","messages","server","test","convex","2026-11-10 10:12:30",false,"---\nname: telegram-e2e-userbot\ndescription: \"Prove user-visible OpenClaw Telegram behavior on Telegram's Test Server with Convex-leased team credentials; drive real-user turns and record messages, edits, deletions, reactions, typing, or rich content.\"\nmetadata:\n  short-description: Telegram E2E via real-user driver\n  argument-hint: \"\u003Cmessage-or-command?>\"\n---\n\n# Telegram E2E (Userbot)\n\nProve the requested behavior as a dedicated Telegram Test Server user. TDLib\nrecords edits, deletions, reactions, and typing that a second bot cannot observe.\nFor visual claims, also inspect actual Telegram client screenshots; a reconstructed\nchat image or event log is not visual proof.\n\nEach Convex credential contains one SUT bot and an independent authorization for\nthe QA user. The runner owns that lease through readiness, proof, and cleanup.\nPool creation, account authorization repair, and credential publication remain\nowner-only. Reversible test-chat setup with the leased QA user is ordinary proof\nwork; preserve shared fixtures and other runs.\n\n## 1. Prepare\n\nRun from the OpenClaw checkout and ref under test, using its repository skill:\n\n```bash\nTELEGRAM_E2E_SKILL_DIR=\"${TELEGRAM_E2E_SKILL_DIR:-$PWD\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot}\"\nexport TELEGRAM_E2E_SKILL_DIR\n```\n\nVerify `node`, `uv`, and a dependency-ready runtime for the exact ref before\nleasing a credential. The runner uses built `dist\u002Fentry.js`; `--source-gateway`\nuses the repository's development launcher when a dependency-ready source run\nis appropriate. It runs core and the Telegram plugin from TypeScript source;\nother plugins, including the model provider, use built output when it exists,\nso rebuild before claiming their changes. The live run must not implicitly\ninstall or build. Only the `mock` backend needs\n`scripts\u002Fe2e\u002Fmock-openai-server.mjs`.\n\nConvex access can come from either:\n\n- An existing authenticated CLI with access to the published broker deployment.\n  From `qa\u002Fconvex-credential-broker`, discovery tries `convex`, then\n  `bunx --no-install convex`, then `npx --offline --no --ignore-scripts convex`.\n  Each launcher gets one 15-second `env --deployment \u003Cbroker> get` lookup for\n  the CI secret. The helper uses the repository's existing broker binding;\n  no local `CONVEX_DEPLOYMENT`, project-selection file, or dashboard lookup is needed.\n  The secret stays in process memory.\n- Both `OPENCLAW_QA_CONVEX_SITE_URL` and `OPENCLAW_QA_CONVEX_SECRET_CI`, supplied\n  privately to the doctor or runner process by the existing credential owner.\n\nCheck available launchers, existing authentication, and broker-project access\nbefore declaring credentials missing. An authenticated launcher with\nno CI variable needs broker configuration, not another login. Ask the user for\nauthentication only when no existing launcher can authenticate and the broker\npair is unavailable. Do not install or log in on the user's behalf. A timeout or\nnetwork failure is not evidence that credentials are missing.\nBun's `--no-install` missing-binary error means that launcher is unavailable;\ndiscovery continues to the next installed launcher.\n\nThe standalone doctor needs no local HTTP listener, Gateway build, or model\nbackend: it checks the leased TDLib user and calls Telegram’s official Test Bot\nAPI directly over HTTPS. The full scenario still needs local networking for its\nGateway and Test Bot API adapter (including hold\u002Freject controls), plus the mock\nprovider when selected. A passing doctor does not qualify those local services.\n\nFor a full scenario on shared hosts, select two unused ports and pass them\nexplicitly; the runner does not read port environment variables:\n\n```bash\n: \"${TELEGRAM_GATEWAY_PORT:?set an unused Gateway port}\"\n: \"${TELEGRAM_MOCK_PORT:?set an unused provider port}\"\n```\n\n## 2. Select the proof\n\nRead [the verification map](features\u002FREADME.md), then only the recipe for the\nbehavior under test. Prefer a DM; use groups for group policy, mentions,\ncommands, group topics, or reactions. For a group-topic proof without a prepared\nforum, `--create-forum` gives the scenario a run-owned topic that cleanup deletes.\nA generic success turn does not prove formatting, media, timing, or lifecycle\nbehavior.\n\nExtend the harness when its current actions or recorder fields cannot expose the\nclaim. Scenario `command` actions can inspect the leased TDLib state, private\ncredential file, Test Bot API proxy, and Gateway state. Use the\n[runtime reference](features\u002Fruntime-reference.md) for timed scenarios, forums,\nphoto\u002Freply actions, non-default backends, manual operation, or failed-run recovery.\n\n## 3. Check readiness and run\n\nThe scenario checks its actual user, bot, transport, and selected chat on its own\nlease before starting the Gateway. DMs do not depend on unrelated groups. Group\nruns verify bot membership, privacy, and tester text permissions, preserving a\nsuitable selected group or preparing a run-owned one when needed. Readiness from\na released lease never qualifies a later run.\n\nFor a standalone diagnostic, use:\n\n```bash\nnode \"$TELEGRAM_E2E_SKILL_DIR\u002Fscripts\u002Ftelegram-test-doctor.mjs\"\n```\n\nRequire `ok: true`, `botApiTransport: \"direct-https\"`, and `botApiProxy: false`.\nThe doctor defaults to DM readiness; `--chat \u003Ctarget>` checks a selected group\nthrough the same direct Test Bot API route. It releases its diagnostic lease\nand does not start product\nproof. Preserve setup failures and repair their cause before trying again;\nrotating unchanged credentials to hunt for a pass is not a repair.\n\nCreate a durable proof directory outside runner scratch:\n\n```bash\nTELEGRAM_E2E_PROOF_DIR=\"$(mktemp -d \u002Ftmp\u002Ftelegram-e2e-proof.XXXXXX)\"\nnode \"$TELEGRAM_E2E_SKILL_DIR\u002Fscripts\u002Frun-mock-sut-user-e2e.mjs\" \\\n  --gateway-port \"$TELEGRAM_GATEWAY_PORT\" --mock-port \"$TELEGRAM_MOCK_PORT\" \\\n  --dm --text 'Please answer with OPENCLAW_E2E_OK only.' \\\n  --record \"$TELEGRAM_E2E_PROOF_DIR\u002Fevents.ndjson\" \\\n  --output \"$TELEGRAM_E2E_PROOF_DIR\u002Fsummary.json\"\n```\n\nThe runner owns the lease, proxy, fresh Gateway, provider, user actions, recorder,\nand teardown. Recording captures facts and rejects probe assertions such as\n`--expect` and `--any-sut-reply`. A send-confirmation timeout can follow an accepted\nsend: preserve observed events and reconcile them, rather than blindly resending.\n\n## 4. Judge and clean up\n\nStart at the sent action in `summary.json`; judge only later events from the\nselected SUT. Use raw TDLib `messageId` within the same user's chat, not another\naccount's Bot API receipt, to connect edits and deletions. Require a provider\nrequest when the path should reach the model; native commands may produce none.\n\nReport the sanitized command, sent action, relevant timeline rows, provider\nrequest count, and the claim those facts prove. Inspect `test-group.json` or the\nsummary's `testForum`\u002F`testDmTopic` when setup ran; fixture evidence is not message proof.\nKeep credentials, identities, and private paths out of shared logs, screenshots,\nand reports.\n\nCompletion requires the claimed Telegram evidence, no runner-owned processes or\nlisteners, released lease, removed credential scratch, and readable proof files.\nCancellation or lease loss stops new work and joins owned consumers. Unconfirmed\ncleanup is a failure: preserve the private recovery state and use the\n[runtime recovery instructions](features\u002Fruntime-reference.md#retained-run-recovery).\nKeep explicit proof directories until the review or reproduction no longer needs them.\n","# Telegram E2E (Userbot)\n\nProve the requested behavior as a dedicated Telegram Test Server user. TDLib\nrecords edits, deletions, reactions, and typing that a second bot cannot observe.\nFor visual claims, also inspect actual Telegram client screenshots; a reconstructed\nchat image or event log is not visual proof.\n\nEach Convex credential contains one SUT bot and an independent authorization for\nthe QA user. The runner owns that lease through readiness, proof, and cleanup.\nPool creation, account authorization repair, and credential publication remain\nowner-only. Reversible test-chat setup with the leased QA user is ordinary proof\nwork; preserve shared fixtures and other runs.\n\n## 1. Prepare\n\nRun from the OpenClaw checkout and ref under test, using its repository skill:\n\n```bash\nTELEGRAM_E2E_SKILL_DIR=\"${TELEGRAM_E2E_SKILL_DIR:-$PWD\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot}\"\nexport TELEGRAM_E2E_SKILL_DIR\n```\n\nVerify `node`, `uv`, and a dependency-ready runtime for the exact ref before\nleasing a credential. The runner uses built `dist\u002Fentry.js`; `--source-gateway`\nuses the repository's development launcher when a dependency-ready source run\nis appropriate. It runs core and the Telegram plugin from TypeScript source;\nother plugins, including the model provider, use built output when it exists,\nso rebuild before claiming their changes. The live run must not implicitly\ninstall or build. Only the `mock` backend needs\n`scripts\u002Fe2e\u002Fmock-openai-server.mjs`.\n\nConvex access can come from either:\n\n- An existing authenticated CLI with access to the published broker deployment.\n  From `qa\u002Fconvex-credential-broker`, discovery tries `convex`, then\n  `bunx --no-install convex`, then `npx --offline --no --ignore-scripts convex`.\n  Each launcher gets one 15-second `env --deployment \u003Cbroker> get` lookup for\n  the CI secret. The helper uses the repository's existing broker binding;\n  no local `CONVEX_DEPLOYMENT`, project-selection file, or dashboard lookup is needed.\n  The secret stays in process memory.\n- Both `OPENCLAW_QA_CONVEX_SITE_URL` and `OPENCLAW_QA_CONVEX_SECRET_CI`, supplied\n  privately to the doctor or runner process by the existing credential owner.\n\nCheck available launchers, existing authentication, and broker-project access\nbefore declaring credentials missing. An authenticated launcher with\nno CI variable needs broker configuration, not another login. Ask the user for\nauthentication only when no existing launcher can authenticate and the broker\npair is unavailable. Do not install or log in on the user's behalf. A timeout or\nnetwork failure is not evidence that credentials are missing.\nBun's `--no-install` missing-binary error means that launcher is unavailable;\ndiscovery continues to the next installed launcher.\n\nThe standalone doctor needs no local HTTP listener, Gateway build, or model\nbackend: it checks the leased TDLib user and calls Telegram’s official Test Bot\nAPI directly over HTTPS. The full scenario still needs local networking for its\nGateway and Test Bot API adapter (including hold\u002Freject controls), plus the mock\nprovider when selected. A passing doctor does not qualify those local services.\n\nFor a full scenario on shared hosts, select two unused ports and pass them\nexplicitly; the runner does not read port environment variables:\n\n```bash\n: \"${TELEGRAM_GATEWAY_PORT:?set an unused Gateway port}\"\n: \"${TELEGRAM_MOCK_PORT:?set an unused provider port}\"\n```\n\n## 2. Select the proof\n\nRead [the verification map](features\u002FREADME.md), then only the recipe for the\nbehavior under test. Prefer a DM; use groups for group policy, mentions,\ncommands, group topics, or reactions. For a group-topic proof without a prepared\nforum, `--create-forum` gives the scenario a run-owned topic that cleanup deletes.\nA generic success turn does not prove formatting, media, timing, or lifecycle\nbehavior.\n\nExtend the harness when its current actions or recorder fields cannot expose the\nclaim. Scenario `command` actions can inspect the leased TDLib state, private\ncredential file, Test Bot API proxy, and Gateway state. Use the\n[runtime reference](features\u002Fruntime-reference.md) for timed scenarios, forums,\nphoto\u002Freply actions, non-default backends, manual operation, or failed-run recovery.\n\n## 3. Check readiness and run\n\nThe scenario checks its actual user, bot, transport, and selected chat on its own\nlease before starting the Gateway. DMs do not depend on unrelated groups. Group\nruns verify bot membership, privacy, and tester text permissions, preserving a\nsuitable selected group or preparing a run-owned one when needed. Readiness from\na released lease never qualifies a later run.\n\nFor a standalone diagnostic, use:\n\n```bash\nnode \"$TELEGRAM_E2E_SKILL_DIR\u002Fscripts\u002Ftelegram-test-doctor.mjs\"\n```\n\nRequire `ok: true`, `botApiTransport: \"direct-https\"`, and `botApiProxy: false`.\nThe doctor defaults to DM readiness; `--chat \u003Ctarget>` checks a selected group\nthrough the same direct Test Bot API route. It releases its diagnostic lease\nand does not start product\nproof. Preserve setup failures and repair their cause before trying again;\nrotating unchanged credentials to hunt for a pass is not a repair.\n\nCreate a durable proof directory outside runner scratch:\n\n```bash\nTELEGRAM_E2E_PROOF_DIR=\"$(mktemp -d \u002Ftmp\u002Ftelegram-e2e-proof.XXXXXX)\"\nnode \"$TELEGRAM_E2E_SKILL_DIR\u002Fscripts\u002Frun-mock-sut-user-e2e.mjs\" \\\n  --gateway-port \"$TELEGRAM_GATEWAY_PORT\" --mock-port \"$TELEGRAM_MOCK_PORT\" \\\n  --dm --text 'Please answer with OPENCLAW_E2E_OK only.' \\\n  --record \"$TELEGRAM_E2E_PROOF_DIR\u002Fevents.ndjson\" \\\n  --output \"$TELEGRAM_E2E_PROOF_DIR\u002Fsummary.json\"\n```\n\nThe runner owns the lease, proxy, fresh Gateway, provider, user actions, recorder,\nand teardown. Recording captures facts and rejects probe assertions such as\n`--expect` and `--any-sut-reply`. A send-confirmation timeout can follow an accepted\nsend: preserve observed events and reconcile them, rather than blindly resending.\n\n## 4. Judge and clean up\n\nStart at the sent action in `summary.json`; judge only later events from the\nselected SUT. Use raw TDLib `messageId` within the same user's chat, not another\naccount's Bot API receipt, to connect edits and deletions. Require a provider\nrequest when the path should reach the model; native commands may produce none.\n\nReport the sanitized command, sent action, relevant timeline rows, provider\nrequest count, and the claim those facts prove. Inspect `test-group.json` or the\nsummary's `testForum`\u002F`testDmTopic` when setup ran; fixture evidence is not message proof.\nKeep credentials, identities, and private paths out of shared logs, screenshots,\nand reports.\n\nCompletion requires the claimed Telegram evidence, no runner-owned processes or\nlisteners, released lease, removed credential scratch, and readable proof files.\nCancellation or lease loss stops new work and joins owned consumers. Unconfirmed\ncleanup is a failure: preserve the private recovery state and use the\n[runtime recovery instructions](features\u002Fruntime-reference.md#retained-run-recovery).\nKeep explicit proof directories until the review or reproduction no longer needs them.\n",{"name":5,"metadata":48,"description":7},{"argument-hint":49,"short-description":50},"\u003Cmessage-or-command?>","Telegram E2E via real-user driver","main","f1c93577085244aa96aa87b53a2df9b59d293bd7",".agents\u002Fskills\u002Ftelegram-e2e-userbot",82862,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw","https:\u002F\u002Fopenclaw.ai","https:\u002F\u002Fgithub.com\u002Fopenclaw","Your personal, open source AI assistant.","2026-11-11 08:46:30",{"source":8,"skillName":5,"commands":61,"prompt":71,"zipAvailable":72},[62,65,68],{"tool":63,"command":64},"npx","npx skills add openclaw\u002Fopenclaw --skill telegram-e2e-userbot",{"tool":66,"command":67},"bunx","bunx skills add openclaw\u002Fopenclaw --skill telegram-e2e-userbot",{"tool":69,"command":70},"pnpm","pnpm dlx skills add openclaw\u002Fopenclaw --skill telegram-e2e-userbot","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002FSKILL.md",true,[74,80,84,88,92,96,100,104,108,112,118,122,126,130,134,138,142,146,150,154,158,162,166,170,174,178,182,186,190,194,198,202,206,210,214,218,222,226,230,234,238,242,246,250,254,258,262,266,270,274,278,282,286,290,294,298],{"path":75,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":78,"sourceHtmlUrl":79},"agents\u002Fopenai.yaml","REFERENCE","参考文档",351,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fagents\u002Fopenai.yaml",{"path":81,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":82,"sourceHtmlUrl":83},"features\u002Fbasic-turns.md",2842,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002Fbasic-turns.md",{"path":85,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":86,"sourceHtmlUrl":87},"features\u002Fdelivery-lifecycle.md",2653,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002Fdelivery-lifecycle.md",{"path":89,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":90,"sourceHtmlUrl":91},"features\u002Fdm-topics.md",2449,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002Fdm-topics.md",{"path":93,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":94,"sourceHtmlUrl":95},"features\u002Fprivate-yield-reply-policy.md",4952,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002Fprivate-yield-reply-policy.md",{"path":97,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":98,"sourceHtmlUrl":99},"features\u002Freaction-lifecycle.md",2505,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002Freaction-lifecycle.md",{"path":101,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":102,"sourceHtmlUrl":103},"features\u002FREADME.md",9812,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002FREADME.md",{"path":105,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":106,"sourceHtmlUrl":107},"features\u002Frestart-attribution.md",3750,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002Frestart-attribution.md",{"path":109,"resourceType":76,"resourceTypeDesc":77,"sizeBytes":110,"sourceHtmlUrl":111},"features\u002Fruntime-reference.md",24266,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Ffeatures\u002Fruntime-reference.md",{"path":113,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":116,"sourceHtmlUrl":117},"scripts\u002Fbotfather-threaded-mode.mjs","SCRIPT","脚本",2694,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fbotfather-threaded-mode.mjs",{"path":119,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":120,"sourceHtmlUrl":121},"scripts\u002Fbotfather-threaded-mode.test.mjs",3483,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fbotfather-threaded-mode.test.mjs",{"path":123,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":124,"sourceHtmlUrl":125},"scripts\u002Fcredential.test-support.mjs",1607,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fcredential.test-support.mjs",{"path":127,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":128,"sourceHtmlUrl":129},"scripts\u002Ffollowup-drain-control-preload.mjs",2620,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ffollowup-drain-control-preload.mjs",{"path":131,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":132,"sourceHtmlUrl":133},"scripts\u002Ffollowup-drain-control-preload.test.mjs",3086,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ffollowup-drain-control-preload.test.mjs",{"path":135,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":136,"sourceHtmlUrl":137},"scripts\u002Fnode-test-children.mjs",2025,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fnode-test-children.mjs",{"path":139,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":140,"sourceHtmlUrl":141},"scripts\u002Fpublished-upgrade-artifact.mjs",5624,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fpublished-upgrade-artifact.mjs",{"path":143,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":144,"sourceHtmlUrl":145},"scripts\u002Fpublished-upgrade-scenario.mjs",17760,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fpublished-upgrade-scenario.mjs",{"path":147,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":148,"sourceHtmlUrl":149},"scripts\u002Fqa-credential-lease.mjs",11998,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fqa-credential-lease.mjs",{"path":151,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":152,"sourceHtmlUrl":153},"scripts\u002Fqa-credential-lease.test.mjs",26596,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fqa-credential-lease.test.mjs",{"path":155,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":156,"sourceHtmlUrl":157},"scripts\u002Freply-policy-checkpoint.mjs",5984,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Freply-policy-checkpoint.mjs",{"path":159,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":160,"sourceHtmlUrl":161},"scripts\u002Freply-policy-mock.mjs",8603,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Freply-policy-mock.mjs",{"path":163,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":164,"sourceHtmlUrl":165},"scripts\u002Frun-mock-sut-user-e2e.mjs",60330,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Frun-mock-sut-user-e2e.mjs",{"path":167,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":168,"sourceHtmlUrl":169},"scripts\u002Frun-mock-sut-user-e2e.test.mjs",21634,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Frun-mock-sut-user-e2e.test.mjs",{"path":171,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":172,"sourceHtmlUrl":173},"scripts\u002Frun-published-upgrade-user-e2e.mjs",12284,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Frun-published-upgrade-user-e2e.mjs",{"path":175,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":176,"sourceHtmlUrl":177},"scripts\u002Frun-published-upgrade-user-e2e.test.mjs",9814,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Frun-published-upgrade-user-e2e.test.mjs",{"path":179,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":180,"sourceHtmlUrl":181},"scripts\u002Frun-reply-policy-user-e2e.mjs",15203,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Frun-reply-policy-user-e2e.mjs",{"path":183,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":184,"sourceHtmlUrl":185},"scripts\u002Fscenario.mjs",12309,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fscenario.mjs",{"path":187,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":188,"sourceHtmlUrl":189},"scripts\u002Fscenario.test.mjs",7112,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fscenario.test.mjs",{"path":191,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":192,"sourceHtmlUrl":193},"scripts\u002Ftelegram-api-ignore-abort-preload.mjs",511,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-api-ignore-abort-preload.mjs",{"path":195,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":196,"sourceHtmlUrl":197},"scripts\u002Ftelegram-api-ignore-abort-preload.test.mjs",1008,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-api-ignore-abort-preload.test.mjs",{"path":199,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":200,"sourceHtmlUrl":201},"scripts\u002Ftelegram-binding-checkpoint.mjs",21715,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-binding-checkpoint.mjs",{"path":203,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":204,"sourceHtmlUrl":205},"scripts\u002Ftelegram-binding-checkpoint.test.mjs",9520,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-binding-checkpoint.test.mjs",{"path":207,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":208,"sourceHtmlUrl":209},"scripts\u002Ftelegram-binding-forum.py",19364,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-binding-forum.py",{"path":211,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":212,"sourceHtmlUrl":213},"scripts\u002Ftelegram-binding-upgrade-verdict.mjs",16683,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-binding-upgrade-verdict.mjs",{"path":215,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":216,"sourceHtmlUrl":217},"scripts\u002Ftelegram-run-composition.test.mjs",27804,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-run-composition.test.mjs",{"path":219,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":220,"sourceHtmlUrl":221},"scripts\u002Ftelegram-run-scope.mjs",9517,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-run-scope.mjs",{"path":223,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":224,"sourceHtmlUrl":225},"scripts\u002Ftelegram-runtime.mjs",3984,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-runtime.mjs",{"path":227,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":228,"sourceHtmlUrl":229},"scripts\u002Ftelegram-runtime.test.mjs",5746,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-runtime.test.mjs",{"path":231,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":232,"sourceHtmlUrl":233},"scripts\u002Ftelegram-test-api-proxy.mjs",19790,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-api-proxy.mjs",{"path":235,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":236,"sourceHtmlUrl":237},"scripts\u002Ftelegram-test-api-proxy.test.mjs",24842,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-api-proxy.test.mjs",{"path":239,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":240,"sourceHtmlUrl":241},"scripts\u002Ftelegram-test-credential.mjs",9804,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-credential.mjs",{"path":243,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":244,"sourceHtmlUrl":245},"scripts\u002Ftelegram-test-credential.test.mjs",11731,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-credential.test.mjs",{"path":247,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":248,"sourceHtmlUrl":249},"scripts\u002Ftelegram-test-doctor.mjs",12044,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-doctor.mjs",{"path":251,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":252,"sourceHtmlUrl":253},"scripts\u002Ftelegram-test-doctor.test.mjs",3973,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-doctor.test.mjs",{"path":255,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":256,"sourceHtmlUrl":257},"scripts\u002Ftelegram-test-group.mjs",5291,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-group.mjs",{"path":259,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":260,"sourceHtmlUrl":261},"scripts\u002Ftelegram-test-group.test.mjs",2153,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-group.test.mjs",{"path":263,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":264,"sourceHtmlUrl":265},"scripts\u002Ftelegram-test-recover.mjs",6666,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-recover.mjs",{"path":267,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":268,"sourceHtmlUrl":269},"scripts\u002Ftelegram-test-recover.test.mjs",10885,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-recover.test.mjs",{"path":271,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":272,"sourceHtmlUrl":273},"scripts\u002Ftelegram-test-scenario.test.mjs",38045,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftelegram-test-scenario.test.mjs",{"path":275,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":276,"sourceHtmlUrl":277},"scripts\u002Ftriage-mock-openai.mjs",13826,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftriage-mock-openai.mjs",{"path":279,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":280,"sourceHtmlUrl":281},"scripts\u002Ftriage-mock-openai.test.mjs",4414,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Ftriage-mock-openai.test.mjs",{"path":283,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":284,"sourceHtmlUrl":285},"scripts\u002Fuser-driver.py",91032,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fuser-driver.py",{"path":287,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":288,"sourceHtmlUrl":289},"scripts\u002Fuser-driver.test.py",72254,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fuser-driver.test.py",{"path":291,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":292,"sourceHtmlUrl":293},"scripts\u002Fuser-proof-ownership.test.py",6308,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fuser-proof-ownership.test.py",{"path":295,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":296,"sourceHtmlUrl":297},"scripts\u002Fuser-record.py",32883,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fuser-record.py",{"path":299,"resourceType":114,"resourceTypeDesc":115,"sizeBytes":300,"sourceHtmlUrl":301},"scripts\u002Fuser-record.test.py",28753,"https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Ftelegram-e2e-userbot\u002Fscripts\u002Fuser-record.test.py",[303,309,332,349,371,392],{"skillNo":304,"name":305,"nameZh":6,"description":6,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":306,"categories":307,"keywords":308,"publishedAt":43},"01M698VP84FNM6G9MR1HPX7MF7","lobster","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Flobster\u002FSKILL.md",[],[305],{"skillNo":310,"name":311,"nameZh":6,"description":312,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":313,"categories":314,"keywords":315,"publishedAt":43},"01M698YY8QGQ7S8TJNKJG6VTPH","xurl","xurl CLI for authenticated X posts, replies, reads\u002Fsearch, DMs, media upload, followers, auth status, or raw v2 API calls.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fxurl\u002FSKILL.md",[],[311,316,317,318,319,320,321,322,323,324,325,326,327,328,329,330,331],"for","api","calls","replies","posts","upload","tap","install","brew","node","Media","search","npm","status","auth","cli",{"skillNo":333,"name":334,"nameZh":6,"description":335,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":336,"categories":337,"keywords":338,"publishedAt":43},"01M698YWT1CJ0WK88WB909R9RT","weather","Current weather and forecasts with web_fetch, falling back to wttr.in curl for locations, rain, temperature, travel planning.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fweather\u002FSKILL.md",[],[334,339,340,323,341,324,342,343,344,345,346,347,316,348,29],"travel planning","travel","fetch","curl","https","help","planning","web","back","temperature",{"skillNo":350,"name":351,"nameZh":6,"description":352,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":353,"categories":354,"keywords":360,"publishedAt":43},"01M698YV2Q0R0JJKAWGFS21K0N","visualize","Create inline visuals for code and explanations, or author persistent OpenClaw dashboard widgets with show_widget.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Fvisualize\u002FSKILL.md",[355],{"categoryNo":356,"categoryName":357,"taxonomyType":358,"taxonomyTypeDesc":359},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[351,361,362,363,364,316,29,365,366,367,368,369,9,370],"widgets","openclaw dashboard","author","inline","show","code","create","visuals","dashboard","widget",{"skillNo":372,"name":373,"nameZh":6,"description":374,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":375,"categories":376,"keywords":383,"publishedAt":43},"01M698YS2TRJH9ENG28HD9CD87","trello","Manage Trello boards, lists, and cards via the Trello REST API.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftrello\u002FSKILL.md",[377,380],{"categoryNo":378,"categoryName":379,"taxonomyType":20,"taxonomyTypeDesc":21},"01JBSEEDCAT000000000000010","后端与接口",{"categoryNo":381,"categoryName":382,"taxonomyType":358,"taxonomyTypeDesc":359},"01JBSEEDCAT000000000000030","开发工程师",[373,343,384,385,32,386,387,388,323,324,389,342,317,390,391],"cloud","manage","rest api","token","atlassian","jq","REST","developer",{"skillNo":393,"name":394,"nameZh":6,"description":395,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":396,"categories":397,"keywords":398,"publishedAt":43},"01M698YQ9Q3M4W78EWV2KSCSVW","tmux","Control tmux sessions\u002Fpanes for interactive CLIs: list, capture output, send keys, paste text, monitor prompts.","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fskills\u002Ftmux\u002FSKILL.md",[],[394,323,399,400,316,401,402,403,404,405,406,407,324,408,409,410,411,412,413],"send","darwin","keys","paste","output","control","prompts","interactive","list","capture","panes","text","monitor","sessions","linux"]