Langsung ke konten
AppFoyer
Mulai

Buat aplikasi siap toko dari coding agent Anda

Agent Anda membaca aplikasi yang ada di hadapannya — SDK, izin, bundle id — dan menyusun draf setiap halaman kepatuhan dari apa yang ditemukannya. Anda membaca drafnya dan memublikasikannya. Agent tidak bisa.

Sebelum memulai

Anda memerlukan Claude Code dan akun AppFoyer. Paket gratis sudah cukup: buat akun. Tidak ada kunci yang perlu dibuat — agent meminta Anda menyetujuinya di browser saat pertama kali terhubung.

Sama sekali tidak punya coding agent? Enam kolom di browser memberi Anda lima halaman yang sama tanpa plugin.

Tidak memakai Claude Code? Plugin memerlukannya, tetapi halaman privasi dan ketentuan tidak: editornya di dashboard memiliki prompt, yang sudah diisi dengan detail aplikasi Anda, untuk Anda jalankan di asisten mana pun lalu tempelkan kembali — dicetak lengkap di panduan kebijakan privasi dan panduan ketentuan.

Instalasi

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

Tidak perlu akun untuk memulai: agent membaca build Anda, menunjukkan apa yang ditemukannya, dan mengajukan pertanyaannya di mesin Anda, lalu baru meminta Anda terhubung saat ada sesuatu yang perlu disimpan. Saat pertama kali memanggil AppFoyer, browser Anda terbuka di halaman persetujuan: masuk atau buat akun gratis, periksa namanya dan ke mana browser akan kembali, lalu setujui. Claude Code menyimpan koneksi dan memperbaruinya sendiri; tidak ada yang disalin, tidak ada yang disimpan di shell Anda. Jika browser tidak terbuka, jalankan /mcp, pilih appfoyer, lalu pilih Authenticate. Di aplikasi desktop Claude Code, hubungkan sekali dengan cara ini dari terminal, lalu mulai sesi baru di sana: sesi yang sudah berjalan tidak melihat koneksi baru. Putuskan koneksi di halaman Agent pada dashboard dan panggilan berikutnya langsung gagal. Claude Code tidak memperbarui marketplace pihak ketiga dengan sendirinya: di /plugin → Marketplaces → appfoyer, pilih Enable auto-update untuk menerima versi baru.

Tidak ada browser di mesin itu — server jarak jauh, container, atau eksekusi berskrip? Gunakan API key sebagai gantinya: buat di Agent → API key — for CI and headless use, instal plugin seperti di atas untuk alur kerjanya, lalu tambahkan server sekali lagi dengan kunci di header-nya:

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

Plugin membaca kunci hanya dari variabel lingkungan itu — skill tidak pernah melihatnya, dan kunci hanya dikirim di header Authorization yang diisi Claude Code.

Klien MCP lain — claude.ai, Claude Desktop, Cursor, VS Code — dapat terhubung ke https://app.appfoyer.com/mcp dengan cara yang sama, dengan halaman persetujuan yang sama. Klien itu mendapatkan tool-nya; alur kerja langkah demi langkah yang membaca file build Anda disertakan dalam plugin Claude Code.

Apa yang diucapkan

Jalankan ini di dalam repositori aplikasi Anda, bukan di direktori kosong:

UcapkanApa yang terjadi
Make this app store-ready Memindai file build, mengonfirmasi fakta yang tidak bisa diturunkannya, menyusun draf setiap halaman, dan mengembalikan tautan peninjauan.
Is this app store-ready? Audit hanya baca terhadap checklist kepatuhan. Tidak menulis apa pun.
Wire the store-ready links into the app Setelah Anda memublikasikan: mengusulkan tautan privasi dan dukungan di dalam aplikasi sebagai diff yang Anda tinjau.
Add the AppFoyer drift check Mengusulkan workflow GitHub yang menandai pull request yang menambahkan SDK atau izin yang mungkin belum dicakup halaman. Cara kerjanya.

Contoh

Ucapkan dengan kata-kata Anda sendiri; berikut kasus-kasus yang ditangani skill.

Satu aplikasi, pertama kali dijalankan

> Make this app store-ready
  • Mendaftar apa yang ditemukannya di file build — SDK, izin, bundle id — masing-masing dengan file dan barisnya.
  • Hanya menanyakan apa yang tidak bisa ditemukannya: nama perusahaan, email dukungan, yurisdiksi, tautan toko. Paling banyak dua putaran.
  • Membuat aplikasi, mengunggah ikon dari repositori, dan menyusun draf kelima halaman.
  • Diakhiri dengan tautan peninjauan. Tidak ada yang tayang sampai Anda memublikasikannya di sana.

Jalankan lagi setelah ada perubahan

> Make this app store-ready
  • Menemukan aplikasi yang sudah ada berdasarkan application id-nya dan membandingkan fakta baru dengan yang tersimpan.
  • Hanya menyusun ulang halaman yang terdampak perubahan, seperti privasi setelah ada SDK analitik baru.
  • Tidak mengubah ikon dan alamat kecuali Anda memintanya.

Beberapa flavor, disebutkan di prompt

> Make com.acme.weather.free and com.acme.weather.pro store-ready
  • Membuat dua aplikasi dan tidak menanyakan apa pun tentang pilihannya.
  • Membaca folder, nama, dan dependensi milik setiap flavor. SDK iklan yang hanya dipakai flavor free tidak dimasukkan ke kebijakan privasi flavor pro.
  • Mengembalikan tautan peninjauan dan tabel URL konsol untuk setiap flavor.

Beberapa flavor, tidak disebutkan

> Make this app store-ready
  • Mendaftar flavor beserta application id-nya, semuanya sudah terpilih, dan Anda memilih mana yang mendapat situs.
  • Build type seperti debug dan staging didaftar sebagai dikecualikan, tidak ditawarkan.

Dimensi merek × lingkungan

> Make every brand store-ready
  • Mendaftar kombinasi (brandAProd, brandBProd), bukan flavor tunggal.
  • Hanya menawarkan lingkungan produksi. dev dan qa tidak pernah dirilis ke toko.
  • Membaca nama aplikasi dari Gradle (resValue, manifestPlaceholders) atau source set yang dipindahkan jika build meletakkannya di sana.
  • Jika tidak bisa memastikan apakah sebuah dimensi adalah lingkungan atau merek, ia bertanya.

Alamat khusus (Pro dan Advanced)

> Make this app store-ready
  • Menyusun alamat dari nama aplikasi dalam bahasa Inggris, misalnya weather-now.
  • Jika sudah dipakai atau terlalu mirip dengan nama merek, ia mencoba yang berikutnya — weather-now-app, acme-weather — paling banyak lima kali, lalu bertanya kepada Anda.
  • Di paket gratis ia mempertahankan alamat app-… dan memberi tahu bahwa alamat khusus tersedia di Pro.
  • Alamat app-… tetap menyajikan situs yang sama.

Mengubah alamat yang sudah Anda gunakan

> Change the address to weather-radar
  • Bertanya terlebih dahulu. Alamat khusus yang lama langsung dilepas, dan listingan toko yang masih mencantumkannya berhenti berfungsi.
  • Hanya mengubahnya setelah Anda setuju.

Memperbarui ikon

> Update the app icon
  • Menemukan ikon peluncur: ikon Play 512, gambar mipmap terbesar, atau gambar marketing AppIcon iOS — yang milik flavor itu sendiri lebih dulu.
  • Jika ukurannya lebih dari 512 KB, ia memperkecil salinannya di folder sementara. Repositori Anda tidak disentuh.
  • Memberi tahu file mana yang diunggahnya. Pada aplikasi yang sudah dipublikasikan, ikon baru langsung tayang.

Aplikasi dengan iklan

> Make this app store-ready. AdMob publisher id pub-0000000000000000
  • Menulis app-ads.txt dari baris yang Anda berikan. ID penayang tidak ada di kode Anda, jadi ia tidak pernah menebaknya.
  • Mengingatkan Anda untuk mengatur situs sebagai situs web developer di listingan toko.
  • AdMob telah memverifikasi file app-ads.txt di alamat kami; beri waktu hingga 24 jam untuk crawl.

Menjaga halaman tetap sinkron dengan build

> Add the AppFoyer drift check
  • Setiap kali “make this app store-ready” dijalankan, appfoyer.json ditulis di root repositori: SDK, jenis data, dan izin yang menjadi dasar penulisan halaman. File ini ditulis oleh pemindai yang sama dengan yang dijalankan pemeriksaan, tidak pernah secara manual.
  • Prompt ini menampilkan workflow GitHub untuk appfoyer/check-action yang gratis dan menulis .github/workflows/appfoyer.yml saat Anda setuju. Ia tidak pernah menimpa workflow yang sudah Anda punya.
  • Sejak itu setiap pull request mendaftar apa yang ditambahkan atau dihapusnya sejak halaman ditulis, dengan file dan barisnya. Menjalankan plugin lagi memperbarui draf dan appfoyer.json.
  • Tidak ada yang di-commit untuk Anda. Panduan tentang menjaga kebijakan privasi tetap sinkron berisi detailnya dan penyiapan untuk sistem CI lain.

Memeriksa tanpa mengubah apa pun

> Is this app store-ready?
  • Menjalankan checklist untuk setiap aplikasi yang cocok dan melaporkan apa yang kurang. Tidak menulis apa pun.
  • Flavor yang belum punya aplikasi dilaporkan sebagai tidak ada.

Memasang tautan ke dalam aplikasi

> Wire the store-ready links into the app
  • Memerlukan halaman yang sudah dipublikasikan.
  • Mengusulkan diff untuk tautan privasi dan dukungan di layar pengaturan atau string Anda. Hanya menerapkannya saat Anda setuju, dan tidak pernah melakukan commit.

Apa yang keluar dari mesin Anda

Hanya fakta turunan:

  • nama aplikasi, platform, dan bundle id atau application id;
  • nama SDK dan izin yang ditemukan di file build Anda;
  • jawaban yang Anda konfirmasi — nama perusahaan, email dukungan, yurisdiksi, URL toko;
  • teks halaman yang disusun agent, yang disimpan di akun Anda sebagai draf;
  • ikon aplikasi itu sendiri, dikirim sekali melalui tautan unggah sekali pakai.

Tidak ada file lain, tidak pernah kode sumber, tidak pernah rahasia atau kunci yang ditemukan di repositori. Yang dikirim agent adalah apa yang memang harus dinyatakan oleh kebijakan privasi.

Satu file ditulis ke dalam repositori Anda dan tetap di sana: appfoyer.json, catatan tentang dasar penulisan halaman, dibuat oleh pemindai yang disertakan dalam plugin. File ini tidak dikirim ke mana pun. Agent tidak pernah melakukan commit atas file ini, atau apa pun — Anda yang melakukannya.

Apa yang tidak bisa dilakukan agent

Baik terhubung lewat browser maupun dengan API key, plugin memegang kredensial agent — jadi publikasi sama sekali tidak tersedia baginya. Ini ditegakkan di server, bukan dengan meminta baik-baik kepada agent:

  • Tidak ada tool untuk memublikasikan. Agent menulis draf; halaman Anda yang sedang tayang tidak berubah.
  • Dua hal tidak memiliki draf: ikon dan alamat khusus. Pada aplikasi yang sudah dipublikasikan keduanya langsung mengubah situs yang tayang, dan agent memberi tahu Anda saat ia mengaturnya. Agent tidak bisa mengganti alamat khusus yang sudah Anda gunakan tanpa persetujuan Anda.
  • Rute REST yang memublikasikan halaman menolak kredensial agent sepenuhnya — hanya sesi.
  • Setiap halaman tetap melewati penyaringan konten yang sama saat dipublikasikan seperti suntingan yang ditulis manual.
  • Setiap panggilan agent dicatat di log audit akun beserta koneksi atau kunci yang melakukannya.

Jadi kemungkinan terburuk untuk koneksi atau kunci yang disusupi adalah draf yang harus dibuang, ikon yang salah, atau alamat baru — bukan halaman yang tayang atas nama Anda.

Tool yang didapatkannya

Plugin terhubung ke endpoint MCP yang menyediakan tepat tool berikut:

ToolFungsinya
list_apps Baca Setiap aplikasi di akun beserta slug, URL publik, dan apakah ada yang sudah dipublikasikan.
get_app Baca Satu aplikasi: pengaturan, fakta pengumpulan data yang tersimpan, serta teks yang sedang tayang, status publikasi, dan draf tertunda setiap halaman.
create_app Tulis Membuat aplikasi dengan halaman template. Tidak ada yang tayang.
create_apps Tulis Membuat hingga sepuluh aplikasi dalam satu panggilan, satu per product flavor. Masing-masing dimulai tanpa dipublikasikan.
update_app Tulis Mengubah pengaturan, fakta pengumpulan data yang tersimpan, atau daftar SDK. Tidak pernah mengedit teks halaman.
set_page Tulis Menulis draf untuk satu halaman. Halaman yang sedang tayang tidak disentuh.
set_ad_lines Tulis Mengganti app-ads.txt. Hanya digunakan jika ada SDK iklan dan Anda memberikan ID penayang.
get_checklist Baca Checklist kesiapan toko yang dihitung server, ditambah halaman mana yang masih memiliki draf belum dipublikasikan.
get_store_forms Baca Draf jawaban untuk formulir Data safety Google Play dan detail App Privacy Apple, dari fakta dan daftar SDK. Anda sendiri yang memasukkannya di konsol.
request_publish Tulis Menyatakan penyusunan draf selesai dan mengembalikan URL peninjauan. Tidak memublikasikan apa pun.
set_icon Tulis Mengembalikan URL unggah sekali pakai untuk ikon aplikasi. Langsung tayang — ikon tidak memiliki draf.
check_slug Baca Memeriksa alamat khusus (Pro dan Advanced) dengan aturan yang sama seperti dashboard.
set_slug Tulis Mengklaim alamat khusus. Langsung tayang. Menolak mengganti alamat yang sudah Anda miliki kecuali Anda setuju.

Saat terjadi masalah

GejalaPenyebab
Tool menampilkan "needs authentication" Koneksi belum pernah disetujui, atau sudah diputus. Jalankan /mcp, pilih appfoyer, lalu pilih Authenticate.
Halaman persetujuan menyatakan permintaan tidak dapat digunakan Tautannya kedaluwarsa atau dibuka dua kali. Mulai lagi dari editor; tidak ada yang terhubung.
unauthorized dengan API key Kunci telah dicabut di dashboard, atau milik akun lain. Buat kunci baru dan ekspor lagi.
Publikasi mengembalikan error kuota Batas aplikasi yang dipublikasikan pada paket sudah habis. Aplikasi dan drafnya tetap disimpan — batalkan publikasi aplikasi lain atau upgrade, lalu publikasikan dari layar peninjauan.
Draf dikembalikan dengan status ditolak atau ditahan Penyaringan konten menemukan kecocokan. Daftar alasan menyebutkan apa yang cocok dan cara memperbaikinya; edit dan kirim ulang. Tidak ada yang berubah di halaman publik.

Satu hal yang tidak berubah

Draf adalah template yang dilengkapi dari kode Anda, bukan nasihat hukum. Agent yang menulisnya dengan cepat tidak membuatnya benar — baca apa yang ditulisnya sebelum Anda memublikasikan, terutama daftar apa yang dikumpulkan aplikasi Anda. Andalah yang dimintai pertanggungjawaban oleh toko.

Pertanyaan: support@appfoyer.com.