İçeriğe geç
AppFoyer
Başla

Bir uygulamayı kodlama ajanınızdan mağazaya hazır hâle getirin

Ajanınız önündeki uygulamayı — SDK'ları, izinleri, bundle id'yi — okur ve bulduklarından her uyumluluk sayfasının taslağını hazırlar. Taslakları siz okur ve yayımlarsınız. Ajan yayımlayamaz.

Başlamadan önce

Claude Code ve bir AppFoyer hesabına ihtiyacınız var. Ücretsiz plan yeterli: bir hesap oluşturun. Oluşturulacak bir anahtar yok — ajan ilk kez bağlandığında onu tarayıcıda onaylamanızı ister.

Hiç kodlama ajanınız yok mu? Tarayıcıdaki altı alan, eklenti olmadan aynı beş sayfayı size verir.

Claude Code kullanmıyor musunuz? Eklentinin ona ihtiyacı var, ama gizlilik ve koşullar sayfalarının yok: kontrol panelindeki düzenleyicilerinde, uygulamanızın bilgileriyle doldurulmuş, herhangi bir asistanda çalıştırıp yanıtını geri yapıştıracağınız bir istem bulunur — tamamı gizlilik politikası rehberinde ve kullanım koşulları rehberinde yer alır.

Kurulum

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

Başlamak için hesap gerekmez: ajan derlemenizi okur, bulduklarını gösterir ve sorularını kendi makinenizde sorar; bağlanmanızı yalnızca kaydedilecek bir şey olduğunda ister. AppFoyer'i ilk kez çağırdığında tarayıcınız bir onay sayfasında açılır: oturum açın veya ücretsiz bir hesap oluşturun, adı ve tarayıcının nereye döneceğini kontrol edin ve onaylayın. Claude Code bağlantıyı saklar ve kendiliğinden yeniler; hiçbir şey kopyalanmaz, kabuğunuzda hiçbir şey saklanmaz. Tarayıcı açılmazsa /mcp komutunu çalıştırın, appfoyer'ı seçin ve Authenticate'i seçin. Claude Code masaüstü uygulamasında bir kez bu şekilde bir terminalden bağlanın, ardından orada yeni bir oturum başlatın: zaten çalışmakta olan bir oturum yeni bağlantıyı görmez. Bağlantıyı kontrol panelinin Agent sayfasında kesin; bir sonraki çağrı hemen başarısız olur. Claude Code üçüncü taraf bir marketplace'i kendiliğinden yenilemez: yeni sürümleri almak için /plugin → Marketplaces → appfoyer içinde Enable auto-update'i seçin.

O makinede tarayıcı yok mu — uzak bir sunucu, bir konteyner, betikle yapılan bir çalıştırma? Bunun yerine bir API anahtarı kullanın: Agent → API key — for CI and headless use altında bir tane oluşturun, iş akışı için eklentiyi yukarıdaki gibi kurun ve sunucuyu, anahtar başlığında olacak şekilde bir kez daha ekleyin:

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

Eklenti anahtarı yalnızca o ortam değişkeninden okur — skill onu asla görmez ve anahtar yalnızca Claude Code'un doldurduğu Authorization başlığında taşınır.

Başka bir MCP istemcisi — claude.ai, Claude Desktop, Cursor, VS Code — aynı şekilde, aynı onay sayfasıyla https://app.appfoyer.com/mcp adresine bağlanabilir. Araçları alır; derleme dosyalarınızı okuyan adım adım iş akışı ise Claude Code eklentisiyle gelir.

Ne söylemeli

Bunları boş bir dizinde değil, uygulamanızın deposunun içinde çalıştırın:

SöyleyinNe olur
Make this app store-ready Derleme dosyalarını tarar, çıkaramadığı olguları size doğrulatır, her sayfanın taslağını hazırlar ve bir inceleme bağlantısı döndürür.
Is this app store-ready? Uyumluluk kontrol listesine göre salt okunur bir denetim. Hiçbir şey yazmaz.
Wire the store-ready links into the app Siz yayımladıktan sonra: uygulama içi gizlilik ve destek bağlantılarını, inceleyeceğiniz bir diff olarak önerir.
Add the AppFoyer drift check Sayfaların kapsamıyor olabileceği bir SDK veya izin ekleyen pull request'leri işaretleyen bir GitHub iş akışı önerir. Nasıl çalışır.

Örnekler

Kendi sözcüklerinizle söyleyin; skill'in ele aldığı durumlar bunlardır.

Tek uygulama, ilk çalıştırma

> Make this app store-ready
  • Derleme dosyalarında bulduklarını — SDK'lar, izinler, bundle id — her birini dosya ve satırıyla listeler.
  • Yalnızca bulamadıklarını sorar: şirket adı, destek e-postası, yargı yetkisi, mağaza bağlantıları. En fazla iki tur.
  • Uygulamayı oluşturur, simgeyi depodan yükler ve beş sayfanın tamamının taslağını hazırlar.
  • Bir inceleme bağlantısıyla biter. Siz orada yayımlamadan hiçbir şey herkese açık değildir.

Bir değişiklikten sonra yeniden çalıştırma

> Make this app store-ready
  • Mevcut uygulamayı application id'sinden bulur ve yeni olguları kayıtlı olanlarla karşılaştırır.
  • Yalnızca değişikliğin etkilediği sayfaların taslağını yeniden hazırlar; örneğin yeni bir analitik SDK'sından sonra gizlilik sayfası.
  • Siz istemedikçe simgeye ve adrese dokunmaz.

İstemde adı verilen birden fazla flavor

> Make com.acme.weather.free and com.acme.weather.pro store-ready
  • İki uygulama oluşturur ve seçim hakkında hiçbir şey sormaz.
  • Her flavor'ın kendi klasörünü, adını ve bağımlılıklarını okur. Yalnızca free flavor'ın kullandığı bir reklam SDK'sı, pro flavor'ın gizlilik politikasına konmaz.
  • Her flavor için bir inceleme bağlantısı ve bir konsol URL'leri tablosu döndürür.

Adı verilmeyen birden fazla flavor

> Make this app store-ready
  • Flavor'ları application id'leriyle, hepsi önceden seçili olarak listeler; hangilerinin site alacağını siz seçersiniz.
  • debug ve staging gibi build type'lar sunulmaz, hariç tutulmuş olarak listelenir.

Marka × ortam boyutları

> Make every brand store-ready
  • Tek tek flavor'ları değil, kombinasyonları (brandAProd, brandBProd) listeler.
  • Yalnızca üretim ortamını sunar. dev ve qa asla bir mağazaya gönderilmez.
  • Derleme uygulama adını oraya koyuyorsa adı Gradle'dan (resValue, manifestPlaceholders) veya taşınmış source set'lerden okur.
  • Bir boyutun ortamlar mı yoksa markalar mı olduğunu anlayamazsa sorar.

Özel adres (Pro ve Advanced)

> Make this app store-ready
  • Adresi uygulamanın İngilizce adından oluşturur, örneğin weather-now.
  • O adres alınmışsa veya bir marka adına çok yakınsa bir sonrakini dener — weather-now-app, acme-weather — en fazla beş kez, ardından size sorar.
  • Ücretsiz planda app-… adresini korur ve özel adresin Pro ile geldiğini söyler.
  • app-… adresi aynı siteyi sunmaya devam eder.

Zaten kullandığınız bir adresi değiştirme

> Change the address to weather-radar
  • Önce sorar. Eski özel adres hemen serbest bırakılır ve onu hâlâ içeren bir mağaza kaydı çalışmaz hâle gelir.
  • Yalnızca siz evet dedikten sonra değiştirir.

Simgeyi güncelleme

> Update the app icon
  • Başlatıcı simgesini bulur: Play 512 simgesi, en büyük mipmap görseli veya iOS AppIcon pazarlama görseli — önce flavor'ın kendi simgesi.
  • 512 KB'tan büyükse geçici bir klasörde bir kopyasını küçültür. Deponuza dokunulmaz.
  • Hangi dosyayı yüklediğini söyler. Yayımlanmış bir uygulamada yeni simge hemen yayına girer.

Reklam içeren bir uygulama

> Make this app store-ready. AdMob publisher id pub-0000000000000000
  • app-ads.txt dosyasını verdiğiniz satırlardan yazar. Yayıncı kimliği kodunuzda yoktur, bu yüzden asla tahmin etmez.
  • Mağaza kaydında siteyi geliştirici web sitesi olarak ayarlamanızı hatırlatır.
  • AdMob, adreslerimizdeki app-ads.txt dosyalarını doğruladı; taraması için 24 saate kadar süre tanıyın.

Sayfaları derlemeyle eşzamanlı tutma

> Add the AppFoyer drift check
  • “make this app store-ready” her çalıştırıldığında depo kökünde appfoyer.json yazılır: sayfaların dayandığı SDK'lar, veri türleri ve izinler. Bu dosyayı, kontrolün çalıştırdığı tarama aracının aynısı yazar, asla elle yazılmaz.
  • Bu istem, ücretsiz appfoyer/check-action için bir GitHub iş akışı gösterir ve siz evet dediğinizde .github/workflows/appfoyer.yml dosyasını yazar. Zaten var olan bir dosyanın üzerine asla yazmaz.
  • Bundan sonra her pull request, sayfalar yazıldığından beri neyi eklediğini veya kaldırdığını dosya ve satırıyla listeler. Eklentiyi yeniden çalıştırmak taslakları ve appfoyer.json'ı günceller.
  • Sizin adınıza hiçbir şey commit edilmez. Gizlilik politikanızı eşzamanlı tutmaya dair rehber, ayrıntıları ve diğer CI sistemleri için kurulumu içerir.

Hiçbir şeyi değiştirmeden kontrol

> Is this app store-ready?
  • Eşleşen her uygulama için kontrol listesini çalıştırır ve eksikleri bildirir. Hiçbir şey yazmaz.
  • Henüz uygulaması olmayan bir flavor eksik olarak bildirilir.

Bağlantıları uygulamaya ekleme

> Wire the store-ready links into the app
  • Yayımlanmış sayfalar gerektirir.
  • Ayarlar ekranınızdaki veya string'lerinizdeki gizlilik ve destek bağlantıları için bir diff önerir. Yalnızca siz evet dediğinizde uygular ve asla commit etmez.

Makinenizden neler çıkar

Yalnızca türetilmiş olgular:

  • uygulamanın adı, platformu ve bundle ya da application id'si;
  • derleme dosyalarınızda bulunan SDK'ların ve izinlerin adları;
  • doğruladığınız yanıtlar — şirket adı, destek e-postası, yargı yetkisi, mağaza URL'leri;
  • ajanın hazırladığı ve hesabınızda taslak olarak saklanan sayfa metni;
  • uygulamanın kendi simgesi, tek kullanımlık bir yükleme bağlantısıyla bir kez gönderilir.

Başka hiçbir dosya, asla kaynak kod, asla depoda bulunan gizli bilgiler veya anahtarlar gönderilmez. Ajanın gönderdiği, bir gizlilik politikasının zaten belirtmesi gereken şeylerdir.

Deponuzun içine bir dosya yazılır ve orada kalır: sayfaların neye dayanarak yazıldığının kaydı olan, eklentiyle birlikte gelen tarama aracının oluşturduğu appfoyer.json. Hiçbir yere gönderilmez. Ajan onu ya da başka herhangi bir şeyi asla commit etmez — bunu siz yaparsınız.

Ajanın yapamadıkları

İster tarayıcı üzerinden ister bir API anahtarıyla bağlansın, eklenti bir ajan kimlik bilgisi taşır — bu yüzden yayımlama ona hiç açık değildir. Bu, ajandan kibarca rica edilerek değil, sunucuda zorunlu kılınır:

  • Yayımlama aracı yoktur. Ajan taslak yazar; yayındaki sayfalarınız değişmez.
  • İki şeyin taslağı yoktur: simge ve özel adres. Yayımlanmış bir uygulamada bunlar yayındaki siteyi hemen değiştirir ve ajan bunları ayarladığında size söyler. Zaten kullandığınız bir özel adresi sizin onayınız olmadan değiştiremez.
  • Bir sayfayı yayımlayan REST rotası ajan kimlik bilgilerini doğrudan reddeder — yalnızca oturumla çalışır.
  • Her sayfa, yayımlama sırasında elle yazılmış bir düzenlemeyle aynı içerik taramasından yine geçer.
  • Her ajan çağrısı, onu yapan bağlantı veya anahtarla birlikte hesabın denetim günlüğüne kaydedilir.

Yani ele geçirilmiş bir bağlantı veya anahtar için en kötü senaryo, atılacak taslaklar, yanlış bir simge veya yeni bir adrestir — sizin adınıza herkese açılan bir sayfa değil.

Aldığı araçlar

Eklenti, tam olarak şunları sunan bir MCP uç noktasına bağlanır:

AraçNe yapar
list_apps Okuma Hesaptaki her uygulama; slug'ı, herkese açık URL'si ve yayımlanmış bir şey olup olmadığıyla.
get_app Okuma Tek bir uygulama: ayarlar, kayıtlı veri toplama olguları ve her sayfanın yayındaki metni, yayım durumu ve bekleyen taslağı.
create_app Yazma Şablon sayfalarla bir uygulama oluşturur. Hiçbir şey herkese açık olmaz.
create_apps Yazma Tek çağrıda, her ürün flavor'ı için bir tane olmak üzere en fazla on uygulama oluşturur. Her biri yayımlanmamış olarak başlar.
update_app Yazma Ayarları, kayıtlı veri toplama olgularını veya SDK listesini değiştirir. Sayfa metnini asla düzenlemez.
set_page Yazma Tek bir sayfanın taslağını yazar. Yayındaki sayfaya dokunulmaz.
set_ad_lines Yazma app-ads.txt'in yerine yenisini koyar. Yalnızca bir reklam SDK'sı mevcutsa ve yayıncı kimliklerini siz verdiyseniz kullanılır.
get_checklist Okuma Sunucunun hesapladığı mağazaya hazırlık kontrol listesi ve hangi sayfaların hâlâ yayımlanmamış taslakları olduğu.
get_store_forms Okuma Olgulardan ve SDK listesinden, Google Play'in Data safety formu ve Apple'ın App Privacy ayrıntıları için taslak yanıtlar. Bunları konsola kendiniz girersiniz.
request_publish Yazma Taslak hazırlamanın bittiğini bildirir ve inceleme URL'sini döndürür. Hiçbir şey yayımlamaz.
set_icon Yazma Uygulamanın simgesi için tek kullanımlık bir yükleme URL'si döndürür. Hemen yayına girer — simgenin taslağı yoktur.
check_slug Okuma Özel bir adresi (Pro ve Advanced) kontrol panelindekiyle aynı kurallara göre kontrol eder.
set_slug Yazma Özel bir adresi alır. Hemen yayına girer. Siz kabul etmedikçe mevcut adresinizin yerine yenisini koymayı reddeder.

Bir şeyler ters gittiğinde

BelirtiNeden
Araçlar “needs authentication” gösteriyor Bağlantı hiç onaylanmadı veya kesildi. /mcp komutunu çalıştırın, appfoyer'ı seçin ve Authenticate'i seçin.
Onay sayfası isteğin kullanılamayacağını söylüyor Bağlantının süresi doldu veya iki kez açıldı. Düzenleyiciden yeniden başlayın; hiçbir şey bağlanmadı.
Bir API anahtarıyla unauthorized Anahtar kontrol panelinde iptal edildi ya da başka bir hesaba ait. Yeni bir tane oluşturun ve yeniden export edin.
Yayımlama bir kota hatası döndürüyor Planın yayımlanmış uygulama sınırı doldu. Uygulama ve taslakları korunur — başka bir uygulamayı yayından kaldırın veya planınızı yükseltin, ardından inceleme ekranından yayımlayın.
Bir taslak reddedilmiş veya bekletilmiş olarak dönüyor İçerik taraması bir şeyle eşleşti. Gerekçeler neyin eşleştiğini ve nasıl düzeltileceğini listeler; düzenleyip yeniden gönderin. Herkese açık hiçbir şey değişmedi.

Bunun değiştirmediği bir şey

Taslaklar kodunuzdan tamamlanmış şablonlardır, hukuki tavsiye değildir. Bir ajanın onları hızlı yazması onları doğru yapmaz — yayımlamadan önce ne yazdığını, özellikle uygulamanızın topladıklarının listesini okuyun. Mağazanın sorumlu tuttuğu kişi sizsiniz.

Sorular: support@appfoyer.com.