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

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

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

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

Перед началом работы

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

Установите скилл

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 — тот же репозиторий, те же команды. Codex устанавливает плагин так же, как Claude Code; в остальных случаях скиллы копируются вручную, поэтому повторите команды, если добавили новый скилл после последней установки.

Затем запросите его — /migrate-placements в инструментах, которые сопоставляют слеш-команды со скиллами, или «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 на конкретном пейволе скилл не может определить самостоятельно — она появляется только на пейволах, созданных в legacy 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 не станет достаточным. Пользователи на уже выпущенных версиях имеют старый ID плейсмента, зашитый в приложении, и не смогут попасть во флоу до обновления, поэтому каждый плейсмент измеряется по своим метрикам пока оба работают — сравнивайте их как отдельные когорты. В Миграция на флоу описан весь процесс перехода.

Что он не умеет

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

Ограничения

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

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

A/B-тесты аудиторий недоступны скиллу

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

Ничто не проверено от начала до конца, пока вы не выкатите это в продакшн

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

Что дальше

  • Миграция на флоу — полный процесс миграции, включая обновление SDK, которое скилл передаёт разработчику.
  • Конвертация пейвола во флоу — клик Move to new builder, от которого зависит маршрут конвертации.
  • Скилл flow-generator — создаёт и редактирует содержимое флоу, к которому этот скилл прикрепляется.
  • Скилл flow-audit — проверяет готовность флоу к продакшну перед размещением в плейсменте.
  • Справочник по Adapty CLI — команды для работы с плейсментами, которые запускает скилл.