axe

Step 1: Confirm runtime context

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "axe" with this command: npx skills add cameroncooke/axe/cameroncooke-axe-axe

Step 1: Confirm runtime context

  • Identify simulator UDID target first (axe list-simulators ).

  • Simulator-interaction AXe commands require --udid <UDID> . Commands like list-simulators and init do not.

  • Run axe describe-ui --udid <UDID> to inspect the full current screen. Use axe describe-ui --point <X,Y> --udid <UDID> to inspect the element at a specific coordinate. Use the output to discover available --id and --label values for selector taps, and to confirm coordinates for coordinate-based taps.

  • Prefer selector taps (tap --id / tap --label ) over raw coordinates. Selectors are resilient to layout changes, work across device sizes, and support element waiting (--wait-timeout ) in batch flows.

Step 2: Choose the right command

Available commands: init , tap , swipe , gesture , touch , type , button , key , key-sequence , key-combo , batch , describe-ui , screenshot , record-video , stream-video , list-simulators . Run axe --help or axe <command> --help for full options.

Common examples:

axe tap --id <identifier> --udid <UDID> axe tap --label <text> --udid <UDID> axe tap -x <X> -y <Y> --udid <UDID> axe type 'text' --udid <UDID> axe describe-ui --udid <UDID> axe describe-ui --point <X,Y> --udid <UDID> axe screenshot --udid <UDID> --output screenshot.png

Step 3: Understand the execution model

HID commands (tap , swipe , type , key , etc.) are fire-and-forget — AXe confirms the event was dispatched to the simulator but cannot verify the app actually processed it. A tap may land before a view is interactive, or during a transition. This means:

  • Always verify outcomes separately with describe-ui or screenshot .

  • Use --wait-timeout in batch to wait for elements to appear, and sleep steps or --pre-delay / --post-delay to allow animations to settle.

Step 4: Apply timing and input best practices

  • Use --pre-delay / --post-delay on tap, swipe, and gesture commands for fixed delays around actions.

  • Use --duration to control how long a swipe, gesture, button press, or key press lasts.

  • For text with shell-sensitive characters, prefer --stdin or --file over inline quotes.

  • Use single quotes for inline text arguments to avoid shell expansion issues.

Step 5: Batch vs discrete commands

Prefer axe batch for multi-step flows. Batch executes every step in a single process invocation, which means:

  • One tool call and one AI turn instead of many — significantly reduces agent latency and cost.

  • A single HID session is reused across all steps, lowering per-step overhead.

  • Steps execute sequentially — each step runs before the next is resolved, so earlier taps can trigger navigation and later selector taps will find newly appeared elements (with --wait-timeout ).

Fall back to discrete commands when:

  • A step's parameters depend on runtime inspection of a previous step's result (e.g. parsing describe-ui JSON to choose coordinates dynamically).

Handling animations and transitions in batch:

  • Use --wait-timeout <seconds> so selector taps (--id / --label ) poll the accessibility tree until the element appears or the timeout expires. This is the primary mechanism for multi-screen flows.

  • Use --poll-interval <seconds> to control polling frequency during waiting (default 0.25s).

  • Use --ax-cache perStep when not using --wait-timeout but the UI still changes between steps — this ensures each selector tap gets a fresh accessibility snapshot rather than a stale cached one.

  • Insert explicit sleep <seconds> steps when coordinate-based taps need the UI to be stable (selectors with --wait-timeout are preferred over sleep where possible).

  • Keep batch output quiet by default. Add --verbose only when troubleshooting.

  • If tap --label reports multiple matches and no AXUniqueId values are exposed, fall back to tap -x/-y for that step.

Key rules:

  • Use exactly one step source per run: --step , --file , or --stdin .

  • Steps run in order; default is fail-fast.

  • Add --continue-on-error for best-effort execution.

  • Do not pass --udid inside step lines; keep it at batch level.

Step 6: Verify outcomes

Batch and individual commands are execution-focused, not assertion-focused. Always suggest verification when outcomes matter:

axe describe-ui --udid <UDID> axe describe-ui --point <X,Y> --udid <UDID>

or

axe screenshot --udid <UDID> --output post-state.png

Step 7: Exit criteria

Before finalising guidance, verify:

  • Every command includes --udid .

  • Only valid AXe commands and flags are used.

  • Shell quoting is correct (single quotes for literals, --stdin /--file for complex text).

  • Verification is suggested as a separate step when results matter.

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

pr-comment-resolution

No summary provided by upstream source.

Repository SourceNeeds Review
General

reconcile-merge-conflicts

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

xcodebuildmcp

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

xcodebuildmcp-cli

No summary provided by upstream source.

Repository SourceNeeds Review