CommunityRedacción y edicióngithub.com

erberkk/privacidad-y-declaraciones

Úselo al completar o auditar las respuestas de privacidad y cumplimiento en App Store y las declaraciones de contenido de aplicaciones de Google Play: etiquetas de privacidad de Apple App, seguridad de datos de Play (importación CSV), declaraciones de aplicaciones de salud y permisos de Health Connect, ID de publicidad, PrivacyInfo.xcprivacy y API de motivo requerido, cumplimiento de exportación (ITSAppUsesNonExemptEncryption), clasificación por edades, eliminación de cuentas (en la aplicación, URL web, reautenticación), consentimiento y divulgación para funciones de IA, y reglas para datos de salud. Deriva cada respuesta de un escaneo de código y SDK para que los formularios, la política de privacidad y el texto dentro de la aplicación digan lo mismo.

¿Qué es privacidad-y-declaraciones?

Esta habilidad asegura que las respuestas de privacidad y cumplimiento en las tiendas de aplicaciones App Store y Google Play sean veraces y coherentes, respaldadas por evidencia directa del código fuente. Es útil para evitar rechazos comunes por inconsistencias entre la política de privacidad, el comportamiento real de la aplicación y los formularios de las tiendas. Soporta plataformas iOS y Android, y se basa en un enfoque sistemático de inventario de datos generado a partir de un escaneo de código, archivos de bloqueo y el análisis de la red y el backend. Incluye la declaración de etiquetas de privacidad de Apple, la seguridad de datos de Play, manifestos de privacidad (PrivacyInfo.xcprivacy), cumplimiento de exportación de cifrado, clasificación por edades, eliminación de cuentas, funciones de IA y datos de salud, garantizando que cada respuesta esté vinculada a una fila del inventario y que no haya contradicciones entre todos los textos.

Compatible con~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 Redacción y edición skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Privacidad y declaraciones

Propósito

Respuestas de privacidad veraces y coherentes en ambas tiendas, respaldadas por evidencia del código. La mayoría de los rechazos por privacidad se deben a inconsistencias: la política dice una cosa, la aplicación hace otra, el formulario dice una tercera.

Requisitos previos

  • Acceso al código fuente (aplicación y backend) y a los archivos de bloqueo (pubspec.lock, Podfile.lock, dependencias de Gradle, package.json).
  • La política de privacidad y los términos actuales.
  • Conocimiento de cada endpoint del backend y servicio de terceros que recibe datos del usuario.

1. Construir el inventario de datos (a partir del código, no de la memoria)

Ejecute scripts/scan-sdks.mjs en la raíz del repositorio. Enumera los SDK conocidos de los archivos de bloqueo con las categorías de datos que suelen tocar, y busca el uso de API de motivo requerido, cadenas de permisos, ID de publicidad y API de seguimiento. Luego complete el inventario leyendo la capa de red y el backend:

DatoFuente (pantalla / SDK)¿Enviado fuera del dispositivo? ¿A quién?¿Vinculado al usuario?PropósitoRetención¿Opcional?

Reglas:

  • "Procesado solo en el dispositivo" significa que nunca se envía, incluso a su propio servidor. Si se sincroniza con su backend, se recopila.
  • Sus procesadores (alojamiento, proveedor de IA que actúa según sus instrucciones, SDK de pago) aún "recopilan"; si cuentan como "compartidos" difiere según la tienda (abajo).
  • Los informes de fallos anónimos y los recuentos de uso aún se recopilan (Diagnósticos / Datos de uso), generalmente "no vinculados".

Guarde el inventario como docs/privacy-inventory.md. Cada respuesta a continuación cita una fila.

2. Privacidad de la aplicación Apple (App Store Connect > Privacidad de la aplicación)

  • Asigne cada fila del inventario a las categorías de Apple (Información de contacto, Salud y estado físico, Contenido del usuario, Identificadores, Compras, Datos de uso, Diagnósticos…), propósitos, vinculados vs no vinculados, y seguimiento.
  • Seguimiento = vincular sus datos con datos de terceros para publicidad dirigida o medición de anuncios, o compartir con corredores de datos. Sin SDK de anuncios ni corredor de datos generalmente significa "Sin seguimiento" y sin solicitud de ATT.
  • La divulgación opcional aplica solo cuando se cumplen todas las condiciones de Apple (poco frecuente, opcional, iniciado por el usuario cada vez, no es seguimiento/publicidad). Rara vez aplica a las funciones de la aplicación.
  • Documentos: Detalles de privacidad de la aplicación.

3. Seguridad de datos de Google Play (Política > Contenido de la aplicación > Seguridad de datos)

  • Mismo inventario, taxonomía de Play (Información personal, Salud y estado físico, Fotos y videos, Mensajes, Actividad de la aplicación, Información y rendimiento de la aplicación, ID del dispositivo u otros, Información financiera…).
  • Compartir excluye las transferencias a proveedores de servicios que procesan en su nombre; un SDK que crea perfiles de anuncios entre clientes está compartiendo.
  • Efímero: procesado solo en memoria, no almacenado, solo para la solicitud en tiempo real (por ejemplo, una foto analizada y descartada).
  • Use Exportar a CSV / Importar desde CSV: mantenga el CSV en el repositorio (store/data-safety.csv) para que los cambios se revisen como código. La importación sobrescribe todas las respuestas.
  • Documentos: Seguridad de datos.

4. Otras declaraciones de Play

  • Declaración de aplicaciones de salud: cada aplicación debe completarla, incluso sin funciones de salud. Documentos.
  • Health Connect: una justificación por permiso; solicite solo los permisos que usa una función visible; una actividad de justificación (ACTION_SHOW_PERMISSIONS_RATIONALE) que enlace a la política. Play puede solicitar una grabación de pantalla del flujo.
  • ID de publicidad: declare si lo usa. Si no hay SDK de anuncios/atribución, declare "No" y asegúrese de que ninguna dependencia agregue com.google.android.gms.permission.AD_ID (verifique el manifiesto fusionado; elimínelo con tools:node="remove" si se agregó).
  • Público objetivo, clasificación de contenido (IARC), anuncios, acceso a la aplicación, noticias, funciones financieras, gobierno: responda desde el inventario. Si alguna parte está detrás de inicio de sesión, proporcione credenciales de revisor en Acceso a la aplicación.
  • Eliminación de cuenta: consulte la sección 8.

5. Manifiesto de privacidad (iOS)

  • Agregue PrivacyInfo.xcprivacy al destino de la aplicación (plantilla: templates/PrivacyInfo.xcprivacy).
  • Declare NSPrivacyTracking, NSPrivacyTrackingDomains, NSPrivacyCollectedDataTypes (coherente con Privacidad de la aplicación) y NSPrivacyAccessedAPITypes para cada categoría de API de motivo requerido que el código propio de la aplicación usa: marca de tiempo de archivo, tiempo de inicio del sistema, espacio en disco, teclados activos, UserDefaults. Elija los códigos de motivo aprobados de la lista de Apple. Las aplicaciones Flutter usan UserDefaults a través de complementos como shared_preferences — verifique que cada complemento incluya su propio manifiesto; agregue lo que usan su código y los complementos sin manifiestos.
  • Después de compilar, inspeccione el correo electrónico de App Store Connect / las advertencias de compilación en busca de motivos de manifiesto faltantes.
  • Documentos: Archivos de manifiesto de privacidad, API de motivo requerido.

6. Cumplimiento de exportación (iOS)

  • ITSAppUsesNonExemptEncryption en Info.plist: false es apropiado cuando la aplicación no usa cifrado o solo usa cifrado exento (por ejemplo, HTTPS a través del sistema operativo, algoritmos estándar usados solo para proteger los datos propios del usuario en una aplicación cuya función principal no es la seguridad). Configurarlo omite las preguntas por compilación.
  • Si implementa o incluye criptografía propietaria, o el cifrado es una función principal, responda las preguntas en su lugar y verifique si corresponde la documentación o un informe de autoclaficación anual.
  • Esta es una clasificación legal; si no está seguro, consulte a un asesor de cumplimiento comercial. Documentos: Cumplimiento de las regulaciones de exportación de cifrado.

7. Clasificación por edades

  • Responda el cuestionario actual de Apple y el cuestionario IARC de Play de manera veraz, incluyendo preguntas sobre temas de salud/bienestar, chat de IA o contenido generado, contenido generado por el usuario y acceso web sin restricciones.
  • Mantenga la clasificación coherente con la edad mínima de sus Términos y cualquier puerta de edad dentro de la aplicación. Si el resultado del cuestionario es inferior a la edad mínima de sus Términos, use la opción de la tienda para establecer una clasificación más alta en lugar de dejar una discrepancia.

8. Eliminación de cuenta

  • En la aplicación: si los usuarios pueden crear una cuenta, pueden iniciar la eliminación dentro de la aplicación (configuración de la cuenta). La desactivación por sí sola no es suficiente. También cuentas de invitados/creadas automáticamente. Se permite la reautenticación o confirmación, pero no debe ser innecesariamente difícil. Apple: Ofrecer eliminación de cuenta.
  • URL web (Play): una página, accesible sin la aplicación o inicio de sesión, que nombre la aplicación como en el listado, explique cómo solicitar la eliminación, qué se elimina y qué se retiene (y por qué), y cualquier paso previo (cancelar la suscripción). Documentos: Eliminación de cuenta en Play.
  • Suscripciones: eliminar la cuenta no cancela una suscripción de la tienda. Advierta en la hoja de eliminación y enlace a la gestión de suscripciones de la tienda.
  • Iniciar sesión con Apple: revoque los tokens del usuario a través de la API REST de Iniciar sesión con Apple al eliminar.
  • Terceros: elimine al usuario también en los procesadores (por ejemplo, el cliente de RevenueCat, identificadores de análisis/fallos, listas de correo).
  • Implementación de reautenticación: si agrega un requisito de reautenticación al endpoint de eliminación, envíe la aplicación que maneja la nueva respuesta al mismo tiempo que el cambio en el backend, o mantenga el comportamiento antiguo para versiones antiguas de la aplicación.
  • Use una redacción para la ruta en todas partes (aplicación, política, formularios de la tienda, página web), por ejemplo, "Perfil > Eliminar cuenta".

9. Funciones de IA

  • Apple 5.1.2(i): divulgue dónde se comparten datos personales con terceros, incluyendo IA de terceros, y obtenga permiso explícito primero.
  • Antes del primer uso de una función de IA: una hoja de consentimiento breve que nombre al proveedor y su rol ("procesado por para generar la respuesta"), qué se envía, que no se usa para entrenar modelos (solo si los términos del proveedor lo dicen para su plan), y la retención (del proveedor y la suya). Un interruptor en la configuración para retirar el consentimiento.
  • Redacción de la política: el proveedor de IA actúa como un procesador/proveedor de servicios según sus instrucciones; enumere con ubicación y retención.
  • Formularios de la tienda: las entradas de IA (mensajes, fotos, texto) son datos recopilados (Contenido del usuario); generalmente no "compartidos" en Play cuando el proveedor es un procesador.
  • Considere: una línea de "no es asesoramiento profesional" en las respuestas de IA sobre salud o finanzas, y una respuesta segura definida para temas de crisis.

10. Datos de salud

  • Nunca envíe datos de HealthKit / Health Connect a proveedores de IA u otros terceros. Apple (5.1.3) restringe el uso y la divulgación de datos de salud; la política de Health Connect también restringe las transferencias. El diseño más simple y conforme: los datos leídos de Apple Health / Health Connect permanecen en el dispositivo (o solo en el almacenamiento de la cuenta del usuario, divulgado), y las funciones que llaman a una IA usan solo datos que el usuario escribió en su aplicación.
  • No use datos de salud para publicidad o marketing; no los almacene en iCloud.
  • Las cadenas de uso de Info.plist (NSHealthShareUsageDescription, NSHealthUpdateUsageDescription) deben indicar el uso real. Si la cadena dice "nunca se comparte con terceros", el código debe garantizarlo.
  • Refuércelo en el código: el constructor de solicitudes para llamadas de IA toma una lista explícita de campos permitidos; agregue una prueba que falle si aparece un campo con origen de salud en una carga útil de IA.

Puntos de decisión que requieren aprobación humana

Respuestas finales en cada formulario (el titular de la cuenta es legalmente responsable), la clasificación de cumplimiento de exportación, la clasificación por edades, el proveedor de IA y sus términos de datos, cualquier cambio en qué datos de salud salen del dispositivo.

Verificación

  • Cada respuesta del formulario cita una fila del inventario; el inventario cita el código.
  • Verificación de diferencias: política de privacidad ↔ Privacidad de la aplicación ↔ CSV de seguridad de datos ↔ texto de consentimiento en la aplicación ↔ cadenas de Info.plist. Sin contradicciones.
  • Prueba: elimine una cuenta de prueba; confirme que las filas del backend, los registros del procesador y el usuario de autenticación hayan desaparecido; la página web de eliminación sea accesible sin iniciar sesión.
  • La compilación no muestra advertencias de manifiesto de privacidad.

Errores comunes

  • "Los datos nunca salen del dispositivo" en la política mientras una función de sincronización o IA los envía.
  • Olvidar su propio informe anónimo de fallos/uso en los formularios.
  • Una dependencia agrega silenciosamente el permiso AD_ID.
  • Datos de salud fluyen a un mensaje de IA a través de un constructor de "contexto" que incluye "todo lo que sabemos".
  • La ruta de eliminación tiene un nombre diferente en la aplicación, la política y los formularios de la tienda.
  • Clasificación por edades 4+ mientras los Términos dicen 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 relacionados