Навык агента для аудита флоу

Навык flow-audit отвечает на один вопрос о флоу: готов ли он к продакшену? Укажите вашему AI-инструменту на флоу — он считает конфиг через Adapty CLI, сверит его с каталогом продуктов и выдаст вердикт, а не список, который придётся интерпретировать самому.

Флоу может пройти все существующие проверки публикации и при этом оставаться небезопасным для показа пользователям. Собственные проверки при публикации в Flow & Paywall Builder и команда flows config validate задают один вопрос: «Документ корректно сформирован?» — и ни одна из них не спрашивает: «Застрянет ли реальный пользователь или увидит ли что-то ложное?» Флоу со статусом publication_failed может пройти обе эти проверки; именно flow-audit находит всё остальное.

Note

flow-audit никогда не вносит изменения во флоу. Он читает конфиг и каталог продуктов, выполняет проверки и передаёт всё найденное вам — или скиллу flow-generator — для исправления.

Установка навыка

flow-audit поставляется в плагине adapty-skills (adaptyteam/adapty-skills) вместе с flow-generator — одна установка даёт вам все навыки плагина, сейчас их семь, включая flow-audit.

Для Claude Code:

claude plugin marketplace add adaptyteam/adapty-skills
claude plugin install adapty-skills@adapty

Затем выполните /reload-plugins, чтобы активировать навыки. Для других AI-инструментов разработки следуйте инструкциям по установке flow-generator — тот же репозиторий, те же команды.

Then ask for it — /flow-audit in tools that map slash commands to skills, or “Use the flow-audit skill” in the ones that don’t. Name the flow, or let it list your flows and ask which one.

Как это работает

Пять фаз, все только на чтение:

  1. Проверка и авторизация. Убеждается, что CLI достаточно новой версии и вы авторизованы в Adapty.
  2. Выбор флоу. Выводит список ваших флоу (adapty flows list) и спрашивает, какой из них проверить.
  3. Загрузка. Получает конфигурацию флоу и каталог продуктов — снапшот, против которого выполняются все проверки.
  4. Запуск проверок. Каждая проверка выполняется только против этого снапшота.
  5. Отчёт. Итоговый вердикт, а не список.

Что проверяется

  • Triggers: элемент, текст которого обещает действие, но нигде в цепочке предков нет взаимодействия. Выглядит как рабочий элемент управления, но ничего не делает.
  • Store compliance: действие восстановления покупок, доступное где-либо во флоу, ссылка на условия использования, ссылка на политику конфиденциальности и возможность покинуть пейвол без покупки.
  • Products: связанный продукт, отсутствующий в каталоге; продукт без привязки к стору; карточка, заявляющая период оплаты, которого нет у продукта; или захардкоженная цена там, где должна стоять переменная.
  • Variables: переменная, которую флоу задаёт, но нигде не читает — экран собирает ответ, который нигде не используется.
  • Localization: пустые переводы, непереведённые значения и охват по локалям.
  • Placeholders: незаконченные тексты — Lorem ipsum, TODO, Your headline here — и флоу, по-прежнему называющийся Untitled.

Серьёзность

Каждая находка получает один из трёх уровней:

УровеньЧто означает
БлокерФлоу не будет работать для реального пользователя, или покажет ему ложные сведения — фиктивная цена может отображаться корректно и при этом вводить в заблуждение.
РискРаботает, но, вероятно, не так, как задумывалось: текст-заглушка, значение, оставшееся идентичным локали по умолчанию, переменная, которую никто не читает.
ВопросНевозможно решить на основе имеющихся данных. В отчёте указано, что было обнаружено, что осталось недоступным, и одно конкретное, что нужно проверить — вместо предположений.

Пример отчёта

Flow: Nimbus onboarding  ·  publication_failed
7 screens · 3 locales · 2 products

NOT READY FOR PRODUCTION — 2 blockers: no restore action, no way off the paywall

BLOCKERS

1. This row is dead text.
   scr_paywall / el_089T reads "Restore purchase · Terms · Privacy" and carries no
   interaction at all. It renders exactly like a working row, and none of the following work:
     · no restorePurchases action anywhere in the flow    → App Store 3.1.1
     · no link to terms/EULA                              → App Store 3.1.2
     · no link to a privacy policy                        → App Store 3.1.2

2. a user who does not buy cannot leave this screen: no closeFlow or navigateBack is
   reachable from it.

Статус этого флоу — publication_failed, и проверки публикации в Flow & Paywall Builder, а также команда flows config validate уже его прошли — ни одна из них не читает тексты экранов и не проходит по взаимодействиям. Отчёт начинается с вердикта, затем идёт нумерованный список блокеров с указанием конкретного элемента и экрана для открытия.

Вердикт чистого флоу выглядит так: READY FOR PRODUCTION — без каких-либо добавлений после него. Если flow-audit не обнаружил блокеров или рисков, но при этом есть открытые вопросы, вердикт читается как READY, PENDING n CHECKS I CANNOT MAKE — вместо того чтобы подтверждать то, что проверить не удалось.

Что он не может проверить

flow-audit не может определить, привязан ли флоу к плейсменту. adapty flows get возвращает только id, name, status и updated_at флоу, а в CLI нет команды, которая перечисляет плейсменты, к которым привязан флоу. Это фиксированное напоминание в каждом отчёте, а не проверка: убедитесь в наличии плейсмента самостоятельно на странице Placements или в разделе Create placement.

Кто что исправляет

Каждый отчёт завершается разделом WHAT TO DO NEXT, разбитым по исполнителям: что агент может изменить во флоу самостоятельно, что можно поменять только в дашборде Adapty, и что нужно проверить вручную перед запуском.

flow-audit не вносит никаких изменений — он работает только на чтение, так что флоу, которое не прошло проверку, остаётся ровно таким, каким вы его оставили. Передайте отчёт навыку flow-generator, который отвечает за резервное копирование, получение вашего подтверждения и запись изменений.