Skip to content
Agentmart
Submit a tool

aohp-perception

Screenshots and UI hierarchy (windows/nodes) on a logical display via the aohp CLI.

Skill by aohp-os

IndexedApache-2.0★ 156
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/aohp-os-aohp-perception

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Screenshots and UI hierarchy (windows/nodes) on a logical display via the aohp CLI.

Use cases: design

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/aohp-perception

What's inside

Skill name
aohp-perception
Description
Screenshots and UI hierarchy (windows/nodes) on a logical display via the aohp CLI.
License
Apache-2.0
Instructions
57 lines in SKILL.md · view on GitHub

Files (1)

  • SKILL.md

SKILL.md (first lines)

# AOHP perception

Capture **JPEG** screenshots and read **UI hierarchy** on a **logical display** (`displayId`: integer). The default hierarchy is compact HTML-like text with useful node attributes (`id`, `bounds`, text/desc/resourceId, action states); use **`-o`** only when you need the origin JSON.

Requires **`aohp`** on `PATH` (how it reaches the device is already set in the packaged **`aohp`** you run).

## When to use

- Screenshot the whole display, a rectangle, or a single node’s bounds: **`aohp shot full`**, **`aohp shot region`**, **`aohp shot node`**.
- Read or filter the UI tree: **`aohp ui tree`**, **`aohp ui find`**.
- Prefer the subcommands above. Use **`aohp call <method> '<json>'`** only if you need JSON fields the high-level commands do not expose; method names look like **`<area>.<action>`** (e.g. **`ui.tree`**, **`shot.full`**).

## Workflow

- **UI hierarchy:** run **`aohp ui tree -d <displayId>`** whenever you need node **`id`**, **`bounds`**, text, description, resource id, or action states. Default output is compact HTML; add **`-o` / `--origin`** only when you need the full origin JSON. **`aohp ui find`** matches nodes by text / description / resource-id when that is enough.
- **Screenshots:** run **`aohp shot …`** whenever you need pixels. By default each shot writes a JPEG under **`$TMPDIR`** and prints a **short** JSON wrapper (see below)—use that path for vision tools.
- Quote arguments that contain spaces or shell metacharacters when the command runs inside **`exec`**.

## Commands (summary)

| Goal | CLI |
|------|-----|
| Full-screen JPEG | **`aohp shot full -d <id> [-q 1-100]`** — default save under **`$TMPDIR`** as **`aohp_shot_full_<timestamp>.jpg`**; **`-O`** sets the local path; **`--inline`** alone does **not** write or retain a local JPEG—pixels appear in stdout as a single **`type: "image"`** block; **`-O` + `--inline`** writes the file **and** adds **`type: "image"`** after the save-path text |
| Cropped JPEG | **`aohp shot region …`** — same modes (default prefix **`aohp_shot_region_`**) |
| Node bounds JPEG | **`aohp shot node …`** — same modes (default prefix **`aohp_shot_node_`**) |
| UI tree | **`aohp ui tree -d <id> [-f flags]`** — compact HTML; **`-o` / `--origin`** returns the full origin JSON |
| Filter nodes | **`aohp ui find -d <id> [--raw] [-s text] [-D desc] [-R resource-id]`** |
| Stubs | **`aohp ui focused`**, **`aohp ui input-text`** (may be placeholders on some agents) |

Alias: **`aohp ui-tree`** → **`aohp ui tree`**.

## Output shape for **`aohp shot …`** (success)

Stdout is **one JSON object** with **`content`** (array) and **`details`** (object). When a local file is written, the first **`content`** item is **`type: "text"`** (includes **`Saved image bytes to …`** plus a short completion line). With **`--inline`** and no **`-O`**, **`content`** contains only the **`type: "image"`** block.

| Invocation | Local JPEG file | **`type: "image"`** in **`content`** |
|--------------|-----------------|---------------------------------------|
| Default or **`-O`** only | Yes (default under **`$TMPDIR`** or your **`-O`** path) | **No** — keeps **`exec`** output small |
| **`--inline`** only | **No** | **Yes** — the only content block; raw base64 in **`data`**, **`mimeType`** set |
| **`-O`** and **`--inline`** together | Yes, at your **`-O`** path | **Yes** — second block after save-path text |

**`details`**: fields from the agent reply **except** the duplicated huge **`base64`** string; **`details.path`** (when present) is the **device-side** capture path, not necessarily the path where you saved bytes locally—the local path is only in the **`text`** line above.

**`aohp call …`** for shot-related methods returns the **plain agent JSON** (not this wrapper), which is useful for automation but different from **`aohp shot …`** stdout.

## Examples

```bash
aohp ui tree -d 0
aohp ui tree -d 0 -o
aohp shot full -d 0 -q 85
aohp shot full -d 0 -O /tmp/cap.jpg
aohp shot full -d 0 --inline
aohp shot full -d 0 -O /tmp/cap.jpg --inline
```

From aohp-os/aohp, Apache-2.0.

More from aohp-os/aohp

Signals

Stars
156
Forks
18
Open issues
1
Last commit (this folder)
Jun 21, 2026 (4 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
Apache-2.0
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from aohp-os

Cite this page

aohp-perception skill. Agent Mart. https://agentmart.dev/skills/aohp-os-aohp-perception (last updated 2026-10-24)