ov-selkies/skills/a11y-tools/SKILL.md
# a11y-tools - AT-SPI2 Accessibility Introspection ## Overview Provides Python AT-SPI2 bindings for querying the accessibility tree of GTK, Qt, and Chrome applications. Enables element-based automation — find buttons, menus, and text fields by name/role instead of pixel coordinates. Used by `ov eval wl atspi tree/find/click`. ## Layer Definition ```yaml requires: - dbus rpm: packages: - python3-pyatspi - python3-gobject ``` ## Key Properties | Property | Value | |----------|-
npx skillsauth add overthinkos/overthink-plugins ov-selkies/skills/a11y-toolsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Provides Python AT-SPI2 bindings for querying the accessibility tree of GTK, Qt, and Chrome applications. Enables element-based automation — find buttons, menus, and text fields by name/role instead of pixel coordinates.
Used by ov eval wl atspi tree/find/click.
requires:
- dbus
rpm:
packages:
- python3-pyatspi
- python3-gobject
| Property | Value |
|----------|-------|
| Depends | dbus (AT-SPI2 requires D-Bus session bus) |
| Packages | python3-pyatspi, python3-gobject |
| Python | Uses /usr/bin/python3 (system Python 3.14, NOT pixi's Python 3.13) |
The RPM packages install to system Python (/usr/bin/python3). Containers with pixi environments have pixi's python3 first in PATH, but pixi's python3 doesn't see system RPM packages. The ov eval wl atspi command explicitly uses /usr/bin/python3 to ensure AT-SPI2 bindings are found.
name:role patternChrome needs --force-renderer-accessibility flag to expose DOM elements via AT-SPI2. The labwc/autostart in selkies-desktop includes this flag.
selkies-desktop metalayer/ov-selkies:selkies-desktop (via selkies-desktop metalayer)/ov-selkies:selkies-desktop-nvidia (via selkies-desktop metalayer)python3-pyatspi installs under the system /usr/lib/python3.X/ site-packages/, NOT pixi's Python 3.13 env (which dominates PATH).
Declarative tests must use the absolute path /usr/bin/python3 -c "import pyatspi"; a bare python3 invocation resolves to pixi's
python and fails with ModuleNotFoundError: No module named 'pyatspi'.
See /ov-build:eval Authoring Gotchas #7 (no bash defaults) and #8
(system vs pixi Python)./ov-advanced:wl — ov eval wl atspi tree/find/click commands/ov-foundation:dbus — Required dependency (D-Bus session bus)/ov-selkies:selkies-desktop — Desktop metalayer that includes this layer/ov-build:eval — declarative testing framework/ov-build:layer — layer authoringtools
OpenCharly CLI (charly) binary installed into container/VM images for in-container use. Use when working with charly binary deployment inside containers, native D-Bus support, or the full charly toolchain (charly binary + virtualization + gocryptfs + socat).
development
Operator CachyOS workstation profile — a kind:local template + target:local deploy that installs the full dev stack (30 candies) onto a CachyOS host via ShellExecutor. Lives in the overthinkos/cachyos submodule. MUST be invoked before editing or applying the charly-cachyos workstation profile.
tools
Fedora box with the full charly toolchain using shared candies. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Same candy list as charly-arch. Includes NVIDIA GPU runtime. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-fedora box.
tools
Arch Linux box with the full charly toolchain. Rootless-first — runs as uid=1000 with passwordless sudo (no root, no cap_add: ALL). Composes /charly-coder:charly-mcp so the box is reachable as an MCP gateway on port 18765. NVIDIA GPU runtime composed in. MUST be invoked before building, deploying, configuring, or troubleshooting the charly-arch box.