[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill:01M698RQ378JND1AS205KG9BC0":3,"skill-same:01M698RQ378JND1AS205KG9BC0":59},{"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":17,"publishedAt":31,"linkOnly":32,"markdownContent":33,"markdownBody":34,"frontMatter":35,"refName":36,"commitSha":37,"skillDirectory":38,"forksCount":39,"repositoryHtmlUrl":40,"repositoryHomepageUrl":41,"ownerHtmlUrl":42,"ownerBlogUrl":41,"ownerDescription":43,"updatedAt":44,"install":45,"resources":58},"01M698RQ378JND1AS205KG9BC0","parallels-discord-roundtrip",null,"Run macOS Parallels smoke with Discord send, host verification, host reply, and guest readback proof.","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\u002Fparallels-discord-roundtrip\u002FSKILL.md",[],[18,19,20,21,22,23,24,25,26,27,28,29,30],"parallels discord roundtrip","discord","macos","run","verification","smoke","reply","discord send","host","proof","with","readback","send","2026-11-10 10:12:30",false,"---\nname: parallels-discord-roundtrip\ndescription: Run macOS Parallels smoke with Discord send, host verification, host reply, and guest readback proof.\n---\n\n# Parallels Discord Roundtrip\n\nUse when macOS Parallels smoke must prove Discord two-way delivery end to end.\n\n## Goal\n\nCover:\n\n- install on fresh macOS snapshot\n- onboard + gateway health\n- guest `message send` to Discord\n- host sees that message on Discord\n- host posts a new Discord message\n- guest `message read` sees that new message\n\n## Inputs\n\n- host env var with the token for a dedicated, operator-approved QA bot\n- operator-approved QA guild and channel IDs\n- `OPENAI_API_KEY`\n\n## Preferred run\n\nLoad `OPENCLAW_PARALLELS_DISCORD_TOKEN` through the approved secret source.\nSet `OPENCLAW_PARALLELS_DISCORD_GUILD_ID` and `OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID`\nto the approved QA destination. The harness configures that bot inside the selected guest.\n\n```bash\npnpm test:parallels:macos \\\n  --discord-token-env OPENCLAW_PARALLELS_DISCORD_TOKEN \\\n  --discord-guild-id \"$OPENCLAW_PARALLELS_DISCORD_GUILD_ID\" \\\n  --discord-channel-id \"$OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID\" \\\n  --json\n```\n\n## Notes\n\n- Snapshot target: closest to `macOS 26.3.1 fresh`.\n- Snapshot resolver now prefers matching `*-poweroff*` clones when the base hint also matches. That lets the harness reuse disk-only recovery snapshots without passing a longer hint.\n- If Windows\u002FLinux snapshot restore logs show `PET_QUESTION_SNAPSHOT_STATE_INCOMPATIBLE_CPU`, drop the suspended state once, create a `*-poweroff*` replacement snapshot, and rerun. The smoke scripts now auto-start restored power-off snapshots.\n- Harness configures Discord inside the guest; no checked-in token\u002Fconfig.\n- Use the `openclaw` wrapper for guest `message send\u002Fread`; `node openclaw.mjs message ...` does not expose the lazy message subcommands the same way.\n- Write `channels.discord.guilds` in one JSON object (`--strict-json`), not dotted `config set channels.discord.guilds.\u003Csnowflake>...` paths; numeric snowflakes get treated like array indexes.\n- Avoid `prlctl enter` \u002F expect for long Discord setup scripts; it line-wraps\u002Fcorrupts long commands. Use `prlctl exec --current-user \u002Fbin\u002Fsh -lc ...` for the Discord config phase.\n- Full 3-OS sweeps: the shared build lock is safe in parallel, but snapshot restore is still a Parallels bottleneck. Prefer serialized Windows\u002FLinux restore-heavy reruns if the host is already under load.\n- Harness cleanup deletes the temporary Discord smoke messages at exit.\n- The harness attempts to stop its selected guest after successful Discord proof and warns if the stop fails. For ad-hoc Discord checks, stop only the task-owned guest before handoff. Do not leave the Discord-configured test guest running after proof.\n- Per-phase logs: `\u002Ftmp\u002Fopenclaw-parallels-smoke.*`\n- Machine summary: pass `--json`\n- If roundtrip flakes, inspect `fresh.discord-roundtrip.log` and `discord-last-readback.json` in the run dir first.\n\n## Pass criteria\n\n- fresh lane or upgrade lane requested passes\n- summary reports `discord=pass` for that lane\n- guest outbound nonce appears in channel history\n- host inbound nonce appears in `openclaw message read` output\n","# Parallels Discord Roundtrip\n\nUse when macOS Parallels smoke must prove Discord two-way delivery end to end.\n\n## Goal\n\nCover:\n\n- install on fresh macOS snapshot\n- onboard + gateway health\n- guest `message send` to Discord\n- host sees that message on Discord\n- host posts a new Discord message\n- guest `message read` sees that new message\n\n## Inputs\n\n- host env var with the token for a dedicated, operator-approved QA bot\n- operator-approved QA guild and channel IDs\n- `OPENAI_API_KEY`\n\n## Preferred run\n\nLoad `OPENCLAW_PARALLELS_DISCORD_TOKEN` through the approved secret source.\nSet `OPENCLAW_PARALLELS_DISCORD_GUILD_ID` and `OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID`\nto the approved QA destination. The harness configures that bot inside the selected guest.\n\n```bash\npnpm test:parallels:macos \\\n  --discord-token-env OPENCLAW_PARALLELS_DISCORD_TOKEN \\\n  --discord-guild-id \"$OPENCLAW_PARALLELS_DISCORD_GUILD_ID\" \\\n  --discord-channel-id \"$OPENCLAW_PARALLELS_DISCORD_CHANNEL_ID\" \\\n  --json\n```\n\n## Notes\n\n- Snapshot target: closest to `macOS 26.3.1 fresh`.\n- Snapshot resolver now prefers matching `*-poweroff*` clones when the base hint also matches. That lets the harness reuse disk-only recovery snapshots without passing a longer hint.\n- If Windows\u002FLinux snapshot restore logs show `PET_QUESTION_SNAPSHOT_STATE_INCOMPATIBLE_CPU`, drop the suspended state once, create a `*-poweroff*` replacement snapshot, and rerun. The smoke scripts now auto-start restored power-off snapshots.\n- Harness configures Discord inside the guest; no checked-in token\u002Fconfig.\n- Use the `openclaw` wrapper for guest `message send\u002Fread`; `node openclaw.mjs message ...` does not expose the lazy message subcommands the same way.\n- Write `channels.discord.guilds` in one JSON object (`--strict-json`), not dotted `config set channels.discord.guilds.\u003Csnowflake>...` paths; numeric snowflakes get treated like array indexes.\n- Avoid `prlctl enter` \u002F expect for long Discord setup scripts; it line-wraps\u002Fcorrupts long commands. Use `prlctl exec --current-user \u002Fbin\u002Fsh -lc ...` for the Discord config phase.\n- Full 3-OS sweeps: the shared build lock is safe in parallel, but snapshot restore is still a Parallels bottleneck. Prefer serialized Windows\u002FLinux restore-heavy reruns if the host is already under load.\n- Harness cleanup deletes the temporary Discord smoke messages at exit.\n- The harness attempts to stop its selected guest after successful Discord proof and warns if the stop fails. For ad-hoc Discord checks, stop only the task-owned guest before handoff. Do not leave the Discord-configured test guest running after proof.\n- Per-phase logs: `\u002Ftmp\u002Fopenclaw-parallels-smoke.*`\n- Machine summary: pass `--json`\n- If roundtrip flakes, inspect `fresh.discord-roundtrip.log` and `discord-last-readback.json` in the run dir first.\n\n## Pass criteria\n\n- fresh lane or upgrade lane requested passes\n- summary reports `discord=pass` for that lane\n- guest outbound nonce appears in channel history\n- host inbound nonce appears in `openclaw message read` output\n",{"name":5,"description":7},"main","df9d3240e52a533ea176e98cf047ed6b40cf37d6",".agents\u002Fskills\u002Fparallels-discord-roundtrip",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":46,"prompt":56,"zipAvailable":57},[47,50,53],{"tool":48,"command":49},"npx","npx skills add openclaw\u002Fopenclaw --skill parallels-discord-roundtrip",{"tool":51,"command":52},"bunx","bunx skills add openclaw\u002Fopenclaw --skill parallels-discord-roundtrip",{"tool":54,"command":55},"pnpm","pnpm dlx skills add openclaw\u002Fopenclaw --skill parallels-discord-roundtrip","安装技能，技能地址：https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002F.agents\u002Fskills\u002Fparallels-discord-roundtrip\u002FSKILL.md",true,[],[60,66,89,106,128,152],{"skillNo":61,"name":62,"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":63,"categories":64,"keywords":65,"publishedAt":31},"01M698VP84FNM6G9MR1HPX7MF7","lobster","https:\u002F\u002Fgithub.com\u002Fopenclaw\u002Fopenclaw\u002Fblob\u002Fmain\u002Fextensions\u002Flobster\u002FSKILL.md",[],[62],{"skillNo":67,"name":68,"nameZh":6,"description":69,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":70,"categories":71,"keywords":72,"publishedAt":31},"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",[],[68,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88],"for","api","calls","replies","posts","upload","tap","install","brew","node","Media","search","npm","status","auth","cli",{"skillNo":90,"name":91,"nameZh":6,"description":92,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":93,"categories":94,"keywords":95,"publishedAt":31},"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",[],[91,96,97,80,98,81,99,100,101,102,103,104,73,105,28],"travel planning","travel","fetch","curl","https","help","planning","web","back","temperature",{"skillNo":107,"name":108,"nameZh":6,"description":109,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":110,"categories":111,"keywords":117,"publishedAt":31},"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",[112],{"categoryNo":113,"categoryName":114,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000033","数据分析师","PROFESSION","适用职业",[108,118,119,120,121,73,28,122,123,124,125,126,9,127],"widgets","openclaw dashboard","author","inline","show","code","create","visuals","dashboard","widget",{"skillNo":129,"name":130,"nameZh":6,"description":131,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":132,"categories":133,"keywords":142,"publishedAt":31},"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",[134,139],{"categoryNo":135,"categoryName":136,"taxonomyType":137,"taxonomyTypeDesc":138},"01JBSEEDCAT000000000000010","后端与接口","SCENARIO","使用场景",{"categoryNo":140,"categoryName":141,"taxonomyType":115,"taxonomyTypeDesc":116},"01JBSEEDCAT000000000000030","开发工程师",[130,100,143,144,145,146,147,148,80,81,149,99,74,150,151],"cloud","manage","via","rest api","token","atlassian","jq","REST","developer",{"skillNo":153,"name":154,"nameZh":6,"description":155,"descriptionZh":6,"repositoryFullName":8,"ownerLogin":9,"ownerAvatarUrl":10,"ownerAccountNo":11,"ownerDisplayName":9,"repositoryNo":12,"starsCount":13,"licenseSpdxId":14,"licenseFileUrl":6,"sourceHtmlUrl":156,"categories":157,"keywords":158,"publishedAt":31},"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",[],[154,80,30,159,73,160,161,162,163,164,165,166,81,167,168,169,170,171,172],"darwin","keys","paste","output","control","prompts","interactive","list","capture","panes","text","monitor","sessions","linux"]