Skip to content
Back to skills

Desktop App Testing

ASecurity

Walk a native Windows, macOS, or Linux app through a flow with Poracode's desktop control and verify each step from the window itself.

  • 113 stars
  • 0 votes
  • 0 copies
  • 4 views
  • Added September 2, 2026
ai-agentsgotesting

Security analysis

A100/100

Scanned September 20, 2026

npx -y skills add SDSLeon/lightcode --skill desktop-app-testing --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Desktop App Testing?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Desktop App Testing
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/sdsleon-desktop-app-testing/badge)](https://www.skillsdirectory.com/skills/sdsleon-desktop-app-testing)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: desktop-app-testing
description: "Walk a native Windows, macOS, or Linux app through a flow with Poracode's desktop control and verify each step from the window itself."
---

# Desktop App Testing

Follow the computer-use skill for enable/disable, background-only, and how to read a result. This skill is the test plan: predict, drive, prove.

## Plan the run

List apps and windows and pick the exact target. If the app is not running, search installed apps with `list_apps`
`query` and pass the returned id to `launch_app`. Write down the steps you intend to perform and what each one should
produce on screen; do not improvise against whatever window happens to be in front.

Call `get_window_state` on the selected window with `include_text:true` before the first step. Some apps recreate
windows during navigation, so refresh a stale window instead of reusing its old id.

## Run the flow

Call `computer_use.enable` immediately before the first control step and keep it enabled for the uninterrupted run.

For each step: inspect, act, inspect again, and compare. Prefer `observe:"text"`; reuse `observation.state` for the
second look. Do not batch coordinates or steps whose target depends on an intermediate result.

Use `mode:"foreground"` and `activate_window` only when the user asked for a takeover, and warn the user immediately
beforehand — a refusal is not that permission. A `background_unavailable` refusal means follow the hint to
`invoke_element` or `set_element_value`, and if none fits, say so rather than taking over the desktop.

## Judge the result

A step passed when the window shows what you predicted — the dialog closed, the row appeared, the field holds the value.
Input dispatched with no visible change is a failure, not a pass, and so is a screenshot you did not actually look at.

Stop at anything the user owns: locked desktops, OS permission prompts, password fields, payment or account
confirmations. Ask instead of typing through them.

## Report

Name the app and window, list the steps with their verified outcome, and show the screenshot for anything visual. Call
out the steps you could not complete and why, then `computer_use.disable` so the machine goes back to the user.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.