reis-mobile 0.3.6 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (463) hide show
  1. package/.claude-plugin/marketplace.json +2 -2
  2. package/.claude-plugin/plugin.json +1 -1
  3. package/CHANGELOG.md +24 -0
  4. package/README.md +175 -168
  5. package/THIRD_PARTY_NOTICES.md +224 -4
  6. package/agents/android-architect.md +89 -0
  7. package/agents/android-performance-engineer.md +92 -0
  8. package/agents/android-test-engineer.md +97 -0
  9. package/agents/flutter-test-engineer.md +2 -0
  10. package/agents/ios-architect.md +93 -0
  11. package/agents/ios-performance-engineer.md +92 -0
  12. package/agents/ios-test-engineer.md +95 -0
  13. package/agents/lead-mobile.md +10 -1
  14. package/agents/mobile-staff-engineer.md +1 -1
  15. package/agents/rn-architect.md +94 -0
  16. package/agents/rn-performance-engineer.md +92 -0
  17. package/agents/rn-test-engineer.md +98 -0
  18. package/bin/reis-mobile.mjs +59 -17
  19. package/commands/debate.md +10 -1
  20. package/commands/debug.md +60 -0
  21. package/commands/reis-mobile.md +7 -2
  22. package/core/config/project.mjs +59 -0
  23. package/core/registry/frontmatter.mjs +15 -4
  24. package/core/registry/registry.mjs +21 -1
  25. package/core/router/intents.mjs +2 -0
  26. package/core/router/router.mjs +10 -5
  27. package/package.json +1 -1
  28. package/skills/android-adaptive/SKILL.md +304 -0
  29. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +112 -0
  30. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +69 -0
  31. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +81 -0
  32. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +170 -0
  33. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +415 -0
  34. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +51 -0
  35. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +73 -0
  36. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +170 -0
  37. package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +333 -0
  38. package/skills/android-adaptive/references/android/develop/ui/compose/tooling/debug.md +114 -0
  39. package/skills/android-adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
  40. package/skills/android-agp-9-upgrade/SKILL.md +106 -0
  41. package/skills/android-agp-9-upgrade/references/android/build/migrate-to-built-in-kotlin.md +416 -0
  42. package/skills/android-agp-9-upgrade/references/android/build/releases/agp-9-0-0-release-notes.md +554 -0
  43. package/skills/android-agp-9-upgrade/references/buildconfig.md +54 -0
  44. package/skills/android-agp-9-upgrade/references/ksp-kapt.md +39 -0
  45. package/skills/android-agp-9-upgrade/references/paparazzi-gradle-9.md +30 -0
  46. package/skills/android-agp-9-upgrade/references/recipes.md +62 -0
  47. package/skills/android-appfunctions/SKILL.md +74 -0
  48. package/skills/android-appfunctions/references/adb-interaction-testing.md +95 -0
  49. package/skills/android-appfunctions/references/context.md +26 -0
  50. package/skills/android-appfunctions/references/feature-discovery-analysis.md +71 -0
  51. package/skills/android-appfunctions/references/implementation-configuration.md +282 -0
  52. package/skills/android-appfunctions/references/kdoc-refinement-optimization.md +75 -0
  53. package/skills/android-appfunctions/references/migrate-to-service-entry-point.md +226 -0
  54. package/skills/android-camerax/SKILL.md +135 -0
  55. package/skills/android-camerax/references/camera1-to-camerax.md +198 -0
  56. package/skills/android-camerax/references/camera2-to-camerax.md +193 -0
  57. package/skills/android-camerax/references/expert-blueprints.md +58 -0
  58. package/skills/android-camerax/references/foldables.md +83 -0
  59. package/skills/android-camerax/references/immutability.md +60 -0
  60. package/skills/android-camerax/references/low-light.md +124 -0
  61. package/skills/android-camerax/references/mlkit-spatial.md +75 -0
  62. package/skills/android-camerax/references/modern-apis.md +42 -0
  63. package/skills/android-camerax/references/testing.md +69 -0
  64. package/skills/android-camerax/references/thermals.md +85 -0
  65. package/skills/android-camerax/references/wear-os.md +76 -0
  66. package/skills/android-camerax/references/xr.md +54 -0
  67. package/skills/android-cli/SKILL.md +474 -0
  68. package/skills/android-cli/references/interact.md +113 -0
  69. package/skills/android-cli/references/journeys.md +120 -0
  70. package/skills/android-code-review/SKILL.md +58 -0
  71. package/skills/android-display-glasses-with-jetpack-compose-glimmer/SKILL.md +340 -0
  72. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/design/ui/ai-glasses/guides/interaction/inputs.md +67 -0
  73. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md +388 -0
  74. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/buttons.md +139 -0
  75. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/cards.md +148 -0
  76. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/focus.md +107 -0
  77. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icons.md +90 -0
  78. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/text.md +69 -0
  79. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips.md +82 -0
  80. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.md +213 -0
  81. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/button-samples-source.md +176 -0
  82. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/button-source.md +203 -0
  83. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/card-samples-source.md +296 -0
  84. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/card-source.md +515 -0
  85. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/deptheffect-source.md +224 -0
  86. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/deptheffectlevels-source.md +105 -0
  87. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/glimmersansflextypography-source.md +270 -0
  88. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/glimmertheme-source.md +182 -0
  89. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/icon-source.md +388 -0
  90. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/iconbutton-source.md +126 -0
  91. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/iconsizes-source.md +78 -0
  92. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/list-source.md +27 -0
  93. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/listitem-source.md +272 -0
  94. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/liststate-source.md +427 -0
  95. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/material-hct-source.md +217 -0
  96. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/projectedcontext-source.md +265 -0
  97. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stack-source.md +368 -0
  98. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stackitemscope-source.md +440 -0
  99. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stackstate-source.md +325 -0
  100. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/surface-source.md +1211 -0
  101. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/titlechip-samples-source.md +101 -0
  102. package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/titlechip-source.md +131 -0
  103. package/skills/android-edge-to-edge/SKILL.md +429 -0
  104. package/skills/android-engage-sdk-integration/SKILL.md +130 -0
  105. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/faq.md +439 -0
  106. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/food.md +1149 -0
  107. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/healthandfitness.md +1055 -0
  108. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/listen.md +1050 -0
  109. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/otherverticals.md +1301 -0
  110. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/read.md +910 -0
  111. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/shopping.md +1224 -0
  112. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/social.md +719 -0
  113. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/travel.md +1413 -0
  114. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/continue-watching/index.md +19 -0
  115. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/entitlements.md +353 -0
  116. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/getting-started.md +202 -0
  117. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/recommendations.md +471 -0
  118. package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/watch.md +1081 -0
  119. package/skills/android-engage-sdk-integration/references/clusters.md +154 -0
  120. package/skills/android-engage-sdk-integration/references/common.md +519 -0
  121. package/skills/android-engage-sdk-integration/references/patterns.md +527 -0
  122. package/skills/android-engage-sdk-integration/references/requests.md +260 -0
  123. package/skills/android-engage-sdk-integration/references/schemas/food.md +509 -0
  124. package/skills/android-engage-sdk-integration/references/schemas/listen.md +842 -0
  125. package/skills/android-engage-sdk-integration/references/schemas/other.md +220 -0
  126. package/skills/android-engage-sdk-integration/references/schemas/read.md +412 -0
  127. package/skills/android-engage-sdk-integration/references/schemas/shopping.md +357 -0
  128. package/skills/android-engage-sdk-integration/references/schemas/social.md +228 -0
  129. package/skills/android-engage-sdk-integration/references/schemas/travel.md +923 -0
  130. package/skills/android-engage-sdk-integration/references/schemas/tv.md +1226 -0
  131. package/skills/android-engage-sdk-integration/references/schemas/watch.md +1137 -0
  132. package/skills/android-engage-sdk-integration/references/troubleshooting.md +39 -0
  133. package/skills/android-gradle-build-debug/SKILL.md +71 -0
  134. package/skills/android-intent-security/SKILL.md +550 -0
  135. package/skills/android-leanback-to-compose-tv-migration/SKILL.md +743 -0
  136. package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/get-started/navigation.md +372 -0
  137. package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/browse.md +243 -0
  138. package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/index.md +153 -0
  139. package/skills/android-media3-cast-integration/SKILL.md +236 -0
  140. package/skills/android-media3-cast-integration/references/android/media/media3/cast/create-castplayer.md +390 -0
  141. package/skills/android-media3-cast-integration/references/android/media/media3/cast/customize-castoptions.md +93 -0
  142. package/skills/android-media3-cast-integration/references/android/media/media3/cast/index.md +21 -0
  143. package/skills/android-migrate-xml-views-to-jetpack-compose/SKILL.md +127 -0
  144. package/skills/android-migrate-xml-views-to-jetpack-compose/references/analysis-of-the-project-and-layout.md +42 -0
  145. package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/designsystems/migrate-xml-theme-to-compose.md +171 -0
  146. package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/compose-in-views.md +299 -0
  147. package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/views-in-compose.md +286 -0
  148. package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/setup-compose-dependencies-and-compiler.md +197 -0
  149. package/skills/android-migrate-xml-views-to-jetpack-compose/references/identify-optimal-xml-candidate.md +31 -0
  150. package/skills/android-migrate-xml-views-to-jetpack-compose/references/xml-layout-migration.md +86 -0
  151. package/skills/android-ml-kit-genai-prompt-api/SKILL.md +124 -0
  152. package/skills/android-ml-kit-genai-prompt-api/references/get-started.md +272 -0
  153. package/skills/android-ml-kit-genai-prompt-api/references/prefix-caching.md +146 -0
  154. package/skills/android-ml-kit-genai-prompt-api/references/prompt-design.md +55 -0
  155. package/skills/android-ml-kit-genai-prompt-api/references/prompt-optimization.md +74 -0
  156. package/skills/android-ml-kit-genai-prompt-api/references/structured-output.md +219 -0
  157. package/skills/android-ml-kit-genai-prompt-api/references/system-instructions.md +71 -0
  158. package/skills/android-navigation-3/SKILL.md +122 -0
  159. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/index.md +51 -0
  160. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md +670 -0
  161. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md +147 -0
  162. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md +89 -0
  163. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +85 -0
  164. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +90 -0
  165. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +195 -0
  166. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md +200 -0
  167. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional-transitions.md +182 -0
  168. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md +230 -0
  169. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.md +176 -0
  170. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.md +140 -0
  171. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.md +184 -0
  172. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md +107 -0
  173. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/lifecycle-owner.md +185 -0
  174. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
  175. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +145 -0
  176. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +283 -0
  177. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +287 -0
  178. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +468 -0
  179. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +371 -0
  180. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md +273 -0
  181. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md +266 -0
  182. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +435 -0
  183. package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +244 -0
  184. package/skills/android-navigation-3/references/android/guide/navigation/type-safe-destinations.md +129 -0
  185. package/skills/android-navigation-event/SKILL.md +312 -0
  186. package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/dispatcher.md +134 -0
  187. package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/handle-back.md +217 -0
  188. package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/index.md +83 -0
  189. package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/setup.md +32 -0
  190. package/skills/android-play-billing-library-version-upgrade/SKILL.md +96 -0
  191. package/skills/android-play-billing-library-version-upgrade/references/android/google/play/billing/release-notes.md +1240 -0
  192. package/skills/android-play-billing-library-version-upgrade/references/migration-logic.md +78 -0
  193. package/skills/android-play-billing-library-version-upgrade/references/version-checklist.md +54 -0
  194. package/skills/android-play-policy-insights/SKILL.md +172 -0
  195. package/skills/android-play-policy-insights/resources/common_mandates.md +100 -0
  196. package/skills/android-play-policy-insights/resources/compliance_report_template.md +59 -0
  197. package/skills/android-play-policy-insights/resources/critic.md +86 -0
  198. package/skills/android-play-policy-insights/resources/goal_data_safety.md +212 -0
  199. package/skills/android-play-policy-insights/resources/goal_permissions_and_apis.md +459 -0
  200. package/skills/android-play-policy-insights/resources/goal_user_account.md +106 -0
  201. package/skills/android-play-policy-insights/resources/policies.json +321 -0
  202. package/skills/android-play-policy-insights/resources/scanner_config.json +843 -0
  203. package/skills/android-play-policy-insights/scripts/generate_report.py +860 -0
  204. package/skills/android-play-policy-insights/scripts/orchestrator.py +1313 -0
  205. package/skills/android-play-policy-insights/scripts/play_store_scraper.py +410 -0
  206. package/skills/android-play-policy-insights/scripts/scanner.py +261 -0
  207. package/skills/android-play-policy-insights/scripts/template_engine.py +243 -0
  208. package/skills/android-profiler/SKILL.md +60 -0
  209. package/skills/android-profiler/analysis/analysis_orchestrator.md +32 -0
  210. package/skills/android-profiler/analysis/workflows/perfetto-sql/perfetto_sql.md +28 -0
  211. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/perfetto_trace_analysis.md +121 -0
  212. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/guiding_principles.md +51 -0
  213. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/domain_hints_template.md +7 -0
  214. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_cpu.md +56 -0
  215. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_graphics.md +51 -0
  216. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_io.md +46 -0
  217. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_ipc.md +41 -0
  218. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_memory.md +55 -0
  219. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_power.md +33 -0
  220. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/per_candidate_analysis.md +172 -0
  221. package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/triage.md +94 -0
  222. package/skills/android-profiler/recording/recording_orchestrator.md +36 -0
  223. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/perfetto_trace_recording.md +148 -0
  224. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/app_jank.pftxt +43 -0
  225. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/cpu_profile.pftxt +35 -0
  226. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/java_heap_dump.pftxt +21 -0
  227. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/long_background.pftxt +37 -0
  228. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/memory_counters.pftxt +45 -0
  229. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/native_heap.pftxt +21 -0
  230. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/sched_cpu.pftxt +33 -0
  231. package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md +102 -0
  232. package/skills/android-profiler/references/env_setup.md +15 -0
  233. package/skills/android-profiler/references/perfetto/setup.md +29 -0
  234. package/skills/android-profiler/references/perfetto/sql.md +327 -0
  235. package/skills/android-r8-analyzer/SKILL.md +72 -0
  236. package/skills/android-r8-analyzer/references/CONFIGURATION-ANALYZER.md +287 -0
  237. package/skills/android-r8-analyzer/references/CONFIGURATION.md +44 -0
  238. package/skills/android-r8-analyzer/references/KEEP-RULES-IMPACT-HIERARCHY.md +83 -0
  239. package/skills/android-r8-analyzer/references/REDUNDANT-RULES.md +222 -0
  240. package/skills/android-r8-analyzer/references/REFLECTION-GUIDE.md +139 -0
  241. package/skills/android-r8-analyzer/references/REPORT_FORMAT.md +51 -0
  242. package/skills/android-r8-analyzer/references/android/topic/performance/app-optimization/enable-app-optimization.md +252 -0
  243. package/skills/android-r8-analyzer/references/android/training/testing/other-components/ui-automator.md +312 -0
  244. package/skills/android-restore-credentials/SKILL.md +359 -0
  245. package/skills/android-restore-credentials/references/android/guide/topics/manifest/application-element.md +832 -0
  246. package/skills/android-restore-credentials/references/android/identity/passkeys/create-passkeys.md +327 -0
  247. package/skills/android-restore-credentials/references/android/identity/passkeys/sign-in-with-passkeys.md +219 -0
  248. package/skills/android-styles/SKILL.md +229 -0
  249. package/skills/android-styles/references/android/develop/ui/compose/designsystems/custom.md +459 -0
  250. package/skills/android-styles/references/android/develop/ui/compose/styles/fundamentals.md +421 -0
  251. package/skills/android-styles/references/android/develop/ui/compose/styles/state-animations.md +461 -0
  252. package/skills/android-styles/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +48 -0
  253. package/skills/android-styles/references/android/develop/ui/compose/styles/theming.md +269 -0
  254. package/skills/android-verified-email/SKILL.md +432 -0
  255. package/skills/android-verified-email/references/android/identity/credential-manager/index.md +67 -0
  256. package/skills/android-verified-email/references/android/identity/digital-credentials/credential-verifier.md +166 -0
  257. package/skills/android-verified-email/references/android/identity/digital-credentials/email-verification-implementation.md +313 -0
  258. package/skills/android-verified-email/references/android/identity/digital-credentials/email-verification.md +158 -0
  259. package/skills/android-verified-email/references/android/identity/digital-credentials/index.md +112 -0
  260. package/skills/android-verified-email/references/android/identity/passkeys/create-passkeys.md +327 -0
  261. package/skills/android-verified-email/references/android/identity/sign-in/credential-manager-webview.md +84 -0
  262. package/skills/android-wear-compose-m3/SKILL.md +365 -0
  263. package/skills/android-wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md +677 -0
  264. package/skills/android-wear-compose-m3/references/foundation/AmbientModeSample.kt.md +123 -0
  265. package/skills/android-wear-compose-m3/references/foundation/AmbientModeSample.kt.md.txt +123 -0
  266. package/skills/android-wear-compose-m3/references/foundation/CurvedWorldSample.kt.md +430 -0
  267. package/skills/android-wear-compose-m3/references/foundation/CurvedWorldSample.kt.md.txt +430 -0
  268. package/skills/android-wear-compose-m3/references/foundation/ExpandableSample.kt.md +99 -0
  269. package/skills/android-wear-compose-m3/references/foundation/ExpandableSample.kt.md.txt +99 -0
  270. package/skills/android-wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md +141 -0
  271. package/skills/android-wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md.txt +141 -0
  272. package/skills/android-wear-compose-m3/references/foundation/PagerSamples.kt.md +56 -0
  273. package/skills/android-wear-compose-m3/references/foundation/PagerSamples.kt.md.txt +56 -0
  274. package/skills/android-wear-compose-m3/references/foundation/RotarySamples.kt.md +153 -0
  275. package/skills/android-wear-compose-m3/references/foundation/RotarySamples.kt.md.txt +153 -0
  276. package/skills/android-wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md +131 -0
  277. package/skills/android-wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md.txt +131 -0
  278. package/skills/android-wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md +169 -0
  279. package/skills/android-wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md.txt +169 -0
  280. package/skills/android-wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md +282 -0
  281. package/skills/android-wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md.txt +282 -0
  282. package/skills/android-wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md +335 -0
  283. package/skills/android-wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md.txt +335 -0
  284. package/skills/android-wear-compose-m3/references/material3/AlertDialogSample.kt.md +377 -0
  285. package/skills/android-wear-compose-m3/references/material3/AlertDialogSample.kt.md.txt +377 -0
  286. package/skills/android-wear-compose-m3/references/material3/AnimatedTextSample.kt.md +165 -0
  287. package/skills/android-wear-compose-m3/references/material3/AnimatedTextSample.kt.md.txt +165 -0
  288. package/skills/android-wear-compose-m3/references/material3/ButtonGroupSample.kt.md +91 -0
  289. package/skills/android-wear-compose-m3/references/material3/ButtonGroupSample.kt.md.txt +91 -0
  290. package/skills/android-wear-compose-m3/references/material3/ButtonSample.kt.md +496 -0
  291. package/skills/android-wear-compose-m3/references/material3/ButtonSample.kt.md.txt +496 -0
  292. package/skills/android-wear-compose-m3/references/material3/CardSample.kt.md +470 -0
  293. package/skills/android-wear-compose-m3/references/material3/CardSample.kt.md.txt +470 -0
  294. package/skills/android-wear-compose-m3/references/material3/CheckboxButtonSample.kt.md +67 -0
  295. package/skills/android-wear-compose-m3/references/material3/CheckboxButtonSample.kt.md.txt +67 -0
  296. package/skills/android-wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md +162 -0
  297. package/skills/android-wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md.txt +162 -0
  298. package/skills/android-wear-compose-m3/references/material3/CurvedTextSamples.kt.md +78 -0
  299. package/skills/android-wear-compose-m3/references/material3/CurvedTextSamples.kt.md.txt +78 -0
  300. package/skills/android-wear-compose-m3/references/material3/DatePickerSample.kt.md +131 -0
  301. package/skills/android-wear-compose-m3/references/material3/DatePickerSample.kt.md.txt +131 -0
  302. package/skills/android-wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md +74 -0
  303. package/skills/android-wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md.txt +74 -0
  304. package/skills/android-wear-compose-m3/references/material3/EdgeButtonSample.kt.md +63 -0
  305. package/skills/android-wear-compose-m3/references/material3/EdgeButtonSample.kt.md.txt +63 -0
  306. package/skills/android-wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md +60 -0
  307. package/skills/android-wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md.txt +60 -0
  308. package/skills/android-wear-compose-m3/references/material3/IconButtonSample.kt.md +125 -0
  309. package/skills/android-wear-compose-m3/references/material3/IconButtonSample.kt.md.txt +125 -0
  310. package/skills/android-wear-compose-m3/references/material3/IconToggleButtonSample.kt.md +116 -0
  311. package/skills/android-wear-compose-m3/references/material3/IconToggleButtonSample.kt.md.txt +116 -0
  312. package/skills/android-wear-compose-m3/references/material3/LevelIndicatorSample.kt.md +68 -0
  313. package/skills/android-wear-compose-m3/references/material3/LevelIndicatorSample.kt.md.txt +68 -0
  314. package/skills/android-wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md +50 -0
  315. package/skills/android-wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md.txt +50 -0
  316. package/skills/android-wear-compose-m3/references/material3/ListHeaderSample.kt.md +177 -0
  317. package/skills/android-wear-compose-m3/references/material3/ListHeaderSample.kt.md.txt +177 -0
  318. package/skills/android-wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md +651 -0
  319. package/skills/android-wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md.txt +651 -0
  320. package/skills/android-wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md +57 -0
  321. package/skills/android-wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md.txt +57 -0
  322. package/skills/android-wear-compose-m3/references/material3/PageIndicatorSample.kt.md +110 -0
  323. package/skills/android-wear-compose-m3/references/material3/PageIndicatorSample.kt.md.txt +110 -0
  324. package/skills/android-wear-compose-m3/references/material3/PagerScaffoldSample.kt.md +204 -0
  325. package/skills/android-wear-compose-m3/references/material3/PagerScaffoldSample.kt.md.txt +204 -0
  326. package/skills/android-wear-compose-m3/references/material3/PickerGroupSample.kt.md +139 -0
  327. package/skills/android-wear-compose-m3/references/material3/PickerGroupSample.kt.md.txt +139 -0
  328. package/skills/android-wear-compose-m3/references/material3/PickerSample.kt.md +111 -0
  329. package/skills/android-wear-compose-m3/references/material3/PickerSample.kt.md.txt +111 -0
  330. package/skills/android-wear-compose-m3/references/material3/PlaceholderSample.kt.md +184 -0
  331. package/skills/android-wear-compose-m3/references/material3/PlaceholderSample.kt.md.txt +184 -0
  332. package/skills/android-wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md +263 -0
  333. package/skills/android-wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md.txt +263 -0
  334. package/skills/android-wear-compose-m3/references/material3/RadioButtonSample.kt.md +105 -0
  335. package/skills/android-wear-compose-m3/references/material3/RadioButtonSample.kt.md.txt +105 -0
  336. package/skills/android-wear-compose-m3/references/material3/ScaffoldSample.kt.md +146 -0
  337. package/skills/android-wear-compose-m3/references/material3/ScaffoldSample.kt.md.txt +146 -0
  338. package/skills/android-wear-compose-m3/references/material3/ScrollAwaySample.kt.md +97 -0
  339. package/skills/android-wear-compose-m3/references/material3/ScrollAwaySample.kt.md.txt +97 -0
  340. package/skills/android-wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md +66 -0
  341. package/skills/android-wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md.txt +66 -0
  342. package/skills/android-wear-compose-m3/references/material3/SliderSample.kt.md +86 -0
  343. package/skills/android-wear-compose-m3/references/material3/SliderSample.kt.md.txt +86 -0
  344. package/skills/android-wear-compose-m3/references/material3/StepperSample.kt.md +148 -0
  345. package/skills/android-wear-compose-m3/references/material3/StepperSample.kt.md.txt +148 -0
  346. package/skills/android-wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md +166 -0
  347. package/skills/android-wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md.txt +166 -0
  348. package/skills/android-wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md +172 -0
  349. package/skills/android-wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md.txt +172 -0
  350. package/skills/android-wear-compose-m3/references/material3/SwipeToRevealSample.kt.md +367 -0
  351. package/skills/android-wear-compose-m3/references/material3/SwipeToRevealSample.kt.md.txt +367 -0
  352. package/skills/android-wear-compose-m3/references/material3/SwitchButtonSample.kt.md +66 -0
  353. package/skills/android-wear-compose-m3/references/material3/SwitchButtonSample.kt.md.txt +66 -0
  354. package/skills/android-wear-compose-m3/references/material3/TextButtonSample.kt.md +115 -0
  355. package/skills/android-wear-compose-m3/references/material3/TextButtonSample.kt.md.txt +115 -0
  356. package/skills/android-wear-compose-m3/references/material3/TextToggleButtonSample.kt.md +71 -0
  357. package/skills/android-wear-compose-m3/references/material3/TextToggleButtonSample.kt.md.txt +71 -0
  358. package/skills/android-wear-compose-m3/references/material3/TimePickerSample.kt.md +151 -0
  359. package/skills/android-wear-compose-m3/references/material3/TimePickerSample.kt.md.txt +151 -0
  360. package/skills/android-wear-compose-m3/references/material3/TimeTextSample.kt.md +65 -0
  361. package/skills/android-wear-compose-m3/references/material3/TimeTextSample.kt.md.txt +65 -0
  362. package/skills/android-wear-compose-m3/references/material3/TransformationSpecSample.kt.md +246 -0
  363. package/skills/android-wear-compose-m3/references/material3/TransformationSpecSample.kt.md.txt +246 -0
  364. package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md +89 -0
  365. package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md.txt +89 -0
  366. package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md +309 -0
  367. package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md.txt +309 -0
  368. package/skills/android-wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md +205 -0
  369. package/skills/android-wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md.txt +205 -0
  370. package/skills/{architecture-feature-first → flutter-architecture-feature-first}/SKILL.md +1 -1
  371. package/skills/{bloc → flutter-bloc}/SKILL.md +1 -1
  372. package/skills/flutter-build-debug/SKILL.md +66 -0
  373. package/skills/{code-review → flutter-code-review}/SKILL.md +1 -1
  374. package/skills/{dart-3-updates → flutter-dart-3-updates}/SKILL.md +1 -1
  375. package/skills/{dart-fix-runtime-errors → flutter-dart-fix-runtime-errors}/SKILL.md +1 -1
  376. package/skills/{dart-resolve-package-conflicts → flutter-dart-resolve-package-conflicts}/SKILL.md +1 -1
  377. package/skills/{dart-run-static-analysis → flutter-dart-run-static-analysis}/SKILL.md +1 -1
  378. package/skills/{dart-use-pattern-matching → flutter-dart-use-pattern-matching}/SKILL.md +1 -1
  379. package/skills/{effective-dart → flutter-effective-dart}/SKILL.md +1 -1
  380. package/skills/{provider → flutter-provider}/SKILL.md +1 -1
  381. package/skills/{riverpod → flutter-riverpod}/SKILL.md +1 -1
  382. package/skills/ios-cocoapods-debug/SKILL.md +65 -0
  383. package/skills/ios-code-review/SKILL.md +56 -0
  384. package/skills/ios-xcode-build-debug/SKILL.md +66 -0
  385. package/skills/{detect-mobile-stack → mobile-detect-stack}/SKILL.md +1 -1
  386. package/skills/mobile-firebase/SKILL.md +54 -0
  387. package/skills/mobile-firebase/references/android/ai-logic.md +31 -0
  388. package/skills/mobile-firebase/references/android/analytics.md +33 -0
  389. package/skills/mobile-firebase/references/android/app-check.md +36 -0
  390. package/skills/mobile-firebase/references/android/auth.md +44 -0
  391. package/skills/mobile-firebase/references/android/crashlytics.md +31 -0
  392. package/skills/mobile-firebase/references/android/firestore.md +44 -0
  393. package/skills/mobile-firebase/references/android/functions.md +33 -0
  394. package/skills/mobile-firebase/references/android/in-app-messaging.md +28 -0
  395. package/skills/mobile-firebase/references/android/messaging.md +41 -0
  396. package/skills/mobile-firebase/references/android/realtime-database.md +50 -0
  397. package/skills/mobile-firebase/references/android/remote-config.md +43 -0
  398. package/skills/mobile-firebase/references/android/sql-connect.md +31 -0
  399. package/skills/mobile-firebase/references/android/storage.md +39 -0
  400. package/skills/mobile-firebase/references/android.md +30 -0
  401. package/skills/{firebase-ai/SKILL.md → mobile-firebase/references/flutter/ai-logic.md} +2 -8
  402. package/skills/{firebase-analytics/SKILL.md → mobile-firebase/references/flutter/analytics.md} +2 -8
  403. package/skills/{firebase-app-check/SKILL.md → mobile-firebase/references/flutter/app-check.md} +2 -8
  404. package/skills/{firebase-auth/SKILL.md → mobile-firebase/references/flutter/auth.md} +2 -8
  405. package/skills/{firebase-crashlytics/SKILL.md → mobile-firebase/references/flutter/crashlytics.md} +2 -8
  406. package/skills/{firebase-cloud-firestore/SKILL.md → mobile-firebase/references/flutter/firestore.md} +2 -8
  407. package/skills/{firebase-cloud-functions/SKILL.md → mobile-firebase/references/flutter/functions.md} +2 -8
  408. package/skills/{firebase-in-app-messaging/SKILL.md → mobile-firebase/references/flutter/in-app-messaging.md} +2 -8
  409. package/skills/{firebase-messaging/SKILL.md → mobile-firebase/references/flutter/messaging.md} +2 -8
  410. package/skills/{firebase-database/SKILL.md → mobile-firebase/references/flutter/realtime-database.md} +2 -8
  411. package/skills/{firebase-remote-config/SKILL.md → mobile-firebase/references/flutter/remote-config.md} +2 -8
  412. package/skills/{flutterfire-configure/SKILL.md → mobile-firebase/references/flutter/setup-flutterfire.md} +1 -8
  413. package/skills/{firebase-data-connect/SKILL.md → mobile-firebase/references/flutter/sql-connect.md} +2 -8
  414. package/skills/{firebase-storage/SKILL.md → mobile-firebase/references/flutter/storage.md} +2 -8
  415. package/skills/mobile-firebase/references/flutter.md +36 -0
  416. package/skills/mobile-firebase/references/ios/ai-logic.md +30 -0
  417. package/skills/mobile-firebase/references/ios/analytics.md +33 -0
  418. package/skills/mobile-firebase/references/ios/app-check.md +36 -0
  419. package/skills/mobile-firebase/references/ios/auth.md +48 -0
  420. package/skills/mobile-firebase/references/ios/crashlytics.md +34 -0
  421. package/skills/mobile-firebase/references/ios/firestore.md +53 -0
  422. package/skills/mobile-firebase/references/ios/functions.md +35 -0
  423. package/skills/mobile-firebase/references/ios/in-app-messaging.md +26 -0
  424. package/skills/mobile-firebase/references/ios/messaging.md +45 -0
  425. package/skills/mobile-firebase/references/ios/realtime-database.md +49 -0
  426. package/skills/mobile-firebase/references/ios/remote-config.md +44 -0
  427. package/skills/mobile-firebase/references/ios/sql-connect.md +33 -0
  428. package/skills/mobile-firebase/references/ios/storage.md +36 -0
  429. package/skills/mobile-firebase/references/ios.md +28 -0
  430. package/skills/mobile-firebase/references/react-native/ai-logic.md +32 -0
  431. package/skills/mobile-firebase/references/react-native/analytics.md +43 -0
  432. package/skills/mobile-firebase/references/react-native/app-check.md +35 -0
  433. package/skills/mobile-firebase/references/react-native/auth.md +50 -0
  434. package/skills/mobile-firebase/references/react-native/crashlytics.md +36 -0
  435. package/skills/mobile-firebase/references/react-native/firestore.md +45 -0
  436. package/skills/mobile-firebase/references/react-native/functions.md +28 -0
  437. package/skills/mobile-firebase/references/react-native/in-app-messaging.md +27 -0
  438. package/skills/mobile-firebase/references/react-native/messaging.md +46 -0
  439. package/skills/mobile-firebase/references/react-native/realtime-database.md +46 -0
  440. package/skills/mobile-firebase/references/react-native/remote-config.md +32 -0
  441. package/skills/mobile-firebase/references/react-native/sql-connect.md +11 -0
  442. package/skills/mobile-firebase/references/react-native/storage.md +30 -0
  443. package/skills/mobile-firebase/references/react-native.md +29 -0
  444. package/skills/mobile-test/SKILL.md +63 -0
  445. package/skills/mobile-test/references/android/setup/GUIDE.md +183 -0
  446. package/skills/mobile-test/references/android/setup/references/android/develop/ui/compose/testing/common-patterns.md +181 -0
  447. package/skills/mobile-test/references/android/setup/references/android/studio/preview/compose-screenshot-testing.md +255 -0
  448. package/skills/mobile-test/references/android/setup/references/android/training/dependency-injection/hilt-testing.md +447 -0
  449. package/skills/mobile-test/references/android.md +83 -0
  450. package/skills/{dart-collect-coverage/SKILL.md → mobile-test/references/flutter/coverage.md} +2 -11
  451. package/skills/{dart-generate-test-mocks/SKILL.md → mobile-test/references/flutter/generate-mocks.md} +2 -11
  452. package/skills/{flutter-add-integration-test/SKILL.md → mobile-test/references/flutter/integration-tests.md} +2 -11
  453. package/skills/{dart-migrate-to-checks-package/SKILL.md → mobile-test/references/flutter/migrate-to-checks.md} +2 -13
  454. package/skills/{mockito/SKILL.md → mobile-test/references/flutter/mockito.md} +1 -8
  455. package/skills/{mocktail/SKILL.md → mobile-test/references/flutter/mocktail.md} +1 -8
  456. package/skills/{patrol-e2e-testing/SKILL.md → mobile-test/references/flutter/patrol.md} +1 -8
  457. package/skills/{testing/SKILL.md → mobile-test/references/flutter/testing-guidelines.md} +1 -8
  458. package/skills/{dart-add-unit-test/SKILL.md → mobile-test/references/flutter/unit-tests.md} +2 -11
  459. package/skills/{flutter-add-widget-test/SKILL.md → mobile-test/references/flutter/widget-tests.md} +2 -11
  460. package/skills/mobile-test/references/flutter.md +44 -0
  461. package/skills/mobile-test/references/ios.md +79 -0
  462. package/skills/mobile-test/references/react-native.md +62 -0
  463. /package/skills/{dart-use-pattern-matching → flutter-dart-use-pattern-matching}/examples/json_patterns.dart +0 -0
@@ -0,0 +1,78 @@
1
+ ## High-Impact Migration Logic
2
+
3
+ ### 1. Connection Management (The v8+ Reconnection Shift)
4
+
5
+ **Intent**: Move from developer-managed state (manual retries) to
6
+ library-managed state.
7
+
8
+ - **Remove** : Manual `startConnection()` calls or retry timers inside `onServiceDisconnected()`.
9
+ - **Add** : `.enableAutoServiceReconnection()` to `BillingClient.Builder`.
10
+ - **Logic** : In v8+, the library handles transient disconnections. Your `onServiceDisconnected` must only be used for logging or updating UI state (e.g., "Billing service temporarily unavailable").
11
+
12
+ ### 2. Product Querying \& Models (The v5-v8 Architectural Shift)
13
+
14
+ **Intent**: Support the "One Product, Multiple Offers" model introduced in v5
15
+ and refined in v8.
16
+
17
+ - **Data Model Swap** :
18
+ - **Legacy** : `SkuDetails` (1:1 mapping of ID to price).
19
+ - **Modern** : `ProductDetails`. A single `ProductDetails` can contain multiple `SubscriptionOfferDetails` (Base Plans + Offers).
20
+ - **Result Handling (v8+ Logic)** :
21
+ - **Change** : `queryProductDetailsAsync` no longer returns a list in the listener.
22
+ - **New Intent** : You must receive a `QueryProductDetailsResult` object.
23
+ - **Refactor** : `kotlin
24
+ // PBL 8+ Pattern
25
+ billingClient.queryProductDetailsAsync(params) { result: QueryProductDetailsResult ->
26
+ val responseCode = result.billingResult.responseCode
27
+ val productDetailsList = result.productDetailsList // Retrieve list from result object
28
+ // Process list...
29
+ }`
30
+
31
+ ### 3. Subscription Modernization (v6 \& v7)
32
+
33
+ **Intent**: Support "Base Plans" and "Offers" instead of legacy standalone SKUs.
34
+
35
+ - **Subscription Upgrades/Downgrades (v6+)**:
36
+
37
+ - **Legacy** : `setOldSkuPurchaseToken()` in `BillingFlowParams`.
38
+ - **Modern** : Use `SubscriptionUpdateParams`. You must specify the `PurchaseToken` of the existing subscription and the `ReplacementMode` (which replaces the deprecated `ProrationMode`).
39
+ - **Logic** : Verify that the `ReplacementMode` matches the business intent (e.g., `CHARGE_FULL_PRICE` versus `WITH_TIME_PRORATION`).
40
+ - **Installment Plans (v7+)**:
41
+
42
+ - **Intent**: Allow users to pay for a subscription in monthly installments.
43
+ - **Check** : Look for `InstallmentPlanDetails` within `SubscriptionOfferDetails`. If the app supports high-ticket subscriptions, it is mandatory to implement the `installmentPlanDetails` UI.
44
+
45
+ ### 4. Purchase Handling \& History (v6+)
46
+
47
+ **Intent**: Move away from local-only purchase caches to real-time status
48
+ checks.
49
+
50
+ - **Active Purchases** :
51
+ - **Deprecated** : `queryPurchases()` (synchronous).
52
+ - **Mandatory** : `queryPurchasesAsync()`. You must pass `QueryPurchasesParams` containing the `ProductType` (`INAPP` or `SUBS`).
53
+ - **Purchase History (Pagination Intent)** :
54
+ - **v6+ Change** : `queryPurchaseHistoryAsync` is optimized for pagination.
55
+ - **Logic** : If the app has thousands of historical transactions, verify you are using the `PurchaseHistoryRecord` list correctly to avoid memory overhead.
56
+
57
+ ### 5. Security \& Pending Transactions (The "Always On" Rule)
58
+
59
+ - **Mandatory** : `enablePendingPurchases()` has been required since v3, but in v8+, verify that it is called before `.build()`. You must also include `.enableOneTimeProducts()` on the `enablePendingPurchases()` builder.
60
+ - **Optional** : If the app sells prepaid subscriptions, you must also include `.enablePrepaidPlans()`.
61
+ - **Intent**: This handles "Slow/Delayed" payments (like cash or bank transfers). Without this, the app will crash on initialization in modern versions.
62
+
63
+ ### 6. SDK \& Environment Requirements
64
+
65
+ - **PBL 7.0** : Requires `compileSdk 34` or higher.
66
+ - **PBL 8.0** : Requires `compileSdk 34` or higher.
67
+ - **PBL 9.0** : Requires `compileSdk 35` or higher.
68
+ - **Kotlin** : Verify that `kotlin-stdlib` is updated to at least 1.9.x to support new library coroutine extensions.
69
+
70
+ ### 7. User-Facing Features (Post-Upgrade Recommendations)
71
+
72
+ Once the upgrade is complete, the following features are enabled by these
73
+ versions:
74
+
75
+ - **v7** : **Installments** (Monthly payments for annual plans).
76
+ - **v8** : **Prepaid Plans** (Users can top-up time without auto-renewing).
77
+ - **v8** : **Personalized Pricing** (Show legal disclosure if price varies by user).
78
+ - **v9** : **In-App Price Reviews** (Users can accept upcoming subscription price increases directly inside the app without leaving for the Play Store; capped by Google at a maximum of once every 7 days).
@@ -0,0 +1,54 @@
1
+ ## Play Billing Library: Smart Version-Specific Checklist
2
+
3
+ Use this checklist to verify that every technical requirement between your
4
+ \[Current Version\] and \[Target Version\] has been met.
5
+
6
+ ## PBL v1.x through v3.x
7
+
8
+ - \[ \] **\[v1.0\] Builder Pattern** : Verify `BillingClient.newBuilder(context)` is used.
9
+ - \[ \] **\[v2.0\] Mandatory Acknowledgment** : Verify `acknowledgePurchase()` or `consumeAsync()` is called within 3 days.
10
+ - \[ \] **\[v2.0\] Response Types** : Logic must handle `BillingResult` objects instead of raw integers.
11
+ - \[ \] **\[v3.0\] Legacy Removal** : Verify `ChildDirected` and `UnderAgeOfConsent` parameters are deleted.
12
+
13
+ ## PBL v4.x Series
14
+
15
+ - \[ \] **Async Purchasing** : Confirm `queryPurchases()` is replaced with `queryPurchasesAsync()`.
16
+ - \[ \] **Multi-SKU Accessors** : Replace `getSku()` with `getSkus()` (returns a list) in `Purchase` objects.
17
+ - \[ \] **Subscription Refactor** : Verify `setSubscriptionUpdateParams()` is used for change logic.
18
+
19
+ ## PBL v5.x Series
20
+
21
+ - \[ \] **Data Model Swap** : Replace all instances of `SkuDetails` with `ProductDetails`.
22
+ - \[ \] **Personalized Pricing** : Implement `setIsOfferPersonalized()` for EU price disclosures.
23
+
24
+ ## PBL v6.x Series
25
+
26
+ - \[ \] **Replacement Mode** : Replace `ProrationMode` with the `ReplacementMode` enum.
27
+ - \[ \] **User Choice Billing** : Replace `AlternativeBillingListener` with `UserChoiceBillingListener`.
28
+
29
+ ## PBL v7.x Series
30
+
31
+ - \[ \] **SDK Compliance** : `compileSdk` is set to 34 or higher.
32
+ - \[ \] **Pending Purchases** : Replace parameterless `enablePendingPurchases()` with `enablePendingPurchases(PendingPurchaseParams)`.
33
+ - \[ \] **API Cleanup** : Replace `setOldSkuPurchaseToken()` with `setOldPurchaseToken()`.
34
+
35
+ ## PBL v8.x Series
36
+
37
+ - \[ \] **SDK Compliance** : `compileSdk` is set to 34 or higher.
38
+ - \[ \] **Terminology Shift**: Rename "in-app items" to "one-time products" in UI/strings.
39
+ - \[ \] **Signature Enforcement** : `onProductDetailsResponse` signature MUST be `(BillingResult, QueryProductDetailsResult)`.
40
+ - \[ \] **SUBS Offer Token** : For `SUBS` type, `ProductDetailsParams` MUST include an `offerToken`.
41
+ - \[ \] **Auto-Reconnection** : Verify `enableAutoServiceReconnection()` is used in the builder.
42
+ - \[ \] **Min SDK Increase** : Verify `minSdkVersion` is at least 23.
43
+
44
+ ## PBL v9.x Series
45
+
46
+ - \[ \] **SDK Compliance** : `compileSdk` is set to 35 or higher.
47
+ - \[ \] **API Removals** : Ensure all usages of `SkuDetails`, `SkuDetailsParams`, and `SkuDetailsResponseListener` are removed and replaced with their `ProductDetails` equivalents.
48
+ - \[ \] **Blocked Store Error Handling** : If targeting restricted device modes (e.g., kids modes), ensure `androidx.core` is at v1.9+ and update error logic to catch `BILLING_UNAVAILABLE` instead of `ERROR`.
49
+ - \[ \] **External Payment Program Null-Safety** : If using developer-provided billing, update `DeveloperProvidedBillingDetails.getLinkUri()` logic to explicitly check for both `null` and empty string (`""`) values before parsing.
50
+
51
+ ## Future Versions (PBL 10.0.0+)
52
+
53
+ - \[ \] **Dynamic Checklist Generation** : For any version \>=10.0.0, you **MUST** synthesize a new checklist for each new version header found in the [Release Notes](https://developer.android.com/google/play/billing/release-notes).
54
+ - \[ \] **Identify Version Delta** : Review "Breaking Changes" and "Removed APIs" for the new version and create a list of terms to `grep`.
@@ -0,0 +1,172 @@
1
+ ---
2
+ name: android-play-policy-insights
3
+ description: Automated auditor designed to verify Android applications against Google Play Policy domains. It cross-references static code analysis with Play Store declarations to generate deterministic compliance reports, identifying undeclared data collection, architectural risks, and missing disclosures across Permissions and APIs Hygiene, User Account and Identity, and Data Safety and Privacy domains.
4
+ license: Apache-2.0
5
+ source: https://github.com/android/skills
6
+ intents: [release]
7
+ stacks: [android]
8
+ metadata:
9
+ author: Google LLC
10
+ last-updated: '2026-07-13'
11
+ keywords:
12
+ - account deletion
13
+ - accessibility api
14
+ - all files access
15
+ - audio recording
16
+ - audit
17
+ - compliance
18
+ - contacts access
19
+ - data disclosure
20
+ - data safety
21
+ - data safety label
22
+ - data transmission
23
+ - demo credentials
24
+ - exact alarm
25
+ - foreground services
26
+ - location access
27
+ - login credentials
28
+ - manifest hygiene
29
+ - package visibility
30
+ - permissions hygiene
31
+ - photo and video access
32
+ - photopicker
33
+ - play policy
34
+ - pre-submission audit
35
+ - privacy policy
36
+ - prominent disclosure
37
+ - restricted permissions
38
+ - scoped storage
39
+ - sms and call log
40
+ - static analysis
41
+ - target sdk
42
+ - user consent
43
+ ---
44
+
45
+ # Play Policy Insights: data safety, login credentials, and restricted permissions
46
+
47
+ You must audit Android apps for three specific policy domains. You must check
48
+ data safety, demo login credentials, and restricted permissions.
49
+
50
+ ## Path Resolution
51
+
52
+ * **repo_root**: Absolute path to the directory containing this `SKILL.md`.
53
+ * **app_dir**:: Absolute path to the directory containing app's code.
54
+ * **temp_dir**: Absolute path to the scratch directory at the workspace root.
55
+ It is located at `.scratch/play_policy_insights_<uuid>`. **Containment
56
+ Mandate**: You must confine all file system writes, intermediate artifacts,
57
+ and logs strictly to this directory. This ensures the skill remains portable
58
+ and safe across diverse execution environments, including local harnesses
59
+ and CI/CD pipelines, by avoiding reliance on system-level temporary paths or
60
+ user home directories.
61
+
62
+ ## Critical mandates
63
+
64
+ - **Execution Mode Awareness** Before starting Phase 2, evaluate if your
65
+ execution environment provides a tool to spawn or delegate tasks to
66
+ general-purpose sub-agents (e.g., tools often named `invoke_agent`,
67
+ `delegate_task`, or `spawn_worker`, using generic agent profiles like
68
+ 'generalist' or 'coding_agent').
69
+
70
+ - If **YES**, you MUST use **Mode A (Delegation)**.
71
+
72
+ - If **NO**, use **Mode B (Sequential Self-Execution)**. You must read the
73
+ prompt files intended for the subagents, follow their instructions, and
74
+ write the expected output files to disk.
75
+
76
+ - **Sub-agents orchestration:**
77
+
78
+ - If you use "Mode A (Delegation)", wait for "SUCCESS" confirmation from
79
+ sub-agents to know when they are done.
80
+
81
+ - **Idempotency & Timeout Safeguard**: If a sub-agent fails or times out,
82
+ you MUST verify the presence and integrity of its target output file
83
+ (e.g., `<temp_dir>/worker_<goal_name>.json`) before retrying. If the
84
+ file exists and contains valid JSON, treat the execution as **SUCCESS**
85
+ and proceed. Otherwise, retry up to three times.
86
+
87
+ - **Fail-fast mandate:** The automated audit in Phase 1 is the source of
88
+ truth. If `orchestrator.py` fails, you must stop immediately with an
89
+ explanation of failure. Do not use manual auditing as a fallback.
90
+
91
+ ## The two-phase protocol
92
+
93
+ ### Phase 1: Fact gathering and triage
94
+
95
+ 1. **Initialize and triage**:
96
+ - Run `python3 <repo_root>/scripts/orchestrator.py init <app_dir>`.
97
+ - This will create the scratch environment, perform static analysis, map
98
+ the codebase, identify audit goals, and produce prompts for subagents
99
+ for each audit goal and prompts for designated critic and aggregator
100
+ subagents.
101
+ - You must wait (up to 5 minutes) for the script to finish.
102
+ 2. **Capture environment**: Note values of the `temp_dir`, and
103
+ `activated_goals` from the JSON output. You will need them in Phase 2.
104
+ 3. **Evaluate goals**: If `activated_goals` is empty, skip to step 3 of Phase 2
105
+ (Aggregation). Otherwise, proceed to step 1 of Phase 2 (Detailed analysis).
106
+
107
+ ### Phase 2: Goal-oriented audit
108
+
109
+ Determine your execution capabilities and proceed with either Mode A OR Mode B.
110
+
111
+ #### Mode A: Orchestrator WITH Delegation Capabilities (Parallel)
112
+
113
+ 1. **Detailed analysis**: For each goal in `activated_goals` (e.g.,
114
+ `permissions_and_apis`, `data_safety_part_1`, `data_safety_part_2`),
115
+ delegate to a sub-agent. **Concurrency Limit:** You must not spawn more than
116
+ 3 sub-agents simultaneously. Spawn the first batch of up to 3, wait for
117
+ their completions, and then spawn the next batch. Repeat until all goals are
118
+ complete. Pass the prompt: `"Read your instructions from
119
+ <temp_dir>/prompt_worker_<goal_name>.md and execute. MANDATORY: You must
120
+ use your file-writing capabilities to save your final JSON findings directly
121
+ to the file system at <temp_dir>/worker_<goal_name>.json. You are strictly
122
+ forbidden from outputting the JSON in your chat response. To minimize
123
+ context usage, your final response must be exactly 'SUCCESS' and nothing
124
+ else."` **Validate**: Confirm every
125
+ `<temp_dir>/worker_<goal_name>.json` exists and contains valid JSON. If a
126
+ sub-agent fails or times out, but the valid JSON output file is already
127
+ present on disk, do NOT retry; proceed normally. Only retry the
128
+ corresponding worker (up to three times) if the file is missing or invalid.
129
+ 2. **Aggregate Findings**: Execute the python aggregation command:
130
+ `python3 <repo_root>/scripts/orchestrator.py aggregate <temp_dir>`. This
131
+ produces `aggregated_findings.json` and returns a JSON object containing
132
+ `critic_chunks` representing the number of chunks to verify (e.g.,
133
+ `{"temp_dir": "...", "critic_chunks": 2}`).
134
+ 3. **Parallel Critic review**: For each chunk index `i` from 1 to
135
+ `critic_chunks`, delegate to a sub-agent. **Concurrency Limit:** You must not
136
+ spawn more than 3 critic sub-agents simultaneously. Batch them in groups of 3
137
+ as above. Pass the prompt:
138
+ `"Read your instructions from <temp_dir>/prompt_critic_<i>.md and execute. MANDATORY: You must use your file-writing capabilities to save your final JSON findings directly to the file system at <temp_dir>/critic_output_<i>.json. You are strictly forbidden from outputting the JSON in your chat response. To minimize context usage, your final response must be exactly 'SUCCESS' and nothing else."`
139
+ **Validate**: Confirm each `<temp_dir>/critic_output_<i>.json` exists and
140
+ contains valid JSON before proceeding. If it failed or timed out, but the
141
+ valid JSON file is present, proceed normally. Otherwise, retry that specific
142
+ critic chunk.
143
+ 4. **Proceed to Finalization** (Step 4 below)
144
+
145
+ #### Mode B: Orchestrator WITHOUT Delegation Capabilities (Sequential)
146
+
147
+ 1. **Detailed Analysis**: For each goal in `activated_goals`, sequentially:
148
+ - Read the contents of `<temp_dir>/prompt_worker_<goal_name>.md`.
149
+ - Execute the instructions contained within that file yourself.
150
+ - **CRITICAL**: You MUST format your findings exactly as requested in the
151
+ prompt and save them to `<temp_dir>/worker_<goal_name>.json`. **Do not**
152
+ summarize findings in your thoughts or chat; move to the next task.
153
+ - **Validate**: Confirm `<temp_dir>/worker_<goal_name>.json` exists before
154
+ moving to the next goal.
155
+ 2. **Aggregate Findings**: Execute the python aggregation command:
156
+ `python3 <repo_root>/scripts/orchestrator.py --aggregate <temp_dir>`.
157
+ This produces `aggregated_findings.json` and returns a JSON object containing
158
+ `critic_chunks` representing the number of chunks to verify.
159
+ 3. **Sequential Critic review**: For each chunk index `i` from 1 to
160
+ `critic_chunks`, sequentially:
161
+ - Read the contents of `<temp_dir>/prompt_critic_<i>.md`.
162
+ - Execute the steps yourself and save your findings to
163
+ `<temp_dir>/critic_output_<i>.json`.
164
+ - **Validate**: Confirm `<temp_dir>/critic_output_<i>.json` exists before
165
+ moving to the next chunk.
166
+ 4. **Proceed to Finalization** (Step 4 below)
167
+
168
+ #### Finalization (Both Modes)
169
+
170
+ 4. **Present findings**: Run `python3 <repo_root>/scripts/generate_report.py <temp_dir>`.
171
+ It will produce `<temp_dir>/compliance_report.md`. Present this output file to user.
172
+ 5. **STOP**: The audit is complete. Await further instructions.
@@ -0,0 +1,100 @@
1
+ # Execution Mandates
2
+
3
+ ### Technical Rules
4
+
5
+ 1. **Absolute Paths Only**: Always resolve and use absolute paths.
6
+ 2. **Containment**: Write all artifacts strictly within `{{TEMP_DIR}}`.
7
+ 3. **Fail-fast**: If any required input file is missing, stop immediately and
8
+ report the failure.
9
+
10
+ ### Surgical Input Protocol & Efficient Search (MANDATORY)
11
+
12
+ - **Direct Evidence First**: Prioritize files listed in the **Context &
13
+ Evidence** sections. Use the provided file/line evidence (e.g., from Data
14
+ Sources or Sinks) to jump directly to the relevant code. Do not perform
15
+ broad workspace searches if these surgical starting points are available.
16
+ - **Path Filtering Over File Crawling**: Locate target files by name, path, or
17
+ extension *first* using directory/file listing tools before performing any
18
+ text/content-based searches. Restrict searches and file reads strictly to
19
+ the target `{{APP_DIR}}`.
20
+ - **Strict Exclusions (The Noise Wall)**: Configure search, glob, and find
21
+ tools to ignore build, cache, dependencies, and testing folders. You MUST
22
+ exclude matches from: `**/build/**`, `**/.gradle/**`, `**/.scratch/**`,
23
+ `**/androidTest/**`, `**/test/**`, `**/node_modules/**`.
24
+ - **Targeted Extensions**: Restrict content searches and file reads strictly
25
+ to source and configuration files: `.java`, `.kt`, `.xml`, `.gradle`, `.kts`
26
+ (and `.js`, `.ts`, `.jsx`, `.tsx`, `.dart` if a hybrid/cross-platform
27
+ environment is analyzed). Never search or read inside compiled `.class`
28
+ files, binary resources, or output assets.
29
+ - **Surgical Queries & Limiters**: Use highly specific search patterns (e.g.,
30
+ search for `getLastKnownLocation` or `deleteAccount` instead of general
31
+ words like `location` or `delete`). If search tools support limits or
32
+ pagination, cap results at a maximum of 50 matches. Do not load unlimited
33
+ search results into your context window.
34
+ - **Parallel Reading Required (Turn Efficiency)**: You are operating under a
35
+ strict maximum turn limit. To prevent timeouts, you MUST request to read
36
+ multiple target files concurrently in a single response. Do not read the
37
+ evidence files sequentially one-by-one. Issue all of your file-reading tool
38
+ calls simultaneously whenever possible.
39
+
40
+ ### Evidentiary Standard & Guardrails (CRITICAL)
41
+
42
+ To prevent over-auditing, false positives, and speculative "prosecution" of
43
+ compliant code during extrapolation:
44
+
45
+ 1. **Presumption of Compliance**: Treat code as compliant unless there is
46
+ *definitive, visible evidence* in the provided files of a policy violation.
47
+ If code is ambiguous, or if network/database logic is hidden behind
48
+ abstractions (e.g., calling an interface or repository method like
49
+ `clearSession()`), you must assume standard compliant behavior. Do NOT guess
50
+ or speculate about what happens behind interfaces.
51
+ 2. **Benefit of the Doubt**: When compliance cannot be strictly verified due to
52
+ code abstractions or missing source file contexts, you must downgrade your
53
+ finding:
54
+ - Never flag a `🔴 Critical` or `🟡 Important` finding based on suspicion or
55
+ lack of context.
56
+ - Instead, output a `🔵 Suggestion` (informational) to advise the developer
57
+ on what to double-check in their backend or configuration.
58
+ 3. **Exclusion of Local State**: Local-only processing (e.g., caching theme
59
+ settings, user-selected visual configurations, or on-device-only database
60
+ operations) is explicitly exempt from Data Safety collection or Account
61
+ Deletion mandates.
62
+ 4. **Concrete Attributions**: Every `🔴 Critical` or `🟡 Important` finding must
63
+ cite the exact file, line number, or configuration block containing the
64
+ direct violation. If you cannot cite the exact line of code containing the
65
+ violation, you cannot flag it as a violation.
66
+ 5. **Empty-List Discipline**: If no policy violations, discrepancies, or review
67
+ items are identified during your audit, you MUST represent this as an empty
68
+ array `[]` for that field (e.g., `"findings": []`, `"verified_findings":
69
+ []`, or `"manual_verification_required": []`). **DO NOT** populate arrays
70
+ with "dummy" objects, placeholder strings, or `"N/A"` / `"None"` values.
71
+ 6. **Heuristics & Extrapolation Boundaries**: Whenever applying specific
72
+ heuristics defined in your goal (e.g., searching for implicit logger leaks
73
+ or
74
+ SDK siphoning), you must strictly bound them to the provided evidence and
75
+ their immediate callers. You are strictly forbidden from initiating broad,
76
+ unbounded searches for custom paths or variables across the wider codebase.
77
+ Base your extrapolation only within the specific files already provided to
78
+ you in the prompt.
79
+
80
+ ### Finalization & Output Mandates (CRITICAL)
81
+
82
+ - **Iterative Saving**: If your investigation requires multiple steps, save
83
+ partial or intermediate JSON states to disk as you progress. Do not hold all
84
+ data in memory until the very end to prevent data loss upon interruption.
85
+ - **Strict File Output (NO TRIPLE BACKTICKS)**: You MUST save your final JSON
86
+ output to disk at the exact path specified in the goal schema using your
87
+ file-writing capabilities.
88
+ - **CRITICAL: The content written to the file MUST be pure, raw JSON. DO
89
+ NOT wrap the contents inside the JSON file with Markdown code blocks
90
+ (such as triple backticks `json ...`). Writing markdown blocks into the
91
+ file makes the JSON unparseable by the compiler.**
92
+ - **NO Chat Summaries**: **MANDATORY: DO NOT summarize your findings, explain
93
+ your reasoning, or output JSON in your final chat response.** Your chat
94
+ output wastes context and is ignored by the orchestrator.
95
+ - **Verification Before Termination**: You MUST only terminate and return the
96
+ "SUCCESS" string *after* you have explicitly verified that your JSON file
97
+ successfully wrote to disk and contains valid JSON (e.g., by reading the
98
+ file back or checking the directory contents).
99
+ - **Final response**: Your final response MUST be exactly the word: "SUCCESS"
100
+ and nothing else.
@@ -0,0 +1,59 @@
1
+ # Play Policy Compliance Report: {{app_name_id}}
2
+
3
+ **Status:** {{overall_compliance}} **Scan Date:** {{current_date}}
4
+
5
+ > **Disclaimer:** This report is generated by an AI automated scanner and is for
6
+ **informational and advisory purposes only**. It does NOT constitute legal
7
+ advice, a guarantee of Play Store approval, or a definitive compliance check.
8
+ The Google Play Review team has final authority. Undiscovered issues may still
9
+ exist. The developer retains sole responsibility and liability for the apps’
10
+ security, data privacy compliance, and final Play Store submission.
11
+
12
+ ---
13
+
14
+ ## Policy Risks & Recommendations
15
+
16
+ *Review these identified risks and follow the suggested recommendation steps.*
17
+
18
+ {{findings_detail}}
19
+
20
+ ---
21
+
22
+ ## Data Safety Discrepancies
23
+
24
+ Review these discrepancies between detected behavior and Play Store
25
+ declarations. Discrepancies may stem from data collection/sharing practices or
26
+ new code features not yet reflected in your Data Safety label.
27
+
28
+ {{data_safety_table}}
29
+
30
+ {{suggested_declaration_section}}
31
+
32
+ {{local_access_section}}
33
+
34
+ ---
35
+
36
+ ## Remediation Checklist
37
+
38
+ Follow these personalized steps to resolve the identified risks.
39
+
40
+ {{personalized_checklist}}
41
+
42
+ ---
43
+
44
+ ### Play Store Compliance Status Legend
45
+
46
+ | Overall Status | Meaning & Rejection Risk | Required Action |
47
+ | :--- | :--- | :--- |
48
+ | **🟢 Compliant** | The application code and metadata appear fully compliant with analyzed Play Store policies. No active policy violations or high-risk discrepancies were identified. | **No issues detected**: No active policy violations were identified by this automatic scan. |
49
+ | **🟡 Needs Review** | No critical violations were found in the code, but the app implements features requiring manual Play Console configurations (e.g., submitting **Reviewer Demo Credentials** for login screens) or requests restricted, high-risk permissions (e.g., Exact Alarms, All Files Access, or Background Location) requiring Play Console declaration forms. | **Must Review**: Review the findings. You must either **migrate to modern scoped alternatives (highly recommended)** to bypass declaration scrutiny, OR **manually verify that your Play Console settings (like Reviewer Credentials and Declaration Forms) are completely and carefully configured** before submitting. |
50
+ | **🔴 Non-Compliant** | Severe, direct policy violations (e.g., silent background data tracking, default-only permission abuse) or active Data Safety declaration mismatches were identified. | **Must Fix**: Immediate rejection or account-level policy suspension risk. You must remediate these issues before submitting to the Play Store. |
51
+
52
+ <br>
53
+
54
+ | Finding Severity | Description | Action Required |
55
+ | :--- | :--- | :--- |
56
+ | **🔴 Critical** | Direct, verified policy violation (e.g., unauthorized data collection/sharing). | Critical action recommended. |
57
+ | **🟡 Important** | Deprecated permission use or API discrepancy where scoped pathways are mandated. | **Should Fix**: Highly recommended to migrate to prevent manual reviewer flags. |
58
+ | **🔵 Suggestion** | Standard advisory reminder or administrative checklist item (fully compliant). | **Good to Know**: Clean-path confirmation or helper checklist. |
59
+
@@ -0,0 +1,86 @@
1
+ # Review of specialized policy findings (Chunked Critic)
2
+
3
+ Review a specific chunk of identified policy findings to identify potential
4
+ false positives, exaggerated claims, or inaccuracies due to lack of evidence.
5
+
6
+ ### Provided context files
7
+
8
+ The prompt provides absolute paths to files and directories:
9
+ - `{{TEMP_DIR}}`: The temporary scratch directory for this audit.
10
+ - `input_file`: `{{TEMP_DIR}}/input_critic_{{CHUNK_INDEX}}.json` contains the
11
+ chunk of findings to verify.
12
+
13
+ ### Instructions
14
+
15
+ 1. **Read input chunk**: Read the JSON object in
16
+ `{{TEMP_DIR}}/input_critic_{{CHUNK_INDEX}}.json`. The keys (e.g. `"1"`,
17
+ `"2"`, `"3"`) correspond to the finding IDs.
18
+ 2. **Verify each finding**:
19
+ - For each finding, analyze its evidence against the source files in
20
+ `{{APP_DIR}}`.
21
+ - Determine the verdict:
22
+ - `"VERIFIED"`: True Positive. The codebase confirms the policy
23
+ violation.
24
+ - `"MANUAL_REVIEW"`: Ambiguous code or abstract logic where automatic
25
+ verification is impossible.
26
+ - `"PRUNED"`: False Positive. The codebase is compliant, or the
27
+ finding is not supported by actual evidence.
28
+ - Provide your verification details in the output JSON.
29
+ 3. **Optional Editorial Overrides**: If (and only if) you need to edit, refine,
30
+ or moderate the worker finding's text, you may include one or more of these
31
+ optional keys to your decision object. **If you agree with the worker's text,
32
+ you MUST omit these keys entirely from your JSON.**
33
+ - `"issue_summary"`: Write a more accurate, tailored summary.
34
+ - `"severity"`: Set to `"CRITICAL"`, `"IMPORTANT"`, or `"SUGGESTION"` to
35
+ override.
36
+ - `"recommendation"`: Write a tailored, codebase-specific remediation
37
+ step.
38
+ 4. **Save Results**: Save your final "Thin JSON" mapping to
39
+ `{{TEMP_DIR}}/critic_output_{{CHUNK_INDEX}}.json`.
40
+
41
+ ### Audit principles for false positive detection
42
+
43
+ - **Environment detection**: **Do not** flag emulator or root detection as
44
+ violations unless evidence shows malicious intent or review evasion.
45
+ - **Speculative collection**: Prune claims based solely on permission
46
+ presence. Require evidence of actual data access and transfer (whether
47
+ off-device network egress or on-device sharing to a third-party app).
48
+ - **Standard patterns**: **Do not** flag standard Android architectural
49
+ patterns unless used maliciously.
50
+ - **Surgical Evidence Standard**: Prune or downgrade any finding where the
51
+ worker has speculated on a transmission pathway that cannot be directly
52
+ verified in the immediate source files, or where the finding fails to cite a
53
+ concrete file and line number containing the direct policy violation.
54
+ - **Data Safety Flag Verification**: If a finding includes Data Safety flags
55
+ (e.g., `user_initiated`, `is_third_party`), strictly verify them. If the
56
+ worker claims `user_initiated: true`, ensure there is undeniable evidence of
57
+ explicit user interaction triggering the transfer. If the worker claims
58
+ `is_third_party: true`, verify the sink is definitively outside the
59
+ developer's control (e.g., Android Share Sheet, Social Media SDK). If evidence
60
+ is lacking, downgrade the finding or use `"issue_summary"` to correct the
61
+ claim.
62
+ - **Gatekeeper Validation**: If a worker claims a finding is compliant because
63
+ a disclosure exists (`prominent_disclosure_status: "DISCLOSED"`), you MUST
64
+ verify that the UI acts as a strict gatekeeper. If data collection begins
65
+ before the user taps "Accept", or if they can dismiss it and continue,
66
+ override the `"severity"` to `"CRITICAL"` and explicitly state the gatekeeper
67
+ is invalid.
68
+
69
+ ### Output JSON format
70
+
71
+ **Important**: The output must be a pure JSON object mapping the sequential
72
+ finding IDs from your input file to their decisions. If there are no findings in
73
+ the chunk, return `{}`.
74
+
75
+ ```json
76
+ {
77
+ "1": {
78
+ "action": "VERIFIED | MANUAL_REVIEW | PRUNED",
79
+ "confidence": "High | Medium | Low",
80
+ "critic_justification": "A concise, technical explanation of your decision based on codebase evidence.",
81
+ "issue_summary": "OPTIONAL: Overridden issue summary text",
82
+ "severity": "OPTIONAL: CRITICAL | IMPORTANT | SUGGESTION",
83
+ "recommendation": "OPTIONAL: Overridden recommendation text"
84
+ }
85
+ }
86
+ ```