App Store мен Google Play-ге жүктемес бұрын қосымшаңды Claude Code арқылы толық тексеретін дайын промпт.
Промпт ештеңені түзетпейді. Ол тек аудит жасайды: не бар, не жартылай, не мүлдем жоқ екенін анықтап, әр пункттің қай файлда екенін көрсетеді. Соңында мәселелерді BLOCKER / МАҢЫЗДЫ / КЕЙІН деп үш топқа бөледі.
Сторлар қосымшаны көбіне ұсақ нәрсе үшін қайтарады: ішінде аккаунтты жою жоқ, Sign in with Apple жоқ, ревьюерге демо аккаунт берілмеген, рұқсат мәтіні түсініксіз. Ал релизден кейін ең қымбатқа түсетіні — қауіпсіздік қатесі: бандлда қалып қойған құпия кілт, қосылмаған RLS, тексерілмейтін төлем webhook-ы.
Бұл промпт осының бәрін бір рет іске қосу арқылы ұстап береді.
| Бөлім | Пункттер | Мазмұны |
|---|---|---|
| А. Қолданушы ағыны | 1–8 | Onboarding, тіркелу, растау, құпиясөз, аккаунтты жою, logout, рөлдер |
| Ә. Экран күйлері | 9–14 | Бос, жүктелу, қате, офлайн, баяу желі, ұзын мәтін |
| Б. Мобильге тән | 15–23 | Рұқсаттар, push, сессия, safe area, пернетақта, қараңғы тема, артқа қайту |
| В. Төлем және жазылым | 24–27 | Төлем ағыны, жазылым күйі, restore purchases, сервердегі тексеріс |
| Г. Техникалық дайындық | 28–35 | Crash reporting, analytics, force update, debug код, өнімділік |
| Ғ. Стор және құқық | 36–41 | Privacy policy, terms, nutrition label, скриншоттар, TestFlight, accessibility |
| Д. Қауіпсіздік | 42–48 | Құпия кілттер, token сақтау, RLS, webhook қолтаңбасы, rate limit |
| Е. Бэкенд және орта | 49–55 | Dev/prod, бэкап, миграциялар, race condition, мониторинг |
| Ж. Expo / Build | 56–60 | EAS профильдері, OTA жаңарту, deep link, push кілттері |
| З. Стор талаптары | 61–69 | Sign in with Apple, Privacy Manifest, демо аккаунт, IAP, Data safety |
| И. Локализация және құқық (ҚР) | 70–73 | Қазақша/орысша мәтін, уақыт белдеуі, ₸ форматы, дербес деректер |
Expo + Supabase стегіне ең жақсы сай келеді, бірақ React Native, Flutter және нативті Swift/Kotlin жобаларында да жұмыс істейді. Сәйкес келмейтін пункттерді Claude өзі баламасымен тексереді.
- Жобаңды VS Code-та аш (Claude Code extension орнатылған болуы керек).
- Төмендегі промпттың блогын көшір (блоктың оң жақ жоғарғы бұрышындағы көшіру батырмасы).
- Claude Code чатына қойып, жібер.
- Есепті оқы да, қай пункттен бастайтыныңды өзің айт.
💡 Үлкен жобада аудит ұзаққа созылуы мүмкін. Context толып кетсе, Claude-қа бөлімдерді бөлек-бөлек тексеруді тапсыр (мысалы, алдымен А–Г, содан кейін Д–И).
Бұл мобильді қосымшаны релизге дайын ба деп тексер. Код жазба, түзетуді бастама. Алдымен тек АУДИТ жасап, есеп бер.
Тек апп кодын емес, бэкендті де қара: supabase/ папкасы, Edge Functions, миграциялар, RLS саясаттары, webhook өңдеушілері, env файлдары, app.json / eas.json.
Әр пункт үшін күйін белгіле: ✅ бар / ⚠️ жартылай / ❌ жоқ. Қай файлда немесе қай экранда екенін көрсет. Таппасаң, "табылмады" деп жаз, ойдан құрама. Кодтан тексеру мүмкін емес пункт болса (мысалы, ашылу уақыты, стор скриншоттары), "қолмен тексеру керек" деп белгіле.
━━━ А. ҚОЛДАНУШЫ АҒЫНЫ ━━━
1. Onboarding: алғаш кірген адам не көреді? Түсіндірме экрандар бар ма, оларды өткізіп жіберуге бола ма?
2. Тіркелу және кіру: барлық әдіс (email, телефон, Apple/Google) толық жұмыс істей ме?
3. Растау: email немесе SMS коды, қайта жіберу батырмасы, таймер бар ма?
4. Құпиясөзді қалпына келтіру басынан аяғына дейін өте ме?
5. Аккаунтты жою қосымшаның ІШІНДЕ бар ма? (App Store мен Google Play талабы, жоқ болса қабылданбайды)
6. Шығу (logout): token тазалана ма, келесі ашқанда қайта кіруді сұрай ма?
7. Қолданушы рөлдері мен рұқсаттары анық па (әдеттегі қолданушы / админ / қонақ)?
8. Негізгі user flow-лар басынан аяғына дейін үзілмей өте ме? Әрқайсысын тізіп шық.
━━━ Ә. ЭКРАН КҮЙЛЕРІ ━━━
9. Бос күй: тізім бос болғанда экран не көрсетеді? Сурет, мәтін және әрекет батырмасы бар ма?
10. Жүктелу күйі әр async әрекетте бар ма? Skeleton ба, spinner ма?
11. Қате күйі: сервер 400/500 қайтарғанда қолданушы не көреді? "Қайта көру" батырмасы бар ма?
12. Желі жоқ күйі: офлайн болғанда не болады? Хабарлама шыға ма, әлде апп құлай ма?
13. Желі баяу болғанда timeout қойылған ба, шексіз айналып тұрмай ма?
14. Ұзын мәтін мен үлкен сан: атауы 100 таңба болса, дизайн бұзыла ма?
━━━ Б. МОБИЛЬГЕ ТӘН ━━━
15. Рұқсаттар (камера, микрофон, геолокация, хабарлама): неге керегі түсіндіріліп сұрала ма? Қолданушы бас тартса, апп жұмысын жалғастыра ма, әлде құлай ма?
16. Push хабарламалар: рұқсат сұрау, өшіру мүмкіндігі, хабарламаны басқанда дұрыс экранға өту (deep link) бар ма?
17. Дерек сақталуы: апп жабылып, қайта ашылса, қолданушының кірген күйі сақтала ма?
18. Фон және қайта оралу: аппты фонға тастап, 10 минуттан соң қайтса, күй бұзыла ма, token ескіре ме?
19. Экранды бұру және әртүрлі өлшем: кіші телефон (SE), үлкен телефон, планшет.
20. Қауіпсіз аймақ (safe area): жоғарғы ойық пен төменгі жолақ мазмұнды жаппай ма?
21. Пернетақта ашылғанда өріс жабылып қалмай ма? "Готово" батырмасы бар ма?
22. Қараңғы тема: қолдау бар ма? Бар болса, барлық экранда дұрыс па?
23. Артқа қайту: Android-тың артқа батырмасы мен iOS-тың свайпы әр экранда дұрыс жұмыс істей ме?
━━━ В. ТӨЛЕМ ЖӘНЕ ЖАЗЫЛЫМ ━━━
24. Төлем ағыны: сәтті төлем, сәтсіз төлем және қолданушы жарты жолда шығып кеткен жағдай өңделген бе?
25. Жазылым күйі: мерзімі біткенде, бас тартқанда, қайта жаңартқанда апп дұрыс әрекет ете ме?
26. Сатып алуды қалпына келтіру (restore purchases) бар ма? (Apple талабы)
27. Төлем тексерісі серверде жүре ме, әлде тек қосымшаның өзінде ме? (тек аппта болса, бұл тесік)
━━━ Г. ТЕХНИКАЛЫҚ ДАЙЫНДЫҚ ━━━
28. Crash reporting орнатылған ба (Sentry, Crashlytics)?
29. Analytics орнатылған ба? Негізгі оқиғалар белгіленген бе?
30. Мәжбүрлі жаңарту (force update) механизмі бар ма? Ескі нұсқа серверге сәйкес келмей қалса, не болады?
31. Версия нөмірі мен build нөмірі дұрыс қойылған ба?
32. Debug кодтары, console.log, тест деректері өшірілген бе?
33. Өнімділік: ұзын тізім жүктегенде тежеле ме? Суреттер оптимизацияланған ба?
34. Апп өлшемі қанша? Азайтуға бола ма?
35. Бірінші ашылу уақыты қанша секунд?
━━━ Ғ. СТОР ЖӘНЕ ҚҰҚЫҚ ━━━
36. Privacy policy сілтемесі аппта және стор бетінде бар ма?
37. Қолданушы келісімі (terms) бар ма?
38. App Store Privacy Nutrition Label үшін қандай дерек жиналатыны анықталған ба?
39. Иконка, splash screen, стор скриншоттары дайын ба?
40. Бета-build дайын ба (TestFlight / Google Play internal testing)?
41. Accessibility: шрифт үлкейтілгенде дизайн бұзыла ма? Батырмаларда белгі (label) бар ма? Контраст жеткілікті ме?
━━━ Д. ҚАУІПСІЗДІК ━━━
42. Құпия кілттер: service_role, API кілттер, webhook secret аппның бандлына (қолданушы телефонына түсетін кодқа) кіріп кетпеген бе? Бүкіл кодтан іздеп шық.
43. Token сақталуы: SecureStore/Keychain-де ме, әлде AsyncStorage сияқты ашық жерде ме?
44. RLS: әр кестеде қосулы ма? Әр рөл тек өз дерегін көре ме? Бір қолданушы басқа біреудің ID-ін қойып, соның дерегін ала ала ма? Тексер.
45. Webhook-тар (төлем, бот): қолтаңба (signature) тексеріле ме? Жалған сұраныспен төлемді "сәтті" етіп көрсетуге бола ма?
46. Идемпотенттілік: бір webhook екі рет келсе, төлем немесе тапсырыс екі рет жазылмай ма?
47. Rate limit: OTP, логин, құпиясөзді қалпына келтіру шексіз шақырыла ма? (SMS шығынын жеп қояды)
48. Енгізу валидациясы серверде де бар ма, әлде тек клиентте ме?
━━━ Е. БЭКЕНД ЖӘНЕ ОРТА ━━━
49. Dev және prod орталары бөлек пе? Prod build қай URL мен кілтке қосылып тұр?
50. Дерекқор бэкапы бар ма? Бэкаптан қалпына келтіру кемінде бір рет тексерілген бе?
51. Миграциялар репода сақтала ма? Prod-тағы схема кодпен сәйкес пе?
52. Race condition: екі адам бір уақытта бір слотты немесе тауарды алса, не болады? Дерекқор деңгейінде шектеу (unique, lock) бар ма?
53. Екі рет басу: төлем немесе жіберу батырмасын тез екі рет басса, екі сұраныс кетпей ме?
54. Мониторинг: Edge Function немесе сервер құласа, маған хабар келе ме?
55. Аккаунт жойылғанда серверде дерегі толық өше ме? (тек auth емес: файлдар, push token, байланысқан жазбалар)
━━━ Ж. EXPO / BUILD (Expo болмаса, сол платформаның баламасымен тексер) ━━━
56. EAS build профильдері (development/preview/production) дұрыс па? Prod env айнымалылары қойылған ба?
57. OTA жаңарту (expo-updates, яғни JS кодты сторсыз жаңарту): runtimeVersion мен channel дұрыс па? Қате update келсе, ескі нұсқаға қайта ма?
58. Bundle ID / package name, иконка, splash: бәрі prod мәндері ме?
59. Deep link және Universal Link: apple-app-site-association пен assetlinks.json серверде тұр ма?
60. Push: logout кезінде token серверден өшіріле ме? Prod APNs/FCM кілттері қойылған ба?
━━━ З. СТОР ТАЛАПТАРЫ (жиі reject болатын жерлер) ━━━
61. Sign in with Apple: Google немесе басқа әлеуметтік кіру бар болса, Apple-мен кіру де міндетті. Бар ма?
62. Privacy Manifest (PrivacyInfo.xcprivacy): кітапханалар қолданатын "required reason API"-лер көрсетілген бе?
63. Info.plist рұқсат мәтіндері: әр рұқсатқа нақты, түсінікті себеп жазылған ба? (жалпы мәтінге reject береді)
64. Ревьюерге демо аккаунт: SMS/OTP-сыз кіретін тест логин дайын ба?
65. Аппта не сатылады? Физикалық қызмет немесе тауар болса, Kaspi арқылы төлеуге болады. Цифрлық контент немесе жазылым болса, Apple In-App Purchase міндетті. Нақты анықта.
66. Google Play: Data safety формасы толтырылған ба? Target SDK ағымдағы талапқа сай ма? Жас рейтингі қойылған ба?
67. Export compliance: шифрлау сұрағы (ITSAppUsesNonExemptEncryption) app.json-да қойылған ба?
68. Қолданушы контенті болса (пікір, чат, фото): шағым түсіру және блоктау мүмкіндігі бар ма? (Apple 1.2 талабы)
69. Қолдау: апп ішінде байланыс (Telegram/WhatsApp/email) және стор үшін Support URL бар ма?
━━━ И. ЛОКАЛИЗАЦИЯ ЖӘНЕ ҚҰҚЫҚ (ҚАЗАҚСТАН) ━━━
70. Тілдер: қазақша/орысша мәтін толық па? Кодта қатаң жазылған (hardcode) мәтін қалған жоқ па? Қазақша экранда орысша сөз шығып тұрмай ма?
71. Уақыт белдеуі: уақыт серверде UTC-де сақтала ма? Экранда Алматы уақытымен (UTC+5) дұрыс көрсетіле ме?
72. Формат: ₸, мыңдық бөлгіш, +7 телефон форматы барлық экранда біркелкі ме?
73. Дербес деректер: тіркелу кезінде дербес деректерді өңдеуге келісім белгісі бар ма? Қолданушылардың дербес деректері қазір қай елдегі серверде сақталады?
━━━ ЕСЕП ФОРМАТЫ ━━━
1) Қысқа кесте: бөлім → пункт → күй (✅/⚠️/❌/қолмен тексеру керек).
2) ❌ және ⚠️ болғандардың әрқайсысы бойынша: не жоқ, неге маңызды, қанша жұмыс керек (кіші/орташа/үлкен).
3) Соңында үш топқа бөл:
- BLOCKER: болмаса, стор қабылдамайды, апп құлайды немесе қауіпсіздік тесігі бар
- МАҢЫЗДЫ: релизге дейін жасаған жөн
- КЕЙІН: v1.1-ге қалдыруға болады
Қауіпсіздік тесігі табылса, оны бірден BLOCKER-ге жатқыз.
Ешнәрсе түзетпе. Мен есепті оқып, қайсысынан бастайтынымды айтамын.
Claude шамамен мынадай кесте береді:
| Бөлім | Пункт | Күй |
|---|---|---|
| А | 5. Аккаунтты жою | ❌ табылмады |
| Ә | 12. Желі жоқ күйі | |
| Д | 44. RLS | ✅ supabase/migrations/002_rls.sql |
| З | 64. Демо аккаунт | қолмен тексеру керек |
Одан кейін әр мәселенің түсіндірмесі мен BLOCKER / МАҢЫЗДЫ / КЕЙІН тізімі келеді.
Аудитті AI жасайды, ол бірдеңені өткізіп алуы немесе қате бағалауы мүмкін. BLOCKER деп белгіленгендерді және қауіпсіздік бөлімін (Д) міндетті түрде өзің қайта тексер. Стор талаптары уақыт өте өзгереді, сондықтан релиз алдында App Store Review Guidelines пен Google Play саясатын қарап шық.
Жаңа пункт ұсынғың келсе немесе қате тапсаң, Issue аш немесе Pull Request жібер.
Жамбыл (Falcon): ONAIR видеостудиясы, Алматы GitHub: @jambyylf · Instagram: @jambyyl
MIT: еркін қолдан, өзгерт, тарат.