Operate the Idle Engine Electron shell through the shell-desktop MCP server, including deterministic simulation control, renderer/log/WebGPU diagnostics, window screenshots, shell input events, and compiled asset inspection. Use when tasks mention shell-desktop MCP, Electron shell automation, runtime debugging, or regression capture from desktop shell behavior.
Use this skill to drive the Electron shell via MCP with deterministic, testable workflows. Always do preflight first, then run one focused operation batch per objective.
Skill-local paths (for example scripts/... and references/...) are relative to this directory:
/codex/skills/shell-desktop-mcp.
Run this sequence first:
mcp__idle-engine-shell-desktop__health.bash /codex/skills/shell-desktop-mcp/scripts/preflight-and-wait.sh gateway-backend 18 10
nohup) and writes PID/log paths.mcp__idle-engine-shell-desktop__health and verify ok: true.pnpm shell:desktop:mcp:smoke
mcp__idle-engine-shell-desktop__sim_statusmcp__idle-engine-shell-desktop__window_inforenderer.status (wrapper: mcp__idle-engine-shell-desktop__renderer_status) + probe.webgpuHealth (wrapper: mcp__idle-engine-shell-desktop__probe_webgpuHealth)If startup details are needed, use docs/shell-desktop-mcp.md in the repo.
mcp__idle-engine-shell-desktop__sim_start, mcp__idle-engine-shell-desktop__sim_pause, mcp__idle-engine-shell-desktop__sim_resume, mcp__idle-engine-shell-desktop__sim_stop for lifecycle transitions.mcp__idle-engine-shell-desktop__sim_step only while paused for deterministic advancement.mcp__idle-engine-shell-desktop__sim_enqueue to inject runtime commands in deterministic order.sim_enqueue requires object commands (not strings). Minimal valid shape per command is { type: string }.{
"commands": [
{
"type": "TEST_COMMAND",
"payload": { "source": "mcp" },
"priority": 1
}
]
}
mcp__idle-engine-shell-desktop__sim_status before and after lifecycle mutations.mcp__idle-engine-shell-desktop__window_info to inspect bounds/url/devtools state.mcp__idle-engine-shell-desktop__window_resize before screenshot collection.mcp__idle-engine-shell-desktop__window_devtools only when renderer debugging is needed.window_devtools effects with a follow-up window_info.window_devtools may return success while devToolsOpen remains false; treat this as an environment limitation unless other tool calls fail.mcp__idle-engine-shell-desktop__window_screenshot to collect bounded PNG evidence.mcp__idle-engine-shell-desktop__input_controlEvent with explicit intent, phase, and optional value/metadata.{
"intent": "collect",
"phase": "start",
"value": 1,
"metadata": { "source": "mcp-skill-test" }
}
Use this when validating MCP server coverage end-to-end (for example when updating this skill):
health, sim_status, window_info, renderer_status, probe_webgpuHealth.window_resize, window_screenshot, window_devtools, window_info.input_controlEvent, sim_pause, sim_step, sim_enqueue, sim_resume, sim_stop, sim_start, sim_status.asset_list root, asset_list recursive, asset_read on a discovered file.logs_tail (unfiltered + filtered) and logs_since with cursor polling.1200x800 unless scenario requires otherwise), then capture final baseline snapshot.Report tool-by-tool status and any semantic gaps (for example "success response did not change observable state").
renderer.status (wrapper: mcp__idle-engine-shell-desktop__renderer_status) to capture #output text, optional error banner text, and renderer state snapshots.logs.tail (wrapper: mcp__idle-engine-shell-desktop__logs_tail) for bounded recent diagnostics with optional filters: source, subsystem, severity, limit.logs.since (wrapper: mcp__idle-engine-shell-desktop__logs_since) for incremental polling from a cursor id when tracking live recovery/regressions.probe.webgpuHealth (wrapper: mcp__idle-engine-shell-desktop__probe_webgpuHealth) for machine-readable WebGPU status (ok, lost, recovered) plus last loss reason/timestamp.renderer.status, logs.since, probe.webgpuHealth) in runbooks; expect underscore mapping in Codex tool wrappers.mcp__idle-engine-shell-desktop__asset_list first.mcp__idle-engine-shell-desktop__asset_read only on discovered paths.maxBytes.For reproducible debugging, prefer:
sim_pausesim_step with explicit step countwindow_screenshot (bounded)sim_statusrenderer.status + filtered logs.tail + probe.webgpuHealth) for renderer/WebGPU scenariosAlways report:
nextStepnextCursor, and entry count when using log toolsDo not treat these as root-cause failures by default when MCP calls succeed:
Details: references/known-benign-warnings.md
When preflight or smoke test fails:
health response.docs/shell-desktop-mcp.mdreferences/tool-workflows.mdreferences/known-benign-warnings.mdscripts/preflight-and-wait.sh