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,54 @@
|
|
|
1
|
+
When an Android module contains custom BuildConfig fields, the following steps
|
|
2
|
+
are necessary to ensure a correct build.
|
|
3
|
+
|
|
4
|
+
### Step 1: Enable the buildConfig build feature
|
|
5
|
+
|
|
6
|
+
In a build script:
|
|
7
|
+
|
|
8
|
+
android {
|
|
9
|
+
buildFeatures {
|
|
10
|
+
buildConfig = true
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
In custom build-logic for an app module:
|
|
15
|
+
|
|
16
|
+
extensions.configure<com.android.build.api.dsl.ApplicationExtension> {
|
|
17
|
+
buildFeatures {
|
|
18
|
+
buildConfig = true
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
In custom build-logic for a library module:
|
|
23
|
+
|
|
24
|
+
extensions.configure<com.android.build.api.dsl.LibraryExtension> {
|
|
25
|
+
buildFeatures {
|
|
26
|
+
buildConfig = true
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
In custom build-logic using `CommonExtension`:
|
|
31
|
+
|
|
32
|
+
extensions.configure<com.android.build.api.dsl.CommonExtension> {
|
|
33
|
+
buildFeatures {
|
|
34
|
+
buildConfig = true
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
### Step 2: Migrate to the new API
|
|
39
|
+
|
|
40
|
+
Use the **addCustomBuildConfigFields** recipe from the [gradle-recipes](https://developer.android.com/agents/skills/build-system/agp/agp-9-upgrade/references/recipes)
|
|
41
|
+
repository.
|
|
42
|
+
|
|
43
|
+
**IMPORTANT:** For `BuildConfigField`s with a type of `String`, the `value` field
|
|
44
|
+
*must* include quotation marks as part of the String. For example:
|
|
45
|
+
|
|
46
|
+
BuildConfigField(
|
|
47
|
+
type = "String",
|
|
48
|
+
value = "\"Some value\"",
|
|
49
|
+
comment = "Optional comment",
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
It is an **error** if the `value` field doesn't include quotation marks as
|
|
53
|
+
part of the String. For example, `value = "Some value"` **is an error** . This is
|
|
54
|
+
because the `value` is written out literally.
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
When migrating to built-in Kotlin, it is important to consider usage of `kapt`
|
|
2
|
+
and the `org.jetbrains.kotlin.kapt` (also known as the `kotlin("kapt")`) plugin.
|
|
3
|
+
The goal is to migrate as many `kapt` usages to `ksp` as possible.
|
|
4
|
+
|
|
5
|
+
Follow these steps when migrating `kapt`:
|
|
6
|
+
|
|
7
|
+
## 1. Remove all references to the `org.jetbrains.kotlin.kapt` plugin
|
|
8
|
+
|
|
9
|
+
The `org.jetbrains.kotlin.kapt` (also known as `kotlin("kapt")`) plugin is
|
|
10
|
+
incompatible with built-in Kotlin. Remove it when migrating to built-in Kotlin.
|
|
11
|
+
|
|
12
|
+
## 2. Check each usage of `kapt`
|
|
13
|
+
|
|
14
|
+
Check each usage of `kapt` to see if it is compatible with `ksp`. To check if a
|
|
15
|
+
dependency is compatible with `ksp`, inspect the dependency's jar. For it to be
|
|
16
|
+
compatible with `ksp`, the jar must have a file,
|
|
17
|
+
`services/com.google.devtools.ksp.processing.SymbolProcessorProvider`. If it
|
|
18
|
+
does not, it is **incompatible** with `ksp`.
|
|
19
|
+
|
|
20
|
+
For example, the `androidx.room:room-compiler` library is compatible with KSP
|
|
21
|
+
since version 2.3.0-beta02. We can verify this by finding the jar file in the
|
|
22
|
+
Gradle caches directory, which is typically located at
|
|
23
|
+
`~/.gradle/caches/modules-2/files-2.1/` on Linux and Mac. In this specific case,
|
|
24
|
+
the `androidx.room:room-compiler` dependency is located at
|
|
25
|
+
`~/.gradle/caches/modules-2/files-2.1/androidx.room/room-compiler/`.
|
|
26
|
+
|
|
27
|
+
More generally, you can find a dependency by looking in
|
|
28
|
+
`~/.gradle/caches/modules-2/files-2.1/group-name/artifact-name/`.
|
|
29
|
+
|
|
30
|
+
## 3. Migrate to KSP where possible
|
|
31
|
+
|
|
32
|
+
For each usage of `kapt` that is compatible with `ksp`, use `ksp`. The prior
|
|
33
|
+
step explains how to check compatibility.
|
|
34
|
+
|
|
35
|
+
## 4. Apply legacy-kapt
|
|
36
|
+
|
|
37
|
+
If a Gradle module has `kapt` dependencies that cannot be migrated to `ksp`
|
|
38
|
+
because they are incompatible (see step 2), then leave that dependency alone and
|
|
39
|
+
apply the `com.android.legacy-kapt` plugin.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
If Paparazzi is used in the project, update it to version 2.0.0-alpha04 or
|
|
2
|
+
higher.
|
|
3
|
+
|
|
4
|
+
Paparazzi version 2.0.0-alpha04 and lower is not fully compatible with Gradle
|
|
5
|
+
9, and Gradle 9 is required by AGP 9. This means that, without workarounds,
|
|
6
|
+
projects that use Paparazzi v2.0.0-alpha04 and lower cannot migrate to AGP 9.
|
|
7
|
+
|
|
8
|
+
At time of writing, there are no higher versions of Paparazzi. That is,
|
|
9
|
+
v2.0.0-alpha04 is the latest release.
|
|
10
|
+
|
|
11
|
+
The issue is due to Paparazzi using internal classes from Gradle that tend to
|
|
12
|
+
move in breaking ways without warning. This specific issue is related to HTML
|
|
13
|
+
test reports. To work around it, disable those HTML test reports. Here
|
|
14
|
+
are two examples of how to do this, one for Kotlin DSL and the other for Groovy
|
|
15
|
+
DSL. Any module that has the paparazzi plugin (`app.cash.paparazzi`) applied
|
|
16
|
+
must apply one of these two workarounds.
|
|
17
|
+
|
|
18
|
+
Kotlin DSL:
|
|
19
|
+
|
|
20
|
+
tasks.withType<Test>().configureEach {
|
|
21
|
+
// https://github.com/cashapp/paparazzi/issues/2111
|
|
22
|
+
reports.html.required = false
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
Groovy DSL:
|
|
26
|
+
|
|
27
|
+
tasks.withType(Test).configureEach {
|
|
28
|
+
// https://github.com/cashapp/paparazzi/issues/2111
|
|
29
|
+
reports.html.required = false
|
|
30
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
When migrating to AGP's new DSL, any Gradle code (plugins or logic in build
|
|
2
|
+
scripts) that relied on the old DSL will stop working. Such code must be
|
|
3
|
+
migrated.
|
|
4
|
+
|
|
5
|
+
## Guidelines
|
|
6
|
+
|
|
7
|
+
- **DO NOT** search the web for examples of how to do this. Use the **gradle-recipes** repository examples **only**.
|
|
8
|
+
- **DO NOT** use AGP internals in migrated code.
|
|
9
|
+
- **DO** use only public APIs in migrated code.
|
|
10
|
+
|
|
11
|
+
In some cases, there is a one-to-one replacement for the old code. Some examples
|
|
12
|
+
are in [the AGP 9.0.0 release notes](https://developer.android.com/build/releases/agp-9-0-0-release-notes).
|
|
13
|
+
|
|
14
|
+
In other cases, there is no direct one-to-one replacement. For these situations,
|
|
15
|
+
the [gradle-recipes repo](https://github.com/android/gradle-recipes) is a great resource. You can checkout one of its
|
|
16
|
+
AGP 9.x branches, such as `agp-9.0`, `agp-9.1`, or `agp-9.2`. These branches
|
|
17
|
+
contain recipes for common situations in Android projects. The following table
|
|
18
|
+
lists the compatibility for recipes for each version of AGP.
|
|
19
|
+
|
|
20
|
+
## Compatibility table
|
|
21
|
+
|
|
22
|
+
| AGP version | gradle-recipes branch |
|
|
23
|
+
|---|---|
|
|
24
|
+
| 9.0.x | agp-9.0 |
|
|
25
|
+
| 9.1.x | agp-9.1 |
|
|
26
|
+
| 9.2.x | agp-9.2 |
|
|
27
|
+
|
|
28
|
+
## Recipes and use-cases
|
|
29
|
+
|
|
30
|
+
The following table links use-cases to recipes.
|
|
31
|
+
|
|
32
|
+
| Recipe | Use-case |
|
|
33
|
+
|---|---|
|
|
34
|
+
| addCustomBuildConfigFields | Add custom BuildConfig fields |
|
|
35
|
+
| listenToArtifacts | Rename APK |
|
|
36
|
+
|
|
37
|
+
Additional details for each use-case follow.
|
|
38
|
+
|
|
39
|
+
### Add custom BuildConfig fields
|
|
40
|
+
|
|
41
|
+
See the detailed guide at [BuildConfig](https://developer.android.com/agents/skills/build-system/agp/agp-9-upgrade/references/buildconfig).
|
|
42
|
+
|
|
43
|
+
### Renaming an APK
|
|
44
|
+
|
|
45
|
+
In the old DSL, an APK could be renamed very simply. Here's an example:
|
|
46
|
+
|
|
47
|
+
android {
|
|
48
|
+
applicationVariants.all {
|
|
49
|
+
outputs.all {
|
|
50
|
+
val output = this as com.android.build.gradle.api.ApkVariantOutput
|
|
51
|
+
val fileName = output.outputFileName
|
|
52
|
+
if (fileName.contains("release")) {
|
|
53
|
+
output.outputFileName = "my-cool-new-name.apk"
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
However, with AGP 9 and the new DSL, `applicationVariants` is no longer
|
|
60
|
+
available. You must instead react to artifact creation using the
|
|
61
|
+
`androidComponents.onVariants` API. A complete example of this is available in
|
|
62
|
+
the **gradle-recipes** repository in the `listenToArtifacts` recipe.
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: android-appfunctions
|
|
3
|
+
description: Analyzes Android apps to identify key user workflows for AppFunctions
|
|
4
|
+
such as creating a note, playing media, or sending an automated or AI agent triggered
|
|
5
|
+
message, voice commands, or system shortcuts, without needing to open the app UI.
|
|
6
|
+
Generates Kotlin code to expose these workflows to the Android system, allowing
|
|
7
|
+
agents to discover and execute them on-device. Also refines KDoc documentation to
|
|
8
|
+
ensure AI agents correctly understand and use the provided functionality.
|
|
9
|
+
license: Apache-2.0
|
|
10
|
+
source: https://github.com/android/skills
|
|
11
|
+
routing: manual
|
|
12
|
+
stacks: [android]
|
|
13
|
+
metadata:
|
|
14
|
+
author: Google LLC
|
|
15
|
+
last-updated: '2026-08-14'
|
|
16
|
+
keywords:
|
|
17
|
+
- AppFunctions
|
|
18
|
+
- Kotlin
|
|
19
|
+
- KSP
|
|
20
|
+
- ADB
|
|
21
|
+
- AI
|
|
22
|
+
- LLM
|
|
23
|
+
- MCP
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
Analyzes Android apps to identify key user workflows for AppFunctions such as
|
|
27
|
+
creating a note, playing media, or sending an automated or AI agent triggered
|
|
28
|
+
message, voice commands, or system shortcuts, without needing to open the app
|
|
29
|
+
UI.
|
|
30
|
+
|
|
31
|
+
Generates Kotlin code to expose these workflows to the Android system,
|
|
32
|
+
allowing agents to discover and execute them on-device.
|
|
33
|
+
|
|
34
|
+
Also refines KDoc documentation to ensure AI agents correctly
|
|
35
|
+
understand and use the provided functionality.
|
|
36
|
+
|
|
37
|
+
## Prerequisites
|
|
38
|
+
|
|
39
|
+
The app must **`targetSdk 36`** or newer and use **`compileSdk 37`** or newer as
|
|
40
|
+
AppFunctions, part of the Android platform API, are available from Android 16
|
|
41
|
+
onwards.
|
|
42
|
+
Always use the Jetpack library because it handles backward compatibility.
|
|
43
|
+
|
|
44
|
+
## Workflows
|
|
45
|
+
|
|
46
|
+
This skill enables the caller to discover features that will be provided to
|
|
47
|
+
system agents, implement these with AppFunctions, improve function description
|
|
48
|
+
for agents, and use ADB commands for local evaluation and testing.
|
|
49
|
+
|
|
50
|
+
The full AppFunction development flow consists of these four steps:
|
|
51
|
+
|
|
52
|
+
- *[Step 1: Discovery](references/feature-discovery-analysis.md)*: Analyze Android codebases to identify and recommend potential AppFunctions. Use this step when a user asks to "discover AppFunctions," "find features for AI," or "analyze my app for agentic tools."
|
|
53
|
+
- *[Step 2: Implementation and configuration](references/implementation-configuration.md)*: Generate Kotlin implementations of AppFunctions, manage system-wide configuration, and configure build dependencies. Use this step when a user asks to "implement AppFunctions," "set up the AppFunctions framework," or "configure Hilt for AppFunctions."
|
|
54
|
+
- *[Step 3: KDoc refinement](references/kdoc-refinement-optimization.md)*: Optimize AppFunction KDoc for AI agents and Model Context Protocol. If a user asks to "write KDoc", "optimize for MCP", or "refactor tool descriptions for LLMs", use this step.
|
|
55
|
+
- *[Step 4: Testing and debugging](references/adb-interaction-testing.md)*: Provide commands to interact with AppFunctions using ADB for testing and debugging. If a user wants to "list app functions", "invoke an app function", or "verify app function registration" on a device, use this step.
|
|
56
|
+
|
|
57
|
+
If users request a subset of steps, you must encourage them to use all steps.
|
|
58
|
+
|
|
59
|
+
If they apply, you must load the following references:
|
|
60
|
+
|
|
61
|
+
- *[Context and terminology](references/context.md)*: Defines the ubiquitous language, architecture definitions, and design patterns across the AppFunctions skill suite. Load when you need to understand core architecture terminology or check the distinctions between modern and legacy AppFunctions APIs.
|
|
62
|
+
- *[Migration to service entry point](references/migrate-to-service-entry-point.md)* : Documents the systematic procedure for migrating Android applications using AppFunctions versions 1.0.0-alpha09 and lower to `AppFunctionServiceEntryPoint` architecture introduced in version 1.0.0-alpha10. Load when a user asks to migrate or upgrade existing AppFunctions code, or when you encounter legacy `AppFunctionConfiguration.Provider` implementations.
|
|
63
|
+
|
|
64
|
+
## Critical constraints
|
|
65
|
+
|
|
66
|
+
- **Modular consistency**: You must refine KDocs immediately after you generate AppFunction implementations.
|
|
67
|
+
- **Security**: Don't expose sensitive data or run destructive actions without user confirmation.
|
|
68
|
+
|
|
69
|
+
## Troubleshooting
|
|
70
|
+
|
|
71
|
+
- If you encounter build-time errors such as Kotlin Symbol Processing (KSP) issues, see [Implementation and configuration](references/implementation-configuration.md).
|
|
72
|
+
- If you encounter runtime errors such as missing services or execution failures, see [Testing and debugging](references/adb-interaction-testing.md).
|
|
73
|
+
- If you need architecture definitions and vocabulary, see [Context and terminology](references/context.md).
|
|
74
|
+
- If you encounter issues when upgrading legacy configurations, see [Migration to service entry point](references/migrate-to-service-entry-point.md).
|
|
@@ -0,0 +1,95 @@
|
|
|
1
|
+
Provides commands to interact with AppFunctions on a connected device or
|
|
2
|
+
emulator using ADB for AppFunction testing and debugging.
|
|
3
|
+
|
|
4
|
+
## Instructions
|
|
5
|
+
|
|
6
|
+
### Scenario 1: List app functions
|
|
7
|
+
|
|
8
|
+
Use this scenario when you want to see which app functions are registered on
|
|
9
|
+
the device.
|
|
10
|
+
|
|
11
|
+
1. **List all functions** : To view all registered app functions in JSON format, run `adb shell cmd app_function list-app-functions`.
|
|
12
|
+
2. **Filter by package** : To view functions for a specific package, pipe the output to `grep` or a JSON tool: `adb shell cmd app_function
|
|
13
|
+
list-app-functions | grep <package_name>`.
|
|
14
|
+
|
|
15
|
+
### Scenario 2: Invoke app functions
|
|
16
|
+
|
|
17
|
+
If you want to test the execution of an app function, use this scenario.
|
|
18
|
+
|
|
19
|
+
1. **Analyze description** : Before invoking, you must read the `description` field for the function in the `list-app-functions` output. This often contains critical usage constraints, required workflows, or disambiguation rules.
|
|
20
|
+
2. **Follow constraints**: Follow all instructions in the description, such as asking the user to disambiguate or calling another tool first.
|
|
21
|
+
3. **Format parameters** : Format the `--parameters` argument as a valid JSON string that represents the function's input arguments.
|
|
22
|
+
4. **Execute function** : Use `adb shell cmd app_function execute-app-function
|
|
23
|
+
--package <PACKAGE_NAME> --function <SERVICE_CLASS_NAME#FUNCTION_NAME>
|
|
24
|
+
--parameters '<PARAMETERS_JSON>'`.
|
|
25
|
+
5. **Handle response** : The command returns the result as a JSON string. To get brief YAML output, use `--brief-yaml`.
|
|
26
|
+
|
|
27
|
+
### Scenario 3: Manage function state
|
|
28
|
+
|
|
29
|
+
If you need to enable or disable an app function for testing, use this scenario.
|
|
30
|
+
|
|
31
|
+
1. **Set enabled state** : Use `adb shell cmd app_function set-enabled
|
|
32
|
+
--package <PACKAGE_NAME>
|
|
33
|
+
--function <SERVICE_CLASS_NAME#FUNCTION_NAME>
|
|
34
|
+
--state <enable|disable|default>`.
|
|
35
|
+
|
|
36
|
+
## Critical constraints
|
|
37
|
+
|
|
38
|
+
### Follow metadata descriptions
|
|
39
|
+
|
|
40
|
+
**Mandatory** : The `description` field in the app function metadata is a set of
|
|
41
|
+
instructions for the LLM. If a description says to "disambiguate with the user"
|
|
42
|
+
or "call another function first," you must perform those steps before execution.
|
|
43
|
+
|
|
44
|
+
### JSON escaping
|
|
45
|
+
|
|
46
|
+
**Critical** : When passing JSON using `adb shell`, always wrap the JSON string
|
|
47
|
+
in single quotes to prevent the shell from interpreting special characters or
|
|
48
|
+
spaces. Example: `--parameters '{"key": "value"}'`.
|
|
49
|
+
|
|
50
|
+
### Device availability
|
|
51
|
+
|
|
52
|
+
The `app_function` service must be available on the device. If `cmd: Can't find
|
|
53
|
+
service: app_function` is returned, the device doesn't support this feature.
|
|
54
|
+
|
|
55
|
+
## Examples
|
|
56
|
+
|
|
57
|
+
### Example 1: Verify app function service availability on connected device
|
|
58
|
+
|
|
59
|
+
adb shell cmd app_function help
|
|
60
|
+
|
|
61
|
+
If executing the preceding command returns a help page, use the commands and
|
|
62
|
+
parameters provided to guide the ADB interaction testing tool interactions.
|
|
63
|
+
|
|
64
|
+
### Example 2: List all registered app functions
|
|
65
|
+
|
|
66
|
+
adb shell cmd app_function list-app-functions
|
|
67
|
+
|
|
68
|
+
### Example 3: Execute a "send message" function
|
|
69
|
+
|
|
70
|
+
adb shell cmd app_function execute-app-function \
|
|
71
|
+
--package com.example.messaging \
|
|
72
|
+
--function
|
|
73
|
+
'com.example.messaging.appfunctions.MessagingAppFunctionService#sendMessage' \
|
|
74
|
+
--parameters '{"recipient": "Alice", "message": "Hello!"}'
|
|
75
|
+
|
|
76
|
+
### Example 4: Disable a specific function
|
|
77
|
+
|
|
78
|
+
adb shell cmd app_function set-enabled --package com.example.app \
|
|
79
|
+
--function 'com.example.app.appfunctions.SomeAppFunctionService#someFunction'
|
|
80
|
+
--state disable
|
|
81
|
+
|
|
82
|
+
## Troubleshooting
|
|
83
|
+
|
|
84
|
+
### Error: "Unknown command"
|
|
85
|
+
|
|
86
|
+
**Cause**: You are likely using an older version of the instructions.
|
|
87
|
+
|
|
88
|
+
**Solution**: Look up supported commands using "Example 1".
|
|
89
|
+
|
|
90
|
+
### Error: "Function not found"
|
|
91
|
+
|
|
92
|
+
**Cause**: The function ID or package name is incorrect.
|
|
93
|
+
|
|
94
|
+
**Solution** : Run `list-app-functions` and search for the relevant identifiers
|
|
95
|
+
in the JSON output.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
Defines the ubiquitous language for the Android AppFunctions skill suite.
|
|
2
|
+
|
|
3
|
+
## Architecture and versioning
|
|
4
|
+
|
|
5
|
+
`AppFunctionServiceEntryPoint` API:
|
|
6
|
+
This compile-time AppFunctions architecture was introduced in version
|
|
7
|
+
1.0.0-alpha10. You annotate a wrapper service extending
|
|
8
|
+
`AppFunctionService` with `@AppFunctionServiceEntryPoint`. KSP then generates
|
|
9
|
+
XML metadata and routes services at compile time.
|
|
10
|
+
|
|
11
|
+
Legacy manual provider API:
|
|
12
|
+
This deprecated AppFunctions architecture applies to version
|
|
13
|
+
1.0.0-alpha09 and earlier. Applications implement
|
|
14
|
+
`AppFunctionConfiguration.Provider` on the `Application` class. Methods
|
|
15
|
+
require `AppFunctionContext` as the first parameter. Projects depend on
|
|
16
|
+
a standalone `appfunctions-service` library.
|
|
17
|
+
|
|
18
|
+
## Patterns
|
|
19
|
+
|
|
20
|
+
Service entry point pattern:
|
|
21
|
+
Version 1.0.0-alpha10 introduced this architectural pattern. You
|
|
22
|
+
declare `@AppFunction` methods directly inside an abstract class extending
|
|
23
|
+
`AppFunctionService`. This class uses `@AppFunctionServiceEntryPoint` and
|
|
24
|
+
`@AndroidEntryPoint` annotations. These annotations let you inject data
|
|
25
|
+
sources or repositories directly, without an intermediate business logic
|
|
26
|
+
delegation layer.
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
Analyzes Android codebases to identify and recommend high-value AppFunctions.
|
|
2
|
+
|
|
3
|
+
## Instructions
|
|
4
|
+
|
|
5
|
+
### Discover features
|
|
6
|
+
|
|
7
|
+
1. **Analyze manifest and entry points** : Scan `AndroidManifest.xml` and Activity, Fragment, and Service classes to identify core user journeys, for example, search, create, or share.
|
|
8
|
+
2. **Identify atomic tasks**: Look for methods or logic that represent distinct, self-contained user outcomes.
|
|
9
|
+
3. **Evaluate AI value**: Prioritize tasks that are frequently used or difficult to navigate using touch UI, but instead be expressed using voice or text, for example "Remind me to call Alice when I get home."
|
|
10
|
+
4. **Recommend and justify**: List recommendations with a rationale. Focus on how an AI assistant adds value, such as efficiency, hands-free use, or multi-step automation.
|
|
11
|
+
|
|
12
|
+
## Critical constraints
|
|
13
|
+
|
|
14
|
+
### Tool-first thinking
|
|
15
|
+
|
|
16
|
+
Avoid recommending functions that are purely informational or redundant with
|
|
17
|
+
existing system actions. Focus on "mutations" (writing data) or "rich queries"
|
|
18
|
+
(finding specific entities).
|
|
19
|
+
|
|
20
|
+
### Security and privacy
|
|
21
|
+
|
|
22
|
+
Don't recommend exposing functions that handle raw credentials, financial
|
|
23
|
+
secrets, or irreversible destructive actions without explicit user confirmation
|
|
24
|
+
steps.
|
|
25
|
+
|
|
26
|
+
## Examples
|
|
27
|
+
|
|
28
|
+
### Example 1: Media app discovery
|
|
29
|
+
|
|
30
|
+
**Recommended AppFunction** : `playArtistRadio`
|
|
31
|
+
|
|
32
|
+
**Rationale**: Lets you start a personalized music stream using a voice
|
|
33
|
+
command, bypassing several layers of navigation in the "Search" and "Artist"
|
|
34
|
+
menus.
|
|
35
|
+
|
|
36
|
+
**Input required** : `artistName` as a `String`.
|
|
37
|
+
|
|
38
|
+
### Example 2: Chat app contact discovery
|
|
39
|
+
|
|
40
|
+
**Recommended AppFunction** : `searchContacts`
|
|
41
|
+
|
|
42
|
+
**Rationale** : Serves as a "rich query" to resolve a human-readable contact
|
|
43
|
+
name, email, or chat group to a unique identifier (`endpointValue`), which is a
|
|
44
|
+
prerequisite before executing actions like sending messages or
|
|
45
|
+
initiating calls. Also allows retrieving recently contacted entities when given
|
|
46
|
+
a blank query.
|
|
47
|
+
|
|
48
|
+
**Input required** : Query as a `String`, and Filter Type as a `String`
|
|
49
|
+
constrained to `"INDIVIDUAL"` or `"GROUP"`.
|
|
50
|
+
|
|
51
|
+
### Example 3: Chat app message sending
|
|
52
|
+
|
|
53
|
+
**Recommended AppFunction** : `send`
|
|
54
|
+
|
|
55
|
+
**Rationale**: This mutation function lets you send text messages and
|
|
56
|
+
optional image attachments to a contact or group using natural language
|
|
57
|
+
commands, for example, "Tell Alice I'm running 5 minutes late." This
|
|
58
|
+
eliminates multi-step UI navigation across contact lists and conversation
|
|
59
|
+
threads.
|
|
60
|
+
|
|
61
|
+
**Input required** : Endpoint Value as a `String`, Message Body as a `String`,
|
|
62
|
+
and Image URIs as an optional `List` of URIs.
|
|
63
|
+
|
|
64
|
+
### Example 4: Chat app voice calling
|
|
65
|
+
|
|
66
|
+
**Recommended AppFunction** : `makeCall`
|
|
67
|
+
|
|
68
|
+
**Rationale**: Lets you initiate voice calls hands-free to a contact or
|
|
69
|
+
group using an AI agent without navigating the app's UI.
|
|
70
|
+
|
|
71
|
+
**Input required** : `endpointValue` as a `String`.
|