openclaw-parallels-smoke
Skill325 starsChanged 7 months agoMITView on GitHub
End-to-end Parallels smoke, upgrade, and rerun workflow for OpenClaw across macOS, Windows, and Linux guests. Use when Codex needs to run, rerun, debug, or interpret VM-based install, onboarding, gateway smoke tests, latest-release-to-main upgrade checks, fresh snapshot retests, or optional Discord roundtrip verification under Parallels.
- Reads credentials
- Installs packages
We split this skill into the rules it gives an agent
30 rules. 3 are common, 3 are distinctive, and 24 are very specific to this project.
3
Common
Most of the 14 edited versions we read keep these.
3
Distinctive
This author's own choices. Worth a look.
24
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Common: line 8
Use this skill for Parallels guest workflows and smoke interpretation.
- Distinctive: line 12
Use the snapshot most closely matching the requested fresh baseline.
- Very specific: line 15
Treat precheck=latest-ref-fail on that stable pre-upgrade lane as baseline, not automatically a regression.
- Common: line 18
Do not run local and gateway agent turns in parallel on the same fresh workspace or session.
- Common: line 19
If main is moving under active multi-agent work, prefer a detached worktree pinned to one commit for long Parallels suites.
- Very specific: line 21
If the workflow installs OpenClaw from a repo checkout instead of the site installer/npm release, finish by installing a real guest CLI …
- Very specific: line 24
make sure ~/.local/bin/openclaw exists or ~/.npm-global/bin is on PATH
- Very specific: line 25
verify from a brand-new guest shell with which openclaw and openclaw --version
- Very specific: line 39
If the wrapper fails a lane, read the auto-dumped tail first, then the full nested lane log under /tmp/openclaw-parallels-npm-update.*.
- Very specific: line 48
Default upgrade coverage on macOS should now include: fresh snapshot -> site installer pinned to the latest stable tag -> openclaw update …
- Very specific: line 51
If that release-to-dev lane fails with reason=preflight-no-good-commit and repeated sh: pnpm: command not found tails from preflight build, …
- Very specific: line 54
Default to the snapshot closest to macOS 26.3.1 latest.
- Very specific: line 58
If a packaged install regresses with 500 on /, /healthz, or __openclaw/control-ui-config.json after fresh.install-main or …
- Very specific: line 69
Use the snapshot closest to pre-openclaw-native-e2e-2026-03-12.
- Very specific: line 70
Default upgrade coverage on Windows should now include: fresh snapshot -> site installer pinned to the requested stable tag -> openclaw …
- Very specific: line 73
Always use prlctl exec --current-user.
- Very specific: line 74
Prefer explicit npm.cmd and openclaw.cmd.
- Very specific: line 75
Use PowerShell only as the transport with -ExecutionPolicy Bypass, then call the .cmd shims from inside it.
- Very specific: line 77
If an exact published-tag Windows lane fails during preflight with npm run build and 'pnpm' is not recognized, remember that the guest is …
- Very specific: line 80
If a Windows retry sees the VM become suspended or stopped, resume/start it before the next prlctl exec.
- Very specific: line 89
If standalone Windows upgrade fails with a gateway token mismatch but pnpm test:parallels:npm-update passes, trust the mismatch as a …
- Distinctive: line 90
Keep onboarding and status output ASCII-clean in logs.
- Very specific: line 91
If you hit an older run with rc=255 plus an empty fresh.install-main.log or upgrade.install-main.log, treat it as a likely prlctl exec …
- Very specific: line 96
Use the snapshot closest to fresh Ubuntu 24.04.3 ARM64.
- Very specific: line 97
If that exact VM is missing on the host, any Ubuntu guest with major version >= 24 is acceptable.
- Very specific: line 98
Use plain prlctl exec; --current-user is not the right transport on this snapshot.
- Very specific: line 104
If Linux gateway bring-up fails, inspect /tmp/openclaw-parallels-linux-gateway.log in the guest phase logs first.
- Distinctive: line 112
Keep the Discord token only in a host env var.
- Very specific: line 113
Use installed openclaw message send/read, not node openclaw.mjs message ....
- Very specific: line 115
Avoid long prlctl enter or expect-driven Discord config scripts.
“Common” is measured: kept by at least 6 in 10 of the 14 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
OpenClaw Parallels Smoke
Use this skill for Parallels guest workflows and smoke interpretation. Do not load it for normal repo work.
Global rules
- Use the snapshot most closely matching the requested fresh baseline.
- Gateway verification in smoke runs should use
openclaw gateway status --deep --require-rpcunless the stable version being checked does not support it yet. - Stable
2026.3.12pre-upgrade diagnostics may require a plaingateway status --deepfallback. - Treat
precheck=latest-ref-failon that stable pre-upgrade lane as baseline, not automatically a regression. - Pass
--jsonfor machine-readable summaries. - Per-phase logs land under
/tmp/openclaw-parallels-*. - Do not run local and gateway agent turns in parallel on the same fresh workspace or session.
- If
mainis moving under active multi-agent work, prefer a detached worktree pinned to one commit for long Parallels suites. The smoke scripts now verify the packed tgz commit instead of livegit rev-parse HEAD, but a pinned worktree still avoids noisy rebuild/version drift during reruns. - For
prlctl exec, pass the VM name before--current-user(prlctl exec "$VM" --current-user ...), not the other way around. - If the workflow installs OpenClaw from a repo checkout instead of the site installer/npm release, finish by installing a real guest CLI shim and verifying it in a fresh guest shell.
pnpm openclaw ...inside the repo is not enough for handoff parity. - On macOS guests, prefer a user-global install plus a stable PATH-visible shim:
- install with
NPM_CONFIG_PREFIX="$HOME/.npm-global" npm install -g . - make sure
~/.local/bin/openclawexists or~/.npm-global/binis on PATH - verify from a brand-new guest shell with
which openclawandopenclaw --version
- install with
npm install then update
- Preferred entrypoint:
pnpm test:parallels:npm-update - Flow: fresh snapshot -> install npm package baseline -> smoke -> install current main tgz on the same guest -> smoke again.
- Same-guest update verification should set the default model explicitly to
openai/gpt-5.4before the agent turn and use a fresh explicit--session-idso old session model state does not leak into the check. - The aggregate npm-update wrapper must resolve the Linux VM with the same Ubuntu fallback policy as
parallels-linux-smoke.shbefore both fresh and update lanes. Treat any Ubuntu guest with major version>= 24as acceptable when the exact default VM is missing, preferring the closest version match. On Peter's current host today, missingUbuntu 24.04.3 ARM64should fall back toUbuntu 25.10. - On macOS same-guest update checks, restart the gateway after the npm upgrade before
gateway status/agent; launchd can otherwise report a loaded service while the old process has exited and the fresh process is not RPC-ready yet. - On Windows same-guest update checks, restart the gateway after the npm upgrade before
gateway status/agent; in-place global npm updates can otherwise leave stale hasheddist/*module imports alive in the running service. - For Windows same-guest update checks, prefer the done-file/log-drain PowerShell runner pattern over one long-lived
prlctl exec ... powershell -EncodedCommand ...transport. The guest can finish successfully while the outerprlctl execstill hangs. - The Windows same-guest update helper should write stage markers to its log before long steps like tgz download and
npm install -gso the outer progress monitor does not sit onwaiting for first log lineduring healthy but quiet installs. - Linux same-guest update verification should also export
HOME=/root, passOPENAI_API_KEYviaprlctl exec ... /usr/bin/env, and useopenclaw agent --local; the fresh Linux baseline does not rely on persisted gateway credentials. - The npm-update wrapper now prints per-lane progress from the nested log files. If a lane still looks stuck, inspect the nested logs in
runDirfirst (macos-fresh.log,windows-fresh.log,linux-fresh.log,macos-update.log,windows-update.log,linux-update.log) instead of assuming the outer wrapper hung. - If the wrapper fails a lane, read the auto-dumped tail first, then the full nested lane log under
/tmp/openclaw-parallels-npm-update.*.
CLI invocation footgun
- The Parallels smoke shell scripts should tolerate a literal bare
--arg sopnpm test:parallels:* -- --jsonand similar forwarded invocations work without needing to callbash scripts/e2e/...directly.
macOS flow
- Preferred entrypoint:
pnpm test:parallels:macos - Default upgrade coverage on macOS should now include: fresh snapshot -> site installer pinned to the latest stable tag ->
openclaw update --channel devon the guest. Treat this as part of the default Tahoe regression plan, not an optional side quest. parallels-macos-smoke.sh --mode upgradeshould run that release-to-dev lane by default. Keep the older host-tgz upgrade path only when the caller explicitly passes--target-package-spec.- Because the default upgrade lane no longer needs a host tgz, skip
npm pack+ host HTTP server startup for--mode upgradeunless--target-package-specis set. Keep the pack/server path forfreshandboth. - If that release-to-dev lane fails with
reason=preflight-no-good-commitand repeatedsh: pnpm: command not foundtails frompreflight build, treat it as an updater regression first. The fix belongs in the git/dev updater bootstrap path, not in Parallels retry logic. - Until the public stable train includes that updater bootstrap fix, the macOS release-to-dev lane may seed a temporary guest-local
pnpmshim immediately beforeopenclaw update --channel dev. Keep that workaround scoped to the smoke harness and remove it once the latest stable no longer needs it. - In Tahoe
prlctl exec --current-userruns, prefer explicitnode .../openclaw.mjs ...invocations for the release->dev handoff itself and for post-update verification. The shebanged globalopenclawwrapper can fail withenv: node: No such file or directory, and self-updating through the wrapper is a weaker lane than invoking the entrypoint under a fixednode. - Default to the snapshot closest to
macOS 26.3.1 latest. - On Peter's Tahoe VM,
fresh-latest-march-2026can hang inprlctl snapshot-switch; if restore times out there, rerun with--snapshot-hint 'macOS 26.3.1 latest'before blaming auth or the harness. parallels-macos-smoke.shnow retriessnapshot-switchonce after force-stopping a stuck running/suspended guest. If Tahoe still times out after that recovery path, then treat it as a real Parallels/host issue and rerun manually.- The macOS smoke should include a dashboard load phase after gateway health: resolve the tokenized URL with
openclaw dashboard --no-open, verify the served HTML contains the Control UI title/root shell, then open Safari and require an established localhost TCP connection from Safari to the gateway port. - If a packaged install regresses with
500on/,/healthz, or__openclaw/control-ui-config.jsonafterfresh.install-mainorupgrade.install-main, suspect bundled plugin runtime deps resolving from the package rootnode_modulesrather thandist/extensions/*/node_modules. Repro quickly with a realnpm pack/global install lane before blaming dashboard auth or Safari. prlctl execis fine for deterministic repo commands, but use the guest Terminal orprlctl enterwhen installer parity or shell-sensitive behavior matters.- Multi-word
openclaw agent --message ...checks should go through a guest shell wrapper (guest_current_user_sh/guest_current_user_clior/bin/sh -lc ...), not rawprlctl exec ... node openclaw.mjs ..., or the message can be split into extra argv tokens and Commander reportstoo many arguments for 'agent'. - When ref-mode onboarding stores
OPENAI_API_KEYas an env secret ref, the post-onboard agent verification should also exportOPENAI_API_KEYfor the guest command. The gateway can still reject with pairing-required and fall back to embedded execution, and that fallback needs the env-backed credential available in the shell. - On the fresh Tahoe snapshot,
brewexists butnodemay be missing from PATH in noninteractive exec. Use/opt/homebrew/bin/nodewhen needed. - Fresh host-served tgz installs should install as guest root with
HOME=/var/root, then run onboarding as the desktop user viaprlctl exec --current-user. - Root-installed tgz smoke can log plugin blocks for world-writable
extensions/*; do not treat that as an onboarding or gateway failure unless plugin loading is the task.
Windows flow
- Preferred entrypoint:
pnpm test:parallels:windows - Use the snapshot closest to
pre-openclaw-native-e2e-2026-03-12. - Default upgrade coverage on Windows should now include: fresh snapshot -> site installer pinned to the requested stable tag ->
openclaw update --channel devon the guest. Keep the older host-tgz upgrade path only when the caller explicitly passes--target-package-spec. - Optional exact npm-tag baseline on Windows:
bash scripts/e2e/parallels-windows-smoke.sh --mode upgrade --target-package-spec openclaw@<tag> --json. That lane installs the published npm tarball as baseline, then runsopenclaw update --channel dev. - Optional forward-fix Windows validation:
bash scripts/e2e/parallels-windows-smoke.sh --mode upgrade --upgrade-from-packed-main --json. That lane installs the packed current-main npm tgz as baseline, then runsopenclaw update --channel dev. - Always use
prlctl exec --current-user; plainprlctl execlands inNT AUTHORITY\\SYSTEM. - Prefer explicit
npm.cmdandopenclaw.cmd. - Use PowerShell only as the transport with
-ExecutionPolicy Bypass, then call the.cmdshims from inside it. - Current Windows Node installs expose
corepackas a.cmdshim. If a release-to-dev lane seescorepackon PATH butopenclaw update --channel devstill behaves as if corepack is missing, treat that as an exec-shim regression first. - If an exact published-tag Windows lane fails during preflight with
npm run buildand'pnpm' is not recognized, remember that the guest is still executing the old published updater. Validate the fix with--upgrade-from-packed-main, then wait for the next tagged npm release before expecting the historical tag lane to pass. - Multi-word
openclaw agent --message ...checks should call& $openclaw ...inside PowerShell, notStart-Process ... -ArgumentListagainstopenclaw.cmd, or Commander can see split argv and throwtoo many arguments for 'agent'. - Windows installer/tgz phases now retry once after guest-ready recheck; keep new Windows smoke steps idempotent so a transport-flake retry is safe.
- If a Windows retry sees the VM become
suspendedorstopped, resume/start it before the nextprlctl exec; otherwise the second attempt just repeats the samerc=255. - Windows global
npm install -gphases can stay quiet for a minute or more even when healthy; inspect the phase log before calling it hung, and only treat it as a regression once the retry wrapper or timeout trips. - The Windows baseline-package helpers now auto-dump the latest guest
npm-cache/_logs/*-debug-0.logtail on timeout or nonzero completion. Read that tail in the phase log before opening a second guest shell. - Fresh Windows tgz install phases should also use the background PowerShell runner plus done-file/log-drain pattern; do not rely on one long-lived
prlctl exec ... powershell ... npm install -gtransport for package installs. - Windows release-to-dev helpers should log
where pnpmbefore and after the update and requirewhere pnpmto succeed post-update. That proves the updater installed or enabledpnpmitself instead of depending on a smoke-only bootstrap. - Fresh Windows ref-mode onboard should use the same background PowerShell runner plus done-file/log-drain pattern as the npm-update helper, including startup materialization checks, host-side timeouts on short poll
prlctl execcalls, and retry-on-poll-failure behavior for transient transport flakes. - Fresh Windows daemon-health reachability should use a hello-only gateway probe and a longer per-probe timeout than the default local attach path; full health RPCs are too eager during initial startup on current main.
- Fresh Windows ref-mode agent verification should set
OPENAI_API_KEYin the PowerShell environment before invokingopenclaw.cmd agent, for the same pairing-required fallback reason as macOS. - The standalone Windows upgrade smoke lane should stop the managed gateway after
upgrade.install-mainand beforeupgrade.onboard-ref. Restarting before onboard can leave the old process alive on the pre-onboard token while onboard rewrites~/.openclaw/openclaw.json, which then failsgateway-healthwithunauthorized: gateway token mismatch. - If standalone Windows upgrade fails with a gateway token mismatch but
pnpm test:parallels:npm-updatepasses, trust the mismatch as a standalone ref-onboard ordering bug first; the npm-update helper does not re-run ref-mode onboard on the same guest. - Keep onboarding and status output ASCII-clean in logs; fancy punctuation becomes mojibake in current capture paths.
- If you hit an older run with
rc=255plus an emptyfresh.install-main.logorupgrade.install-main.log, treat it as a likelyprlctl exectransport drop after guest start-up, not immediate proof of an npm/package failure.
Linux flow
- Preferred entrypoint:
pnpm test:parallels:linux - Use the snapshot closest to fresh
Ubuntu 24.04.3 ARM64. - If that exact VM is missing on the host, any Ubuntu guest with major version
>= 24is acceptable; prefer the closest versioned Ubuntu guest with a fresh poweroff snapshot. On Peter's host today, that isUbuntu 25.10. - Use plain
prlctl exec;--current-useris not the right transport on this snapshot. - Fresh snapshots may be missing
curl, andapt-get updatecan fail on clock skew. Bootstrap withapt-get -o Acquire::Check-Date=false updateand installcurl ca-certificates. - Fresh
maintgz smoke still needs the latest-release installer first because the snapshot has no Node or npm before bootstrap. - This snapshot does not have a usable
systemd --usersession; managed daemon install is unsupported. - The Linux smoke now falls back to a manual
setsid openclaw gateway run --bind loopback --port 18789 --forcelaunch withHOME=/rootand the provider secret exported, then verifiesgateway status --deep --require-rpcwhen available. - The Linux manual gateway launch should wait for
gateway status --deep --require-rpcinside thegateway-startphase; otherwise the first status probe can race the background bind and fail a healthy lane. - If Linux gateway bring-up fails, inspect
/tmp/openclaw-parallels-linux-gateway.login the guest phase logs first; the common failure mode is a missing provider secret in the launched gateway environment.
Discord roundtrip
- Discord roundtrip is optional and should be enabled with:
--discord-token-env--discord-guild-id--discord-channel-id
- Keep the Discord token only in a host env var.
- Use installed
openclaw message send/read, notnode openclaw.mjs message .... - Set
channels.discord.guildsas one JSON object, not dotted config paths with snowflakes. - Avoid long
prlctl enteror expect-driven Discord config scripts; preferprlctl exec --current-user /bin/sh -lc ...with short commands. - For a narrower macOS-only Discord proof run, the existing
parallels-discord-roundtripskill is the deep-dive companion.
Other versions14 projects use a version of this.
Word for word · 0
None found.
Edited · 14
- moltbot/moltbot★ 393k32% same
- clawdbot/clawdbot★ 393k32% same
- steipete/warelay★ 392k32% same
- moltbot/clawdbot★ 392k32% same
- steipete/clawdis★ 392k32% same
- molt-bot/clawdbot★ 391k32% same
- openclaw/openclaw★ 391k32% same
- OpenBMB/EdgeClaw★ 1.2k95% same
- friuns2/openclaw-android-assistant★ 55632% same
- OpenClawAndroid/openclaw-android-assistant★ 55632% same
4 more not listed
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use auto-qa, discord-e2e and 9 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
supermansuper563-opsSkillauto-qa
Continuously audit, live-test, and stress-test the current OpenClaw codebase across at least ten independently scoped subsystem lanes; default to 100 independently verified, landed root-cause fixes, maintain an evidence-backed report, and announce each merged pull request immediately. Use for OpenClaw-wide autonomous QA, live-provider campaigns, gateway, CLI, web, plugin, native-app, scenario, packaging, and extended soak testing.
Also in 11 projects that use this
molt-botSkilldiscord-e2e
Test Discord with Convex-leased QA bots: check credentials without a Gateway, exercise owned messages, or prove OpenClaw replies, files, threads, reactions, streaming, and typing. Distinguish API and Gateway evidence from manual user interactions.
Also in 10 projects that use this
molt-botSkillopenclaw-repair-sweep
Run scoped OpenClaw issue/PR repair campaigns: coordinate workers, prove root causes, and land or close verified work under the requested authority.
Also in 10 projects that use this
clawsoulsSkillchannel-message-flows
Use when running QA Lab channel message flow evidence.
Also in 12 projects that use this
clawsoulsSkillclawdtributor
Use for OpenClaw clawtributors PR/issue triage: Discrawl discovery, live-open rechecks, deep review, topic grouping, and compact @handle/LOC/type/blast/verification summaries.
Also in 12 projects that use this
- +2 more from molt-bot
- +4 more from clawsouls
In this repository65 other files it gives its agents.
- AGENTS.mdAGENTS.md
- extensions/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- extensions/CLAUDE.mdCLAUDE.md
- openclaw-ghsa-maintainerSkill
- openclaw-pr-maintainerSkill
- openclaw-qa-testingSkill
- openclaw-release-maintainerSkill
- openclaw-test-heap-leaksSkill
- parallels-discord-roundtripSkill
- security-triageSkill
- update-openclaw-bundleSkill
- 1passwordSkill
- apple-notesSkill
- apple-remindersSkill
- bear-notesSkill
- blogwatcherSkill
- blucliSkill
- bluebubblesSkill
- camsnapSkill
- canvasSkill
- clawhubSkill
- coding-agentSkill
- discordSkill
- eightctlSkill
- geminiSkill
- gh-issuesSkill
- gifgrepSkill
- githubSkill
- gogSkill
- goplacesSkill
- healthcheckSkill
- himalayaSkill
- imsgSkill
- mcporterSkill
- model-usageSkill
- nano-pdfSkill
- node-connectSkill
- notionSkill
- obsidianSkill
- openai-whisper-apiSkill
- openai-whisperSkill
- openhueSkill
- oracleSkill
- ordercliSkill
- peekabooSkill
- sagSkill
- session-logsSkill
- sherpa-onnx-ttsSkill
- skill-creatorSkill
- slackSkill
- songseeSkill
- sonoscliSkill
- spotify-playerSkill
- summarizeSkill
- taskflow-inbox-triageSkill
- taskflowSkill
- things-macSkill
- tmuxSkill
- trelloSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

