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.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +24 -0
- package/README.md +175 -168
- package/THIRD_PARTY_NOTICES.md +224 -4
- package/agents/android-architect.md +89 -0
- package/agents/android-performance-engineer.md +92 -0
- package/agents/android-test-engineer.md +97 -0
- package/agents/flutter-test-engineer.md +2 -0
- package/agents/ios-architect.md +93 -0
- package/agents/ios-performance-engineer.md +92 -0
- package/agents/ios-test-engineer.md +95 -0
- package/agents/lead-mobile.md +10 -1
- package/agents/mobile-staff-engineer.md +1 -1
- package/agents/rn-architect.md +94 -0
- package/agents/rn-performance-engineer.md +92 -0
- package/agents/rn-test-engineer.md +98 -0
- package/bin/reis-mobile.mjs +59 -17
- package/commands/debate.md +10 -1
- package/commands/debug.md +60 -0
- package/commands/reis-mobile.md +7 -2
- package/core/config/project.mjs +59 -0
- package/core/registry/frontmatter.mjs +15 -4
- package/core/registry/registry.mjs +21 -1
- package/core/router/intents.mjs +2 -0
- package/core/router/router.mjs +10 -5
- package/package.json +1 -1
- package/skills/android-adaptive/SKILL.md +304 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +112 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +69 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +81 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +170 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +415 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +51 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +73 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +170 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +333 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/tooling/debug.md +114 -0
- package/skills/android-adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/skills/android-agp-9-upgrade/SKILL.md +106 -0
- package/skills/android-agp-9-upgrade/references/android/build/migrate-to-built-in-kotlin.md +416 -0
- package/skills/android-agp-9-upgrade/references/android/build/releases/agp-9-0-0-release-notes.md +554 -0
- package/skills/android-agp-9-upgrade/references/buildconfig.md +54 -0
- package/skills/android-agp-9-upgrade/references/ksp-kapt.md +39 -0
- package/skills/android-agp-9-upgrade/references/paparazzi-gradle-9.md +30 -0
- package/skills/android-agp-9-upgrade/references/recipes.md +62 -0
- package/skills/android-appfunctions/SKILL.md +74 -0
- package/skills/android-appfunctions/references/adb-interaction-testing.md +95 -0
- package/skills/android-appfunctions/references/context.md +26 -0
- package/skills/android-appfunctions/references/feature-discovery-analysis.md +71 -0
- package/skills/android-appfunctions/references/implementation-configuration.md +282 -0
- package/skills/android-appfunctions/references/kdoc-refinement-optimization.md +75 -0
- package/skills/android-appfunctions/references/migrate-to-service-entry-point.md +226 -0
- package/skills/android-camerax/SKILL.md +135 -0
- package/skills/android-camerax/references/camera1-to-camerax.md +198 -0
- package/skills/android-camerax/references/camera2-to-camerax.md +193 -0
- package/skills/android-camerax/references/expert-blueprints.md +58 -0
- package/skills/android-camerax/references/foldables.md +83 -0
- package/skills/android-camerax/references/immutability.md +60 -0
- package/skills/android-camerax/references/low-light.md +124 -0
- package/skills/android-camerax/references/mlkit-spatial.md +75 -0
- package/skills/android-camerax/references/modern-apis.md +42 -0
- package/skills/android-camerax/references/testing.md +69 -0
- package/skills/android-camerax/references/thermals.md +85 -0
- package/skills/android-camerax/references/wear-os.md +76 -0
- package/skills/android-camerax/references/xr.md +54 -0
- package/skills/android-cli/SKILL.md +474 -0
- package/skills/android-cli/references/interact.md +113 -0
- package/skills/android-cli/references/journeys.md +120 -0
- package/skills/android-code-review/SKILL.md +58 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/SKILL.md +340 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/design/ui/ai-glasses/guides/interaction/inputs.md +67 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md +388 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/buttons.md +139 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/cards.md +148 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/focus.md +107 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icons.md +90 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/text.md +69 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips.md +82 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.md +213 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/button-samples-source.md +176 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/button-source.md +203 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/card-samples-source.md +296 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/card-source.md +515 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/deptheffect-source.md +224 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/deptheffectlevels-source.md +105 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/glimmersansflextypography-source.md +270 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/glimmertheme-source.md +182 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/icon-source.md +388 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/iconbutton-source.md +126 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/iconsizes-source.md +78 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/list-source.md +27 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/listitem-source.md +272 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/liststate-source.md +427 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/material-hct-source.md +217 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/projectedcontext-source.md +265 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stack-source.md +368 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stackitemscope-source.md +440 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stackstate-source.md +325 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/surface-source.md +1211 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/titlechip-samples-source.md +101 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/titlechip-source.md +131 -0
- package/skills/android-edge-to-edge/SKILL.md +429 -0
- package/skills/android-engage-sdk-integration/SKILL.md +130 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/faq.md +439 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/food.md +1149 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/healthandfitness.md +1055 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/listen.md +1050 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/otherverticals.md +1301 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/read.md +910 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/shopping.md +1224 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/social.md +719 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/travel.md +1413 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/continue-watching/index.md +19 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/entitlements.md +353 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/getting-started.md +202 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/recommendations.md +471 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/watch.md +1081 -0
- package/skills/android-engage-sdk-integration/references/clusters.md +154 -0
- package/skills/android-engage-sdk-integration/references/common.md +519 -0
- package/skills/android-engage-sdk-integration/references/patterns.md +527 -0
- package/skills/android-engage-sdk-integration/references/requests.md +260 -0
- package/skills/android-engage-sdk-integration/references/schemas/food.md +509 -0
- package/skills/android-engage-sdk-integration/references/schemas/listen.md +842 -0
- package/skills/android-engage-sdk-integration/references/schemas/other.md +220 -0
- package/skills/android-engage-sdk-integration/references/schemas/read.md +412 -0
- package/skills/android-engage-sdk-integration/references/schemas/shopping.md +357 -0
- package/skills/android-engage-sdk-integration/references/schemas/social.md +228 -0
- package/skills/android-engage-sdk-integration/references/schemas/travel.md +923 -0
- package/skills/android-engage-sdk-integration/references/schemas/tv.md +1226 -0
- package/skills/android-engage-sdk-integration/references/schemas/watch.md +1137 -0
- package/skills/android-engage-sdk-integration/references/troubleshooting.md +39 -0
- package/skills/android-gradle-build-debug/SKILL.md +71 -0
- package/skills/android-intent-security/SKILL.md +550 -0
- package/skills/android-leanback-to-compose-tv-migration/SKILL.md +743 -0
- package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/get-started/navigation.md +372 -0
- package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/browse.md +243 -0
- package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/index.md +153 -0
- package/skills/android-media3-cast-integration/SKILL.md +236 -0
- package/skills/android-media3-cast-integration/references/android/media/media3/cast/create-castplayer.md +390 -0
- package/skills/android-media3-cast-integration/references/android/media/media3/cast/customize-castoptions.md +93 -0
- package/skills/android-media3-cast-integration/references/android/media/media3/cast/index.md +21 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/SKILL.md +127 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/analysis-of-the-project-and-layout.md +42 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/designsystems/migrate-xml-theme-to-compose.md +171 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/compose-in-views.md +299 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/views-in-compose.md +286 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/setup-compose-dependencies-and-compiler.md +197 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/identify-optimal-xml-candidate.md +31 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/xml-layout-migration.md +86 -0
- package/skills/android-ml-kit-genai-prompt-api/SKILL.md +124 -0
- package/skills/android-ml-kit-genai-prompt-api/references/get-started.md +272 -0
- package/skills/android-ml-kit-genai-prompt-api/references/prefix-caching.md +146 -0
- package/skills/android-ml-kit-genai-prompt-api/references/prompt-design.md +55 -0
- package/skills/android-ml-kit-genai-prompt-api/references/prompt-optimization.md +74 -0
- package/skills/android-ml-kit-genai-prompt-api/references/structured-output.md +219 -0
- package/skills/android-ml-kit-genai-prompt-api/references/system-instructions.md +71 -0
- package/skills/android-navigation-3/SKILL.md +122 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/index.md +51 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md +670 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md +147 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md +89 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +85 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +90 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +195 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md +200 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional-transitions.md +182 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md +230 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.md +176 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.md +140 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.md +184 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md +107 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/lifecycle-owner.md +185 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +145 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +283 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +287 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +468 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +371 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md +273 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md +266 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +435 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +244 -0
- package/skills/android-navigation-3/references/android/guide/navigation/type-safe-destinations.md +129 -0
- package/skills/android-navigation-event/SKILL.md +312 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/dispatcher.md +134 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/handle-back.md +217 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/index.md +83 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/setup.md +32 -0
- package/skills/android-play-billing-library-version-upgrade/SKILL.md +96 -0
- package/skills/android-play-billing-library-version-upgrade/references/android/google/play/billing/release-notes.md +1240 -0
- package/skills/android-play-billing-library-version-upgrade/references/migration-logic.md +78 -0
- package/skills/android-play-billing-library-version-upgrade/references/version-checklist.md +54 -0
- package/skills/android-play-policy-insights/SKILL.md +172 -0
- package/skills/android-play-policy-insights/resources/common_mandates.md +100 -0
- package/skills/android-play-policy-insights/resources/compliance_report_template.md +59 -0
- package/skills/android-play-policy-insights/resources/critic.md +86 -0
- package/skills/android-play-policy-insights/resources/goal_data_safety.md +212 -0
- package/skills/android-play-policy-insights/resources/goal_permissions_and_apis.md +459 -0
- package/skills/android-play-policy-insights/resources/goal_user_account.md +106 -0
- package/skills/android-play-policy-insights/resources/policies.json +321 -0
- package/skills/android-play-policy-insights/resources/scanner_config.json +843 -0
- package/skills/android-play-policy-insights/scripts/generate_report.py +860 -0
- package/skills/android-play-policy-insights/scripts/orchestrator.py +1313 -0
- package/skills/android-play-policy-insights/scripts/play_store_scraper.py +410 -0
- package/skills/android-play-policy-insights/scripts/scanner.py +261 -0
- package/skills/android-play-policy-insights/scripts/template_engine.py +243 -0
- package/skills/android-profiler/SKILL.md +60 -0
- package/skills/android-profiler/analysis/analysis_orchestrator.md +32 -0
- package/skills/android-profiler/analysis/workflows/perfetto-sql/perfetto_sql.md +28 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/perfetto_trace_analysis.md +121 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/guiding_principles.md +51 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/domain_hints_template.md +7 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_cpu.md +56 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_graphics.md +51 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_io.md +46 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_ipc.md +41 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_memory.md +55 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_power.md +33 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/per_candidate_analysis.md +172 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/triage.md +94 -0
- package/skills/android-profiler/recording/recording_orchestrator.md +36 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/perfetto_trace_recording.md +148 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/app_jank.pftxt +43 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/cpu_profile.pftxt +35 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/java_heap_dump.pftxt +21 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/long_background.pftxt +37 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/memory_counters.pftxt +45 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/native_heap.pftxt +21 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/sched_cpu.pftxt +33 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md +102 -0
- package/skills/android-profiler/references/env_setup.md +15 -0
- package/skills/android-profiler/references/perfetto/setup.md +29 -0
- package/skills/android-profiler/references/perfetto/sql.md +327 -0
- package/skills/android-r8-analyzer/SKILL.md +72 -0
- package/skills/android-r8-analyzer/references/CONFIGURATION-ANALYZER.md +287 -0
- package/skills/android-r8-analyzer/references/CONFIGURATION.md +44 -0
- package/skills/android-r8-analyzer/references/KEEP-RULES-IMPACT-HIERARCHY.md +83 -0
- package/skills/android-r8-analyzer/references/REDUNDANT-RULES.md +222 -0
- package/skills/android-r8-analyzer/references/REFLECTION-GUIDE.md +139 -0
- package/skills/android-r8-analyzer/references/REPORT_FORMAT.md +51 -0
- package/skills/android-r8-analyzer/references/android/topic/performance/app-optimization/enable-app-optimization.md +252 -0
- package/skills/android-r8-analyzer/references/android/training/testing/other-components/ui-automator.md +312 -0
- package/skills/android-restore-credentials/SKILL.md +359 -0
- package/skills/android-restore-credentials/references/android/guide/topics/manifest/application-element.md +832 -0
- package/skills/android-restore-credentials/references/android/identity/passkeys/create-passkeys.md +327 -0
- package/skills/android-restore-credentials/references/android/identity/passkeys/sign-in-with-passkeys.md +219 -0
- package/skills/android-styles/SKILL.md +229 -0
- package/skills/android-styles/references/android/develop/ui/compose/designsystems/custom.md +459 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/fundamentals.md +421 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/state-animations.md +461 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +48 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/theming.md +269 -0
- package/skills/android-verified-email/SKILL.md +432 -0
- package/skills/android-verified-email/references/android/identity/credential-manager/index.md +67 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/credential-verifier.md +166 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/email-verification-implementation.md +313 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/email-verification.md +158 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/index.md +112 -0
- package/skills/android-verified-email/references/android/identity/passkeys/create-passkeys.md +327 -0
- package/skills/android-verified-email/references/android/identity/sign-in/credential-manager-webview.md +84 -0
- package/skills/android-wear-compose-m3/SKILL.md +365 -0
- package/skills/android-wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md +677 -0
- package/skills/android-wear-compose-m3/references/foundation/AmbientModeSample.kt.md +123 -0
- package/skills/android-wear-compose-m3/references/foundation/AmbientModeSample.kt.md.txt +123 -0
- package/skills/android-wear-compose-m3/references/foundation/CurvedWorldSample.kt.md +430 -0
- package/skills/android-wear-compose-m3/references/foundation/CurvedWorldSample.kt.md.txt +430 -0
- package/skills/android-wear-compose-m3/references/foundation/ExpandableSample.kt.md +99 -0
- package/skills/android-wear-compose-m3/references/foundation/ExpandableSample.kt.md.txt +99 -0
- package/skills/android-wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md +141 -0
- package/skills/android-wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md.txt +141 -0
- package/skills/android-wear-compose-m3/references/foundation/PagerSamples.kt.md +56 -0
- package/skills/android-wear-compose-m3/references/foundation/PagerSamples.kt.md.txt +56 -0
- package/skills/android-wear-compose-m3/references/foundation/RotarySamples.kt.md +153 -0
- package/skills/android-wear-compose-m3/references/foundation/RotarySamples.kt.md.txt +153 -0
- package/skills/android-wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md +131 -0
- package/skills/android-wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md.txt +131 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md +169 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md.txt +169 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md +282 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md.txt +282 -0
- package/skills/android-wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md +335 -0
- package/skills/android-wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md.txt +335 -0
- package/skills/android-wear-compose-m3/references/material3/AlertDialogSample.kt.md +377 -0
- package/skills/android-wear-compose-m3/references/material3/AlertDialogSample.kt.md.txt +377 -0
- package/skills/android-wear-compose-m3/references/material3/AnimatedTextSample.kt.md +165 -0
- package/skills/android-wear-compose-m3/references/material3/AnimatedTextSample.kt.md.txt +165 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonGroupSample.kt.md +91 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonGroupSample.kt.md.txt +91 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonSample.kt.md +496 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonSample.kt.md.txt +496 -0
- package/skills/android-wear-compose-m3/references/material3/CardSample.kt.md +470 -0
- package/skills/android-wear-compose-m3/references/material3/CardSample.kt.md.txt +470 -0
- package/skills/android-wear-compose-m3/references/material3/CheckboxButtonSample.kt.md +67 -0
- package/skills/android-wear-compose-m3/references/material3/CheckboxButtonSample.kt.md.txt +67 -0
- package/skills/android-wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md +162 -0
- package/skills/android-wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md.txt +162 -0
- package/skills/android-wear-compose-m3/references/material3/CurvedTextSamples.kt.md +78 -0
- package/skills/android-wear-compose-m3/references/material3/CurvedTextSamples.kt.md.txt +78 -0
- package/skills/android-wear-compose-m3/references/material3/DatePickerSample.kt.md +131 -0
- package/skills/android-wear-compose-m3/references/material3/DatePickerSample.kt.md.txt +131 -0
- package/skills/android-wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md +74 -0
- package/skills/android-wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md.txt +74 -0
- package/skills/android-wear-compose-m3/references/material3/EdgeButtonSample.kt.md +63 -0
- package/skills/android-wear-compose-m3/references/material3/EdgeButtonSample.kt.md.txt +63 -0
- package/skills/android-wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md +60 -0
- package/skills/android-wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md.txt +60 -0
- package/skills/android-wear-compose-m3/references/material3/IconButtonSample.kt.md +125 -0
- package/skills/android-wear-compose-m3/references/material3/IconButtonSample.kt.md.txt +125 -0
- package/skills/android-wear-compose-m3/references/material3/IconToggleButtonSample.kt.md +116 -0
- package/skills/android-wear-compose-m3/references/material3/IconToggleButtonSample.kt.md.txt +116 -0
- package/skills/android-wear-compose-m3/references/material3/LevelIndicatorSample.kt.md +68 -0
- package/skills/android-wear-compose-m3/references/material3/LevelIndicatorSample.kt.md.txt +68 -0
- package/skills/android-wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md +50 -0
- package/skills/android-wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md.txt +50 -0
- package/skills/android-wear-compose-m3/references/material3/ListHeaderSample.kt.md +177 -0
- package/skills/android-wear-compose-m3/references/material3/ListHeaderSample.kt.md.txt +177 -0
- package/skills/android-wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md +651 -0
- package/skills/android-wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md.txt +651 -0
- package/skills/android-wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md +57 -0
- package/skills/android-wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md.txt +57 -0
- package/skills/android-wear-compose-m3/references/material3/PageIndicatorSample.kt.md +110 -0
- package/skills/android-wear-compose-m3/references/material3/PageIndicatorSample.kt.md.txt +110 -0
- package/skills/android-wear-compose-m3/references/material3/PagerScaffoldSample.kt.md +204 -0
- package/skills/android-wear-compose-m3/references/material3/PagerScaffoldSample.kt.md.txt +204 -0
- package/skills/android-wear-compose-m3/references/material3/PickerGroupSample.kt.md +139 -0
- package/skills/android-wear-compose-m3/references/material3/PickerGroupSample.kt.md.txt +139 -0
- package/skills/android-wear-compose-m3/references/material3/PickerSample.kt.md +111 -0
- package/skills/android-wear-compose-m3/references/material3/PickerSample.kt.md.txt +111 -0
- package/skills/android-wear-compose-m3/references/material3/PlaceholderSample.kt.md +184 -0
- package/skills/android-wear-compose-m3/references/material3/PlaceholderSample.kt.md.txt +184 -0
- package/skills/android-wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md +263 -0
- package/skills/android-wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md.txt +263 -0
- package/skills/android-wear-compose-m3/references/material3/RadioButtonSample.kt.md +105 -0
- package/skills/android-wear-compose-m3/references/material3/RadioButtonSample.kt.md.txt +105 -0
- package/skills/android-wear-compose-m3/references/material3/ScaffoldSample.kt.md +146 -0
- package/skills/android-wear-compose-m3/references/material3/ScaffoldSample.kt.md.txt +146 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollAwaySample.kt.md +97 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollAwaySample.kt.md.txt +97 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md +66 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md.txt +66 -0
- package/skills/android-wear-compose-m3/references/material3/SliderSample.kt.md +86 -0
- package/skills/android-wear-compose-m3/references/material3/SliderSample.kt.md.txt +86 -0
- package/skills/android-wear-compose-m3/references/material3/StepperSample.kt.md +148 -0
- package/skills/android-wear-compose-m3/references/material3/StepperSample.kt.md.txt +148 -0
- package/skills/android-wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md +166 -0
- package/skills/android-wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md.txt +166 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md +172 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md.txt +172 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToRevealSample.kt.md +367 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToRevealSample.kt.md.txt +367 -0
- package/skills/android-wear-compose-m3/references/material3/SwitchButtonSample.kt.md +66 -0
- package/skills/android-wear-compose-m3/references/material3/SwitchButtonSample.kt.md.txt +66 -0
- package/skills/android-wear-compose-m3/references/material3/TextButtonSample.kt.md +115 -0
- package/skills/android-wear-compose-m3/references/material3/TextButtonSample.kt.md.txt +115 -0
- package/skills/android-wear-compose-m3/references/material3/TextToggleButtonSample.kt.md +71 -0
- package/skills/android-wear-compose-m3/references/material3/TextToggleButtonSample.kt.md.txt +71 -0
- package/skills/android-wear-compose-m3/references/material3/TimePickerSample.kt.md +151 -0
- package/skills/android-wear-compose-m3/references/material3/TimePickerSample.kt.md.txt +151 -0
- package/skills/android-wear-compose-m3/references/material3/TimeTextSample.kt.md +65 -0
- package/skills/android-wear-compose-m3/references/material3/TimeTextSample.kt.md.txt +65 -0
- package/skills/android-wear-compose-m3/references/material3/TransformationSpecSample.kt.md +246 -0
- package/skills/android-wear-compose-m3/references/material3/TransformationSpecSample.kt.md.txt +246 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md +89 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md.txt +89 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md +309 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md.txt +309 -0
- package/skills/android-wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md +205 -0
- package/skills/android-wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md.txt +205 -0
- package/skills/{architecture-feature-first → flutter-architecture-feature-first}/SKILL.md +1 -1
- package/skills/{bloc → flutter-bloc}/SKILL.md +1 -1
- package/skills/flutter-build-debug/SKILL.md +66 -0
- package/skills/{code-review → flutter-code-review}/SKILL.md +1 -1
- package/skills/{dart-3-updates → flutter-dart-3-updates}/SKILL.md +1 -1
- package/skills/{dart-fix-runtime-errors → flutter-dart-fix-runtime-errors}/SKILL.md +1 -1
- package/skills/{dart-resolve-package-conflicts → flutter-dart-resolve-package-conflicts}/SKILL.md +1 -1
- package/skills/{dart-run-static-analysis → flutter-dart-run-static-analysis}/SKILL.md +1 -1
- package/skills/{dart-use-pattern-matching → flutter-dart-use-pattern-matching}/SKILL.md +1 -1
- package/skills/{effective-dart → flutter-effective-dart}/SKILL.md +1 -1
- package/skills/{provider → flutter-provider}/SKILL.md +1 -1
- package/skills/{riverpod → flutter-riverpod}/SKILL.md +1 -1
- package/skills/ios-cocoapods-debug/SKILL.md +65 -0
- package/skills/ios-code-review/SKILL.md +56 -0
- package/skills/ios-xcode-build-debug/SKILL.md +66 -0
- package/skills/{detect-mobile-stack → mobile-detect-stack}/SKILL.md +1 -1
- package/skills/mobile-firebase/SKILL.md +54 -0
- package/skills/mobile-firebase/references/android/ai-logic.md +31 -0
- package/skills/mobile-firebase/references/android/analytics.md +33 -0
- package/skills/mobile-firebase/references/android/app-check.md +36 -0
- package/skills/mobile-firebase/references/android/auth.md +44 -0
- package/skills/mobile-firebase/references/android/crashlytics.md +31 -0
- package/skills/mobile-firebase/references/android/firestore.md +44 -0
- package/skills/mobile-firebase/references/android/functions.md +33 -0
- package/skills/mobile-firebase/references/android/in-app-messaging.md +28 -0
- package/skills/mobile-firebase/references/android/messaging.md +41 -0
- package/skills/mobile-firebase/references/android/realtime-database.md +50 -0
- package/skills/mobile-firebase/references/android/remote-config.md +43 -0
- package/skills/mobile-firebase/references/android/sql-connect.md +31 -0
- package/skills/mobile-firebase/references/android/storage.md +39 -0
- package/skills/mobile-firebase/references/android.md +30 -0
- package/skills/{firebase-ai/SKILL.md → mobile-firebase/references/flutter/ai-logic.md} +2 -8
- package/skills/{firebase-analytics/SKILL.md → mobile-firebase/references/flutter/analytics.md} +2 -8
- package/skills/{firebase-app-check/SKILL.md → mobile-firebase/references/flutter/app-check.md} +2 -8
- package/skills/{firebase-auth/SKILL.md → mobile-firebase/references/flutter/auth.md} +2 -8
- package/skills/{firebase-crashlytics/SKILL.md → mobile-firebase/references/flutter/crashlytics.md} +2 -8
- package/skills/{firebase-cloud-firestore/SKILL.md → mobile-firebase/references/flutter/firestore.md} +2 -8
- package/skills/{firebase-cloud-functions/SKILL.md → mobile-firebase/references/flutter/functions.md} +2 -8
- package/skills/{firebase-in-app-messaging/SKILL.md → mobile-firebase/references/flutter/in-app-messaging.md} +2 -8
- package/skills/{firebase-messaging/SKILL.md → mobile-firebase/references/flutter/messaging.md} +2 -8
- package/skills/{firebase-database/SKILL.md → mobile-firebase/references/flutter/realtime-database.md} +2 -8
- package/skills/{firebase-remote-config/SKILL.md → mobile-firebase/references/flutter/remote-config.md} +2 -8
- package/skills/{flutterfire-configure/SKILL.md → mobile-firebase/references/flutter/setup-flutterfire.md} +1 -8
- package/skills/{firebase-data-connect/SKILL.md → mobile-firebase/references/flutter/sql-connect.md} +2 -8
- package/skills/{firebase-storage/SKILL.md → mobile-firebase/references/flutter/storage.md} +2 -8
- package/skills/mobile-firebase/references/flutter.md +36 -0
- package/skills/mobile-firebase/references/ios/ai-logic.md +30 -0
- package/skills/mobile-firebase/references/ios/analytics.md +33 -0
- package/skills/mobile-firebase/references/ios/app-check.md +36 -0
- package/skills/mobile-firebase/references/ios/auth.md +48 -0
- package/skills/mobile-firebase/references/ios/crashlytics.md +34 -0
- package/skills/mobile-firebase/references/ios/firestore.md +53 -0
- package/skills/mobile-firebase/references/ios/functions.md +35 -0
- package/skills/mobile-firebase/references/ios/in-app-messaging.md +26 -0
- package/skills/mobile-firebase/references/ios/messaging.md +45 -0
- package/skills/mobile-firebase/references/ios/realtime-database.md +49 -0
- package/skills/mobile-firebase/references/ios/remote-config.md +44 -0
- package/skills/mobile-firebase/references/ios/sql-connect.md +33 -0
- package/skills/mobile-firebase/references/ios/storage.md +36 -0
- package/skills/mobile-firebase/references/ios.md +28 -0
- package/skills/mobile-firebase/references/react-native/ai-logic.md +32 -0
- package/skills/mobile-firebase/references/react-native/analytics.md +43 -0
- package/skills/mobile-firebase/references/react-native/app-check.md +35 -0
- package/skills/mobile-firebase/references/react-native/auth.md +50 -0
- package/skills/mobile-firebase/references/react-native/crashlytics.md +36 -0
- package/skills/mobile-firebase/references/react-native/firestore.md +45 -0
- package/skills/mobile-firebase/references/react-native/functions.md +28 -0
- package/skills/mobile-firebase/references/react-native/in-app-messaging.md +27 -0
- package/skills/mobile-firebase/references/react-native/messaging.md +46 -0
- package/skills/mobile-firebase/references/react-native/realtime-database.md +46 -0
- package/skills/mobile-firebase/references/react-native/remote-config.md +32 -0
- package/skills/mobile-firebase/references/react-native/sql-connect.md +11 -0
- package/skills/mobile-firebase/references/react-native/storage.md +30 -0
- package/skills/mobile-firebase/references/react-native.md +29 -0
- package/skills/mobile-test/SKILL.md +63 -0
- package/skills/mobile-test/references/android/setup/GUIDE.md +183 -0
- package/skills/mobile-test/references/android/setup/references/android/develop/ui/compose/testing/common-patterns.md +181 -0
- package/skills/mobile-test/references/android/setup/references/android/studio/preview/compose-screenshot-testing.md +255 -0
- package/skills/mobile-test/references/android/setup/references/android/training/dependency-injection/hilt-testing.md +447 -0
- package/skills/mobile-test/references/android.md +83 -0
- package/skills/{dart-collect-coverage/SKILL.md → mobile-test/references/flutter/coverage.md} +2 -11
- package/skills/{dart-generate-test-mocks/SKILL.md → mobile-test/references/flutter/generate-mocks.md} +2 -11
- package/skills/{flutter-add-integration-test/SKILL.md → mobile-test/references/flutter/integration-tests.md} +2 -11
- package/skills/{dart-migrate-to-checks-package/SKILL.md → mobile-test/references/flutter/migrate-to-checks.md} +2 -13
- package/skills/{mockito/SKILL.md → mobile-test/references/flutter/mockito.md} +1 -8
- package/skills/{mocktail/SKILL.md → mobile-test/references/flutter/mocktail.md} +1 -8
- package/skills/{patrol-e2e-testing/SKILL.md → mobile-test/references/flutter/patrol.md} +1 -8
- package/skills/{testing/SKILL.md → mobile-test/references/flutter/testing-guidelines.md} +1 -8
- package/skills/{dart-add-unit-test/SKILL.md → mobile-test/references/flutter/unit-tests.md} +2 -11
- package/skills/{flutter-add-widget-test/SKILL.md → mobile-test/references/flutter/widget-tests.md} +2 -11
- package/skills/mobile-test/references/flutter.md +44 -0
- package/skills/mobile-test/references/ios.md +79 -0
- package/skills/mobile-test/references/react-native.md +62 -0
- /package/skills/{dart-use-pattern-matching → flutter-dart-use-pattern-matching}/examples/json_patterns.dart +0 -0
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
{{#IF_ANY data_sources.USER_ACCOUNT, data_sources.ACCOUNT_DELETION}}
|
|
2
|
+
{{ACTIVATE_GOAL}}
|
|
3
|
+
{{/IF_ANY}}
|
|
4
|
+
## User Account and Identity Audit
|
|
5
|
+
|
|
6
|
+
### Hint: Deducing Account Presence
|
|
7
|
+
|
|
8
|
+
To determine if an app handles user accounts (even if it uses third-party
|
|
9
|
+
providers like Google Sign-In or Firebase Auth), look for:
|
|
10
|
+
1. **Login/Auth Screens**: Semantic files or layouts named `login`, `auth`,
|
|
11
|
+
`signin`, or `signup`.
|
|
12
|
+
2. **Account Management**: APIs like `AccountManager`, `CredentialManager`, or
|
|
13
|
+
`Firebase.auth`.
|
|
14
|
+
3. **User Profile**: UI strings or data models referencing `profile`,
|
|
15
|
+
`my account`, or `user settings`.
|
|
16
|
+
|
|
17
|
+
### Policies to Verify
|
|
18
|
+
|
|
19
|
+
{{#IF_ANY data_sources.USER_ACCOUNT, semantic_files.USER_ACCOUNT}}
|
|
20
|
+
#### Play Console Requirements (Policy ID: login_credentials)
|
|
21
|
+
|
|
22
|
+
- **Goal**: Identify if the app implements a login wall or authentication
|
|
23
|
+
screen.
|
|
24
|
+
- **The Policy Spirit**: To ensure Play Store reviewers can successfully test
|
|
25
|
+
and audit apps, developers must submit functional, non-expiring credentials in
|
|
26
|
+
Play Console if the app's features are gated behind a login screen.
|
|
27
|
+
- **Evidence**:
|
|
28
|
+
{{#IF semantic_files.USER_ACCOUNT}}
|
|
29
|
+
- **Account Files**:
|
|
30
|
+
`{{#EACH semantic_files.USER_ACCOUNT}}{{ITEM}}, {{/EACH}}`
|
|
31
|
+
{{/IF}}
|
|
32
|
+
{{#IF data_sources.USER_ACCOUNT}}
|
|
33
|
+
- **Account Signals**:
|
|
34
|
+
`{{#EACH data_sources.USER_ACCOUNT}}{{ITEM}}, {{/EACH}}`
|
|
35
|
+
{{/IF}}
|
|
36
|
+
- **Common Evaluation Matrix**:
|
|
37
|
+
| App State | Finding / Condition | Severity | Actionable Recommendation |
|
|
38
|
+
| :--- | :--- | :--- | :--- |
|
|
39
|
+
| **Login Screen Detected** | App displays or contains a login screen, registration wall, or authentication interface. | `IMPORTANT` | **Administrative Console Requirements**: Because your app implements a login flow, you MUST complete two manual setup steps in the Play Console dashboard to pass review:<br>1. **Reviewer Demo Credentials**: Submit active, non-expiring test credentials so Google Play reviewers can access your gated features.<br>2. **Account Deletion Link**: Submit a public-facing web link for account deletion to satisfy Google Play's data deletion policies. |
|
|
40
|
+
|
|
41
|
+
- **Domain-Specific Heuristics (Strictly Bounded)**:
|
|
42
|
+
Look beyond standard native login buttons. Extrapolate using this heuristic:
|
|
43
|
+
1. **Hidden Gatekeepers**: Analyze if certain critical features (e.g.,
|
|
44
|
+
synchronizing local database, checkout forms, or member-only dashboards)
|
|
45
|
+
require authentication even if the app opens directly to a main page. If
|
|
46
|
+
you deduce that functional workflows require a login, treat it as a login
|
|
47
|
+
gate and output the `IMPORTANT` console credentials and deletion link
|
|
48
|
+
reminders.
|
|
49
|
+
{{/IF_ANY}}
|
|
50
|
+
|
|
51
|
+
{{#IF_ANY data_sources.USER_ACCOUNT, data_sources.ACCOUNT_DELETION}}
|
|
52
|
+
#### Account Deletion Requirement (Policy ID: account_deletion)
|
|
53
|
+
|
|
54
|
+
- **Goal**: If the app handles user accounts, it must provide a discoverable
|
|
55
|
+
in-app account deletion mechanism.
|
|
56
|
+
- **The Policy Spirit**: Users have a fundamental right to request data erasure.
|
|
57
|
+
If they can create an account in-app, they must be able to delete it in-app.
|
|
58
|
+
Deletion must wipe remote database records, not just sign out.
|
|
59
|
+
- **Evidence**:
|
|
60
|
+
{{#IF data_sources.USER_ACCOUNT}}
|
|
61
|
+
- **Account signals (Presence)**:
|
|
62
|
+
`{{#EACH data_sources.USER_ACCOUNT}}{{ITEM}}, {{/EACH}}`
|
|
63
|
+
{{/IF}}
|
|
64
|
+
{{#IF data_sources.ACCOUNT_DELETION}}
|
|
65
|
+
- **Deletion signals (Mechanism)**:
|
|
66
|
+
`{{#EACH data_sources.ACCOUNT_DELETION}}{{ITEM}}, {{/EACH}}`
|
|
67
|
+
{{/IF}}
|
|
68
|
+
- **Common Evaluation Matrix**:
|
|
69
|
+
| App Account Status | Finding / Deletion Evidence | Severity | Actionable Recommendation |
|
|
70
|
+
| :--- | :--- | :--- | :--- |
|
|
71
|
+
| **Handles User Accounts** | App manages user accounts, but NO code, layout, or string suggests an in-app deletion button or process. | `IMPORTANT` | **Implement in-app deletion**: Create a highly discoverable path (e.g., under User Profile/Account Settings) to let users initiate account deletion directly in the app. |
|
|
72
|
+
|
|
73
|
+
- **Domain-Specific Heuristics (Strictly Bounded)**:
|
|
74
|
+
Do not limit your analysis to basic "Delete" buttons. Actively analyze custom
|
|
75
|
+
and grey-area implementations:
|
|
76
|
+
1. **The Partial Deletion Trap**: Read the implementation of any found
|
|
77
|
+
deletion mechanisms. If the code merely calls `clearPreferences()`, clears
|
|
78
|
+
a local cookie, or triggers a standard `logout()` without sending a remote
|
|
79
|
+
delete/purge network API call to clean up backend user records, flag this
|
|
80
|
+
as a `IMPORTANT` violation of the deletion mandate.
|
|
81
|
+
2. **Indirect User Accounts**: If the app uses third-party sign-in bridges
|
|
82
|
+
(e.g., Google Sign-In, Firebase) but does not store an
|
|
83
|
+
explicit account profile on its own server, it still handles user account
|
|
84
|
+
details if any user preferences or device identifiers are cached remotely.
|
|
85
|
+
If so, a delete link/button is still required.
|
|
86
|
+
{{/IF_ANY}}
|
|
87
|
+
|
|
88
|
+
## Output schema
|
|
89
|
+
|
|
90
|
+
Save final JSON output to `{{TEMP_DIR}}/worker_{{GOAL_NAME}}.json`.
|
|
91
|
+
|
|
92
|
+
```json
|
|
93
|
+
{
|
|
94
|
+
"domain": "User Account and Identity",
|
|
95
|
+
"findings": [
|
|
96
|
+
{
|
|
97
|
+
"policy_id": "STRING_VALUE (The exact Policy ID, e.g., account_deletion)",
|
|
98
|
+
"issue_summary": "STRING_VALUE",
|
|
99
|
+
"severity": "CRITICAL | IMPORTANT | SUGGESTION",
|
|
100
|
+
"files_involved": ["STRING_VALUE"],
|
|
101
|
+
"evidence": "STRING_VALUE",
|
|
102
|
+
"recommendation": "STRING_VALUE"
|
|
103
|
+
}
|
|
104
|
+
]
|
|
105
|
+
}
|
|
106
|
+
```
|
|
@@ -0,0 +1,321 @@
|
|
|
1
|
+
{
|
|
2
|
+
"data_safety_section": {
|
|
3
|
+
"name": "Data safety section",
|
|
4
|
+
"category": "User Data",
|
|
5
|
+
"urls": [
|
|
6
|
+
"https://support.google.com/googleplay/android-developer/answer/10144311#safetysection",
|
|
7
|
+
"https://developer.android.com/privacy-and-security/declare-data-use",
|
|
8
|
+
"https://support.google.com/googleplay/android-developer/answer/10787469"
|
|
9
|
+
],
|
|
10
|
+
"taxonomy": {
|
|
11
|
+
"PRECISE_LOCATION": {
|
|
12
|
+
"category": "Location",
|
|
13
|
+
"data_type": "Precise location",
|
|
14
|
+
"description": "User or device physical location within an area less than 3 square kilometers, such as location provided by Android’s ACCESS_FINE_LOCATION permission."
|
|
15
|
+
},
|
|
16
|
+
"APPROX_LOCATION": {
|
|
17
|
+
"category": "Location",
|
|
18
|
+
"data_type": "Approximate location",
|
|
19
|
+
"description": "User or device physical location to an area greater than or equal to 3 square kilometers, such as the city a user is in, or location provided by Android’s ACCESS_COARSE_LOCATION permission."
|
|
20
|
+
},
|
|
21
|
+
"USER_ACCOUNT": {
|
|
22
|
+
"category": "Personal info",
|
|
23
|
+
"data_type": "User IDs",
|
|
24
|
+
"description": "Identifiers that relate to an identifiable person. For example, an account ID, account number, or account name."
|
|
25
|
+
},
|
|
26
|
+
"NAME": {
|
|
27
|
+
"category": "Personal info",
|
|
28
|
+
"data_type": "Name",
|
|
29
|
+
"description": "How a user refers to themselves, such as their first or last name, or nickname."
|
|
30
|
+
},
|
|
31
|
+
"EMAIL": {
|
|
32
|
+
"category": "Personal info",
|
|
33
|
+
"data_type": "Email address",
|
|
34
|
+
"description": "A user’s email address."
|
|
35
|
+
},
|
|
36
|
+
"ADDRESS": {
|
|
37
|
+
"category": "Personal info",
|
|
38
|
+
"data_type": "Address",
|
|
39
|
+
"description": "A user’s address, such as a mailing or home address."
|
|
40
|
+
},
|
|
41
|
+
"PHONE": {
|
|
42
|
+
"category": "Personal info",
|
|
43
|
+
"data_type": "Phone number",
|
|
44
|
+
"description": "A user’s phone number."
|
|
45
|
+
},
|
|
46
|
+
"RACE_ETHNICITY": {
|
|
47
|
+
"category": "Personal info",
|
|
48
|
+
"data_type": "Race and ethnicity",
|
|
49
|
+
"description": "Information about a user’s race or ethnicity."
|
|
50
|
+
},
|
|
51
|
+
"POLITICAL_RELIGIOUS_BELIEFS": {
|
|
52
|
+
"category": "Personal info",
|
|
53
|
+
"data_type": "Political or religious beliefs",
|
|
54
|
+
"description": "Information about a user’s political or religious beliefs."
|
|
55
|
+
},
|
|
56
|
+
"SEXUAL_ORIENTATION": {
|
|
57
|
+
"category": "Personal info",
|
|
58
|
+
"data_type": "Sexual orientation",
|
|
59
|
+
"description": "Information about a user’s sexual orientation."
|
|
60
|
+
},
|
|
61
|
+
"PERSONAL_INFO_OTHER": {
|
|
62
|
+
"category": "Personal info",
|
|
63
|
+
"data_type": "Other info",
|
|
64
|
+
"description": "Any other personal information such as date of birth, gender identity, veteran status, etc."
|
|
65
|
+
},
|
|
66
|
+
"CREDIT_DEBIT_BANK_ACCOUNT_NUMBER": {
|
|
67
|
+
"category": "Financial info",
|
|
68
|
+
"data_type": "User payment info",
|
|
69
|
+
"description": "Information about a user’s financial accounts such as credit card number."
|
|
70
|
+
},
|
|
71
|
+
"PURCHASE_HISTORY": {
|
|
72
|
+
"category": "Financial info",
|
|
73
|
+
"data_type": "Purchase history",
|
|
74
|
+
"description": "Information about purchases or transactions a user has made."
|
|
75
|
+
},
|
|
76
|
+
"CREDIT_SCORE": {
|
|
77
|
+
"category": "Financial info",
|
|
78
|
+
"data_type": "Credit score",
|
|
79
|
+
"description": "Information about a user’s credit score."
|
|
80
|
+
},
|
|
81
|
+
"FINANCIAL_INFO_OTHER": {
|
|
82
|
+
"category": "Financial info",
|
|
83
|
+
"data_type": "Other financial info",
|
|
84
|
+
"description": "Any other financial information such as user salary or debts."
|
|
85
|
+
},
|
|
86
|
+
"HEALTH": {
|
|
87
|
+
"category": "Health and fitness",
|
|
88
|
+
"data_type": "Health info",
|
|
89
|
+
"description": "Information about a user's health, such as medical records or symptoms."
|
|
90
|
+
},
|
|
91
|
+
"FITNESS": {
|
|
92
|
+
"category": "Health and fitness",
|
|
93
|
+
"data_type": "Fitness info",
|
|
94
|
+
"description": "Information about a user's fitness, such as exercise or other physical activity."
|
|
95
|
+
},
|
|
96
|
+
"EMAILS": {
|
|
97
|
+
"category": "Messages",
|
|
98
|
+
"data_type": "Emails",
|
|
99
|
+
"description": "A user’s emails including the email subject line, sender, recipients, and the content of the email."
|
|
100
|
+
},
|
|
101
|
+
"SMS_CALL_LOG": {
|
|
102
|
+
"category": "Messages",
|
|
103
|
+
"data_type": "SMS or MMS",
|
|
104
|
+
"description": "A user’s text messages including the sender, recipients, and the content of the message."
|
|
105
|
+
},
|
|
106
|
+
"OTHER_MESSAGES": {
|
|
107
|
+
"category": "Messages",
|
|
108
|
+
"data_type": "Other in-app messages",
|
|
109
|
+
"description": "Any other types of messages. For example, instant messages or chat content."
|
|
110
|
+
},
|
|
111
|
+
"PHOTOS": {
|
|
112
|
+
"category": "Photos and videos",
|
|
113
|
+
"data_type": "Photos",
|
|
114
|
+
"description": "A user’s photos."
|
|
115
|
+
},
|
|
116
|
+
"VIDEOS": {
|
|
117
|
+
"category": "Photos and videos",
|
|
118
|
+
"data_type": "Videos",
|
|
119
|
+
"description": "A user’s videos."
|
|
120
|
+
},
|
|
121
|
+
"AUDIO": {
|
|
122
|
+
"category": "Audio files",
|
|
123
|
+
"data_type": "Voice or sound recordings",
|
|
124
|
+
"description": "A user’s voice such as a voicemail or a sound recording."
|
|
125
|
+
},
|
|
126
|
+
"MUSIC": {
|
|
127
|
+
"category": "Audio files",
|
|
128
|
+
"data_type": "Music files",
|
|
129
|
+
"description": "A user’s music files."
|
|
130
|
+
},
|
|
131
|
+
"OTHER_AUDIO": {
|
|
132
|
+
"category": "Audio files",
|
|
133
|
+
"data_type": "Other audio files",
|
|
134
|
+
"description": "Any other user-created or user-provided audio files."
|
|
135
|
+
},
|
|
136
|
+
"FILES_AND_DOCS": {
|
|
137
|
+
"category": "Files and docs",
|
|
138
|
+
"data_type": "Files and docs",
|
|
139
|
+
"description": "A user’s files or documents, or information about their files or documents such as file names."
|
|
140
|
+
},
|
|
141
|
+
"CALENDAR": {
|
|
142
|
+
"category": "Calendar",
|
|
143
|
+
"data_type": "Calendar events",
|
|
144
|
+
"description": "Information from a user’s calendar such as events, event notes, and attendees."
|
|
145
|
+
},
|
|
146
|
+
"CONTACTS": {
|
|
147
|
+
"category": "Contacts",
|
|
148
|
+
"data_type": "Contacts",
|
|
149
|
+
"description": "Information about the user’s contacts such as contact names, message history, and social graph information like usernames, contact recency, contact frequency, interaction duration and call history."
|
|
150
|
+
},
|
|
151
|
+
"APP_INTERACTIONS": {
|
|
152
|
+
"category": "App activity",
|
|
153
|
+
"data_type": "App interactions",
|
|
154
|
+
"description": "Information about how a user interacts with the app. For example, the number of times they visit a page or sections they tap on."
|
|
155
|
+
},
|
|
156
|
+
"IN_APP_SEARCH_HISTORY": {
|
|
157
|
+
"category": "App activity",
|
|
158
|
+
"data_type": "In-app search history",
|
|
159
|
+
"description": "Information about what a user has searched for in your app."
|
|
160
|
+
},
|
|
161
|
+
"APPS_ON_DEVICE": {
|
|
162
|
+
"category": "App activity",
|
|
163
|
+
"data_type": "Installed apps",
|
|
164
|
+
"description": "Information about the apps installed on a user's device."
|
|
165
|
+
},
|
|
166
|
+
"USER_GENERATED_CONTENT": {
|
|
167
|
+
"category": "App activity",
|
|
168
|
+
"data_type": "Other user-generated content",
|
|
169
|
+
"description": "Any other user-generated content not listed here, or in any other section. For example, user bios, notes, or open-ended responses."
|
|
170
|
+
},
|
|
171
|
+
"OTHER_ACTIONS": {
|
|
172
|
+
"category": "App activity",
|
|
173
|
+
"data_type": "Other actions",
|
|
174
|
+
"description": "Any other user activity or actions in-app not listed here such as gameplay, likes, and dialog options."
|
|
175
|
+
},
|
|
176
|
+
"WEB_BROWSING_HISTORY": {
|
|
177
|
+
"category": "Web browsing",
|
|
178
|
+
"data_type": "Web browsing history",
|
|
179
|
+
"description": "Information about the websites a user has visited."
|
|
180
|
+
},
|
|
181
|
+
"CRASH_LOGS": {
|
|
182
|
+
"category": "App info and performance",
|
|
183
|
+
"data_type": "Crash logs",
|
|
184
|
+
"description": "Crash log data from your app. For example, the number of times your app has crashed, stack traces, or other information directly related to a crash."
|
|
185
|
+
},
|
|
186
|
+
"PERFORMANCE_DIAGNOSTICS": {
|
|
187
|
+
"category": "App info and performance",
|
|
188
|
+
"data_type": "Diagnostics",
|
|
189
|
+
"description": "Information about the performance of your app. For example battery life, loading time, latency, framerate, or any technical diagnostics."
|
|
190
|
+
},
|
|
191
|
+
"OTHER_APP_PERFORMANCE": {
|
|
192
|
+
"category": "App info and performance",
|
|
193
|
+
"data_type": "Other app performance data",
|
|
194
|
+
"description": "Any other app performance data excluding crash log data (e.g., stack traces) and diagnostics (e.g., battery life, loading time, latency, or framerate)."
|
|
195
|
+
},
|
|
196
|
+
"DEVICE_ID": {
|
|
197
|
+
"category": "Device or other IDs",
|
|
198
|
+
"data_type": "Device or other IDs",
|
|
199
|
+
"description": "Identifiers that relate to an individual device, browser or app. For example, an IMEI number, MAC address, Widevine Device ID, Firebase installation ID, or advertising identifier."
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
},
|
|
203
|
+
"login_credentials": {
|
|
204
|
+
"name": "Login credentials",
|
|
205
|
+
"category": "Play Console Requirements",
|
|
206
|
+
"urls": [
|
|
207
|
+
"https://support.google.com/googleplay/android-developer/answer/15748846"
|
|
208
|
+
]
|
|
209
|
+
},
|
|
210
|
+
"sms_call_log_policy": {
|
|
211
|
+
"name": "SMS and Call Log Permissions",
|
|
212
|
+
"category": "Permissions",
|
|
213
|
+
"urls": [
|
|
214
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241#sms-call-permissions",
|
|
215
|
+
"https://support.google.com/googleplay/android-developer/answer/10208820"
|
|
216
|
+
]
|
|
217
|
+
},
|
|
218
|
+
"package_visibility_policy": {
|
|
219
|
+
"name": "Package Visibility",
|
|
220
|
+
"category": "Permissions",
|
|
221
|
+
"urls": [
|
|
222
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241#package-vis",
|
|
223
|
+
"https://support.google.com/googleplay/android-developer/answer/10158779"
|
|
224
|
+
]
|
|
225
|
+
},
|
|
226
|
+
"all_files_access_policy": {
|
|
227
|
+
"name": "All Files Access",
|
|
228
|
+
"category": "Permissions",
|
|
229
|
+
"urls": [
|
|
230
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241#all-files-access",
|
|
231
|
+
"https://developer.android.com/training/data-storage/manage-all-files",
|
|
232
|
+
"https://support.google.com/googleplay/android-developer/answer/10467955"
|
|
233
|
+
]
|
|
234
|
+
},
|
|
235
|
+
"photo_video_access_policy": {
|
|
236
|
+
"name": "Photo and Video Permissions",
|
|
237
|
+
"category": "Permissions",
|
|
238
|
+
"urls": [
|
|
239
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241#photo-and-video-permissions",
|
|
240
|
+
"https://support.google.com/googleplay/android-developer/answer/16935362",
|
|
241
|
+
"https://developer.android.com/training/data-storage/shared/media"
|
|
242
|
+
]
|
|
243
|
+
},
|
|
244
|
+
"location_access_policy": {
|
|
245
|
+
"name": "Location Permissions",
|
|
246
|
+
"category": "Permissions",
|
|
247
|
+
"urls": [
|
|
248
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241",
|
|
249
|
+
"https://support.google.com/googleplay/android-developer/answer/9799150"
|
|
250
|
+
]
|
|
251
|
+
},
|
|
252
|
+
"contacts_access_policy": {
|
|
253
|
+
"name": "Contacts Permissions",
|
|
254
|
+
"category": "Permissions",
|
|
255
|
+
"urls": [
|
|
256
|
+
"https://support.google.com/googleplay/android-developer/answer/16909972#contacts-permissions",
|
|
257
|
+
"https://support.google.com/googleplay/android-developer/answer/16935362"
|
|
258
|
+
]
|
|
259
|
+
},
|
|
260
|
+
"audio_recording_policy": {
|
|
261
|
+
"name": "Audio Recording Policy",
|
|
262
|
+
"category": "Permissions",
|
|
263
|
+
"urls": [
|
|
264
|
+
"https://support.google.com/googleplay/android-developer/answer/10144311",
|
|
265
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241"
|
|
266
|
+
]
|
|
267
|
+
},
|
|
268
|
+
"files_and_docs_policy": {
|
|
269
|
+
"name": "Files and Docs Access Policy",
|
|
270
|
+
"category": "Permissions",
|
|
271
|
+
"urls": [
|
|
272
|
+
"https://support.google.com/googleplay/android-developer/answer/10467955",
|
|
273
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241"
|
|
274
|
+
]
|
|
275
|
+
},
|
|
276
|
+
"prominent_disclosure_policy": {
|
|
277
|
+
"name": "Prominent Disclosure Policy",
|
|
278
|
+
"category": "User Data",
|
|
279
|
+
"urls": [
|
|
280
|
+
"https://support.google.com/googleplay/android-developer/answer/10144311"
|
|
281
|
+
]
|
|
282
|
+
},
|
|
283
|
+
"account_deletion": {
|
|
284
|
+
"name": "Account Deletion Requirement",
|
|
285
|
+
"category": "User Data",
|
|
286
|
+
"urls": [
|
|
287
|
+
"https://support.google.com/googleplay/android-developer/answer/10144311#account_deletion",
|
|
288
|
+
"https://support.google.com/googleplay/android-developer/answer/13327111"
|
|
289
|
+
]
|
|
290
|
+
},
|
|
291
|
+
"target_api_level": {
|
|
292
|
+
"name": "Target API Level Requirements",
|
|
293
|
+
"category": "Privacy, Deception and Device Abuse",
|
|
294
|
+
"urls": [
|
|
295
|
+
"https://support.google.com/googleplay/android-developer/answer/16561298",
|
|
296
|
+
"https://support.google.com/googleplay/android-developer/answer/11926878"
|
|
297
|
+
]
|
|
298
|
+
},
|
|
299
|
+
"accessibility_api_policy": {
|
|
300
|
+
"name": "Accessibility API Policy",
|
|
301
|
+
"category": "Permissions",
|
|
302
|
+
"urls": [
|
|
303
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241#accessibility"
|
|
304
|
+
]
|
|
305
|
+
},
|
|
306
|
+
"exact_alarm_policy": {
|
|
307
|
+
"name": "Exact Alarm Policy",
|
|
308
|
+
"category": "Permissions",
|
|
309
|
+
"urls": [
|
|
310
|
+
"https://support.google.com/googleplay/android-developer/answer/16558241#exact_alarm"
|
|
311
|
+
]
|
|
312
|
+
},
|
|
313
|
+
"foreground_services_policy": {
|
|
314
|
+
"name": "Foreground Services",
|
|
315
|
+
"category": "Privacy, Deception and Device Abuse",
|
|
316
|
+
"urls": [
|
|
317
|
+
"https://support.google.com/googleplay/android-developer/answer/13392821",
|
|
318
|
+
"https://support.google.com/googleplay/android-developer/answer/16559646#foreground_service"
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
}
|