CommunityRédaction et éditiongithub.com

erberkk/privacy-and-declarations

À utiliser pour remplir ou auditer les réponses de confidentialité et de conformité de l'App Store et les déclarations de contenu de l'application Google Play — Étiquettes de confidentialité Apple App, Données de sécurité Play (import CSV), déclaration des applications santé et autorisations Health Connect, identifiant publicitaire, PrivacyInfo.xcprivacy et API à motif requis, conformité aux exportations (ITSAppUsesNonExemptEncryption), classification par âge, suppression de compte (dans l'application, URL web, réauthentification), consentement et divulgation pour les fonctionnalités IA, et règles pour les données de santé. Chaque réponse est dérivée d'une analyse du code et des SDK pour que les formulaires, la politique de confidentialité et le texte dans l'application disent la même chose.

Qu'est-ce que privacy-and-declarations ?

Ce skill d'agent est un assistant spécialisé dans la gestion de la confidentialité et de la conformité pour les applications mobiles, en particulier sur les plateformes Apple App Store et Google Play. Il guide l'utilisateur à travers les étapes pour construire un inventaire des données à partir du code source et des fichiers de verrouillage, puis pour remplir et vérifier de manière cohérente tous les formulaires de confidentialité : étiquettes de confidentialité Apple, données de sécurité Google Play, manifeste de confidentialité iOS (PrivacyInfo.xcprivacy), conformité aux exportations, classification par âge, suppression de compte, fonctionnalités IA et données de santé. Le skill insiste sur la vérification croisée entre la politique de confidentialité, les réponses des formulaires et le code pour éliminer les incohérences, source fréquente de rejets. Il inclut des règles pour les fonctionnalités IA (consentement explicite, divulgation du fournisseur), pour les données de santé (ne jamais les envoyer à des fournisseurs IA tiers) et pour l'import/export CSV des réponses Google Play. L'utilisateur est invité à valider manuellement les décisions critiques, comme la classification d'exportation ou la sélection du fournisseur IA, car l'agent ne peut pas prendre de décisions juridiques. Le skill convient aux agents de code comme Claude Code, Cursor, Codex, Copilot, etc., et nécessite un accès au code source de l'application, au backend et aux fichiers de verrouillage.

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

Installed? Explore more Rédaction et édition skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · 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

Confidentialité et déclarations

Objectif

Des réponses de confidentialité véridiques et cohérentes dans les deux magasins, étayées par des preuves provenant du code. La plupart des rejets pour confidentialité sont dus à des incohérences : la politique dit une chose, l'application en fait une autre, le formulaire en dit une troisième.

Prérequis

  • Accès au code source (application et backend) et aux fichiers de verrouillage (pubspec.lock, Podfile.lock, dépendances Gradle, package.json).
  • La politique de confidentialité et les conditions d'utilisation actuelles.
  • Connaissance de chaque point de terminaison backend et service tiers qui reçoit des données utilisateur.

1. Construire l'inventaire des données (à partir du code, pas de la mémoire)

Exécutez scripts/scan-sdks.mjs à la racine du dépôt. Il liste les SDK connus à partir des fichiers de verrouillage avec les catégories de données qu'ils touchent généralement, et recherche l'utilisation d'API à motif requis, les chaînes d'autorisation, l'ID publicitaire et les API de suivi. Complétez ensuite l'inventaire en lisant la couche réseau et le backend :

DonnéesSource (écran / SDK)Envoyé hors de l'appareil ? À quiLié à l'utilisateur ?ObjectifConservationFacultatif ?

Règles :

  • "Traité uniquement sur l'appareil" signifie jamais envoyé, y compris à votre propre serveur. S'il est synchronisé avec votre backend, il est collecté.
  • Vos sous-traitants (hébergement, fournisseur d'IA agissant sur vos instructions, SDK de paiement) sont toujours "collectés" ; selon le magasin, ils comptent ou non comme "partagés" (ci-dessous).
  • Les rapports d'erreur anonymes et les compteurs d'utilisation sont toujours collectés (Diagnostics / Données d'utilisation), généralement "non liés".

Enregistrez l'inventaire sous docs/privacy-inventory.md. Chaque réponse ci-dessous se réfère à une ligne.

2. Confidentialité de l'application Apple (App Store Connect › App Privacy)

  • Mappez chaque ligne de l'inventaire aux catégories d'Apple (Informations de contact, Santé et forme physique, Contenu utilisateur, Identifiants, Achats, Données d'utilisation, Diagnostics…), aux objectifs, lié vs non lié, et suivi.
  • Suivi = lier vos données à des données tierces à des fins de publicité ciblée ou de mesure publicitaire, ou les partager avec des courtiers en données. Pas de SDK publicitaire et pas de courtier en données signifie généralement "Pas de suivi" et pas d'invite ATT.
  • La divulgation facultative s'applique uniquement lorsque toutes les conditions d'Apple sont remplies (peu fréquent, facultatif, initié par l'utilisateur à chaque fois, pas de suivi/publicité). S'applique rarement aux fonctionnalités de l'application.
  • Documentation : App privacy details.

3. Données de sécurité Google Play (Politique › Contenu de l'application › Données de sécurité)

  • Même inventaire, taxonomie de Play (Informations personnelles, Santé et forme physique, Photos et vidéos, Messages, Activité de l'application, Informations et performances de l'application, Identifiants de l'appareil ou autres, Informations financières…).
  • Partage exclut les transferts à des prestataires de services traitant pour votre compte ; un SDK qui crée des profils publicitaires inter-clients est un partage.
  • Éphémère : traité uniquement en mémoire, non stocké, uniquement pour la requête en temps réel (par exemple, une photo analysée puis supprimée).
  • Utilisez Exporter en CSV / Importer depuis CSV : conservez le CSV dans le dépôt (store/data-safety.csv) afin que les modifications soient examinées comme du code. L'importation remplace toutes les réponses.
  • Documentation : Data safety.

4. Autres déclarations Play

  • Déclaration des applications santé : chaque application doit la remplir, même sans fonctionnalités de santé. Documentation.
  • Health Connect : une justification par autorisation ; ne demandez que les autorisations utilisées par une fonctionnalité visible ; une activité de justification (ACTION_SHOW_PERMISSIONS_RATIONALE) liant à la politique. Play peut demander un enregistrement d'écran du flux.
  • Identifiant publicitaire : déclarez si vous l'utilisez. Pas de SDK publicitaire/d'attribution, déclarez "Non" et assurez-vous qu'aucune dépendance n'ajoute com.google.android.gms.permission.AD_ID (vérifiez le manifeste fusionné ; supprimez avec tools:node="remove" si ajouté).
  • Public cible, classification du contenu (IARC), publicités, accès à l'application, actualités, fonctionnalités financières, gouvernement : répondez à partir de l'inventaire. Si une partie est derrière une connexion, fournissez des identifiants de test dans Accès à l'application.
  • Suppression de compte : voir section 8.

5. Manifeste de confidentialité (iOS)

  • Ajoutez PrivacyInfo.xcprivacy à la cible de l'application (modèle : templates/PrivacyInfo.xcprivacy).
  • Déclarez NSPrivacyTracking, NSPrivacyTrackingDomains, NSPrivacyCollectedDataTypes (cohérent avec la confidentialité de l'application) et NSPrivacyAccessedAPITypes pour chaque catégorie d'API à motif requis que le code de l'application utilise lui-même : horodatage du fichier, heure de démarrage du système, espace disque, claviers actifs, UserDefaults. Choisissez les codes de motif approuvés dans la liste d'Apple. Les applications Flutter utilisent UserDefaults via des plugins comme shared_preferences — vérifiez que chaque plugin inclut son propre manifeste ; ajoutez ce que votre code et les plugins sans manifeste utilisent.
  • Après la construction, inspectez les avertissements de construction / l'e-mail de l'App Store Connect pour les motifs de manifeste manquants.
  • Documentation : Privacy manifest files, Required reason API.

6. Conformité aux exportations (iOS)

  • ITSAppUsesNonExemptEncryption dans Info.plist : false est approprié lorsque l'application n'utilise aucun chiffrement ou uniquement un chiffrement exempté (par exemple HTTPS via le système d'exploitation, algorithmes standard utilisés uniquement pour protéger les propres données de l'utilisateur dans une application dont la fonction principale n'est pas la sécurité). Cela évite les questions par construction.
  • Si vous implémentez ou intégrez une cryptographie propriétaire, ou si le chiffrement est une fonctionnalité principale, répondez plutôt aux questions et vérifiez si une documentation ou un rapport d'auto-classification annuel s'applique.
  • Il s'agit d'une classification juridique ; en cas de doute, consultez un conseiller en conformité commerciale. Documentation : Complying with encryption export regulations.

7. Classification par âge

  • Répondez honnêtement au questionnaire Apple actuel et au questionnaire IARC Play, y compris les questions sur les sujets de santé/bien-être, le chat IA ou le contenu généré, le contenu généré par l'utilisateur et l'accès web non restreint.
  • Maintenez la classification cohérente avec l'âge minimum de vos Conditions d'utilisation et toute barrière d'âge dans l'application. Si le résultat du questionnaire est inférieur à l'âge minimum de vos Conditions, utilisez l'option du magasin pour définir une classification plus élevée plutôt que de laisser une incohérence.

8. Suppression de compte

  • Dans l'application : si les utilisateurs peuvent créer un compte, ils peuvent lancer la suppression dans l'application (paramètres du compte). La désactivation seule ne suffit pas. Comptes invités/créés automatiquement aussi. La réauthentification ou la confirmation est autorisée mais ne doit pas être inutilement difficile. Apple : Offering account deletion.
  • URL web (Play) : une page, accessible sans l'application ni connexion, nommant l'application telle que sur la fiche, expliquant comment demander la suppression, ce qui est supprimé et ce qui est conservé (et pourquoi), et toutes les étapes préalables (annuler l'abonnement). Documentation : Play account deletion.
  • Abonnements : la suppression du compte n'annule pas un abonnement au magasin. Avertissez dans la feuille de suppression et liez à la gestion des abonnements du magasin.
  • Connexion avec Apple : révoquez les jetons de l'utilisateur via l'API REST Connexion avec Apple lors de la suppression.
  • Tiers : supprimez également l'utilisateur chez les sous-traitants (par exemple, le client RevenueCat, les identifiants d'analyse/erreur, les listes de diffusion).
  • Déploiement de la réauthentification : si vous ajoutez une exigence de réauthentification au point de terminaison de suppression, publiez l'application qui gère la nouvelle réponse en même temps que la modification du backend, ou conservez l'ancien comportement pour les anciennes versions de l'application.
  • Utilisez une seule formulation pour le chemin partout (application, politique, formulaires du magasin, page web), par exemple "Profil › Supprimer le compte".

9. Fonctionnalités IA

  • Apple 5.1.2(i) : divulguez où les données personnelles sont partagées avec des tiers, y compris l'IA tierce, et obtenez d'abord une autorisation explicite.
  • Avant la première utilisation d'une fonctionnalité IA : une courte fiche de consentement nommant le fournisseur et son rôle ("traité par pour générer la réponse"), ce qui est envoyé, que cela n'est pas utilisé pour entraîner des modèles (uniquement si les conditions du fournisseur le disent pour votre plan), et la conservation (du fournisseur et la vôtre). Un interrupteur dans les paramètres pour retirer le consentement.
  • Formulation de la politique : le fournisseur d'IA agit en tant que sous-traitant/prestataire de services sur vos instructions ; listez-le avec l'emplacement et la conservation.
  • Formulaires du magasin : les entrées IA (messages, photos, texte) sont des données collectées (Contenu utilisateur) ; généralement "non partagées" sur Play lorsque le fournisseur est un sous-traitant.
  • Considérez : une mention "pas un avis professionnel" sur les réponses IA concernant la santé ou les finances, et une réponse de sécurité définie pour les sujets de crise.

10. Données de santé

  • N'envoyez jamais de données HealthKit / Health Connect à des fournisseurs d'IA ou à d'autres tiers. Apple (5.1.3) restreint l'utilisation et la divulgation des données de santé ; la politique de Health Connect restreint également les transferts. La conception conforme la plus simple : les données lues depuis Apple Health / Health Connect restent sur l'appareil (ou dans le propre stockage du compte de l'utilisateur uniquement, divulgué), et les fonctionnalités qui appellent une IA utilisent uniquement les données que l'utilisateur a saisies dans votre application.
  • N'utilisez pas les données de santé à des fins de publicité ou de marketing ; ne les stockez pas dans iCloud.
  • Les chaînes d'utilisation d'Info.plist (NSHealthShareUsageDescription, NSHealthUpdateUsageDescription) doivent indiquer l'utilisation réelle. Si la chaîne dit "jamais partagé avec des tiers", le code doit le garantir.
  • Appliquez-le dans le code : le constructeur de requête pour les appels IA prend une liste explicite de champs autorisés ; ajoutez un test qui échoue si un champ provenant de la santé apparaît dans une charge utile IA.

Points de décision nécessitant une approbation humaine

Les réponses finales sur chaque formulaire (le titulaire du compte est légalement responsable), la classification de conformité aux exportations, la classification par âge, le fournisseur d'IA et ses conditions relatives aux données, toute modification concernant les données de santé quittant l'appareil.

Vérification

  • Chaque réponse du formulaire cite une ligne de l'inventaire ; l'inventaire cite le code.
  • Vérification des écarts : politique de confidentialité ↔ Confidentialité de l'application ↔ CSV des données de sécurité ↔ texte de consentement dans l'application ↔ chaînes Info.plist. Aucune contradiction.
  • Test : supprimez un compte de test ; confirmez que les lignes backend, les enregistrements du sous-traitant et l'utilisateur auth sont supprimés ; la page de suppression web est accessible sans connexion.
  • La construction n'affiche aucun avertissement de manifeste de confidentialité.

Pièges courants

  • "Les données ne quittent jamais l'appareil" dans la politique tandis qu'une synchronisation ou une fonctionnalité IA les envoie.
  • Oublier votre propre rapport d'erreur/d'utilisation anonyme dans les formulaires.
  • Une dépendance ajoutant silencieusement l'autorisation AD_ID.
  • Les données de santé circulant dans une invite IA via un constructeur de "contexte" qui inclut "tout ce que nous savons".
  • Le chemin de suppression nommé différemment dans l'application, la politique et les formulaires du magasin.
  • Classification par âge 4+ alors que les Conditions d'utilisation indiquent 16+.

Individual skills in this repo

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

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/store-screenshots

Use when producing or updating App Store and Google Play screenshots and the Play feature graphic - planning a connected "panorama" story across frames, capturing real in-app screens with the app's own test/screenshot harness at each device's logical size and pixel ratio, covering the full device matrix (iPhone 6.9", the required medium Dynamic Island slot, iPhone Duo outer and inner displays, iPad 13" if the app runs on iPad, Play phone, 7" and 10" tablets, 1024x500 feature graphic), checking for alpha channels and wrong sizes, and uploading in order via the App Store Connect and Google Play APIs.

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