Навык агента для миграции плейсментов в флоу

Навык migrate-placements переводит приложение с пейволов на флоу. Направьте AI-инструмент для разработки на ваш аккаунт — он считает все плейсменты через Adapty CLI, определит, сколько флоу нужно для миграции, и создаст новый флоу-плейсмент для каждого пейвол-плейсмента, который вы переносите. В результате вы получаете таблицу соответствия старых ID плейсментов новым и единственный вызов, который нужно изменить в приложении.

Плейсменты создаются заново, а не конвертируются. Тип контента плейсмента фиксируется при создании, поэтому пейвол-плейсмент никогда не станет флоу-плейсментом — см. Создание нового плейсмента для флоу. Каждый новый флоу-плейсмент работает параллельно с тем пейвол-плейсментом, который он заменяет, а старый продолжает показываться до тех пор, пока в приложении не выйдет обновление с изменениями.

Этот навык не создаёт контент флоу — это задача навыка flow-generator — и не пишет код вашего приложения, которым занимается навык интеграции SDK для вашей платформы. Он читает ваши плейсменты пейволов, но никогда их не редактирует.

Прежде чем начать

  • AI-инструмент с поддержкой skills: подойдут Claude Code, GitHub Copilot CLI, OpenAI Codex и Gemini CLI.
  • Флоу для каждого пейвола, который вы переносите, или план его создания: skill спрашивает для каждого пейвола, откуда берётся флоу, и один из вариантов ответа — клик в дашборде. Подробнее в разделе Откуда берётся контент флоу.
  • Adapty SDK v4 в вашем плане: флоу работают только на SDK v4 и выше, поэтому миграция завершается выпуском приложения. До этого выпуска ничего из того, что создаёт skill, не дойдёт до пользователей.

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

migrate-placements поставляется в плагине adapty-skills (adaptyteam/adapty-skills) вместе с flow-generator и flow-audit — одна установка даёт вам все навыки плагина.

Tip

Уже установили плагин для другого навыка Adapty? Этот у вас уже есть. Плагин обновляется сам, поэтому migrate-placements будет доступен в следующей сессии — ничего дополнительно запускать не нужно.

Чтобы установить плагин в Claude Code впервые:

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

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

Затем запросите его — /migrate-placements в инструментах, которые сопоставляют slash-команды с навыками, или «Use the migrate-placements skill» в тех, которые этого не делают.

Примеры промптов

Перенести плейсменты, которые показываются пользователям

Migrate the active paywall placements in my app to flows. Skip the inactive
ones for now and tell me how many you left out.

Повторно использовать уже конвертированные флоу

Migrate my paywall placements to flows. I've already converted three of the
paywalls with Move to new builder — reuse those flows instead of building new ones.

Сначала потренироваться на неактивных плейсментах

Start with my inactive paywall placements so I can watch the whole thing run
without exposing users, then do the live ones.

Мигрировать одну область приложения

Migrate only the four onboarding placements in my app, not the in-app upsells.
Show me the placement IDs you'd create before you create anything.

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

Восемь этапов, и только на седьмом что-то записывается в ваш аккаунт.

  1. Анализ и подготовка. Устанавливает или обновляет Adapty CLI, подтверждает вход в Adapty и считывает ID вашего приложения.
  2. Инвентаризация. Читает все плейсменты в приложении, перебирая страницы до конца списка, не ограничиваясь первой страницей.
  3. Классификация и группировка. Сортирует каждую аудиторию по категориям: готовые к миграции, уже переведённые на флоу или не требующие изменений, затем группирует готовые к миграции по пейволу, который каждая из них обслуживает. Эта группировка и есть план флоу: один флоу на каждый уникальный пейвол, общий для всех плейсментов, которые его используют, — так вы дорабатываете один флоу вместо пяти копий.
  4. Два вопроса. Какую часть аккаунта переносить и откуда берётся контент каждого флоу. Подробнее — в разделе Откуда берётся контент флоу.
  5. Публикация флоу. Для пейвола без флоу скилл создаёт его, сохраняет в него конфиг, публикует и ожидает, пока статус не станет published. Уже опубликованный флоу записывается как есть. Публикация обязательна: черновой флоу нельзя привязать к плейсменту.
  6. Показывает точку согласования. Полный список ID плейсментов, которые он предлагает создать, и что ещё не выполнено.
  7. Создание плейсментов. По одному placements create на каждый пейвол-плейсмент в области действия — после вашего подтверждения.
  8. Отчёт и передача. Маппинг старых значений на новые и описание изменения вызовов SDK для разработчиков.

Proposed IDs follow your existing ones — main becomes main-flow — and each is verified against every placement ID already in the app.

Откуда берётся контент флоу

Новому плейсменту нужен опубликованный флоу, и для каждого пейвола нужно выбрать один из маршрутов. Система никогда не выбирает за вас, потому что четыре маршрута различаются тем, что увидят ваши пользователи.

МаршрутЧто происходитКогда подходит
ReuseНавык подключает уже существующий флоу. Если он ещё в черновике — сначала публикует его.Флоу уже создан или конвертирован. Предлагается первым, если есть подходящий кандидат.
ConvertВы нажимаете Move to new builder на странице пейвола; навык ждёт, перечитывает ваш аккаунт и читает получившийся флоу.Пейвол был создан в Legacy Paywall Builder. См. Конвертация пейвола во флоу.
BuildНавык передаёт пейвол в flow-generator, который проектирует флоу.Конвертация не может воспроизвести пейвол, или вы хотите переработать экран, а не скопировать его.
StubНавык публикует минимальный однооконный флоу, чтобы плейсменту было что отдавать.Крайний случай. Stub показывает пользователям заглушку, поэтому требует явного подтверждения с вашей стороны.

Навык ищет существующие флоу перед созданием новых и сопоставляет их с вашими пейволами только по имени — в Adapty нигде не записывается, из какого пейвола был создан флоу. Поэтому каждый найденный кандидат — это предложение для вашего подтверждения, а переименованный флоу найден не будет. Сверяйтесь со своим списком флоу — у CLI нет команды для удаления флоу, поэтому флоу, созданный по ошибке, придётся удалить в дашборде.

Наличие кнопки Move to new builder на конкретном пейволе скилл определить не может — она появляется только на пейволах, созданных в устаревшем Paywall Builder, а CLI не сообщает, каким именно билдером создан пейвол. Скилл описывает кнопку и где её искать; вы сообщаете, что нашли.

Что вы подтверждаете

Прежде чем что-либо создаётся, навык выводит блок для ознакомления и ответа. В нём указаны название вашего приложения, количество плейсментов, которые будут созданы, и полная таблица соответствия старых и новых значений — а не сокращённое число.

В том же блоке указано, чего подтверждение не делает:

  • Плейсменты вашего пейвола не затрагиваются: они продолжают работать в течение всего процесса, что и является механизмом отката — ничего не меняется для пользователей, пока приложение не получит новый вызов, поэтому отсутствие обновления равносильно откату миграции.
  • До пользователей это пока не доходит: приложение должно вызывать getFlow с новым идентификатором плейсмента там, где сейчас вызывает старый.
  • Ответ «нет» останавливает плейсменты, но не флоу: любой флоу, уже созданный в ходе выполнения, остаётся в вашем аккаунте, и ни одна команда CLI не удаляет флоу. Инструмент сообщает количество флоу и место, где их можно удалить.

Что вы получаете

По завершении запуска выводятся счётчики — создано, пропущено и завершено с ошибкой с указанием причин — а затем маппинг, с которым работают ваши разработчики:

Старый плейсмент пейволаНовый плейсмент флоу
onboarding_mainonboarding_main-flow
paywall_settingspaywall_settings-flow

В SDK v4 метод getFlow одинаково читает плейсменты флоу и пейвола, поэтому приложение вызывает один и тот же метод в обоих случаях — меняется только идентификатор плейсмента, но не метод. Передайте реализацию навыку интеграции SDK для вашей платформы, который отвечает за вызовы на стороне платформы: iOS · Android · React Native · Flutter · Unity · Kotlin Multiplatform · Capacitor.

Оставляйте оба плейсмента активными, пока уровень внедрения v4 не станет достаточно высоким. Пользователи уже выпущенных версий имеют старый идентификатор плейсмента, скомпилированный в приложении, и не смогут увидеть флоу до обновления — поэтому каждый плейсмент измеряется по собственным метрикам, пока оба работают. Сравнивайте их как отдельные когорты. Переход на флоу охватывает весь процесс миграции.

Чего это не сделает

  • Конвертировать плейсмент на месте: такой операции не существует. Adapty отклоняет изменение типа, поэтому каждая миграция — это новый плейсмент.
  • Повторно использовать старый ID плейсмента: ID плейсментов уникальны во всём приложении, независимо от типа, поэтому новый плейсмент флоу должен иметь ID, который не используется ни в одном другом плейсменте — включая тот пейвол-плейсмент, который он заменяет.
  • Трогать то, что уже существует: ни один из существующих плейсментов, пейволов или флоу не редактируется и не удаляется. Скилл только читает их и создаёт новые рядом.
  • Создать плейсмент без вашего согласия: каждый предложенный ID проходит через шлюз подтверждения.
  • Создать второй флоу для пейвола, у которого он уже есть: только если вы откажетесь переиспользовать существующий, поскольку дубликат — это флоу, который вам придётся удалять вручную.
  • Писать код вашего приложения: выполнение заканчивается на этапе передачи.

Ограничения

Аудитория с несколькими сегментами требует ручного разрешения

Аудитория, нацеленная на несколько сегментов, может быть прочитана, но не записана обратно — поэтому навык не может воссоздать её в новом плейсменте. Такие плейсменты помечаются как заблокированные с указанием причины, при этом навык не предлагает разбить или удалить сегмент — это изменило бы, кто и что видит, а такое решение остаётся за вами. Разрешите ситуацию в дашборде, и миграция продолжится без этих плейсментов.

A/B-тесты с аудиториями недоступны навыку

Чтение плейсмента возвращает только аудитории типа «пейвол» и «флоу», а все остальные типы молча пропускаются. Аудитория A/B-теста относится к одному из таких типов, и в ответе нет никаких пометок о пропущенных записях — инструмент не может этого обнаружить. Счётчики отражают только то, что вернул API. Для каждого плейсмента, в котором вы знаете об A/B-тесте, проверьте список аудиторий в дашборде — новый флоу-плейсмент не будет содержать аудитории, которую инструмент не увидел.

Ничто не проверено от начала до конца, пока вы не выпустите обновление

Собственные проверки навыка останавливаются на «флоу опубликован и плейсмент существует». Вопрос о том, работает ли флоу для реального пользователя, — отдельный: запустите flow-audit для каждого флоу перед публикацией и совершите покупку в песочнице на новом плейсменте после того, как приложение его вызовет.

Что дальше