aohp-os/aohp/aohp-ui-actions

Claude Code and agent skill by aohp-os/aohp

Trust tier 2
  • community
LLM review pending
Source check pending

Checking that the SKILL.md file is still in the repository.

Tap, swipe, keys, text, node-targeted actions, and node progress updates on a logical display via the aohp CLI (UI-level injection; not app launch, files, or shell).

Install

npx vskill@latest install aohp-os/aohp/aohp-ui-actions

SKILL.md

AOHP UI actions

When to use

  • Drive taps, swipes, keys, text entry, node-based actions, and node progress updates on a logical display (displayId), including virtual displays created for the agent.
  • Use **aohp act tap-node / `aohp act long-tap-node` / `aohp act input-node` when you already have a node `id` from `aohp ui tree` (integer `id**` on each node).
  • Use **aohp act set-node-progress** for a SeekBar / slider: `--value` / `-V` sets a concrete raw value in the widget's own range (for example brightness -100..100). `--percent` / `-P` sets where you are along the full span as 0–100 (not that raw number); once you know `rangeMin` and `rangeMax`, the implied raw value is approximately `rangeMin + (rangeMax - rangeMin) * (P / 100)` (same as `(rangeMax - rangeMin) * (P / 100) + rangeMin`).

Text input: act.input / act.input_node

Both commands focus a field (already focused for **aohp act input**, or tap-then-type for **aohp act input-node**), then apply `--mode` / JSON `inputMode`:

ModeBehavior
`replace` (default)Clears the field, then commits text. `-N` / JSON `clearCount` is ignored (kept for compatibility).
`append`Send MOVE_END, then commit text (appends after existing content).
`prepend`Send MOVE_HOME, then commit text (inserts before existing content).

To clear without typing: `aohp act clear -d <displayId>` → `act.clear` (clears the focused editable; optional `-f` / `flags` for the accessibility dump path). To clear a specific node's field: `aohp act clear-node -d <id> -i <nodeId>` → `act.clear_node` (tap node, then ACTION_SET_TEXT on that nodeId).

Workflow

  1. `aohp ui tree -d <displayId> [-f]` (or `aohp ui-tree …`) to read node `id`, `bounds`, text/description/resource-id, and action states from the compact HTML output. Add `-o` / `--origin` only when you need the full origin JSON.
  2. Run **aohp act …** with the same **-d / --display**.
  3. Fetch the tree again after navigation or large UI changes.

Compared to screen coordinates (e.g. bottom-right FAB), prefer `aohp act tap-node` / `act input-node` with ids from a fresh tree.

Examples (copy-paste CLI)

bash
# Tap (-t = press duration in ms)
aohp act tap -d 0 -x 540 -y 960 -t 50
# Type into the focused field (default: replace = clear then type)
aohp act input -d 0 -t "hello"
aohp act input -d 0 -t "suffix" -m append
aohp act input -d 0 -t "prefix" -m prepend
aohp act clear -d 0
# Tap by node id from ui tree (-f is a tree flag bitmask; 0 is usually enough)
aohp act tap-node -d 0 -i 42 -f 0
# Long press at node center (-t = hold duration in ms, same as act long-tap)
aohp act long-tap-node -d 0 -i 42 -f 0 -t 800
# Add -F / --file-path-report when the action may save/download/export a file.
# The result then includes files.detected and, when found, files.best.devicePath.
aohp act tap-node -d 0 -i 42 -F
aohp act long-tap-node -d 0 -i 42 -F
# Type into a specific node (default: replace; -m append | prepend)
aohp act input-node -d 0 -i 42 -t "hello" -f 0
aohp act input-node -d 0 -i 42 -t "more" -m append -f 0
aohp act clear-node -d 0 -i 42 -f 0
# Swipe / drag (same subcommand); endpoints -x1/-y1/-x2/-y2, duration -t
aohp act swipe -d 0 -x1 100 -y1 500 -x2 100 -y2 200 -t 300
aohp act swipe -d 0 -x1 100 -y1 200 -x2 100 -y2 500 -t 300
# Set a SeekBar / slider to a concrete raw value (native ACTION_SET_PROGRESS).
# Useful when the range is not 0–100, e.g. brightness -100..100. Without
# --range-min/--range-max, the CLI probes the node range first.
aohp act set-node-progress -d 0 -i 42 -V -25.0
# If you already know the range, pass it to avoid the extra probe action:
aohp act set-node-progress -d 0 -i 42 -V -25.0 --range-min -100 --range-max 100
# Set by position along the span: -P is 0–100 (not the raw SeekBar number).
# Implied raw ≈ rangeMin + (rangeMax - rangeMin) * (P/100) when min/max are known.
aohp act set-node-progress -d 0 -i 42 -P 75.0
# Raw JSON-RPC only carries percent (0–100 along the span); same mapping as -P.
aohp call act.set_node_progress '{"displayId":0,"nodeId":42,"percent":75.0}'
# System keys (aliases: act-back, act-home, act-recents)
aohp act back -d 0
aohp act home -d 0
aohp act recents -d 0
# Decimal key code like adb input keyevent; or -K with a name (HOME, APP_SWITCH, VOLUME_UP, …)
aohp act key -d 0 -k 4
aohp act key -d 0 -K HOME

Optional: raw JSON form

Same parameters as the CLI, as JSON:

bash
aohp call act.tap '{"displayId":0,"x":540,"y":960,"duration":50}'
aohp call act.input '{"displayId":0,"text":"hello","inputMode":"replace","clearCount":512}'
aohp call act.input '{"displayId":0,"text":"x","inputMode":"append"}'
aohp call act.clear '{"displayId":0,"count":40}'
aohp call act.tap_node '{"displayId":0,"nodeId":42,"flags":0}'
aohp call act.long_tap_node '{"displayId":0,"nodeId":42,"flags":0,"duration":800}'
aohp call act.input_node '{"displayId":0,"nodeId":42,"text":"hello","flags":0,"inputMode":"replace"}'
aohp call act.clear_node '{"displayId":0,"nodeId":42,"flags":0,"count":40}'
aohp call act.key '{"displayId":0,"back":true}'
aohp call act.key '{"displayId":0,"keyCode":187}'
aohp call act.key '{"displayId":0,"keyName":"APP_SWITCH"}'

Notes

  • Virtual-display workflows depend on AOHP's virtual-display stack on the device; prefer virtual displays you created with **aohp display create …**.
  • Node-based commands need a fresh **aohp ui tree**; if the tree cannot be dumped, the command may fail with an error mentioning virtual display availability—use **aohp ui tree** first to confirm.
  • Use **-F / --file-path-report** on aohp act … commands when you expect the GUI action to create a file. Do not confuse this with node commands' **-f / --flags**, which controls UI tree dump flags.

Security

  • Security scanPassed, 100 of 100Pattern checks on the skill's files.
  • Model reviewNot runA model review is scheduled for the next rescan.

Quality evaluation

  • Task evaluationNot runNo evaluation yet. Run one in Skill Studio.

Source

Popularity

Repository stars
156
Repository forks
19
7-day trend score
0

Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.

Works with

Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.

  • Claude Code
  • Cursor
  • GitHub Copilot
  • Windsurf
  • Codex
  • Gemini CLI
  • Cline
  • Amp
  • Roo Code
  • Goose
  • Continue
  • Kilo Code
  • Junie
  • Trae
  • OpenHands
  • Qwen Code
  • AI Agent
  • Tabnine Chat
  • Sourcegraph Cody
  • Amazon Q
  • Firebase Genkit
  • Sweep
  • Devin
  • Phind
  • Mentat
  • Claude Desktop
  • Aider
  • GPT Pilot
  • Plandex
  • bolt.new
  • v0
  • Replit Agent
  • Anse
  • TypingMind
  • BetterChatGPT
  • LibreChat
  • Warp AI
  • Pieces
  • Fig AI
Embed badge
vskill VERIFIED badge
[![vskill VERIFIED](https://verified-skill.com/api/v1/skills/aohp-os/aohp/aohp-ui-actions/badge)](https://verified-skill.com/skills/aohp-os/aohp/aohp-ui-actions)

Something wrong with this skill or its page? Tell us.