CommunityCoding & Developmentgithub.com

parallels-discord-roundtrip

Run macOS Parallels smoke with Discord send, host verification, host reply, and guest readback proof.

Works with~Claude CodeCodex CLI~Cursor
npx add-skill https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/parallels-discord-roundtrip

Parallels Discord Roundtrip

Use when macOS Parallels smoke must prove Discord two-way delivery end to end.

Goal

Cover:

  • install on fresh macOS snapshot
  • onboard + gateway health
  • guest message send to Discord
  • host sees that message on Discord
  • host posts a new Discord message
  • guest message read sees that new message

Inputs

  • host env var with Discord bot token
  • Discord guild ID
  • Discord channel ID
  • OPENAI_API_KEY

Preferred run

export OPENCLAW_PARALLELS_DISCORD_TOKEN="$(
  ssh peters-mac-studio-1 'jq -r ".channels.discord.token" ~/.openclaw/openclaw.json' | tr -d '\n'
)"

pnpm test:parallels:macos \
  --discord-token-env OPENCLAW_PARALLELS_DISCORD_TOKEN \
  --discord-guild-id 1456350064065904867 \
  --discord-channel-id 1456744319972282449 \
  --json

Notes

  • Snapshot target: closest to macOS 26.3.1 fresh.
  • 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.
  • If Windows/Linux 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.
  • Harness configures Discord inside the guest; no checked-in token/config.
  • Use the openclaw wrapper for guest message send/read; node openclaw.mjs message ... does not expose the lazy message subcommands the same way.
  • Write channels.discord.guilds in one JSON object (--strict-json), not dotted config set channels.discord.guilds.<snowflake>... paths; numeric snowflakes get treated like array indexes.
  • Avoid prlctl enter / expect for long Discord setup scripts; it line-wraps/corrupts long commands. Use prlctl exec --current-user /bin/sh -lc ... for the Discord config phase.
  • Full 3-OS sweeps: the shared build lock is safe in parallel, but snapshot restore is still a Parallels bottleneck. Prefer serialized Windows/Linux restore-heavy reruns if the host is already under load.
  • Harness cleanup deletes the temporary Discord smoke messages at exit.
  • After a successful Discord roundtrip, shut down the macOS guest before handoff (prlctl stop "macOS Tahoe"). The macOS smoke harness should do this automatically after successful Discord proof; still stop the VM manually after ad-hoc Discord checks. Do not leave the Discord-configured VM running; it can keep reading/posting in #maintainer and spam Discord after the proof is complete.
  • Per-phase logs: /tmp/openclaw-parallels-smoke.*
  • Machine summary: pass --json
  • If roundtrip flakes, inspect fresh.discord-roundtrip.log and discord-last-readback.json in the run dir first.

Pass criteria

  • fresh lane or upgrade lane requested passes
  • summary reports discord=pass for that lane
  • guest outbound nonce appears in channel history
  • host inbound nonce appears in openclaw message read output

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

agent-transcript

Add a redacted agent transcript section to GitHub PR or issue bodies during OpenClaw agent-created PR/issue workflows.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

autoreview

Auto Review closeout. Codex review is the default when no engine is set and is the recommended reviewer.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when previewing local channel message flow fixtures.

clawdtributor

Use for OpenClaw clawtributors PR/issue triage: Discrawl discovery, live-open rechecks, deep review, topic grouping, and compact @handle/LOC/type/blast/verification summaries.

clawhub

Search, install, update, sync, or publish agent skills with the ClawHub CLI and registry.

clawsweeper

Use for all ClawSweeper work: OpenClaw issue/PR sweep reports, commit-review reports, repair jobs, cloud fix PRs, @clawsweeper maintainer mention commands, trusted ClawSweeper-reviewed autofix/automerge, GitHub Actions monitoring, permissions, gates, and manual backfills.

clownfish-cloud-pr

Use when launching Clownfish in GitHub Actions to create or update one guarded GitHub implementation PR from issue/PR refs, a ClawSweeper report, a custom maintainer prompt, or to opt an existing Clownfish PR into ClawSweeper-reviewed cloud automerge.

codex-review

Codex code review closeout: local dirty changes, PR branch vs main, parallel tests.

Related Skills