Незрячий автор навыка аудита доступности убрал ложные срабатывания ИИ-агента
Незрячий программист, автор навыка Accessibility Auditor Skill для ИИ-агентов, доработал его правила после серии ошибок на реальных проектах, и агент теперь проверяет библиотеку и общие компоненты прежде, чем объявить проблему.

Задача знакома всем, кто доверяет нейросети проверку сайта или кода: агент находит «ошибки», которых нет, и предлагает правки, которые ломают соседние страницы. Ниже порядок проверок, который убирает ложные находки. Его можно забрать в свой промпт.
Правила появились после конкретных исправлений в открытых проектах и проверки скринридером. Автор сам слышит, где лишняя озвучка мешает человеку. Один из таких PR в Nextcloud iOS приняли.
Accessibility Auditor Skill это навык (skill), то есть набор инструкций для ИИ-агента. ИИ-агент здесь означает программу на основе нейросети, которая сама выполняет цепочку действий, а не только отвечает на вопрос. Навык проверяет доступность интерфейсов по исходному коду и обследует сайты. Доступность означает, что интерфейсом могут пользоваться и люди с нарушениями зрения, в том числе со скринридером (программой, которая читает вслух происходящее на экране).
В ранних версиях агент объявлял проблемой отсутствие атрибута в одном файле, хотя нужное поведение уже обеспечивала библиотека. Ещё он предлагал правку, не проверив, где ещё используется общий компонент. Разбор автора «Как я дорабатывал навык аудита доступности: библиотеки, общие компоненты и ложные срабатывания» показывает, откуда взялось каждое правило.
Что понадобится для доработки аудита?
- ИИ-агент с доступом к репозиторию проекта.
- Исходный код компонентов и сведения о версии используемой библиотеки.
- Автотесты, например Playwright (инструмент, который сам нажимает кнопки в браузере и проверяет результат).
- Скринридер для финальной проверки в работающем приложении.
Пошаговая инструкция: от места использования к реализации
- Запретите агенту выносить вердикт по одному файлу. Сначала он смотрит реализацию компонента, библиотеку и общие обёртки. Общий компонент похож на типовую дверь в многоэтажке: поменяете её в одной квартире, и это затронет все.
- Заставьте проследить цепочку. Агент должен выяснить, какой элемент получает фокус и откуда берётся его доступное имя (то, что произносит скринридер). Ещё он проверяет, где создаются подпись, подсказка и ошибка, как передаются их идентификаторы и сохраняет ли компонент атрибуты от вызывающего кода.
- Проверяйте, что файл вообще работает. В репозитории остаются старые компоненты с похожими названиями, и правка в них на живой интерфейс не повлияет.
- Учитывайте уже заданные объявления. Роли status и alert сами определяют, как озвучиваются изменения. Для обычной подсказки не ставьте режим assertive или роль alert, потому что они прерывают текущую речь.
- Проверяйте потребителей общего интерфейса. Новое свойство не должно попадать в компоненты, которые его не понимают.
- Предпочитайте публичный API компонента, то есть его официальный «вход». Если приходится лезть во внутреннюю разметку библиотеки, добавьте регрессионный тест (автопроверку, что после обновлений ничего не сломалось).
- Требуйте честный отчёт: агент указывает, что выполнил сам. Анализ кода, тесты и проверка скринридером подтверждают разное.
Пример промпта по этим правилам:
``` Прежде чем объявить проблему доступности, проверь реализацию компонента, библиотеку установленной версии и общие обёртки. Убедись, что файл участвует в рабочем сценарии. Не добавляй атрибуты, которые уже создаёт библиотека. Для обычной подсказки не используй assertive и роль alert. В отчёте отдельно укажи: что проверено по коду, что тестами, что требует проверки скринридером. :::
В проекте Vets-Who-Code чинили связь текстового поля с сообщением обратной связи через свойство feedbackId. Его добавили слишком широко, и оно досталось компонентам, которые не умели его обрабатывать. Агент разделил общий интерфейс и свойства текстовых полей и добавил проверки пользовательского feedbackId для Input и Textarea.
После этого автор попросил дополнить навык: при добавлении свойства агент выясняет, какие компоненты его поддерживают. Он проверяет и автоматический идентификатор, и переданный вручную. Иначе типовой пример работает, а форма с собственным ID теряет связь с сообщением.
- Дублировать связь aria-describedby (атрибут, который привязывает поле к поясняющему тексту), если её уже создаёт компонент формы.
- Затирать существующие подсказки, когда чините связь поля с ошибкой и ставите aria-invalid (отметку «поле заполнено неверно»).
- Давать индикатору загрузки то же доступное имя, что у текста рядом. В PR №1603 проекта RTL индикатор скрыли от скринридера, а текст оставили в области статуса. Этот PR закрыли без слияния.
- Забывать про пользовательский элемент, который передают через slot или render prop (способы подставить свой элемент в готовый компонент). Библиотека может настроить свой input и не передать атрибуты вашему.
- Считать проверку завершённой без полного прогона. В suitenumerique/docs агент добавил проверки aria-hidden и tabindex в тест Playwright, но e2e-прогон (проверка сценария целиком) тогда не выполняли.
Что делать с этим прямо сейчас, по ролям
Автору Дзена: если ведёте сайт или канал с формами подписки, не принимайте отчёт нейросети на веру. Спросите, проверила ли она библиотеку, а не один файл.
Маркетологу: ложная находка в аудите стоит денег, потому что разработчик тратит время на правку, которая ничего не меняет. Требуйте от подрядчика отчёт с разделением «проверено по коду, тестами, скринридером».
Предпринимателю из РФ и СНГ: правила оформлены как текст инструкций, их можно вставить в промпт любого ИИ-ассистента. Из доступных в РФ вариантов это YandexGPT и GigaChat. Насколько хорошо они разберут код ваших компонентов, источник не проверял.
На мой взгляд, главное здесь не список атрибутов, а привычка: после каждой ошибки агента автор просил переписать инструкцию, чтобы правило подходило другим проектам. Так навык копит опыт и не требует объяснять одно и то же заново. Честная оговорка: замера доли ложных находок до и после у автора нет, он показывает правила и случаи, из которых они выросли. В Nextcloud iOS, PR №4111, агент исправил подписи папок в окне выбора места сохранения: раньше пользователь VoiceOver, скринридера на iOS, попадал на строку папки без нужного доступного имени. Эту правку приняли. Последнее слово всё равно за человеком со скринридером, и я бы строил любой аудит именно так.
Соберите свой промпт для проверки текстов и страниц
В dzen.guru собраны инструменты и инструкции, которые помогают авторам работать с нейросетями без лишних ошибок.
Попробовать
Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».
Читайте также

Что такое ИИ-агент в команде: pepper-orchestrator делит большой проект и проверяет каждого
Основатель студии ITSalt Максим Никитин выпустил для Claude Code и Codex плагин pepper-orchestrator, раздающий большую задачу нескольким ИИ-агентам, потому что…

Плагиат и кража в геймдеве: ИИ-«рекомпы» старых игр выходят нечитаемыми
Автор колонки на Хабре предупредил о тёмной стороне нейросетевого моддинга: ИИ-инструменты уже выдают нечитаемые «рекомпы» старых игр и присваивают чужие…
Что такое ИИ-агент в деньгах: ответ от 0,94 до 121,57 рубля, цену задают инструменты
Каталог Agents Place разобрал 69 ИИ-агентов в срезе цен на 5 ноября 2026 и показал, что ответ стоит примерно от 0,94 до 121,57 рубля, а дорожает он из-за…
Комментарии