# Computer Use

Read and drive native desktop apps through the accessibility layer, list apps...

- Repository: https://github.com/kirodotdev/KiroCrew (4711 stars)
- Category: Design
- License: Apache-2.0
- Last updated: 2026-11-01
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add kirodotdev/KiroCrew --skill computer-use -g -a claude-code -y`
Codex: `npx skills add kirodotdev/KiroCrew --skill computer-use -g -a codex -y`
Cursor: `npx skills add kirodotdev/KiroCrew --skill computer-use -g -a cursor -y`
Gemini CLI: `npx skills add kirodotdev/KiroCrew --skill computer-use -g -a gemini-cli -y`

## Description

Read and drive native desktop apps through the accessibility layer, list apps, snapshot a window as a numbered element tree, then click/type/scroll/drag by element index or screen coordinates. Use for a desktop app, not a web page. macOS + Windows; off unless enabled in Settings.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# Computer Use, driving native desktop apps

You have MCP tools that read and operate the **user's real applications** through
the operating system's accessibility layer. This is not a browser: use it when the
work lives in a desktop app (a spreadsheet, a PDF viewer, a native internal tool,
a dialog box), and use `playwright-cli` (the `web-browse` skill) for web pages.

Two things to internalise before your first call:

- **Address elements by index, from a snapshot you were just shown.** That is the
  path to prefer for everything: it activates the control directly, it is checked
  against drift, and the mouse pointer does not move. Coordinates exist as a
  fallback for canvases, maps and custom-drawn UI that expose no element, see
  [Coordinates and dragging](#coordinates-and-dragging-the-fallback-not-the-default).
- **It is off unless the user turned it on** (Settings → Computer Use). The full
  tool set runs on macOS and Windows alike. They differ in ONE way worth relaying:
  Windows has no per-process input, so a keystroke takes the user's keyboard focus
  and a coordinate click moves their real cursor. A "disabled" or "not supported"
  refusal is a real configuration answer, not a transient error, relay it and
  stop; do not retry.

## The loop

**1. Find the app.**

```
computer_list_apps()
```

Returns the on-screen applications with their bundle ids, pids and window titles.
Skip this if the user named an app you can pass straight through, `app` accepts a
display name (`"Finder"`, `"Preview"`) or a bundle id
(`"com.apple.finder"`), matched case-insensitively.

**If the app you need is not running, open it:**

```
computer_launch_app(app="Paint")
```

The rest: https://github.com/kirodotdev/KiroCrew/blob/HEAD/src/kiro_crew/builtin_skills/computer-use/SKILL.md
