Skip to content
Back to skills

Atmos Device Preview

ASecurity

Control Atmos Device Preview (iOS Simulator / Android emulator) via `atmos simulator` (screenshot, tap, swipe, type, press) without MCP. Use whenever the user or task needs to tap the simulator, drive an android emulator, interact with device preview, or take a phone screenshot in Atmos. Do not use for macOS desktop capture (atmos-desktop-use) or in-page browser DOM (atmos-browser-use). Not folded into atmos-cli.

  • 6 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 29, 2026
developmentbash

Works with

  • cli
  • mcp

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add AruNi-01/atmos --skill atmos-device-preview --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Atmos Device Preview?

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

Security grade badge for Atmos Device Preview
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/aruni-01-atmos-device-preview/badge)](https://www.skillsdirectory.com/skills/aruni-01-atmos-device-preview)

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: atmos-device-preview
version: "1.0.1"
description: >
  Control Atmos Device Preview (iOS Simulator / Android emulator) via
  `atmos simulator` (screenshot, tap, swipe, type, press) without MCP. Use
  whenever the user or task needs to tap the simulator, drive an android
  emulator, interact with device preview, or take a phone screenshot in Atmos.
  Do not use for macOS desktop capture (atmos-desktop-use) or in-page browser
  DOM (atmos-browser-use). Not folded into atmos-cli.
---

# Atmos Device Preview

Drive a **claimed** iOS Simulator / Android emulator in the Atmos Simulator tab
via `atmos simulator`. **No MCP.** Separate product from Desktop Use and
Browser Use — **not** `atmos-cli`.

Details: [`references/cli.md`](references/cli.md).

## Prerequisites

1. `atmos` on `PATH`.
2. Workspace sticky: `atmos context set --workspace <id>` (or `--workspace` on
   the command). Missing workspace → `CONTEXT_REQUIRED`.
3. A **live claim**. v1 tap/screenshot/swipe/type/press never start preview.

## Decision tree

1. If the message already contains a Device Preview chip / pasted prompt /
   explicit `udid` → use that `udid`.
2. Else `atmos simulator list`. If **one** live claim **in this workspace**,
   use it and say so.
3. If **several** live claims on the Computer (or none in this workspace but
   others exist): print `name · platform · project or workspace` (flag the
   current workspace) and **ask which `udid`**. Do not pick.
4. If zero claims: ask the user to Start the Simulator tab, click Agent, or
   run `/device-preview`. Do **not** auto-boot.
5. Then screenshot → tap/swipe/type/press **with `--udid`**.

| Intent | Command |
|--------|---------|
| Ready / inventory | `list` then `status` |
| Capture | `screenshot --udid …` |
| Tap / swipe / type / press | `tap` / `swipe` / `type` / `press` **with `--udid`** |
| Probe / start / stop | only if the user asked to open or close preview |
| macOS desktop GUI | **other skill** — `atmos-desktop-use` |
| Page DOM | **other skill** — `atmos-browser-use` |

## Critical rules (read this — most failures are here)

### 1) Coordinate space (not Desktop Use)

`screenshot` writes a PNG and returns `{ path, width, height, … }`. Read that
PNG. Then:

```text
--x = px / width     # normalized 0..1
--y = py / height    # normalized 0..1
```

Top-left origin. Outside `0..1` → `INVALID_COORDS`.

**Wrong:** Desktop Use `--coord-space png` / `--coord-space points` on these
commands. **Wrong:** raw PNG pixels as `--x 240 --y 400`.

### 2) `--udid` is the device handle

`--platform` is a filter, not a unique id. Never pick “any Android on the
machine.” Never curl a helper port. Never use `url` / `port`.

Pass `--udid` on every screenshot/tap/swipe/type/press once you have one.

### 3) Live claim required

Tap must **not** start the preview. `NO_CLAIM` → ask the user to Start.
Do not run `atmos simulator start` unless they asked to open preview.

### 4) iOS keys

`press --key home` only. `back` / `recents` → `UNSUPPORTED_ON_PLATFORM`.
Do **not** retry those as Android.

## Default loop

```bash
atmos simulator list
# one live claim in this workspace → use its udid (and say so)
atmos simulator screenshot --udid <udid>
# Read result.path; use result.width / result.height
atmos simulator tap --udid <udid> --x <px/width> --y <py/height>
atmos simulator screenshot --udid <udid>
```

`status` for agents is `{ udid, name, platform, helper, workspace_id }`.
Do **not** tell yourself to use url/port.

Always JSON stdout. Do not pass `--json`. Do not teach `atmos call simulator_*`.

## Anti-patterns

- curl helper, `npx serve-sim`, or any port
- Desktop Use on Simulator.app / emulator window
- Browser Use for the phone iframe
- Auto-`start` because tap returned `NO_CLAIM`
- Choosing a device by `--platform` alone
- Desktop Use `--coord-space png` here
- Folding this into `atmos-cli` as the primary skill
- MCP

## Errors

| Code | Recovery |
|------|----------|
| `NO_CLAIM` | Ask user to Start Simulator / Agent / `/device-preview`. Do not auto-start. |
| `DEVICE_UNKNOWN` | Re-`list`; use a udid from the table |
| `CLAIMED_BY_OTHER_WORKSPACE` | Stop. Ask which workspace; do not drive that udid from here |
| `PLATFORM_MISMATCH` | Stay on this claim; do not switch devices |
| `UNSUPPORTED_ON_PLATFORM` | iOS `back`/`recents` — do not retry as Android |
| `INVALID_COORDS` | Recompute `px/width`, `py/height` from the latest PNG size |
| `HELPER_UNREACHABLE` | Report; do not curl a port |
| `CONTEXT_REQUIRED` | `atmos context set --workspace <id>` or pass `--workspace` |
| `AMBIGUOUS_DEVICE` | `list` and ask which `udid` |
| `EMPTY_TEXT` | Pass `--text` |

Branch on `error.code`. Follow `fix` / `next_actions` when present.

## Reporting

- Commands + ok / `error.code`
- `udid` used (say when you inferred the single workspace claim)
- Screenshot paths + PNG width/height
- Normalized coords (`px/width`, `py/height`) — never Desktop Use coord-space

Files in this skill

  • SKILL.md4.9 KB
  • references/cli.md1.8 KB

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.