reis-mobile 0.3.6 → 0.5.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 +39 -0
- package/README.md +135 -297
- package/THIRD_PARTY_NOTICES.md +221 -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-code-reviewer.md +2 -0
- 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 +28 -1
- package/core/router/intents.mjs +2 -0
- package/core/router/router.mjs +10 -5
- package/package.json +24 -3
- package/skills/mobile-android/SKILL.md +29 -0
- package/skills/mobile-android/references/build-and-performance/agp-9-upgrade/GUIDE.md +87 -0
- package/skills/mobile-android/references/build-and-performance/agp-9-upgrade/references/android/build/migrate-to-built-in-kotlin.md +416 -0
- package/skills/mobile-android/references/build-and-performance/agp-9-upgrade/references/android/build/releases/agp-9-0-0-release-notes.md +554 -0
- package/skills/mobile-android/references/build-and-performance/agp-9-upgrade/references/buildconfig.md +54 -0
- package/skills/mobile-android/references/build-and-performance/agp-9-upgrade/references/ksp-kapt.md +39 -0
- package/skills/mobile-android/references/build-and-performance/agp-9-upgrade/references/paparazzi-gradle-9.md +30 -0
- package/skills/mobile-android/references/build-and-performance/agp-9-upgrade/references/recipes.md +62 -0
- package/skills/mobile-android/references/build-and-performance/android-cli/GUIDE.md +450 -0
- package/skills/mobile-android/references/build-and-performance/android-cli/references/interact.md +113 -0
- package/skills/mobile-android/references/build-and-performance/android-cli/references/journeys.md +120 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/GUIDE.md +34 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/analysis_orchestrator.md +32 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-sql/perfetto_sql.md +28 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/perfetto_trace_analysis.md +121 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/guiding_principles.md +51 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/domain_hints_template.md +7 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_cpu.md +56 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_graphics.md +51 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_io.md +46 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_ipc.md +41 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_memory.md +55 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_power.md +33 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/per_candidate_analysis.md +172 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/analysis/workflows/perfetto-trace-analysis/references/triage.md +94 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/recording_orchestrator.md +36 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/perfetto_trace_recording.md +148 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/app_jank.pftxt +43 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/cpu_profile.pftxt +35 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/java_heap_dump.pftxt +21 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/long_background.pftxt +37 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/memory_counters.pftxt +45 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/native_heap.pftxt +21 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/sched_cpu.pftxt +33 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md +102 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/references/env_setup.md +15 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/references/perfetto/setup.md +29 -0
- package/skills/mobile-android/references/build-and-performance/android-profiler/references/perfetto/sql.md +327 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/GUIDE.md +53 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/CONFIGURATION-ANALYZER.md +287 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/CONFIGURATION.md +44 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/KEEP-RULES-IMPACT-HIERARCHY.md +83 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/REDUNDANT-RULES.md +222 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/REFLECTION-GUIDE.md +139 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/REPORT_FORMAT.md +51 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/android/topic/performance/app-optimization/enable-app-optimization.md +252 -0
- package/skills/mobile-android/references/build-and-performance/r8-analyzer/references/android/training/testing/other-components/ui-automator.md +312 -0
- package/skills/mobile-android/references/build-and-performance.md +12 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/GUIDE.md +317 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/design/ui/ai-glasses/guides/interaction/inputs.md +67 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md +388 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/buttons.md +139 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/cards.md +148 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/focus.md +107 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icons.md +90 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/text.md +69 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips.md +82 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.md +213 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/button-samples-source.md +176 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/button-source.md +203 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/card-samples-source.md +296 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/card-source.md +515 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/deptheffect-source.md +224 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/deptheffectlevels-source.md +105 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/glimmersansflextypography-source.md +270 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/glimmertheme-source.md +182 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/icon-source.md +388 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/iconbutton-source.md +126 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/iconsizes-source.md +78 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/list-source.md +27 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/listitem-source.md +272 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/liststate-source.md +427 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/material-hct-source.md +217 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/projectedcontext-source.md +265 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/stack-source.md +368 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/stackitemscope-source.md +440 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/stackstate-source.md +325 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/surface-source.md +1211 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/titlechip-samples-source.md +101 -0
- package/skills/mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/references/titlechip-source.md +131 -0
- package/skills/mobile-android/references/devices/leanback-to-compose-tv-migration/GUIDE.md +707 -0
- package/skills/mobile-android/references/devices/leanback-to-compose-tv-migration/references/android/training/tv/get-started/navigation.md +372 -0
- package/skills/mobile-android/references/devices/leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/browse.md +243 -0
- package/skills/mobile-android/references/devices/leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/index.md +153 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/GUIDE.md +341 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md +677 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/AmbientModeSample.kt.md +123 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/AmbientModeSample.kt.md.txt +123 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/CurvedWorldSample.kt.md +430 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/CurvedWorldSample.kt.md.txt +430 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/ExpandableSample.kt.md +99 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/ExpandableSample.kt.md.txt +99 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md +141 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md.txt +141 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/PagerSamples.kt.md +56 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/PagerSamples.kt.md.txt +56 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/RotarySamples.kt.md +153 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/RotarySamples.kt.md.txt +153 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md +131 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md.txt +131 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md +169 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md.txt +169 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md +282 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md.txt +282 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md +335 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md.txt +335 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/AlertDialogSample.kt.md +377 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/AlertDialogSample.kt.md.txt +377 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/AnimatedTextSample.kt.md +165 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/AnimatedTextSample.kt.md.txt +165 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ButtonGroupSample.kt.md +91 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ButtonGroupSample.kt.md.txt +91 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ButtonSample.kt.md +496 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ButtonSample.kt.md.txt +496 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/CardSample.kt.md +470 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/CardSample.kt.md.txt +470 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/CheckboxButtonSample.kt.md +67 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/CheckboxButtonSample.kt.md.txt +67 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md +162 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md.txt +162 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/CurvedTextSamples.kt.md +78 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/CurvedTextSamples.kt.md.txt +78 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/DatePickerSample.kt.md +131 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/DatePickerSample.kt.md.txt +131 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md +74 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md.txt +74 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/EdgeButtonSample.kt.md +63 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/EdgeButtonSample.kt.md.txt +63 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md +60 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md.txt +60 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/IconButtonSample.kt.md +125 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/IconButtonSample.kt.md.txt +125 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/IconToggleButtonSample.kt.md +116 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/IconToggleButtonSample.kt.md.txt +116 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/LevelIndicatorSample.kt.md +68 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/LevelIndicatorSample.kt.md.txt +68 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md +50 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md.txt +50 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ListHeaderSample.kt.md +177 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ListHeaderSample.kt.md.txt +177 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md +651 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md.txt +651 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md +57 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md.txt +57 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PageIndicatorSample.kt.md +110 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PageIndicatorSample.kt.md.txt +110 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PagerScaffoldSample.kt.md +204 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PagerScaffoldSample.kt.md.txt +204 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PickerGroupSample.kt.md +139 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PickerGroupSample.kt.md.txt +139 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PickerSample.kt.md +111 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PickerSample.kt.md.txt +111 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PlaceholderSample.kt.md +184 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/PlaceholderSample.kt.md.txt +184 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md +263 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md.txt +263 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/RadioButtonSample.kt.md +105 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/RadioButtonSample.kt.md.txt +105 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ScaffoldSample.kt.md +146 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ScaffoldSample.kt.md.txt +146 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ScrollAwaySample.kt.md +97 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ScrollAwaySample.kt.md.txt +97 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md +66 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md.txt +66 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SliderSample.kt.md +86 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SliderSample.kt.md.txt +86 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/StepperSample.kt.md +148 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/StepperSample.kt.md.txt +148 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md +166 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md.txt +166 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md +172 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md.txt +172 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SwipeToRevealSample.kt.md +367 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SwipeToRevealSample.kt.md.txt +367 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SwitchButtonSample.kt.md +66 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/SwitchButtonSample.kt.md.txt +66 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TextButtonSample.kt.md +115 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TextButtonSample.kt.md.txt +115 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TextToggleButtonSample.kt.md +71 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TextToggleButtonSample.kt.md.txt +71 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TimePickerSample.kt.md +151 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TimePickerSample.kt.md.txt +151 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TimeTextSample.kt.md +65 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TimeTextSample.kt.md.txt +65 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TransformationSpecSample.kt.md +246 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TransformationSpecSample.kt.md.txt +246 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md +89 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md.txt +89 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md +309 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md.txt +309 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md +205 -0
- package/skills/mobile-android/references/devices/wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md.txt +205 -0
- package/skills/mobile-android/references/devices.md +11 -0
- package/skills/mobile-android/references/identity/restore-credentials/GUIDE.md +337 -0
- package/skills/mobile-android/references/identity/restore-credentials/references/android/guide/topics/manifest/application-element.md +832 -0
- package/skills/mobile-android/references/identity/restore-credentials/references/android/identity/passkeys/create-passkeys.md +327 -0
- package/skills/mobile-android/references/identity/restore-credentials/references/android/identity/passkeys/sign-in-with-passkeys.md +219 -0
- package/skills/mobile-android/references/identity/verified-email/GUIDE.md +405 -0
- package/skills/mobile-android/references/identity/verified-email/references/android/identity/credential-manager/index.md +67 -0
- package/skills/mobile-android/references/identity/verified-email/references/android/identity/digital-credentials/credential-verifier.md +166 -0
- package/skills/mobile-android/references/identity/verified-email/references/android/identity/digital-credentials/email-verification-implementation.md +313 -0
- package/skills/mobile-android/references/identity/verified-email/references/android/identity/digital-credentials/email-verification.md +158 -0
- package/skills/mobile-android/references/identity/verified-email/references/android/identity/digital-credentials/index.md +112 -0
- package/skills/mobile-android/references/identity/verified-email/references/android/identity/passkeys/create-passkeys.md +327 -0
- package/skills/mobile-android/references/identity/verified-email/references/android/identity/sign-in/credential-manager-webview.md +84 -0
- package/skills/mobile-android/references/identity.md +10 -0
- package/skills/mobile-android/references/media/camerax/GUIDE.md +106 -0
- package/skills/mobile-android/references/media/camerax/references/camera1-to-camerax.md +198 -0
- package/skills/mobile-android/references/media/camerax/references/camera2-to-camerax.md +193 -0
- package/skills/mobile-android/references/media/camerax/references/expert-blueprints.md +58 -0
- package/skills/mobile-android/references/media/camerax/references/foldables.md +83 -0
- package/skills/mobile-android/references/media/camerax/references/immutability.md +60 -0
- package/skills/mobile-android/references/media/camerax/references/low-light.md +124 -0
- package/skills/mobile-android/references/media/camerax/references/mlkit-spatial.md +75 -0
- package/skills/mobile-android/references/media/camerax/references/modern-apis.md +42 -0
- package/skills/mobile-android/references/media/camerax/references/testing.md +69 -0
- package/skills/mobile-android/references/media/camerax/references/thermals.md +85 -0
- package/skills/mobile-android/references/media/camerax/references/wear-os.md +76 -0
- package/skills/mobile-android/references/media/camerax/references/xr.md +54 -0
- package/skills/mobile-android/references/media/media3-cast-integration/GUIDE.md +213 -0
- package/skills/mobile-android/references/media/media3-cast-integration/references/android/media/media3/cast/create-castplayer.md +390 -0
- package/skills/mobile-android/references/media/media3-cast-integration/references/android/media/media3/cast/customize-castoptions.md +93 -0
- package/skills/mobile-android/references/media/media3-cast-integration/references/android/media/media3/cast/index.md +21 -0
- package/skills/mobile-android/references/media.md +10 -0
- package/skills/mobile-android/references/on-device-ai/appfunctions/GUIDE.md +51 -0
- package/skills/mobile-android/references/on-device-ai/appfunctions/references/adb-interaction-testing.md +95 -0
- package/skills/mobile-android/references/on-device-ai/appfunctions/references/context.md +26 -0
- package/skills/mobile-android/references/on-device-ai/appfunctions/references/feature-discovery-analysis.md +71 -0
- package/skills/mobile-android/references/on-device-ai/appfunctions/references/implementation-configuration.md +282 -0
- package/skills/mobile-android/references/on-device-ai/appfunctions/references/kdoc-refinement-optimization.md +75 -0
- package/skills/mobile-android/references/on-device-ai/appfunctions/references/migrate-to-service-entry-point.md +226 -0
- package/skills/mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/GUIDE.md +105 -0
- package/skills/mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/references/get-started.md +272 -0
- package/skills/mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/references/prefix-caching.md +146 -0
- package/skills/mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/references/prompt-design.md +55 -0
- package/skills/mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/references/prompt-optimization.md +74 -0
- package/skills/mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/references/structured-output.md +219 -0
- package/skills/mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/references/system-instructions.md +71 -0
- package/skills/mobile-android/references/on-device-ai.md +10 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/GUIDE.md +112 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/faq.md +439 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/food.md +1149 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/healthandfitness.md +1055 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/listen.md +1050 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/otherverticals.md +1301 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/read.md +910 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/shopping.md +1224 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/social.md +719 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/travel.md +1413 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/tv/continue-watching/index.md +19 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/tv/entitlements.md +353 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/tv/getting-started.md +202 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/tv/recommendations.md +471 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/android/guide/playcore/engage/watch.md +1081 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/clusters.md +154 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/common.md +519 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/patterns.md +527 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/requests.md +260 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/food.md +509 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/listen.md +842 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/other.md +220 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/read.md +412 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/shopping.md +357 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/social.md +228 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/travel.md +923 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/tv.md +1226 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/schemas/watch.md +1137 -0
- package/skills/mobile-android/references/play/engage-sdk-integration/references/troubleshooting.md +39 -0
- package/skills/mobile-android/references/play/play-billing-library-version-upgrade/GUIDE.md +75 -0
- package/skills/mobile-android/references/play/play-billing-library-version-upgrade/references/android/google/play/billing/release-notes.md +1240 -0
- package/skills/mobile-android/references/play/play-billing-library-version-upgrade/references/migration-logic.md +78 -0
- package/skills/mobile-android/references/play/play-billing-library-version-upgrade/references/version-checklist.md +54 -0
- package/skills/mobile-android/references/play/play-policy-insights/GUIDE.md +130 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/common_mandates.md +100 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/compliance_report_template.md +59 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/critic.md +86 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/goal_data_safety.md +212 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/goal_permissions_and_apis.md +459 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/goal_user_account.md +106 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/policies.json +321 -0
- package/skills/mobile-android/references/play/play-policy-insights/resources/scanner_config.json +843 -0
- package/skills/mobile-android/references/play/play-policy-insights/scripts/generate_report.py +860 -0
- package/skills/mobile-android/references/play/play-policy-insights/scripts/orchestrator.py +1313 -0
- package/skills/mobile-android/references/play/play-policy-insights/scripts/play_store_scraper.py +410 -0
- package/skills/mobile-android/references/play/play-policy-insights/scripts/scanner.py +261 -0
- package/skills/mobile-android/references/play/play-policy-insights/scripts/template_engine.py +243 -0
- package/skills/mobile-android/references/play.md +11 -0
- package/skills/mobile-android/references/ui/adaptive/GUIDE.md +280 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +112 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +69 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +81 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +170 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +415 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +51 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +73 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +170 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +333 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/develop/ui/compose/tooling/debug.md +114 -0
- package/skills/mobile-android/references/ui/adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/skills/mobile-android/references/ui/edge-to-edge/GUIDE.md +409 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/GUIDE.md +104 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/references/analysis-of-the-project-and-layout.md +42 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/designsystems/migrate-xml-theme-to-compose.md +171 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/compose-in-views.md +299 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/views-in-compose.md +286 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/setup-compose-dependencies-and-compiler.md +197 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/references/identify-optimal-xml-candidate.md +31 -0
- package/skills/mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/references/xml-layout-migration.md +86 -0
- package/skills/mobile-android/references/ui/navigation-3/GUIDE.md +86 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/index.md +51 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md +670 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md +147 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md +89 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +85 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +90 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +195 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md +200 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional-transitions.md +182 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md +230 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.md +176 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.md +140 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.md +184 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md +107 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/lifecycle-owner.md +185 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +145 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +283 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +287 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +468 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +371 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md +273 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md +266 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +435 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +244 -0
- package/skills/mobile-android/references/ui/navigation-3/references/android/guide/navigation/type-safe-destinations.md +129 -0
- package/skills/mobile-android/references/ui/navigation-event/GUIDE.md +288 -0
- package/skills/mobile-android/references/ui/navigation-event/references/android/guide/navigation/navigation-event/dispatcher.md +134 -0
- package/skills/mobile-android/references/ui/navigation-event/references/android/guide/navigation/navigation-event/handle-back.md +217 -0
- package/skills/mobile-android/references/ui/navigation-event/references/android/guide/navigation/navigation-event/index.md +83 -0
- package/skills/mobile-android/references/ui/navigation-event/references/android/guide/navigation/navigation-event/setup.md +32 -0
- package/skills/mobile-android/references/ui/styles/GUIDE.md +209 -0
- package/skills/mobile-android/references/ui/styles/references/android/develop/ui/compose/designsystems/custom.md +459 -0
- package/skills/mobile-android/references/ui/styles/references/android/develop/ui/compose/styles/fundamentals.md +421 -0
- package/skills/mobile-android/references/ui/styles/references/android/develop/ui/compose/styles/state-animations.md +461 -0
- package/skills/mobile-android/references/ui/styles/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +48 -0
- package/skills/mobile-android/references/ui/styles/references/android/develop/ui/compose/styles/theming.md +269 -0
- package/skills/mobile-android/references/ui.md +14 -0
- package/skills/mobile-architecture/SKILL.md +52 -0
- package/skills/mobile-architecture/references/android.md +54 -0
- package/skills/{flutter-app-architecture/SKILL.md → mobile-architecture/references/flutter/app-architecture.md} +1 -8
- package/skills/{bloc/SKILL.md → mobile-architecture/references/flutter/bloc.md} +1 -8
- package/skills/{flutter-change-notifier/SKILL.md → mobile-architecture/references/flutter/change-notifier.md} +1 -8
- package/skills/{architecture-feature-first/SKILL.md → mobile-architecture/references/flutter/feature-first.md} +1 -8
- package/skills/{flutter-login-usecase/SKILL.md → mobile-architecture/references/flutter/login-use-case.md} +0 -7
- package/skills/{flutter-managing-state/SKILL.md → mobile-architecture/references/flutter/managing-state.md} +2 -11
- package/skills/{provider/SKILL.md → mobile-architecture/references/flutter/provider.md} +1 -8
- package/skills/{flutter-apply-architecture-best-practices/SKILL.md → mobile-architecture/references/flutter/recommended-architecture.md} +2 -11
- package/skills/{riverpod/SKILL.md → mobile-architecture/references/flutter/riverpod.md} +1 -8
- package/skills/mobile-architecture/references/flutter.md +21 -0
- package/skills/mobile-architecture/references/ios.md +58 -0
- package/skills/mobile-architecture/references/react-native.md +61 -0
- package/skills/mobile-code-review/SKILL.md +70 -0
- package/skills/mobile-code-review/references/android.md +51 -0
- package/skills/{code-review/SKILL.md → mobile-code-review/references/flutter/pr-review.md} +1 -8
- package/skills/{flutter-project-audit/SKILL.md → mobile-code-review/references/flutter/project-audit.md} +0 -7
- package/skills/{dart-run-static-analysis/SKILL.md → mobile-code-review/references/flutter/static-analysis.md} +2 -11
- package/skills/{flutter-widget-review/SKILL.md → mobile-code-review/references/flutter/widget-review.md} +0 -7
- package/skills/mobile-code-review/references/flutter.md +18 -0
- package/skills/mobile-code-review/references/ios.md +49 -0
- package/skills/mobile-code-review/references/react-native.md +58 -0
- package/skills/mobile-debug/SKILL.md +50 -0
- package/skills/mobile-debug/references/android/gradle-build.md +63 -0
- package/skills/mobile-debug/references/android.md +26 -0
- package/skills/mobile-debug/references/flutter/build.md +58 -0
- package/skills/{flutter-errors/SKILL.md → mobile-debug/references/flutter/errors.md} +1 -8
- package/skills/{flutter-fix-layout-issues/SKILL.md → mobile-debug/references/flutter/layout-issues.md} +2 -11
- package/skills/{dart-resolve-package-conflicts/SKILL.md → mobile-debug/references/flutter/package-conflicts.md} +2 -11
- package/skills/{dart-fix-runtime-errors/SKILL.md → mobile-debug/references/flutter/runtime-errors.md} +2 -11
- package/skills/mobile-debug/references/flutter.md +23 -0
- package/skills/mobile-debug/references/ios/cocoapods.md +57 -0
- package/skills/mobile-debug/references/ios/xcode-build.md +58 -0
- package/skills/mobile-debug/references/ios.md +23 -0
- package/skills/mobile-debug/references/react-native.md +43 -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-flutter/SKILL.md +30 -0
- package/skills/{flutter-improving-accessibility/SKILL.md → mobile-flutter/references/accessibility-i18n/accessibility.md} +2 -11
- package/skills/{flutter-setup-localization/SKILL.md → mobile-flutter/references/accessibility-i18n/localization.md} +2 -11
- package/skills/mobile-flutter/references/accessibility-i18n.md +8 -0
- package/skills/{dart-3-updates/SKILL.md → mobile-flutter/references/dart/dart-3.md} +1 -8
- package/skills/{effective-dart/SKILL.md → mobile-flutter/references/dart/effective-dart.md} +1 -8
- package/skills/{dart-use-pattern-matching/SKILL.md → mobile-flutter/references/dart/pattern-matching/GUIDE.md} +2 -18
- package/skills/mobile-flutter/references/dart.md +9 -0
- package/skills/{flutter-caching-data/SKILL.md → mobile-flutter/references/data/caching.md} +2 -11
- package/skills/{flutter-working-with-databases/SKILL.md → mobile-flutter/references/data/databases.md} +2 -11
- package/skills/{flutter-use-http-package/SKILL.md → mobile-flutter/references/data/http.md} +2 -11
- package/skills/{flutter-implement-json-serialization/SKILL.md → mobile-flutter/references/data/json-serialization.md} +2 -11
- package/skills/mobile-flutter/references/data.md +10 -0
- package/skills/{flutter-interoperating-with-native-apis/SKILL.md → mobile-flutter/references/native/native-apis.md} +2 -11
- package/skills/{flutter-embedding-native-views/SKILL.md → mobile-flutter/references/native/native-views.md} +2 -11
- package/skills/{flutter-building-plugins/SKILL.md → mobile-flutter/references/native/plugins.md} +2 -11
- package/skills/mobile-flutter/references/native.md +9 -0
- package/skills/{flutter-reducing-app-size/SKILL.md → mobile-flutter/references/performance/app-size.md} +2 -11
- package/skills/{flutter-handling-concurrency/SKILL.md → mobile-flutter/references/performance/concurrency.md} +2 -11
- package/skills/mobile-flutter/references/performance.md +8 -0
- package/skills/{flutter-setting-up-on-macos/SKILL.md → mobile-flutter/references/setup/macos.md} +2 -11
- package/skills/mobile-flutter/references/setup.md +7 -0
- package/skills/{flutter-animating-apps/SKILL.md → mobile-flutter/references/ui/animations.md} +2 -11
- package/skills/{flutter-building-forms/SKILL.md → mobile-flutter/references/ui/forms.md} +2 -11
- package/skills/{flutter-adding-home-screen-widgets/SKILL.md → mobile-flutter/references/ui/home-screen-widgets.md} +2 -11
- package/skills/{flutter-building-layouts/SKILL.md → mobile-flutter/references/ui/layouts.md} +2 -11
- package/skills/{flutter-build-responsive-layout/SKILL.md → mobile-flutter/references/ui/responsive-layout.md} +2 -11
- package/skills/{flutter-setup-declarative-routing/SKILL.md → mobile-flutter/references/ui/routing.md} +2 -11
- package/skills/{flutter-theming-apps/SKILL.md → mobile-flutter/references/ui/theming.md} +2 -11
- package/skills/{flutter-add-widget-preview/SKILL.md → mobile-flutter/references/ui/widget-previews.md} +2 -11
- package/skills/mobile-flutter/references/ui.md +14 -0
- package/skills/mobile-ios/SKILL.md +25 -0
- package/skills/mobile-ios/references/data-networking.md +70 -0
- package/skills/mobile-ios/references/performance-release.md +37 -0
- package/skills/mobile-ios/references/platform-features.md +52 -0
- package/skills/mobile-ios/references/ui-navigation.md +64 -0
- package/skills/mobile-rn/SKILL.md +26 -0
- package/skills/mobile-rn/references/data-networking.md +59 -0
- package/skills/mobile-rn/references/performance-release.md +46 -0
- package/skills/mobile-rn/references/platform-features.md +40 -0
- package/skills/mobile-rn/references/ui-navigation.md +62 -0
- package/skills/mobile-security/SKILL.md +82 -0
- package/skills/mobile-security/references/android/intent-security.md +523 -0
- package/skills/mobile-security/references/android.md +37 -0
- package/skills/{flutter-secure-token-store/SKILL.md → mobile-security/references/flutter/secure-token-store.md} +1 -8
- package/skills/mobile-security/references/flutter.md +30 -0
- package/skills/mobile-security/references/ios.md +27 -0
- package/skills/mobile-security/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/mobile-security-audit/SKILL.md +0 -101
- /package/skills/{dart-use-pattern-matching → mobile-flutter/references/dart/pattern-matching}/examples/json_patterns.dart +0 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
The Media3 [`cast`](https://developer.android.com/reference/androidx/media3/cast/package-summary) module extends your media playback experience to
|
|
2
|
+
Cast devices. It lets your app cast content to [compatible devices](https://developer.android.com/media/media3/cast/create-castplayer#get-device),
|
|
3
|
+
such as TVs and speakers. The [sender](https://developers.google.com/cast/glossary#sender) app acts as a remote controller for media
|
|
4
|
+
playback on the [receiver](https://developers.google.com/cast/glossary#receiver) device. This module integrates with the [Jetpack
|
|
5
|
+
Media3](https://developer.android.com/guide/topics/media/media3) library, so you can use the same `Player` interface and UI
|
|
6
|
+
components for both local and remote playback.
|
|
7
|
+
|
|
8
|
+
## Media3 CastPlayer
|
|
9
|
+
|
|
10
|
+
The `CastPlayer` is a media player API included in Media3 that supports both
|
|
11
|
+
local and remote media playback. It implements the `Player` interface to manage
|
|
12
|
+
playback, simplifying the integration of casting into your media experience.
|
|
13
|
+
|
|
14
|
+
[Go to Media3 CastPlayer](https://developer.android.com/media/media3/cast/create-castplayer)
|
|
15
|
+
|
|
16
|
+
## Other Cast integrations
|
|
17
|
+
|
|
18
|
+
The Cast SDK overview explains how to integrate Cast with other platforms, such
|
|
19
|
+
as building a receiver app or integrating with the web sender SDK.
|
|
20
|
+
|
|
21
|
+
[Explore Cast SDK](https://developers.google.com/cast/docs/developers)
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Android: Camera and media
|
|
2
|
+
|
|
3
|
+
CameraX and Media3 Cast.
|
|
4
|
+
|
|
5
|
+
| Guide | What it covers |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [camerax](media/camerax/GUIDE.md) | Provide technical guidance for Android camera development with CameraX. |
|
|
8
|
+
| [media3-cast-integration](media/media3-cast-integration/GUIDE.md) | Implements Google Cast support in Android apps using Jetpack Media3. |
|
|
9
|
+
|
|
10
|
+
Each guide lives in its own folder with its references and scripts. Relative paths in a guide — and `<repo_root>` where a guide uses it — refer to that guide's folder.
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
> Adapted from the `appfunctions` skill in [android/skills](https://github.com/android/skills) (Apache-2.0). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
3
|
+
Analyzes Android apps to identify key user workflows for AppFunctions such as
|
|
4
|
+
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
|
|
6
|
+
UI.
|
|
7
|
+
|
|
8
|
+
Generates Kotlin code to expose these workflows to the Android system,
|
|
9
|
+
allowing agents to discover and execute them on-device.
|
|
10
|
+
|
|
11
|
+
Also refines KDoc documentation to ensure AI agents correctly
|
|
12
|
+
understand and use the provided functionality.
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
The app must **`targetSdk 36`** or newer and use **`compileSdk 37`** or newer as
|
|
17
|
+
AppFunctions, part of the Android platform API, are available from Android 16
|
|
18
|
+
onwards.
|
|
19
|
+
Always use the Jetpack library because it handles backward compatibility.
|
|
20
|
+
|
|
21
|
+
## Workflows
|
|
22
|
+
|
|
23
|
+
This skill enables the caller to discover features that will be provided to
|
|
24
|
+
system agents, implement these with AppFunctions, improve function description
|
|
25
|
+
for agents, and use ADB commands for local evaluation and testing.
|
|
26
|
+
|
|
27
|
+
The full AppFunction development flow consists of these four steps:
|
|
28
|
+
|
|
29
|
+
- *[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."
|
|
30
|
+
- *[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."
|
|
31
|
+
- *[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.
|
|
32
|
+
- *[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.
|
|
33
|
+
|
|
34
|
+
If users request a subset of steps, you must encourage them to use all steps.
|
|
35
|
+
|
|
36
|
+
If they apply, you must load the following references:
|
|
37
|
+
|
|
38
|
+
- *[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.
|
|
39
|
+
- *[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.
|
|
40
|
+
|
|
41
|
+
## Critical constraints
|
|
42
|
+
|
|
43
|
+
- **Modular consistency**: You must refine KDocs immediately after you generate AppFunction implementations.
|
|
44
|
+
- **Security**: Don't expose sensitive data or run destructive actions without user confirmation.
|
|
45
|
+
|
|
46
|
+
## Troubleshooting
|
|
47
|
+
|
|
48
|
+
- If you encounter build-time errors such as Kotlin Symbol Processing (KSP) issues, see [Implementation and configuration](references/implementation-configuration.md).
|
|
49
|
+
- If you encounter runtime errors such as missing services or execution failures, see [Testing and debugging](references/adb-interaction-testing.md).
|
|
50
|
+
- If you need architecture definitions and vocabulary, see [Context and terminology](references/context.md).
|
|
51
|
+
- 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`.
|
|
@@ -0,0 +1,282 @@
|
|
|
1
|
+
Specialized instructions for generating Kotlin implementations of AppFunctions,
|
|
2
|
+
handling system-wide configuration, and managing build dependencies.
|
|
3
|
+
|
|
4
|
+
## Instructions
|
|
5
|
+
|
|
6
|
+
### Step 1: Configure Gradle dependencies and KSP
|
|
7
|
+
|
|
8
|
+
Add the following to `build.gradle.kts`. App Functions requires the KSP (Kotlin
|
|
9
|
+
Symbol Processing) plugin.
|
|
10
|
+
|
|
11
|
+
1. **Version check** : Use library version `1.0.0-alpha10` or later from maven.google.com.
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
```kotlin
|
|
15
|
+
implementation(libs.androidx.appfunctions)
|
|
16
|
+
ksp(libs.androidx.appfunctions.compiler)
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
<br />
|
|
20
|
+
|
|
21
|
+
<br />
|
|
22
|
+
|
|
23
|
+
<br />
|
|
24
|
+
|
|
25
|
+
### Step 2: Set up app metadata XML
|
|
26
|
+
|
|
27
|
+
Describe the app's capabilities to the LLM by defining
|
|
28
|
+
`res/xml/app_metadata.xml`.
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
```xml
|
|
32
|
+
<AppFunctionAppMetadata xmlns:appfn="http://schemas.android.com/apk/androidx.appfunctions"
|
|
33
|
+
appfn:description="This app manages user tasks and reminders.
|
|
34
|
+
Operational Patterns:
|
|
35
|
+
- Use 'createTask' to add new tasks or reminders with titles and content.
|
|
36
|
+
Constraints:
|
|
37
|
+
- Title or content must be non-null when creating a task."
|
|
38
|
+
appfn:displayDescription="@string/user_visible_description" />
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
<br />
|
|
42
|
+
|
|
43
|
+
Register the service and reference the app metadata in `AndroidManifest.xml`
|
|
44
|
+
within the `<application>` tag:
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
```xml
|
|
48
|
+
<service
|
|
49
|
+
android:name="com.example.snippets.ai.TaskAppFunctionService"
|
|
50
|
+
android:permission="android.permission.BIND_APP_FUNCTION_SERVICE"
|
|
51
|
+
android:exported="true"
|
|
52
|
+
tools:targetApi="36">
|
|
53
|
+
<property
|
|
54
|
+
android:name="android.app.appfunctions.schema"
|
|
55
|
+
android:value="app_functions_schema.xsd" />
|
|
56
|
+
<property
|
|
57
|
+
android:name="android.app.appfunctions.v2"
|
|
58
|
+
android:value="task_app_function_service.xml" />
|
|
59
|
+
<intent-filter>
|
|
60
|
+
<action android:name="android.app.appfunctions.AppFunctionService" />
|
|
61
|
+
</intent-filter>
|
|
62
|
+
</service>
|
|
63
|
+
<property
|
|
64
|
+
android:name="android.app.appfunctions.app_metadata"
|
|
65
|
+
android:resource="@xml/app_metadata" />
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
<br />
|
|
69
|
+
|
|
70
|
+
### Step 3: Implement functions
|
|
71
|
+
|
|
72
|
+
When generating Kotlin code for AppFunctions, you MUST adhere to these rules:
|
|
73
|
+
|
|
74
|
+
1. **Annotations** :
|
|
75
|
+
- Annotate the function with `@AppFunction(isDescribedByKDoc = true)`.
|
|
76
|
+
- Annotate associated data classes with `@AppFunctionSerializable(isDescribedByKDoc = true)`.
|
|
77
|
+
2. **Parameter strategy** :
|
|
78
|
+
- **Specificity**: Keep parameters specific. State objects must be unambiguous.
|
|
79
|
+
- **Optionality**: If a parameter isn't essential, make it optional with a default value.
|
|
80
|
+
3. **Execution and threading** :
|
|
81
|
+
- Use `suspend` functions.
|
|
82
|
+
- To avoid blocking the Android UI thread, always run AppFunction implementations on a background dispatcher, such as `withContext(Dispatchers.IO)`.
|
|
83
|
+
4. **Supported types** :
|
|
84
|
+
- **Primitives** : `Int`, `Long`, `Float`, `Double`, `Boolean`
|
|
85
|
+
- **Arrays** : `IntArray`, `LongArray`, `FloatArray`, `DoubleArray`, `BooleanArray`
|
|
86
|
+
- **Native types** : `String`, `PendingIntent`, `Uri`, `LocalTime`, `LocalDate`, `LocalDateTime`, `Instant`. Prefer using `LocalDateTime` or `Instant` for date and time fields.
|
|
87
|
+
- **Custom objects** : Classes annotated with `@AppFunctionSerializable`.
|
|
88
|
+
- **Collections** : `List` of any supported non-primitive type
|
|
89
|
+
5. **Default values** :
|
|
90
|
+
- Use defaults that align with the type's empty state, such as `0` for `Int`, `null` for nullable objects, and `emptyList()` for `List`.
|
|
91
|
+
6. **Error handling** :
|
|
92
|
+
- Throw subclasses of `androidx.appfunctions.AppFunctionException` to report errors to callers.
|
|
93
|
+
7. **Security** :
|
|
94
|
+
- Don't expose highly sensitive user data, such as passwords or financial details.
|
|
95
|
+
- Don't expose irreversible destructive actions without confirmation steps.
|
|
96
|
+
|
|
97
|
+
### Step 4: Set up dependency injection and service entry points
|
|
98
|
+
|
|
99
|
+
In version 1.0.0-alpha10 and later, App Functions use the compile-time
|
|
100
|
+
`@AppFunctionServiceEntryPoint` architecture. Create an abstract class extending
|
|
101
|
+
`AppFunctionService` annotated with `@AppFunctionServiceEntryPoint`. KSP
|
|
102
|
+
generates the concrete service class and XML schema.
|
|
103
|
+
|
|
104
|
+
#### Recommended approach with Hilt
|
|
105
|
+
|
|
106
|
+
Annotate your service with `@AndroidEntryPoint` and inject your data
|
|
107
|
+
repositories or use cases using standard `@Inject internal lateinit var`:
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
```kotlin
|
|
111
|
+
@RequiresApi(36)
|
|
112
|
+
@AndroidEntryPoint
|
|
113
|
+
@AppFunctionServiceEntryPoint(
|
|
114
|
+
serviceName = "ConfigAppFunctionServiceHeader",
|
|
115
|
+
appFunctionXmlFileName = "config_app_function_service_header",
|
|
116
|
+
)
|
|
117
|
+
abstract class BaseAppFunctionServiceHeader : AppFunctionService() {
|
|
118
|
+
@Inject internal lateinit var messageRepository: MessageRepository
|
|
119
|
+
|
|
120
|
+
@AppFunction(isDescribedByKDoc = true)
|
|
121
|
+
internal suspend fun send(
|
|
122
|
+
name: String,
|
|
123
|
+
endpointValue: String,
|
|
124
|
+
messageBody: String,
|
|
125
|
+
): MessageResult {
|
|
126
|
+
return messageRepository.send(name, endpointValue, messageBody)
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
<br />
|
|
132
|
+
|
|
133
|
+
#### Framework-agnostic approach with alternative dependency injection or service locators
|
|
134
|
+
|
|
135
|
+
While Hilt is recommended, many Android applications implement AppFunctions with
|
|
136
|
+
alternative dependency injection frameworks (like Koin, Anvil, or manual Service
|
|
137
|
+
Locators). Because `AppFunctionService` inherits from Android
|
|
138
|
+
`android.app.Service` (and therefore `Context`), you are able access your
|
|
139
|
+
application's DI container directly through `applicationContext` in property
|
|
140
|
+
getters or during service lifecycle execution:
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
```kotlin
|
|
144
|
+
@RequiresApi(36)
|
|
145
|
+
@AppFunctionServiceEntryPoint(
|
|
146
|
+
serviceName = "ServiceLocatorConfigAppFunctionService",
|
|
147
|
+
appFunctionXmlFileName = "service_locator_config_app_function_service",
|
|
148
|
+
)
|
|
149
|
+
abstract class BaseAppFunctionServiceLocator : AppFunctionService() {
|
|
150
|
+
// Example using a manual Service Locator / Application container
|
|
151
|
+
private val messageRepository by lazy {
|
|
152
|
+
(applicationContext as AppFunctionApplication).appContainer.messageRepository
|
|
153
|
+
}
|
|
154
|
+
// Or with Koin / alternative DI locators:
|
|
155
|
+
// private val messageRepository: MessageRepository by inject()
|
|
156
|
+
|
|
157
|
+
@AppFunction(isDescribedByKDoc = true)
|
|
158
|
+
internal suspend fun send(
|
|
159
|
+
name: String,
|
|
160
|
+
endpointValue: String,
|
|
161
|
+
messageBody: String,
|
|
162
|
+
): MessageResult {
|
|
163
|
+
return messageRepository.send(name, endpointValue, messageBody)
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
<br />
|
|
169
|
+
|
|
170
|
+
### Step 5: Architectural cleanliness
|
|
171
|
+
|
|
172
|
+
Don't attempt to make an `AppFunction` class or method OS-agnostic---App Functions are inherently part of the Android platform integration in `androidx.appfunctions`. For architectural cleanliness, use existing
|
|
173
|
+
application functionality (such as existing repositories, use cases, or domain
|
|
174
|
+
orchestrators) to execute the behavior within your `@AppFunction` methods rather
|
|
175
|
+
than creating redundant abstraction layers around the OS service.
|
|
176
|
+
|
|
177
|
+
<br />
|
|
178
|
+
|
|
179
|
+
## Critical constraints
|
|
180
|
+
|
|
181
|
+
### KSP compliance for serializables
|
|
182
|
+
|
|
183
|
+
**Critical constraints** : For `@AppFunctionSerializable` data classes, KSP
|
|
184
|
+
only extracts documentation if it's written as inline KDoc directly for each
|
|
185
|
+
property definition. Don't use class-level `@param` or `@property` tags.
|
|
186
|
+
|
|
187
|
+
### Package integrity
|
|
188
|
+
|
|
189
|
+
Configuration APIs and the `@AppFunction` annotation are located in
|
|
190
|
+
`androidx.appfunctions`.
|
|
191
|
+
|
|
192
|
+
## Examples
|
|
193
|
+
|
|
194
|
+
### Example: Serializable with inline KDoc
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
```kotlin
|
|
198
|
+
/** The parameter to create the task. */
|
|
199
|
+
@AppFunctionSerializable(isDescribedByKDoc = true)
|
|
200
|
+
data class CreateTaskParams(
|
|
201
|
+
/** The title of the task. */
|
|
202
|
+
val title: String?,
|
|
203
|
+
/** The content of the task. */
|
|
204
|
+
val content: String?,
|
|
205
|
+
)
|
|
206
|
+
|
|
207
|
+
/** The user-created task. */
|
|
208
|
+
@AppFunctionSerializable(isDescribedByKDoc = true)
|
|
209
|
+
data class Task(
|
|
210
|
+
/** The ID of the task. */
|
|
211
|
+
val id: String,
|
|
212
|
+
/** The title of the task. */
|
|
213
|
+
val title: String,
|
|
214
|
+
/** The content of the task. */
|
|
215
|
+
val content: String,
|
|
216
|
+
)
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
<br />
|
|
220
|
+
|
|
221
|
+
<br />
|
|
222
|
+
|
|
223
|
+
### Example: Implementation detail
|
|
224
|
+
|
|
225
|
+
|
|
226
|
+
```kotlin
|
|
227
|
+
@RequiresApi(36)
|
|
228
|
+
@AndroidEntryPoint
|
|
229
|
+
@AppFunctionServiceEntryPoint(
|
|
230
|
+
serviceName = "TaskAppFunctionService",
|
|
231
|
+
appFunctionXmlFileName = "task_app_function_service",
|
|
232
|
+
)
|
|
233
|
+
abstract class BaseTaskAppFunctionService : AppFunctionService() {
|
|
234
|
+
@Inject internal lateinit var taskRepository: TaskRepository
|
|
235
|
+
|
|
236
|
+
/**
|
|
237
|
+
* Creates a task based on [createTaskParams].
|
|
238
|
+
*
|
|
239
|
+
* @param createTaskParams The parameter to describe how to create the task.
|
|
240
|
+
*/
|
|
241
|
+
@AppFunction(isDescribedByKDoc = true)
|
|
242
|
+
suspend fun createTask(
|
|
243
|
+
createTaskParams: CreateTaskParams,
|
|
244
|
+
): Task = withContext(Dispatchers.IO) {
|
|
245
|
+
// Developers can use predefined exceptions to let the agent know
|
|
246
|
+
// why it failed.
|
|
247
|
+
if (createTaskParams.title == null && createTaskParams.content == null) {
|
|
248
|
+
throw AppFunctionInvalidArgumentException("Title or content should be non-null")
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
val id = taskRepository.createTask(
|
|
252
|
+
createTaskParams.title,
|
|
253
|
+
createTaskParams.content
|
|
254
|
+
)
|
|
255
|
+
|
|
256
|
+
return@withContext taskRepository
|
|
257
|
+
.getTask(id)
|
|
258
|
+
?.toTask()
|
|
259
|
+
?: throw AppFunctionElementNotFoundException("Task not found for ID = $id")
|
|
260
|
+
}
|
|
261
|
+
|
|
262
|
+
// Maps internal TaskEntity
|
|
263
|
+
private fun TaskEntity.toTask() = Task(id = id, title = title, content = description)
|
|
264
|
+
}
|
|
265
|
+
```
|
|
266
|
+
|
|
267
|
+
<br />
|
|
268
|
+
|
|
269
|
+
<br />
|
|
270
|
+
|
|
271
|
+
## Troubleshooting
|
|
272
|
+
|
|
273
|
+
### Error: "AppFunction unavailable" or "Metadata missing"
|
|
274
|
+
|
|
275
|
+
**Cause**: The AppSearch indexing failed to extract the schema correctly.
|
|
276
|
+
|
|
277
|
+
**Solution**:
|
|
278
|
+
|
|
279
|
+
1. Verify `@AppFunctionSerializable` classes use inline KDoc comments, not class-level `@param` tags.
|
|
280
|
+
2. Check that the `assets/<appFunctionXmlFileName>.xml` file exists in the APK.
|
|
281
|
+
3. Confirm the `ksp("androidx.appfunctions:appfunctions-compiler")` dependency is correctly applied.
|
|
282
|
+
4. Ensure the `ksp` argument `appfunctions:aggregateAppFunctions` is set to `"true"`.
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
Optimizes AppFunction KDoc for AI agents and Model Context Protocol.
|
|
2
|
+
|
|
3
|
+
## Instructions
|
|
4
|
+
|
|
5
|
+
### Workflow: Agent-centric documentation
|
|
6
|
+
|
|
7
|
+
1. **Identify the core outcome** : Start the description with a strong imperative verb, for example, "Search", "Create", or "Update". Focus on the *user benefit*, not the code implementation.
|
|
8
|
+
2. **Workflow dependencies** : Explicitly state if another function must be called first using the standard phrase: **Required workflow: Call "Function
|
|
9
|
+
A" first to "Objective"**.
|
|
10
|
+
3. **Parameter documentation** :
|
|
11
|
+
- For **functions** : Use specific `@param` tags. Isolate validation rules and default values here.
|
|
12
|
+
- For **serializables** : Use inline KDoc directly for each property declaration. KSP **won't** extract documentation from class-level tags.
|
|
13
|
+
4. **Error surface mapping** : Rewrite `@throws` descriptions to provide useful recovery steps for the AI agent, for example "If "Error", suggest the user check their internet connection."
|
|
14
|
+
|
|
15
|
+
### Workflow: Global app description for server instructions
|
|
16
|
+
|
|
17
|
+
When writing the `appfn:description` for `app_metadata.xml`, follow these
|
|
18
|
+
instructions:
|
|
19
|
+
|
|
20
|
+
1. **Capture cross-function relationships**: Explain dependencies or sequences between tools, for example, "Always call 'authenticate' before fetching data.".
|
|
21
|
+
2. **Document operational patterns**: Guide the LLM on token-conserving usage, for example, "Use 'batch_update' over multiple 'update' calls."
|
|
22
|
+
3. **Specify constraints**: Define clear boundaries, for example, "File operations limited to workspace" or "Rate limit: 10 requests per minute."
|
|
23
|
+
4. **Anti-patterns** :
|
|
24
|
+
- Don't repeat individual function descriptions.
|
|
25
|
+
- Don't include marketing claims or subjective praise.
|
|
26
|
+
- Don't attempt to prompt model personality or conversation style.
|
|
27
|
+
|
|
28
|
+
## Critical constraints
|
|
29
|
+
|
|
30
|
+
### Descriptive, not imperative
|
|
31
|
+
|
|
32
|
+
Describe what the function *does* , not what the LLM *must* do. Avoid phrases
|
|
33
|
+
like "You must call this..." in favor of "This function provides...".
|
|
34
|
+
|
|
35
|
+
### No "fluff"
|
|
36
|
+
|
|
37
|
+
Remove conversational padding like "This method is used to..." or "Helpful
|
|
38
|
+
for...". Be concise and technical.
|
|
39
|
+
|
|
40
|
+
### Inline KDoc for serializables
|
|
41
|
+
|
|
42
|
+
**Mandatory** : For `@AppFunctionSerializable` classes, documentation must be
|
|
43
|
+
inline for each property. KSP ignores class-level `@param` or `@property` tags
|
|
44
|
+
for these classes.
|
|
45
|
+
|
|
46
|
+
## Examples
|
|
47
|
+
|
|
48
|
+
### Example: MCP refactoring
|
|
49
|
+
|
|
50
|
+
**Original**:
|
|
51
|
+
|
|
52
|
+
`/** This function helps you find people. */`
|
|
53
|
+
|
|
54
|
+
**Refined**:
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Search for message recipients by name or email.
|
|
58
|
+
* Required workflow: Call this before "sendMessage" to obtain valid recipient IDs.
|
|
59
|
+
* @param query Search string for name/email. If null, returns 3 most recent contacts.
|
|
60
|
+
* @return List of "Recipient" objects matching the query.
|
|
61
|
+
*/
|
|
62
|
+
|
|
63
|
+
### Example: Global app description
|
|
64
|
+
|
|
65
|
+
**Refined**:
|
|
66
|
+
|
|
67
|
+
This app provides functions for task management and team collaboration.
|
|
68
|
+
|
|
69
|
+
Operational Patterns:
|
|
70
|
+
- Always use 'searchUsers' to resolve user handles to internal IDs before calling 'assignTask'.
|
|
71
|
+
- Prefer 'batchUpdateStatus' when modifying more than three tasks simultaneously to reduce latency.
|
|
72
|
+
|
|
73
|
+
Constraints:
|
|
74
|
+
- Task titles are limited to 100 characters.
|
|
75
|
+
- Attachment uploads are limited to 5 MB.
|