CommunityEscrita e Ediçãogithub.com

erberkk/privacidade-e-declarações

Use ao preencher ou auditar respostas de privacidade e conformidade da App Store e declarações de conteúdo do Google Play – Rótulos de Privacidade da Apple, Segurança de Dados do Play (importação CSV), declarações de apps de saúde e permissões do Health Connect, ID de publicidade, PrivacyInfo.xcprivacy e APIs de motivo obrigatório, conformidade de exportação (ITSAppUsesNonExemptEncryption), classificação etária, exclusão de conta (no aplicativo, URL web, reautenticação), consentimento e divulgação para recursos de IA e regras para dados de saúde. Deriva cada resposta de uma varredura de código e SDK para que os formulários, a política de privacidade e o texto no aplicativo digam a mesma coisa.

O que é privacidade-e-declarações?

Esta skill automatiza a auditoria e o preenchimento de declarações de privacidade e conformidade para as lojas Apple App Store e Google Play, garantindo que todas as respostas sejam baseadas em evidências reais do código-fonte e dos SDKs utilizados. Ela é útil para desenvolvedores e engenheiros que precisam evitar rejeições por inconsistências entre a política de privacidade, o comportamento do aplicativo e os formulários das lojas. A skill suporta a geração de inventários de dados a partir de lock files e código, o mapeamento para as taxonomias específicas de cada loja, e a verificação de conformidade com requisitos como exclusão de conta, uso de APIs de motivo obrigatório, exportação de criptografia e recursos de IA. Ela opera analisando o repositório do projeto, gerando arquivos como `docs/privacy-inventory.md` e `store/data-safety.csv`, e fornecendo orientações detalhadas para cada ponto de decisão que requer aprovação humana.

Funciona com~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 Escrita e Edição skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Privacidade e declarações

Propósito

Respostas de privacidade verdadeiras e consistentes em ambas as lojas, apoiadas por evidências do código. A maioria das rejeições de privacidade são inconsistências: a política diz uma coisa, o aplicativo faz outra, o formulário diz uma terceira.

Pré-requisitos

  • Acesso ao código-fonte (aplicativo e backend) e aos arquivos de bloqueio (pubspec.lock, Podfile.lock, dependências do Gradle, package.json).
  • A política de privacidade e os termos atuais.
  • Conhecimento de todos os endpoints do backend e serviços de terceiros que recebem dados do usuário.

1. Construa o inventário de dados (do código, não da memória)

Execute scripts/scan-sdks.mjs na raiz do repositório. Ele lista SDKs conhecidos a partir dos arquivos de bloqueio com as categorias de dados que normalmente tocam, e procura por uso de APIs de motivo obrigatório, strings de permissão, ID de anúncio e APIs de rastreamento. Em seguida, complete o inventário lendo a camada de rede e o backend:

DadoFonte (tela / SDK)Enviado para fora do dispositivo? Para quemVinculado ao usuário?FinalidadeRetençãoOpcional?

Regras:

  • "Processado apenas no dispositivo" significa nunca enviado, inclusive para seu próprio servidor. Se for sincronizado com seu backend, é coletado.
  • Seus processadores (hospedagem, provedor de IA agindo sob suas instruções, SDK de pagamento) ainda são "coletados"; se contam como "compartilhados" difere por loja (abaixo).
  • Relatórios de falhas anônimos e contagens de uso ainda são coletados (Diagnósticos / Dados de Uso), geralmente "não vinculados".

Salve o inventário como docs/privacy-inventory.md. Cada resposta abaixo cita uma linha.

2. Privacidade do Aplicativo Apple (App Store Connect › App Privacy)

  • Mapeie cada linha do inventário para as categorias da Apple (Informações de Contato, Saúde e Fitness, Conteúdo do Usuário, Identificadores, Compras, Dados de Uso, Diagnósticos…), finalidades, vinculado vs não vinculado, e rastreamento.
  • Rastreamento = vincular seus dados com dados de terceiros para anúncios direcionados ou medição de anúncios, ou compartilhar com corretores de dados. Sem SDK de anúncios e sem corretor de dados geralmente significa "Sem rastreamento" e nenhum prompt ATT.
  • A divulgação opcional se aplica apenas quando todas as condições da Apple são atendidas (pouco frequente, opcional, iniciado pelo usuário a cada vez, sem rastreamento/anúncios). Raramente se aplica a recursos do aplicativo.
  • Docs: App privacy details.

3. Segurança de Dados do Google Play (Política › Conteúdo do app › Segurança de dados)

  • Mesmo inventário, taxonomia do Play (Informações pessoais, Saúde e condicionamento físico, Fotos e vídeos, Mensagens, Atividade do app, Informações do app e desempenho, IDs de dispositivo ou outros, Informações financeiras…).
  • Compartilhamento exclui transferências para provedores de serviços que processam em seu nome; um SDK que constrói perfis de anúncios entre clientes é compartilhamento.
  • Efêmero: processado apenas na memória, não armazenado, apenas para a solicitação em tempo real (por exemplo, uma foto analisada e descartada).
  • Use Exportar para CSV / Importar de CSV: mantenha o CSV no repositório (store/data-safety.csv) para que as alterações sejam revisadas como código. A importação sobrescreve todas as respostas.
  • Docs: Data safety.

4. Outras declarações do Play

  • Declaração de aplicativos de saúde: todo aplicativo deve concluí-la, mesmo sem recursos de saúde. Docs.
  • Health Connect: uma justificativa por permissão; solicite apenas permissões que um recurso visível usa; uma atividade de justificativa (ACTION_SHOW_PERMISSIONS_RATIONALE) vinculando à política. O Play pode solicitar uma gravação de tela do fluxo.
  • ID de publicidade: declare se você o utiliza. Se não houver SDK de anúncios/atribuição, declare "Não" e certifique-se de que nenhuma dependência adiciona com.google.android.gms.permission.AD_ID (verifique o manifesto mesclado; remova com tools:node="remove" se adicionado).
  • Público-alvo, classificação de conteúdo (IARC), anúncios, acesso ao app, notícias, recursos financeiros, governo: responda a partir do inventário. Se alguma parte estiver atrás de login, forneça credenciais do revisor em Acesso ao app.
  • Exclusão de conta: veja a seção 8.

5. Manifesto de privacidade (iOS)

  • Adicione PrivacyInfo.xcprivacy ao destino do aplicativo (modelo: templates/PrivacyInfo.xcprivacy).
  • Declare NSPrivacyTracking, NSPrivacyTrackingDomains, NSPrivacyCollectedDataTypes (consistente com App Privacy) e NSPrivacyAccessedAPITypes para cada categoria de API de motivo obrigatório que o código do próprio aplicativo usa: timestamp de arquivo, tempo de inicialização do sistema, espaço em disco, teclados ativos, UserDefaults. Escolha os códigos de motivo aprovados da lista da Apple. Aplicativos Flutter usam UserDefaults por meio de plugins como shared_preferences — verifique se cada plugin envia seu próprio manifesto; adicione o que seu código e plugins sem manifestos usam.
  • Após a compilação, inspecione o e-mail do App Store Connect / avisos de compilação para razões de manifesto ausentes.
  • Docs: Privacy manifest files, Required reason API.

6. Conformidade de exportação (iOS)

  • ITSAppUsesNonExemptEncryption no Info.plist: false é apropriado quando o aplicativo não usa criptografia ou usa apenas criptografia isenta (por exemplo, HTTPS através do sistema operacional, algoritmos padrão usados apenas para proteger os dados do próprio usuário em um aplicativo cuja função principal não é segurança). Definir isso ignora as perguntas por compilação.
  • Se você implementar ou incluir criptografia proprietária, ou a criptografia for um recurso principal, responda às perguntas e verifique se a documentação ou um relatório anual de autoclasificação se aplica.
  • Esta é uma classificação legal; quando em dúvida, consulte um consultor de conformidade comercial. Docs: Complying with encryption export regulations.

7. Classificação etária

  • Responda ao questionário atual da Apple e ao questionário IARC do Play com veracidade, incluindo perguntas sobre tópicos de saúde/bem-estar, chat de IA ou conteúdo gerado, conteúdo gerado pelo usuário e acesso irrestrito à web.
  • Mantenha a classificação consistente com a idade mínima dos seus Termos e qualquer restrição de idade no aplicativo. Se o resultado do questionário for inferior à idade mínima dos seus Termos, use a opção da loja para definir uma classificação mais alta em vez de deixar uma incompatibilidade.

8. Exclusão de conta

  • No aplicativo: se os usuários podem criar uma conta, eles podem iniciar a exclusão dentro do aplicativo (configurações da conta). A desativação sozinha não é suficiente. Contas de convidado/criadas automaticamente também. A reautenticação ou confirmação é permitida, mas não deve ser desnecessariamente difícil. Apple: Offering account deletion.
  • URL da Web (Play): uma página, acessível sem o aplicativo ou login, nomeando o aplicativo como na listagem, explicando como solicitar a exclusão, o que é excluído e o que é retido (e por que), e quaisquer etapas anteriores (cancelar a assinatura). Docs: Play account deletion.
  • Assinaturas: excluir a conta não cancela uma assinatura da loja. Avise na folha de exclusão e forneça um link para o gerenciamento de assinaturas da loja.
  • Entrar com Apple: revogue os tokens do usuário por meio da API REST do Entrar com Apple na exclusão.
  • Terceiros: exclua o usuário também nos processadores (por exemplo, o cliente RevenueCat, identificadores de análise/falhas, listas de e-mail).
  • Implementação de reautenticação: se você adicionar um requisito de reautenticação ao endpoint de exclusão, envie o aplicativo que lida com a nova resposta ao mesmo tempo que a alteração do backend, ou mantenha o comportamento antigo para versões antigas do aplicativo.
  • Use uma redação para o caminho em todos os lugares (aplicativo, política, formulários da loja, página da web), por exemplo, "Perfil › Excluir conta".

9. Recursos de IA

  • Apple 5.1.2(i): divulgue onde os dados pessoais são compartilhados com terceiros, incluindo IA de terceiros, e obtenha permissão explícita primeiro.
  • Antes do primeiro uso de um recurso de IA: uma breve folha de consentimento nomeando o provedor e a função ("processado por para gerar a resposta"), o que é enviado, que não é usado para treinar modelos (apenas se os termos do provedor assim o disserem para seu plano) e retenção (do provedor e sua). Um interruptor nas configurações para retirar o consentimento.
  • Redação da política: o provedor de IA atua como um processador/provedor de serviços sob suas instruções; liste-o com localização e retenção.
  • Formulários da loja: entradas de IA (mensagens, fotos, texto) são dados coletados (Conteúdo do Usuário); geralmente não "compartilhados" no Play quando o provedor é um processador.
  • Considere: uma linha de "não é aconselhamento profissional" em respostas de IA sobre saúde ou finanças, e uma resposta segura definida para tópicos de crise.

10. Dados de saúde

  • Nunca envie dados do HealthKit / Health Connect para provedores de IA ou outros terceiros. A Apple (5.1.3) restringe o uso e a divulgação de dados de saúde; a política do Health Connect também restringe transferências. O design compatível mais simples: dados lidos do Apple Health / Health Connect permanecem no dispositivo (ou no armazenamento da própria conta do usuário, divulgado), e recursos que chamam uma IA usam apenas dados que o usuário digitou em seu aplicativo.
  • Não use dados de saúde para publicidade ou marketing; não os armazene no iCloud.
  • As strings de uso do Info.plist (NSHealthShareUsageDescription, NSHealthUpdateUsageDescription) devem declarar o uso real. Se a string disser "nunca compartilhado com terceiros", o código deve garantir isso.
  • Imponha no código: o construtor de solicitação para chamadas de IA recebe uma lista de permissão explícita de campos; adicione um teste que falhe se um campo originado da saúde aparecer em um payload de IA.

Pontos de decisão que precisam de aprovação humana

Respostas finais em todos os formulários (o titular da conta é legalmente responsável), a classificação de conformidade de exportação, a classificação etária, o provedor de IA e seus termos de dados, qualquer alteração no que os dados de saúde saem do dispositivo.

Verificação

  • Cada resposta do formulário cita uma linha do inventário; o inventário cita o código.
  • Verificação de diff: política de privacidade ↔ App Privacy ↔ CSV de segurança de dados ↔ texto de consentimento no aplicativo ↔ strings do Info.plist. Sem contradições.
  • Teste: exclua uma conta de teste; confirme que as linhas do backend, os registros do processador e o usuário de autenticação desapareceram; página de exclusão da web acessível sem login.
  • A compilação não mostra avisos de manifesto de privacidade.

Armadilhas comuns

  • "Os dados nunca saem do dispositivo" na política enquanto um recurso de sincronização ou IA os envia.
  • Esquecer sua própria notificação anônima de falha/uso nos formulários.
  • Uma dependência adicionando silenciosamente a permissão AD_ID.
  • Dados de saúde fluindo para um prompt de IA por meio de um construtor de "contexto" que inclui "tudo o que sabemos".
  • Caminho de exclusão nomeado de forma diferente no aplicativo, política e formulários da loja.
  • Classificação etária 4+ enquanto os Termos dizem 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.

Habilidades Relacionadas