CommunityImagegithub.com

erberkk/store-screenshots

Utilisez cette compétence pour produire ou mettre à jour des captures d'écran pour l'App Store et Google Play, ainsi que l'image de fonctionnalité Play. Elle planifie une histoire panoramique connectée à travers les vues, capture de vraies captures d'écran in-app avec le harnais de test/capture de l'application à chaque taille logique et ratio de pixels de l'appareil, couvre toute la matrice d'appareils (iPhone 6,9", l'emplacement Dynamic Island moyen requis, les écrans externe et interne iPhone Duo, iPad 13" si l'application tourne sur iPad, téléphone Play, tablettes 7" et 10", image de fonctionnalité 1024×500), vérifie les canaux alpha et les mauvaises tailles, et téléverse dans l'ordre via les API App Store Connect et Google Play.

Qu'est-ce que store-screenshots ?

Cette compétence, `erberkk/store-screenshots`, est un guide complet et automatisé pour la création et la mise à jour de jeux de captures d'écran de magasin d'applications (App Store et Google Play) et d'images de fonctionnalité. Elle est conçue pour les agents IA travaillant avec des applications mobiles afin de garantir que les visuels du magasin sont précis, à jour et conformes aux spécifications des plateformes. La compétence détaille un processus en six étapes : planifier un storyboard panoramique, capturer de vraies captures d'écran depuis l'application à l'aide de tests (Flutter golden, XCUITest, etc.), composer les cadres avec un script de rendu HTML, vérifier les images avec un outil de validation, téléverser les actifs via les API (App Store Connect et Google Play) et vérifier le résultat. Les principes clés incluent l'utilisation de captures réelles (pas de maquettes), la correspondance des nombres avec l'application, et le maintien d'un ordre de trame cohérent entre les langues. La compétence prend en charge toute la matrice d'appareils requise, des iPhones et iPads aux tablettes Android et aux téléphones, avec des dimensions en pixels précises et des exigences pour les canaux alpha. Elle comprend des scripts Node.js pour le rendu, la vérification et le téléversement, avec des contrôles de validation automatisés pour les dimensions, les canaux alpha et le comptage des fichiers. Les décisions humaines sont nécessaires pour les storyboards, le remplacement des jeux de captures d'écran en direct et la validation des modifications Play. Les pièges courants comprennent l'oubli de l'emplacement Dynamic Island requis, l'exportation de PNG avec des canaux alpha, et l'utilisation de la mauvaise résolution pour les téléchargements Play.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/erberkk/mobile-app-launch-skills/tree/HEAD/skills/store-screenshots

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Captures d'écran du store

Objectif

Des captures d'écran qui convertissent, fidèles à l'application, et adaptées à chaque emplacement requis par les stores, produites par un script afin de pouvoir être régénérées en quelques minutes lors d'un changement d'interface.

Prérequis

  • Une version dont l'interface est finalisée pour cette release.
  • Un harnais de capture dans l'application (tests golden/intégration Flutter, XCUITest, tests de capture d'écran Espresso/Compose, ou Fastlane snapshot) capable d'afficher les écrans avec des données de démonstration déterministes.
  • Node.js 18+ et Chrome/Chromium pour le rendu (npm i dans scripts/).
  • Identifiants API (accounts-and-tax) pour le téléchargement.

Principes

  1. Captures réelles, pas de maquettes. Chaque écran de téléphone à l'intérieur d'un cadre est une capture de l'application publiée. Une interface redessinée ou « améliorée » induit en erreur (ligne directrice 2.3) et devient obsolète.
  2. Les chiffres doivent correspondre à l'application. Si un cadre affiche « 1 850 pas » ou « 12 min », l'application doit produire exactement cela pour les données de démonstration. Générez les données de démonstration dans le harnais et vérifiez-les dans le même test.
  3. Si une capture d'écran montre quelque chose que l'application ne fait pas, corrigez l'un des deux. Soit construisez la fonctionnalité, soit modifiez le cadre. Ne publiez jamais l'écart.
  4. Aucune autre plateforme dans les cadres. Pas de barres d'état/navigation Android sur iOS, pas d'interface Apple ou « App Store » sur Play (2.3.10).
  5. Conservez le même ordre des cadres dans chaque langue et sur chaque appareil.

Matrice d'appareils

Tableau complet avec tailles logiques et identifiants API : references/device-matrix.md. Résumé (vérifiez sur Spécifications des captures d'écran Apple et Ressources de prévisualisation Play) :

EmplacementPixels (portrait)Requis ?
iPhone large Dynamic Island (6,9")1320×2868 (aussi 1290×2796, 1260×2736)Recommandé jeu principal
iPhone Dynamic Island moyen1206×2622 ou 1179×2556Au moins une capture d'écran requise
Écran externe iPhone Duo1398×2034Requis à partir d'avril 2027 pour les applications construites avec le SDK iOS 27.1 ou ultérieur ; ajoute le badge « optimisé pour iPhone Duo »
Écran interne iPhone Duo2007×2853Idem que l'écran externe
iPad 13"2064×2752 (ou 2048×2732)Requis uniquement si l'application tourne sur iPad (pas pour les applications iPhone uniquement)
Téléphone Playe.g. 1080×1920 ou 1080×2160 (côtés 320–3840 px, grand côté ≤ 2× petit côté)≥ 2 captures d'écran pour publier ; ≥ 4 à ≥ 1080 px recommandé
Tablette Play 7" et 10"1080–7680 px, 9:16 ou 16:9Recommandé si l'application prend en charge les tablettes
Image de fonctionnalité Play1024×500Requis
Icône Play512×512, PNG 32 bitsRequis

Apple : jusqu'à 10 par taille ; PNG ou JPEG ; pas de canal alpha ni de transparence. Play : jusqu'à 8 par type d'appareil ; JPEG ou PNG 24 bits (pas d'alpha).

Actifs créatifs de la page produit App Store (nouvel App Store Connect, onglet « En-tête et résultats de recherche ») :

  • En-tête : une image large en haut de la page produit, 3840×1646 ou 5244×2950. Optionnel (la soumission passe sans).
  • Résultats de recherche : 5244×2950, 3840×2560 ou 1920×1280 ; si vide, les captures d'écran et les aperçus sont utilisés.
  • Téléchargez via la page de version ou la Bibliothèque d'actifs (Télécharger des actifs créatifs), puis sélectionnez-la avec Parcourir les actifs. Les actifs téléchargés dans la bibliothèque y restent pour une utilisation ultérieure.
  • Note de conception : le store superpose l'icône, le nom et le bouton Obtenir sur une partie de l'en-tête, alors vérifiez le résultat dans l'aperçu de la console.
  • Ces emplacements sont verrouillés pendant que la version est en attente de révision. Ajoutez-les avant de soumettre.

Procédure

1. Planifiez l'histoire (APPROBATION du storyboard)

Écrivez un storyboard de 5 à 8 cadres : un titre (≤ 6 mots), une ligne d'accompagnement, une capture chacun. Mise en page « panorama » optionnelle (ce que fait le modèle fourni) : les cadres sont des tranches d'une grande toile, donc les formes se poursuivent à travers les bords des cadres. Quelle que soit la mise en page, toute offre présentée (démarrage gratuit, essai) doit être vraie.

2. Capturez des écrans réels

Capturez chaque écran à la taille logique × ratio de pixels de l'appareil cible, afin que le texte et la disposition soient exactement ce que cet appareil affiche. Exemple Flutter (test widget/golden) :

// iPhone 6,9" : 440 x 956 points logiques @3x = 1320 x 2868 px
tester.view.physicalSize = const Size(1320, 2868);
tester.view.devicePixelRatio = 3.0;
await tester.pumpWidget(App(demo: DemoData.storeShots(locale: 'en')));
await tester.pumpAndSettle();
expect(find.text('1,850 steps'), findsOneWidget);       // le nombre dans le titre est réel
await expectLater(find.byType(App), matchesGoldenFile('captures/en/iphone69/01_home.png'));
  • Chargez les polices dans les tests (sinon la police de test affiche des carrés).
  • Horloge fixe, données de démonstration fixes, pas de réseau.
  • Masquez les bannières de débogage ; définissez la barre d'état sur un état propre (ou recadrez-la et n'en dessinez aucune).
  • Capturez chaque langue séparément ; ne placez jamais une interface anglaise à l'intérieur d'un cadre localisé.

3. Composez les cadres

Modèle : templates/panorama.html, moteur de rendu : scripts/render.mjs.

cd scripts && npm i
node render.mjs ../templates/frames.example.json out/

Le moteur de rendu dispose tous les cadres sur une seule toile (largeur = cadres × largeur du cadre), charge les captures, attend les polices, et capture chaque tranche de cadre à la taille de pixel exacte, pour chaque appareil dans la configuration. Il rend également l'image de fonctionnalité 1024×500.

4. Vérifiez

node check-images.mjs out/

Échoue en cas de : dimensions incorrectes pour l'appareil du dossier, présence d'un canal alpha (type de couleur PNG 4/6 ou chunk tRNS), plus de 10 (Apple) / 8 (Play) fichiers, lacunes dans la numérotation. Ensuite, regardez chaque image à 100 % de zoom : texte coupé, interface d'autres plateformes, chaînes de substitution, chiffres obsolètes.

5. Téléchargez via les API (APPROBATION avant de remplacer les jeux en direct)

  • App Store Connect — scripts/upload-asc.mjs : trouvez le appStoreVersion modifiable → ses appStoreVersionLocalizations → appScreenshotSets par screenshotDisplayType → supprimez les anciennes captures d'écran → réservez (POST /v1/appScreenshots avec fileName, fileSize) → téléchargez les parties depuis uploadOperations → validez (PATCH avec uploaded: true et le MD5 sourceFileChecksum) → définissez l'ordre sur la relation appScreenshots du jeu. Documentation : Téléchargement d'actifs.
  • Google Play — scripts/upload-play.mjs : edits.insert → edits.images.deleteall par langue et type d'image → edits.images.upload dans l'ordre (phoneScreenshots, sevenInchScreenshots, tenInchScreenshots, featureGraphic) → edits.commit. Documentation : edits.images.upload.

Les deux scripts sont en test à blanc par défaut ; définissez DRY_RUN=0 pour écrire.

6. Relisez

Listez les actifs téléchargés par langue et appareil (les deux API) et comparez le nombre et l'ordre avec le dossier local. Apple traite les téléchargements de manière asynchrone ; attendez que chaque actif signale un état de livraison COMPLETE.

Points de décision nécessitant une approbation humaine

Storyboard et titres, direction visuelle finale, remplacement d'un jeu de captures d'écran en direct, validation de la modification Play.

Vérification

  • check-images.mjs passe ; chaque emplacement Apple requis a au moins une image ; Play a des captures d'écran de téléphone et l'image de fonctionnalité.
  • L'ordre de relecture correspond ; aucun état d'actif en échec.
  • Chaque nombre et fonctionnalité dans les cadres a été vérifié par rapport à la version.

Pièges courants

  • Téléchargement uniquement du 6,9" et oubli de l'emplacement Dynamic Island moyen requis.
  • PNG exportés avec un canal alpha (courant avec les outils de conception et les navigateurs sans tête avec arrière-plans transparents — définissez toujours un arrière-plan opaque pour le corps).
  • Utilisation de l'image 6,9" 1320×2868 sur Play : son rapport hauteur/largeur dépasse la limite 2:1 de Play ; rendez une taille spécifique à Play.
  • Captures d'écran iPad pour une application iPhone uniquement (pas nécessaire) — ou les manquer lorsque l'application tourne sur iPad.
  • Un cadre montrant une ligne de paramètres ou un résultat que l'application n'a pas.
  • Titre traduit mais la capture est encore en anglais.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

erberkk/privacy-and-declarations

Use when filling in or auditing App Store privacy and compliance answers and Google Play App content declarations - Apple App Privacy labels, Play Data safety (CSV import), Health apps declaration and Health Connect permissions, advertising ID, PrivacyInfo.xcprivacy and required-reason APIs, export compliance (ITSAppUsesNonExemptEncryption), age rating, account deletion (in-app, web URL, re-authentication), consent and disclosure for AI features, and rules for health data. Derives every answer from a code and SDK scan so the forms, the privacy policy and the in-app text say the same thing.

erberkk/review-readiness

Use before submitting an app version or a first subscription for App Store or Google Play review, or after receiving a rejection. Runs a go/no-go checklist and writes a report - demo account that signs in with a password (no email one-time code), filled with data and premium unlocked; review notes; in-app purchases visible and purchasable (guideline 2.1(b)); iPad compatibility mode for iPhone-only apps; no placeholders or "coming soon"; metadata matching the app; live privacy URLs; crash-free cold start - and gives a playbook for replying in Resolution Center and deciding when to appeal.

erberkk/social-publishing

Use when setting up scheduled publishing of an app's marketing content to Instagram (Reels, carousels, Stories), Threads, X and TikTok through official APIs - self-hosting Postiz in Docker behind a Cloudflare Tunnel, creating the Meta app with the newer use-case flow (business portfolio, Facebook Page linked to the Instagram professional account, Threads tester invite), X developer pay-per-use credits and spend cap, TikTok and YouTube audit limits, safe OAuth account selection when one browser holds personal and brand accounts, resource limits, and phasing a posting calendar around real launch events.

erberkk/web-presence-and-seo

Use when building, checking or deploying the website that a mobile app needs for its store listings and launch - privacy policy, terms, support and web account-deletion pages that work signed-out; hosting apple-app-site-association and assetlinks.json; invite/referral pages (/i/<code>) that open the app or fall back to the store with the Play install referrer; a landing page with store badges and honest per-country prices filled at the edge; Open Graph images; technical SEO (hreflang, canonical, sitemap, robots.txt, JSON-LD); Search Console, Bing Webmaster and IndexNow; AI crawler policy and llms.txt; and a Cloudflare Worker deploy with a production approval gate. Includes a site checker and an IndexNow ping script.

Skills associés