Skip to content
Development
Skill

/agent-desktop-windows

Windows platform guide for the agent-desktop CLI. Lists per command group what works on Windows and what refuses, the first-contact gotchas (PowerShell ref quoting, minimized windows, headed-only input), and where to find shell surfaces, notifications, the cursor overlay, UIPI

From plugin
cc-haha
15k9 skills

Claude Code

$ npx -y skills add NanmiCoder/cc-haha --skill agent-desktop-windows --agent claude-code

SKILL.md

agent-desktop-windows.SKILL.md
name: agent-desktop-windows
tags: windows-automation, accessibility, uia, ai-agent, gui-automation, cli
requirements:
  - agent-desktop
description: >
  Windows platform guide for the agent-desktop CLI. Lists per command group
  what works on Windows and what refuses, the first-contact gotchas
  (PowerShell ref quoting, minimized windows, headed-only input), and where
  to find shell surfaces, notifications, the cursor overlay, UIPI elevation,
  Chromium/Electron settle behavior and troubleshooting.
  Triggers on: "windows desktop automation", "UIA tree", "automate Windows app",
  "agent-desktop on Windows", "elevated window input blocked", "E_ACCESSDENIED",
  or any Windows GUI interaction task.

agent-desktop-windows

The observe-act loop, ref system, JSON envelope, sessions and tracing are the same on every platform. This file covers only what differs on Windows.

Requires Windows 10 1809+ / Windows Server 2019+ (x64 or ARM64). Run it in the interactive desktop session of the signed-in user. Session 0 (services and SYSTEM tasks), Server Core, the secure desktop (UAC prompts, the sign-in screen), a locked desktop and another user's session are not supported: observation, actions and capture there fail or return nothing.

Capability Table

| Group | Commands | Status on Windows | |-------|----------|-------------------| | Observation | `snapshot`, `find`, `get`, `is`, `screenshot` | Works. Surfaces are `window`, `focused`, a Chromium modal as `sheet`, and an open application menu as `menu` | | Surfaces | `list-surfaces` | Works. Lists `window`, `focused` and `sheet` per process, plus `menu` with `item_count` while a menu is open | | Shell surfaces | `open-system-surface` | Works for `start-menu`, `taskbar`, `system-tray`, `system-tray-overflow` and `action-center`, and returns the window `snapshot --surface <kind>` reads. `quick-settings` returns `PLATFORM_NOT_SUPPORTED` naming `action-center` | | Ref interaction | `click`, `right-click`, `type`, `set-value`, `clear`, `select`, `toggle`, `check`, `uncheck`, `expand`, `collapse`, `scroll`, `scroll-to` | Works, semantic in headless and `--headed` mode. `right-click` and `type` need `--headed` and return `POLICY_DENIED` headless | | Multi-click and focus | `double-click`, `triple-click`, `focus` | Works with global `--headed` only | | Keyboard and mouse | `press`, `hover`, `drag`, `mouse-click`, `mouse-move`, `mouse-wheel` | Works. Cursor-moving input needs `--headed`. First Contact covers `press --app` | | Held input | `key-down`, `key-up`, `mouse-down`, `mouse-up` | Fails closed on every platform with `ACTION_NOT_SUPPORTED`. A headless `mouse-down` or `mouse-up` returns `POLICY_DENIED` first | | App and window | `launch`, `close-app`, `list-windows`, `list-apps`, `focus-window`, `resize-window`, `move-window`, `minimize`, `maximize`, `restore` | Works. First Contact covers the name `launch` takes | | Displays | `list-displays` | Works | | Clipboard | `clipboard-get`, `clipboard-set`, `clipboard-clear` | Works; typed text and image content | | Wait | `wait` | Works for ms, `--element`, `--window`, `--text`, `--menu`, `--menu-closed`, `--event` and `--notification` | | Notifications | `list-notifications`, `dismiss-notification`, `dismiss-all-notifications`, `notification-action` | Works over the Action Center. Pass `--headed` when the center is closed | | Cursor overlay | `cursor-overlay` | Works. `enable` returns `data.rendered: true` only after the renderer acknowledges over its pipe. See `references/shell-and-overlay.md` | | System | `status`, `permissions`, `version`, `batch`, `skills`, `session`, `trace` | Works |

First Contact

  • **Quote every ref in PowerShell.** PowerShell reads a bare `@token` as its

splatting operator and deletes the argument before the binary sees it, so `set-value @s8f3k2p9:e1 hi` fails `INVALID_ARGS`. Write `set-value '@s8f3k2p9:e1' hi`. cmd.exe and bash need no quoting.

  • **A window behind another window is drivable. A minimized one is not.**

Every element of a minimized window reports `offscreen` and ref actions fail. Run `restore --app <image>` and snapshot again. Do not use `focus-window` by reflex: it steals the user's foreground.

  • **No permission dialog exists.** `permissions` reports `automation` as

`not_required`. Elevation boundaries are the only access control.

  • **Chromium and Electron apps read thin before they settle.** Pass a longer

`--timeout-ms` to `snapshot` instead of concluding the tree is empty.

  • **Blocked shortcuts.** `alt+f4`, `win+l`, `win+d`, `alt+tab`, `win+r`,

`win+x`, `win+e`, `ctrl+shift+esc` and their modifier supersets are refused without `--force`. In combos, `cmd` and `meta` are the Windows key, so `meta+c` is a shell shortcut. Write `ctrl+c` to copy.

  • **`type` needs `--headed`.** It is keystroke synthesis through `SendInput`,

so a strict-headless `type` returns `POLICY_DENIED`. Use `set-value`, or pass `--headed`. It ends `delivered_unverified` (`verification_scope: "unavailable"`) when the field exposes no readable Text selection, and can verify when one is readable: confirm with a fresh `get`.

  • **`press --app` writes to the foreground queue** with no per-process

targeting. A headless press to a non-frontmost app fails closed. A non-interactive caller (service, scheduled task, CI job) gets `delivered_unverified`.

  • **`launch` takes an absolute path or a bare name** under System32 or the

Windows directory, with or without `.exe` (`notepad` or `notepad.exe`), not a display name. Use `list-apps` to find a running app.

  • **Notifications:** `list-notifications` with the Action Center closed needs

`--headed`. Single-item `dismiss-notification` and `notification-action` need `--headed` and `--expected-app` or `--expected-title` for the entry at INDEX.

  • **Surfaces:** an open or context menu is the `menu` surface. Windows does

not advertise a `menubar` surface.

  • **Commands that raise shell chrome take the foreground.
Read more
@nanmicoder
Ships withcc-haha

cc-haha 是一个桌面端 Claude Code 工作台:多会话与全局搜索、分支 / Worktree 启动、Diff 审阅、内置浏览器预览、图形化权限审批、模型自选(Claude / ChatGPT / Grok / 预设 / 本地端点)、图片生成、MCP 与 SubAgent 可视化管理、Agent Teams 协作工作台、动态 Workflow 编排、模型请求追踪、Computer Use、技能市场、多主题、桌面宠物、手机 App 与 H5 远程访问、IM 接入和定时任务,集中在一个 macOS /

Stars on GitHub

Momentum

stars in total
15.4k
Star history of NanmiCoder/cc-haha on GitHub, a chart by star-history.com

Other skills on cc-haha.

agent-desktop-ffi

agent-desktop-ffi

C-ABI bindings over agent-desktop's PlatformAdapter. Consumers (Python ctypes, Swift, Node ffi-napi, Go cgo, C++, Ruby fiddle)…

@nanmicoder@nanmicoderInstall Skill
agent-desktop-linux

agent-desktop-linux

Linux platform guide for the agent-desktop CLI. Lists per command group what works on X11 and on Wayland, how to check the AT-SPI…

@nanmicoder@nanmicoderInstall Skill
agent-desktop-macos

agent-desktop-macos

macOS platform guide for the agent-desktop CLI. Use for desktop automation on macOS: granting Accessibility and Screen Recording…

@nanmicoder@nanmicoderInstall Skill
agent-desktop

agent-desktop

Operate desktop applications on macOS, Windows and Linux through native accessibility trees, using the agent-desktop CLI. Use…

@nanmicoder@nanmicoderInstall Skill
jev-desktop

jev-desktop

Drive a desktop application from one plain-language goal, or resolve one intent at a time, without ever reading the accessibility…

@nanmicoder@nanmicoderInstall Skill

More skills from other plugins.

brainstorming
Auto-invoked

brainstorming

You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…

@obra@obraInstall Skill
ask-matt

ask-matt

Ask which skill or flow fits your situation. A router over the skills in this repo.

skills2w309k
@mattpocock@mattpocockInstall Skill
accessibility
Auto-invoked

accessibility

Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…

ecc2w293k
@affaan-m@affaan-mInstall Skill
compiler-commit

compiler-commit

Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…

react5d252k
@facebook@facebookInstall Skill

Questions about agent-desktop-windows.

Which coding agents can use agent-desktop-windows?
agent-desktop-windows installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.