Skip to content

Open-source agent skill for Android apps

Google Play Data safety form, filled from your code

Your agent scans the manifest, Gradle files and source, matches every SDK against its vendor's disclosure, and writes the CSV that Play Console imports. Each answer comes with the file and line that justify it.

data_safety.csv Draft for review
  • Device or other IDsPSL_DEVICE_ID play-services-ads · build.gradle.kts:17Collected + shared
  • Crash logsPSL_CRASH_LOGS firebase-crashlytics · libs.versions.toml:12Collected
  • Approximate locationPSL_APPROX_LOCATION sent to your weather API · WeatherRepo.kt:42Collected

Every app on Google Play must declare what user data it collects and shares. Play Console’s form has 782 possible answers, and most of what an app collects comes from SDKs you didn’t write. An ads SDK can share your users’ device IDs. A crash reporter collects diagnostics. A “simple” analytics call sends app interactions. Miss one and the form no longer matches the app, which is what Google’s review checks.

SDKs you forgot aboutThe skill reads build.gradle, version catalogs and, if you run Gradle, the full dependency tree, then matches each SDK against its vendor’s Play disclosure.
Data your own code sendsIt finds HTTP clients, uploads, Firestore writes, analytics events, AI requests and sign-in code, and points your agent at each one to decide what leaves the device.
Rules that are easy to misreadCollected vs shared, service providers, ephemeral processing, IP-based location, Play Billing: the agent follows Google’s definitions, written down in the skill.
Evidence for every answerThe report links each true to a file and line, or to the SDK vendor’s page, and lists what still needs a human: your backend, older app versions, console settings.
Four steps: the agent reads AndroidManifest.xml, build.gradle.kts and Kotlin source; findings cite a file and line for each data type; the answers fill data_safety.csv in Play's own format; you import it in Play Console and review before saving.
  1. Scan. A Python script reads your manifests, Gradle files, version catalog, source and network security config. No network calls, no dependencies.
  2. Judge. Your agent checks each finding: is this data sent off the device? To a third party? Why? It asks you only what code can’t show, such as your deletion policy or what your backend shares.
  3. Fill. The answers go into Google’s own CSV template. Only the answer column changes, so Play Console accepts the import.
  4. Validate and report. Every conditional question is checked before you upload. The report shows each answer’s evidence and what changed compared to your current form.

See a full walkthrough →

Answers for these come from each vendor’s own Play data disclosure. All SDKs, including inferred entries →

Does it submit the form for me? No. You review the CSV and report, then import it yourself. More in the FAQ →

Is the result guaranteed to be accepted? No. It is a draft with evidence; you are responsible for the declaration. Why →

Which agents does it work with? Claude Code as a plugin, and Codex, Cursor, Copilot and other SKILL.md-aware agents through the skills CLI. Install →

Inside a Claude Code session
/plugin marketplace add sanikantv/data-safety-from-code
/plugin install data-safety-from-code@data-safety-from-code
Or from your shell
claude plugin marketplace add sanikantv/data-safety-from-code
claude plugin install data-safety-from-code@data-safety-from-code

Then, in your Android project:

/data-safety-from-code fill the Data safety form for this app

Your agent asks for your current Play Console export (App content → Data safety → Export to CSV), scans the project, asks a few questions, and writes data-safety/data_safety.csv and data-safety/data_safety_report.md.

Built by Sanikant. Set in Google Sans Flex (SIL Open Font License), icons from Material Symbols (Apache 2.0). Google Play is a trademark of Google LLC; this project is not affiliated with Google. Output is a draft for review: you are responsible for your Data safety declaration.