Drive native desktop apps through DeepChat's built-in Computer Use tools. Use when the user asks to operate, inspect, automate, or perform a GUI task in a real desktop application.
68
83%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Use DeepChat's plugin-provided Computer Use tools as the only action surface for this skill. Do not
ask the user to install cua-driver, configure an external server, or put anything on PATH for the
bundled DeepChat plugin.
${OWNER_PLUGIN_ID}.${PLUGIN_ROOT}.${PROCESS_ARCH}.darwin/arm64, darwin/x64, win32/x64, win32/arm64,
linux/x64.linux/arm64.DeepChat.app/Contents/Helpers/DeepChat Computer Use.app; the plugin-local fallback is
${PLUGIN_ROOT}/runtime/darwin/${PROCESS_ARCH}/DeepChat Computer Use.app.${PLUGIN_ROOT}/runtime/win32/${PROCESS_ARCH}/cua-driver.exe.${PLUGIN_ROOT}/runtime/linux/${PROCESS_ARCH}/cua-driver.list_apps. Match localized names, English names, romanized names, bundle
identifiers, executable names, and common abbreviations. Prefer stable identifiers when a result
provides them.launch_app. Use the returned pid when available.list_windows({ pid }) when the launch result lacks a usable window.get_window_state({ pid, window_id }). Use a vision
capture mode when visual evidence is needed.click, right_click, double_click, drag, scroll,
type_text, press_key, hotkey, set_value, page, or launch_app with URLs/files when
supported by the platform.Element indices come from the latest get_window_state result for the same pid and window_id.
Re-snapshot when an index is missing, stale, or from another window.
check_permissions for Accessibility and Screen Recording status. If a grant is
missing, ask the user to grant it to the detected DeepChat Computer Use.app helper opened by
DeepChat.list_apps, then call
launch_app with a Windows name, path, launch_path, or aumid. Do not use macOS bundle
ids on Windows. Use bring_to_front only when foreground interaction is necessary for the task.Many media, browser, and Electron apps expose a shallow accessibility tree while still showing actionable pixels.
Use this fallback order:
get_window_state({ pid, window_id }) when the first tree is sparse.page when DOM access identifies the target more reliably than
pixels.get_window_state with vision capture for broad visual confirmation when window contents or
active overlays are unclear.get_desktop_state only for desktop-scope workflows where there is no stable target window.zoom({ pid, window_id, x1, y1, x2, y2 }) for small text or dense icons.
Repeated zoom calls are a failure signal; return to the full-window snapshot or ask for
clarification.click({ pid, window_id, x, y }),
or from the single zoom image with click({ pid, window_id, x, y, from_zoom: true }).Ask the user only when visible candidates are ambiguous, the requested action is destructive, or the target is outside the current visible window.
launch_app.launch_app with the platform-supported file or URL
arguments.window_id.Use get_agent_cursor_state to inspect the cursor overlay. Use set_agent_cursor_enabled,
set_agent_cursor_motion, or set_agent_cursor_style only when the user asks to show, hide,
animate, or restyle the agent cursor.
Use start_recording, stop_recording, get_recording_state, and replay_trajectory for
recording workflows. Use install_ffmpeg only with explicit user approval.
README.md: compact workflow reference.WEB_APPS.md: browser and webview patterns.RECORDING.md: recording and replay tool notes.TESTS.md: manual verification scenarios.b8dbc89
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.