Перейти до вмісту
AppFoyer
Почати

Підготуйте застосунок до магазинів з агентом програмування

Агент читає застосунок, який перед ним, — SDK, дозволи, bundle id — і складає чернетку кожної сторінки відповідності за тим, що знайшов. Ви читаєте чернетки й публікуєте їх. Агент цього зробити не може.

Перш ніж почати

Вам потрібні Claude Code і акаунт AppFoyer. Безкоштовного тарифу досить: створіть акаунт. Ключ створювати не треба — під час першого підключення агент попросить вас схвалити його в браузері.

Агента програмування немає взагалі? Шість полів у браузері дадуть ті самі п’ять сторінок без плагіна.

Не користуєтеся Claude Code? Плагіну він потрібен, а сторінкам політики конфіденційності та умов — ні: у їхніх редакторах у дашборді є промпт, заповнений даними вашого застосунку, який ви запускаєте в будь-якому асистенті й вставляєте відповідь назад. Повністю його наведено в посібнику про політику конфіденційності і посібнику про умови.

Встановлення

claude
/plugin marketplace add appfoyer/claude-plugin
/plugin install appfoyer@appfoyer

Щоб почати, акаунт не потрібен: агент читає збірку, показує, що знайшов, і ставить запитання на вашому комп’ютері, а підключитися просить лише тоді, коли є що зберегти. Коли він уперше звертається до AppFoyer, у браузері відкривається сторінка схвалення: увійдіть або створіть безкоштовний акаунт, перевірте назву й адресу, на яку повернеться браузер, і схваліть. Claude Code зберігає підключення й сам його поновлює; нічого не копіюється, нічого не зберігається у вашій оболонці. Якщо браузер не відкрився, виконайте /mcp, оберіть appfoyer і виберіть Authenticate. У настільному застосунку Claude Code підключіться один раз так само з термінала, а потім почніть там новий сеанс: сеанс, що вже був запущений, нового підключення не бачить. Відключіть його на сторінці Agent у дашборді — і наступний виклик одразу завершиться помилкою. Claude Code сам не оновлює сторонній маркетплейс: у /plugin → Marketplaces → appfoyer виберіть Enable auto-update, щоб отримувати нові версії.

На цьому комп’ютері немає браузера — віддалений сервер, контейнер, запуск зі скрипта? Тоді використайте API-ключ: створіть його в Agent → API key — for CI and headless use, установіть плагін, як описано вище, заради робочого процесу, і додайте сервер ще раз із ключем у заголовку:

export APPFOYER_API_KEY=cpk_…
claude mcp add --transport http appfoyer-key https://app.appfoyer.com/mcp --header "Authorization: Bearer $APPFOYER_API_KEY"

Плагін читає ключ лише з цієї змінної середовища — скіл його ніколи не бачить, і передається він лише в заголовку Authorization, який заповнює Claude Code.

Інший MCP-клієнт — claude.ai, Claude Desktop, Cursor, VS Code — може підключитися до https://app.appfoyer.com/mcp так само, через ту саму сторінку схвалення. Він отримає інструменти; покроковий робочий процес, який читає файли збірки, постачається з плагіном Claude Code.

Що сказати

Запускайте це в репозиторії вашого застосунку, а не в порожньому каталозі:

СкажітьЩо відбувається
Make this app store-ready Сканує файли збірки, уточнює факти, яких не зміг вивести, складає чернетку кожної сторінки й повертає посилання для перевірки.
Is this app store-ready? Аудит за чеклістом відповідності лише на читання. Нічого не записує.
Wire the store-ready links into the app Після публікації: пропонує посилання на політику конфіденційності й підтримку всередині застосунку у вигляді diff, який ви переглядаєте.
Add the AppFoyer drift check Пропонує робочий процес GitHub, що позначає pull request, які додають SDK чи дозвіл, що їх сторінки, можливо, не описують. Як це працює.

Приклади

Кажіть своїми словами; ось випадки, з якими працює скіл.

Один застосунок, перший запуск

> Make this app store-ready
  • Перелічує, що знайшов у файлах збірки, — SDK, дозволи, bundle id — кожне з файлом і рядком.
  • Питає лише те, чого не зміг знайти: назву компанії, email підтримки, юрисдикцію, посилання на магазини. Щонайбільше два раунди.
  • Створює застосунок, завантажує значок із репозиторію й складає чернетки всіх п’яти сторінок.
  • Завершує посиланням для перевірки. Ніщо не стає публічним, доки ви не опублікуєте там.

Повторний запуск після зміни

> Make this app store-ready
  • Знаходить наявний застосунок за його application id і порівнює нові факти зі збереженими.
  • Переписує лише сторінки, яких стосується зміна, — наприклад, політику конфіденційності після нового SDK аналітики.
  • Не чіпає значок і адресу, якщо ви не попросите.

Кілька flavor, названих у запиті

> Make com.acme.weather.free and com.acme.weather.pro store-ready
  • Створює два застосунки й нічого не питає про вибір.
  • Читає власну папку, назву й залежності кожного flavor. Рекламний SDK, який використовує лише безкоштовний flavor, не потрапляє в політику конфіденційності pro-flavor.
  • Повертає посилання для перевірки й таблицю URL для консолей для кожного flavor.

Кілька flavor, не названих у запиті

> Make this app store-ready
  • Перелічує flavor з їхніми application id, усі заздалегідь вибрані, і ви обираєте, які з них отримають сайт.
  • Типи збірок на кшталт debug і staging показуються як виключені, а не пропонуються.

Виміри бренд × середовище

> Make every brand store-ready
  • Перелічує комбінації (brandAProd, brandBProd), а не окремі flavor.
  • Пропонує лише продакшн-середовище. dev і qa ніколи не потрапляють у магазин.
  • Читає назву застосунку з Gradle (resValue, manifestPlaceholders) або з перенесених source sets, коли збірка зберігає її там.
  • Якщо не може визначити, чи вимір — це середовища чи бренди, — питає.

Власна адреса (Pro та Advanced)

> Make this app store-ready
  • Складає адресу з англійської назви застосунку, наприклад weather-now.
  • Якщо її зайнято або вона надто схожа на назву бренду, пробує наступну — weather-now-app, acme-weather — щонайбільше п’ять разів, а потім питає вас.
  • На безкоштовному тарифі лишає адресу app-… і повідомляє, що власна адреса доступна з Pro.
  • Адреса app-… і далі віддає той самий сайт.

Зміна адреси, якою ви вже користуєтеся

> Change the address to weather-radar
  • Спершу питає. Стара власна адреса звільняється одразу, і сторінка в магазині, де вона досі вказана, перестає працювати.
  • Змінює її лише після вашої згоди.

Оновлення значка

> Update the app icon
  • Знаходить значок запуску: значок Play 512, найбільше зображення mipmap або маркетингове зображення iOS AppIcon — спершу власний значок flavor.
  • Якщо він більший за 512 KB, зменшує копію в тимчасовій папці. Ваш репозиторій не змінюється.
  • Повідомляє, який файл завантажив. На опублікованому застосунку новий значок з’являється одразу.

Застосунок із рекламою

> Make this app store-ready. AdMob publisher id pub-0000000000000000
  • Записує app-ads.txt із рядків, які ви надали. Ідентифікатора видавця немає у вашому коді, тож він його ніколи не вгадує.
  • Нагадує вказати сайт як вебсайт розробника на сторінці в магазині.
  • AdMob перевірив файли app-ads.txt на наших адресах; дайте йому до 24 годин на сканування.

Тримати сторінки синхронізованими зі збіркою

> Add the AppFoyer drift check
  • Кожен запуск “make this app store-ready” записує appfoyer.json у корінь репозиторію: SDK, типи даних і дозволи, на основі яких написано сторінки. Його записує той самий сканер, що виконує перевірку, і ніколи — вручну.
  • Цей запит показує робочий процес GitHub для безкоштовного appfoyer/check-action і записує .github/workflows/appfoyer.yml, коли ви погоджуєтеся. Наявний файл він ніколи не перезаписує.
  • Відтоді кожен pull request показує, що він додав або прибрав відтоді, як було написано сторінки, — із файлом і рядком. Повторний запуск плагіна оновлює чернетки й appfoyer.json.
  • Нічого не комітиться за вас. У посібнику про синхронізацію політики конфіденційності є подробиці й налаштування для інших CI-систем.

Перевірити, нічого не змінюючи

> Is this app store-ready?
  • Проходить чекліст для кожного відповідного застосунку й повідомляє, чого бракує. Нічого не записує.
  • Flavor, для якого ще немає застосунку, позначається як відсутній.

Додати посилання в застосунок

> Wire the store-ready links into the app
  • Потрібні опубліковані сторінки.
  • Пропонує diff для посилань на політику конфіденційності й підтримку на екрані налаштувань чи в рядках застосунку. Застосовує його лише після вашої згоди й ніколи не комітить.

Що залишає ваш комп’ютер

Лише виведені факти:

  • назва застосунку, платформа та bundle id або application id;
  • назви SDK і дозволів, знайдених у файлах збірки;
  • відповіді, які ви підтверджуєте, — назва компанії, email підтримки, юрисдикція, URL магазинів;
  • текст сторінок, складений агентом, який зберігається у вашому акаунті як чернетка;
  • власний значок застосунку, надісланий один раз через одноразове посилання для завантаження.

Жодних інших файлів, ніколи — вихідного коду, ніколи — секретів чи ключів, знайдених у репозиторії. Те, що надсилає агент, — це те, що політика конфіденційності й так має зазначати.

Один файл записується у ваш репозиторій і там лишається: appfoyer.json — запис того, на основі чого написано сторінки, створений сканером, що входить до плагіна. Він нікуди не надсилається. Агент ніколи не комітить ні його, ні щось інше — це робите ви.

Чого агент не може

Хоч через браузер, хоч з API-ключем — плагін має облікові дані агента, тож публікація йому недоступна взагалі. Це забезпечує сервер, а не ввічливе прохання до агента:

  • Інструмента для публікації немає. Агент пише чернетки; ваші опубліковані сторінки не змінюються.
  • Дві речі не мають чернетки: значок і власна адреса. На опублікованому застосунку вони одразу змінюють живий сайт, і агент повідомляє, коли їх установив. Замінити власну адресу, якою ви вже користуєтеся, без вашої згоди він не може.
  • REST-маршрут, що публікує сторінку, повністю відхиляє облікові дані агента — лише сеанс.
  • Кожна сторінка під час публікації проходить ту саму перевірку вмісту, що й редагування вручну.
  • Кожен виклик агента записується в журнал аудиту акаунта разом із підключенням чи ключем, що його зробили.

Тож найгірше, що може статися зі скомпрометованим підключенням чи ключем, — чернетки, які доведеться відкинути, неправильний значок або нова адреса, а не сторінка, опублікована від вашого імені.

Інструменти, які він отримує

Плагін підключається до MCP-ендпоінта, що надає саме ці інструменти:

ІнструментЩо він робить
list_apps Читання Усі застосунки акаунта з їхнім slug, публічним URL і позначкою, чи щось опубліковано.
get_app Читання Один застосунок: налаштування, збережені факти про збирання даних, а для кожної сторінки — опублікований текст, стан публікації й чернетка, що очікує.
create_app Запис Створює застосунок зі сторінками-шаблонами. Нічого не стає публічним.
create_apps Запис Створює до десяти застосунків за один виклик, по одному на product flavor. Кожен починає неопублікованим.
update_app Запис Змінює налаштування, збережені факти про збирання даних або список SDK. Ніколи не редагує текст сторінок.
set_page Запис Записує чернетку однієї сторінки. Опублікована сторінка не змінюється.
set_ad_lines Запис Замінює app-ads.txt. Використовується, лише якщо є рекламний SDK і ви надали ідентифікатори видавця.
get_checklist Читання Чекліст готовності до магазинів, обчислений на сервері, і перелік сторінок, які ще мають неопубліковані чернетки.
get_store_forms Читання Чернетки відповідей для форми Data safety у Google Play та відомостей App Privacy в Apple — за фактами й списком SDK. У консоль ви вводите їх самі.
request_publish Запис Повідомляє, що чернетки готові, і повертає URL для перевірки. Нічого не публікує.
set_icon Запис Повертає одноразовий URL для завантаження значка застосунку. Одразу на живому сайті — значок не має чернетки.
check_slug Читання Перевіряє власну адресу (Pro та Advanced) за тими самими правилами, що й дашборд.
set_slug Запис Закріплює власну адресу. Одразу на живому сайті. Не замінює наявну адресу, якщо ви не погодилися.

Коли щось іде не так

СимптомПричина
Інструменти показують "needs authentication" Підключення так і не схвалили або його відключили. Виконайте /mcp, оберіть appfoyer і виберіть Authenticate.
Сторінка схвалення повідомляє, що запит не можна використати Посилання застаріло або його відкрили двічі. Почніть знову з редактора; нічого не було підключено.
unauthorized з API-ключем Ключ відкликали в дашборді, або він належить іншому акаунту. Створіть новий і знову експортуйте його.
Публікація повертає помилку квоти Ліміт опублікованих застосунків на тарифі вичерпано. Застосунок і його чернетки зберігаються — зніміть з публікації інший застосунок або перейдіть на вищий тариф, а потім опублікуйте з екрана перевірки.
Чернетку відхилено або затримано Перевірка вмісту щось виявила. У причинах указано, що саме і як це виправити; відредагуйте й надішліть знову. Нічого публічного не змінилося.

Чого це не змінює

Чернетки — це шаблони, доповнені на основі вашого коду, а не юридична консультація. Те, що агент написав їх швидко, не робить їх правдивими, — прочитайте написане, перш ніж публікувати, особливо перелік того, що збирає ваш застосунок. Відповідальність перед магазином несете ви.

Запитання: support@appfoyer.com.