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
Use when authoring or modifying a charly PLUGIN — a candy with a `plugin:` block that contributes Providers (verbs/kinds/deploy-targets/steps/builders/commands), its own CUE schema, builtin (compiled-in) or external (out-of-tree git repo). Covers the unified Provider model, the per-plugin CUE-schema contract (single source → Go params for dev + schema-over-Describe RPC for runtime), the SDK, and the loader.
tools
The CUE data-validation / configuration CLI (cue), pinned to v0.16.1. Use when working with the cue candy, installing the cue binary into a box or onto a target:local dev host, or running the offline schema-vendoring pipeline that feeds charly's egress validation.
tools
CUE EGRESS validation — validating (and, where it adds value, generating) the config files charly WRITES to a system BEFORE the bytes hit disk. MUST be invoked before working on charly/egress.go, the vendored schemas under candy/plugin-egress/egress-schemas/vendor/, the ValidateEgress / registerVendoredEgressKind path, the offline `task cue:vendor` pipeline, or adding an egress schema for any written artifact (cloud-init, k8s manifests, traefik routes, runtime config, install ledger, systemd/quadlet units, ssh_config, libvirt XML).
tools
Kubernetes cluster-probe declarative check verb — the `kube:` check verb (nodes, pods, ingress, storage class, addon health, apply/delete, and arbitrary resource GETs) served out-of-process by the candy/plugin-kube plugin (vendored client-go; no external kubectl required).