trycua/cua is a toolkit for building and testing AI agents that operate computers by seeing screens, clicking controls, and typing across operating systems and virtual machines. It serves agent developers, benchmark authors, and teams generating training data for computer-use models. Catalogue add-ons provide ways to operate Cua drivers and related agent workflows.
Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add trycua/cua --skill jev-usegit clone --depth 1 https://github.com/trycua/cuaWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/trycua/cua/jev-use)<a href="https://agentmods.dev/skills/trycua/cua/jev-use"><img src="https://agentmods.dev/badge/skills/trycua/cua/jev-use/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/trycua/cua/jev-use"><img src="https://agentmods.dev/badge/skills/trycua/cua/jev-use.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00068 | $0.01216 |
| Opus 5.5 | $0.00027 | $0.00486 |
| Sonnet 5.5 | $0.00014 | $0.00243 |
| Haiku 4.5 | $0.00007 | $0.00122 |
Grade A, and why
jev-use scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 17d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 98 lines — stays where its author put it; the contents beside it link to each section on GitHub.
jev-use
Keep the decision layer above Cua Driver. Driver supplies observations and executes actions; the application constructs complete candidates; TypeSafe Jev returns one candidate ID. Never let Jev invent tool names, coordinates, refs, targets, delivery modes, or other arguments.
Use the example at libs/cua-driver/examples/jev-use/ as the runnable reference.
Keep TypeSafe request construction in the external Jev adapter rather than in
Driver or a Driver extension. The Python and TypeScript adapters must expose
equivalent mock and live behavior.
For a process boundary, use cua.jev_choice_request_v1 on stdin and require
cua.jev_choice_v1 on stdout. The request contains only a goal, capture ID,
compact regions, bounded history, and candidate IDs with descriptions; the
response contains only the selected ID, model identity, confidence, and
probabilities. Invoke the Python interpreter and absolute chooser path directly
without a shell.
For native desktop applications, use NativeAccessibilitySource and
cua.jev_choice_request_v2, which adds a per-candidate source (page, ax,
or visual), compact value-free elements, and optional progress counted
from the runner's own performed actions. Browser tasks keep sending v1.
Prefer browser DOM and semantic evidence. The optional visual adapter consumes
the public cua.visual_regions_v1 result only when Driver advertises both
parse_visual_regions and the capture-bound click.capture_id input.
Use the checked-in fixtures for deterministic development; do not add a model,
extension artifact, or Driver implementation detail to the recipe.
Decision loop
- State the goal and obtain a fresh Cua Driver observation through one persistent CLI or MCP session.
- Prefer an unambiguous fresh accessibility or browser DOM token.
- If visual grounding is needed, discover
parse_visual_regionsthrough the current MCP tool inventory. Validate its versioned result, capture ID, screenshot reference and dimensions, coordinate mapping, unique region IDs, bounds, content, confidence, and ambiguity. Build a pixel action only with the exact capture ID in the sameclickcall. Otherwise reobserve or abstain. - Construct a bounded candidate table. Each executable candidate contains the
complete Driver tool and arguments. Include
reobserveandabstainwhen evidence can be stale, incomplete, or ambiguous. - Send Jev only the goal, compact observation, recent history, and candidate
IDs with descriptions. Include typed visual regions and their
capture_idwhen the current observation has validated visual evidence; do not send extension internals or screenshot bytes. - Resolve the returned ID against the original immutable table. Reject an unknown, duplicate, malformed, denied, stale, or capture-mismatched choice, or a result below the caller's stated confidence policy.
- Execute at most one Driver action. Use background delivery by default; foreground delivery is an explicit escalation subject to the active Driver contract and user authorization.
- Reobserve and verify the postcondition before building another table.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 17d ago Changed · +1 lines ec971f53284a
- 18d ago Changed · +23 lines 8c666476bb74
- 28d ago First seen · 74 lines · 68 tokens per session scan A a85d25494d64
jev-use is a skill published in the GitHub repository trycua/cua (29,970 stars, last pushed today), licensed MIT. It adds 68 tokens to every session and 1,216 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-19.
Other skills, from other repositories
apple-notes
Manage Apple Notes via memo CLI: create, search, edit.
apple-mail
Use this skill when the user wants to manage Apple Mail on macOS - reading, searching, sending, replying to, forwarding, and organizing emails and mailboxes. This skill provides access to Apple Mail through MCP tools.
swift-expert
Expert-level Swift development for iOS, macOS with SwiftUI, Combine, and modern Swift 5.9+. Use when the user mentions iOS, macOS, SwiftUI, Combine, async await, or Apple platforms, or when the task involves Modern Swift Features, Basics and Optionals, Functions and Closures, or Structs and Classes.
apple-photos
Use this skill when the user wants to query, view, organize, or export photos from their macOS Apple Photos library — searching by date/import-date/album/keyword/person/label/place/GPS-radius/media-type/aesthetic-score/OCR-text, viewing photos inline as thumbnails, acting on the live Photos.app selection, finding…
programming-swift
Provides the complete content of 'The Swift Programming Language (6.4)' book by Apple. Use this skill when you need to verify Swift syntax, look up language features, understand concurrency, resolve compiler errors, or consult the formal language reference.
swift-coding-standards
Master Swift coding standards with Apple's guidelines, protocol-oriented design, and modern concurrency patterns.