---
title: "Навык агента для миграции плейсментов в флоу"
description: "Установите навык migrate-placements, чтобы ваш ИИ-инструмент для кодирования перевёл приложение с пейвол-плейсментов на флоу-плейсменты, создав по одному новому плейсменту вместо каждого старого."
---

> **AI agents**: to search Adapty docs faster and with fewer tokens, install the Adapty skill. Claude Code (self-updating via plugin): `claude plugin marketplace add adaptyteam/adapty-skills && claude plugin install adapty-skills@adapty` — other tools: `npx skills add adaptyteam/adapty-skills --all`

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

**Плейсменты создаются заново, а не конвертируются.** Тип контента плейсмента фиксируется при создании, поэтому пейвол-плейсмент никогда не станет флоу-плейсментом — см. [Создание нового плейсмента для флоу](migrate-to-flows#create-a-new-placement-for-your-flow). Каждый новый флоу-плейсмент работает параллельно с тем пейвол-плейсментом, который он заменяет, а старый продолжает показываться до тех пор, пока в приложении не выйдет обновление с изменениями.

Этот навык не создаёт контент флоу — это задача [навыка flow-generator](flow-generator-skill) — и не пишет код вашего приложения, которым занимается [навык интеграции SDK](manage-adapty-with-ai#skill-based-integration) для вашей платформы. Он читает ваши плейсменты пейволов, но никогда их не редактирует.

## Прежде чем начать \{#before-you-start\}

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

## Установка навыка \{#install-the-skill\}

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

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

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

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

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

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

## Примеры промптов \{#example-prompts\}

#### Перенести плейсменты, которые показываются пользователям \{#move-the-placements-that-serve-users\}

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

#### Повторно использовать уже конвертированные флоу \{#reuse-the-flows-you-already-converted\}

```
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.
```

#### Сначала потренироваться на неактивных плейсментах \{#rehearse-on-the-quiet-placements-first\}

```
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.
```

## Как это работает \{#how-it-works\}

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

1. **Анализ и подготовка.** Устанавливает или обновляет [Adapty CLI](developer-cli-quickstart), подтверждает вход в Adapty и считывает ID вашего приложения.
2. **Инвентаризация.** Читает все плейсменты в приложении, перебирая страницы до конца списка, не ограничиваясь первой страницей.
3. **Классификация и группировка.** Сортирует каждую аудиторию по категориям: готовые к миграции, уже переведённые на флоу или не требующие изменений, затем группирует готовые к миграции по пейволу, который каждая из них обслуживает. Эта группировка и есть план флоу: **один флоу на каждый уникальный пейвол**, общий для всех плейсментов, которые его используют, — так вы дорабатываете один флоу вместо пяти копий.
4. **Два вопроса.** Какую часть аккаунта переносить и откуда берётся контент каждого флоу. Подробнее — в разделе [Откуда берётся контент флоу](#where-the-flow-content-comes-from).
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.

## Откуда берётся контент флоу \{#where-the-flow-content-comes-from\}

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

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

Навык ищет существующие флоу перед созданием новых и сопоставляет их с вашими пейволами **только по имени** — в Adapty нигде не записывается, из какого пейвола был создан флоу. Поэтому каждый найденный кандидат — это предложение для вашего подтверждения, а переименованный флоу найден не будет. Сверяйтесь со своим [списком флоу](https://app.adapty.io/flows) — у CLI нет команды для удаления флоу, поэтому флоу, созданный по ошибке, придётся удалить в дашборде.

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

## Что вы подтверждаете \{#what-you-approve\}

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

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

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

## Что вы получаете \{#what-you-get\}

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

| Старый плейсмент пейвола | Новый плейсмент флоу |
|---|---|
| `onboarding_main` | `onboarding_main-flow` |
| `paywall_settings` | `paywall_settings-flow` |

В SDK v4 метод `getFlow` одинаково читает плейсменты флоу и пейвола, поэтому приложение вызывает один и тот же метод в обоих случаях — меняется только идентификатор плейсмента, но не метод. Передайте реализацию навыку интеграции SDK для вашей платформы, который отвечает за вызовы на стороне платформы: [iOS](adapty-sdk-integration-skill) · [Android](adapty-sdk-integration-skill-android) · [React Native](adapty-sdk-integration-skill-react-native) · [Flutter](adapty-sdk-integration-skill-flutter) · [Unity](adapty-sdk-integration-skill-unity) · [Kotlin Multiplatform](adapty-sdk-integration-skill-kmp) · [Capacitor](adapty-sdk-integration-skill-capacitor).

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

## Чего это не сделает \{#what-it-wont-do\}

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

## Ограничения \{#limitations\}

#### Аудитория с несколькими сегментами требует ручного разрешения \{#an-audience-with-several-segments-has-to-be-resolved-first\}

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

#### A/B-тесты с аудиториями недоступны навыку \{#ab-test-audiences-arent-visible-to-the-skill\}

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

#### Ничто не проверено от начала до конца, пока вы не выпустите обновление \{#nothing-is-verified-end-to-end-until-you-ship\}

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

## Что дальше \{#whats-next\}

- [Миграция на флоу](migrate-to-flows) — полная инструкция по миграции, включая обновление SDK.
- [Конвертация пейвола во флоу](convert-paywall-to-flow) — клик **Move to new builder**, от которого зависит маршрут конвертации.
- [Скилл flow-generator](flow-generator-skill) — создаёт и редактирует содержимое флоу, к которому прикрепляется этот скилл.
- [Скилл flow-audit](flow-audit-skill) — проверяет, готов ли флоу к продакшену, перед тем как он попадёт в плейсмент.
- [Справочник по Adapty CLI](developer-cli-reference#placements) — команды для управления плейсментами, которые запускает скилл.