| name | windows-chat-verification |
| description | Verify real Windows chat-app workflows through DesktopManager MCP. Use when an MCP-capable assistant should open a desktop chat app, inspect its window and controls, type into the prompt area, send a message, and verify the visible result with screenshots and structural or app-owned evidence. |
Windows Chat Verification
Use this skill when the task is to verify a real Windows chat application through DesktopManager, especially IntelligenceX Chat and similar WebView2 or Chromium-style shells.
Golden Path
- Make sure the DesktopManager MCP server is available through this plugin.
- The plugin starts
DesktopManager through ./scripts/start-desktopmanager-mcp.ps1.
- Build
DesktopManager.Cli first if the repo has not produced a CLI host yet.
- Keep the default server read-only unless the verification needs clicks, typing, or layout changes.
- Enable only the minimum mutation scope you need.
- Set
DESKTOPMANAGER_MCP_ALLOW_MUTATIONS=1 before starting the MCP client session when the workflow needs live interaction.
- Use
DESKTOPMANAGER_MCP_ALLOW_PROCESS=IntelligenceX.Chat.App;DesktopManager.TestApp or another narrow process list when you can.
- Set
DESKTOPMANAGER_MCP_ALLOW_FOREGROUND_INPUT=1 only when a zero-handle UIA editor really needs focused fallback text or key input.
- Start with inspection, not clicks.
- Read
desktop://windows/visible, desktop://windows/active, and desktop://monitors.
- Use
list_windows, get_active_window, and window_exists before assuming the target app is ready.
- Capture
screenshot_window or screenshot_desktop when visual proof matters.
- Launch or attach to the target chat app.
- For IntelligenceX Chat in a sibling repo, use
./scripts/start-intelligencex-chat.ps1 if available.
- Otherwise use
launch_process or launch_and_wait_for_window.
- Prefer
wait_for_window over blind retries.
- Inspect controls before typing.
- Use
list_window_controls first.
- For WebView2 or Chromium-style surfaces, use
diagnose_window_controls when expected edit controls are missing or unstable.
- Prefer saved control targets when the same prompt area or send button will be reused.
- Interact with the smallest safe target.
- Prefer
click_control, set_control_text, and send_control_keys when the app exposes usable controls.
- If the chat editor is a zero-handle UIA surface, use explicit foreground fallback only when the server was started with
--allow-foreground-input.
- If structure still fails, switch to screenshot-assisted targeting with
get_window_geometry, save_window_target, and click_window_point.
- For
IntelligenceX.Chat, prefer the app-owned automation contract through ./scripts/invoke-intelligencex-chat-automation.ps1 before spending time on coordinate fallbacks.
- Verify the result from more than one angle.
- Capture an after screenshot.
- Re-read the relevant controls or window text when possible.
- Confirm the visible transcript or status change instead of trusting the input acknowledgement alone.
- When
IntelligenceX.Chat runs in automation mode, confirm wait_for_idle, get_transcript_tail, or list_conversations from the app-owned pipe.
IntelligenceX Notes
- IntelligenceX Chat currently uses a WebView2 shell with a composer textarea and send button in the web UI.
- In the sibling repo, the current shell template exposes
textarea#prompt and button#btnSend.
- Treat that as helpful context, not a guarantee that UI Automation will expose the same shape on every run.
IntelligenceX.Chat now also exposes an opt-in app-owned automation pipe in automation mode. That is the preferred verification path when the visible WebView surface is opaque to UIA.
- For IntelligenceX verification, prefer this flow:
- launch the app in automation mode or attach to an existing automation-mode instance
- capture the real window with DesktopManager so you still have visual evidence
- call
./scripts/invoke-intelligencex-chat-automation.ps1 -Command new_conversation -LaunchIfNeeded
- call
./scripts/invoke-intelligencex-chat-automation.ps1 -Command send_prompt -Text "Reply with only the single word PONG."
- call
./scripts/invoke-intelligencex-chat-automation.ps1 -Command wait_for_idle
- call
./scripts/invoke-intelligencex-chat-automation.ps1 -Command get_transcript_tail -Count 2
- confirm the latest assistant item matches the expected reply
- keep DesktopManager screenshots and window/control diagnostics alongside the app-owned verification
Decision Rules
- Prefer inspection-first MCP workflows over ad-hoc shell automation.
- Prefer
launch_and_wait_for_window when the very next step depends on the real app window.
- Prefer UIA or control-aware actions before coordinate clicks.
- Prefer
diagnose_window_controls before escalating to foreground fallback on modern apps.
- Prefer screenshot-assisted window targets over raw pixel guesses when structure is weak.
- Prefer
captureAfter for mutating actions that matter.
- Prefer app-owned contracts over brittle coordinate replay when the target app explicitly provides one.
- If the server blocks mutating tools, explain that the MCP session is still in read-only mode instead of pretending the selector failed.
Useful Environment Variables
DESKTOPMANAGER_REPO_ROOT
DESKTOPMANAGER_MCP_EXE
DESKTOPMANAGER_MCP_DLL
DESKTOPMANAGER_MCP_ALLOW_MUTATIONS
DESKTOPMANAGER_MCP_ALLOW_PROCESS
DESKTOPMANAGER_MCP_DENY_PROCESS
DESKTOPMANAGER_MCP_ALLOW_FOREGROUND_INPUT
DESKTOPMANAGER_MCP_DRY_RUN
INTELLIGENCEX_REPO_ROOT
IXCHAT_AUTOMATION_MODE
Reference Files
Docs/DesktopManager.Mcp.md
.agents/skills/desktopmanager-operator/SKILL.md
plugins/desktopmanager-windows-verification/scripts/start-desktopmanager-mcp.ps1
plugins/desktopmanager-windows-verification/scripts/start-intelligencex-chat.ps1
plugins/desktopmanager-windows-verification/scripts/invoke-intelligencex-chat-automation.ps1