reis-mobile 0.4.0 → 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 +15 -0
- package/README.md +35 -204
- package/THIRD_PARTY_NOTICES.md +10 -13
- package/agents/android-performance-engineer.md +2 -2
- package/agents/mobile-code-reviewer.md +2 -0
- package/agents/rn-architect.md +1 -1
- package/commands/debug.md +1 -1
- package/core/registry/registry.mjs +18 -11
- package/package.json +24 -3
- package/skills/mobile-android/SKILL.md +29 -0
- package/skills/{android-agp-9-upgrade/SKILL.md → mobile-android/references/build-and-performance/agp-9-upgrade/GUIDE.md} +1 -20
- package/skills/{android-cli/SKILL.md → mobile-android/references/build-and-performance/android-cli/GUIDE.md} +1 -25
- package/skills/{android-profiler/SKILL.md → mobile-android/references/build-and-performance/android-profiler/GUIDE.md} +1 -27
- package/skills/{android-r8-analyzer/SKILL.md → mobile-android/references/build-and-performance/r8-analyzer/GUIDE.md} +1 -20
- package/skills/mobile-android/references/build-and-performance.md +12 -0
- package/skills/{android-display-glasses-with-jetpack-compose-glimmer/SKILL.md → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer/GUIDE.md} +1 -24
- package/skills/{android-leanback-to-compose-tv-migration/SKILL.md → mobile-android/references/devices/leanback-to-compose-tv-migration/GUIDE.md} +1 -37
- package/skills/{android-wear-compose-m3/SKILL.md → mobile-android/references/devices/wear-compose-m3/GUIDE.md} +1 -25
- package/skills/mobile-android/references/devices.md +11 -0
- package/skills/{android-restore-credentials/SKILL.md → mobile-android/references/identity/restore-credentials/GUIDE.md} +1 -23
- package/skills/{android-verified-email/SKILL.md → mobile-android/references/identity/verified-email/GUIDE.md} +1 -28
- package/skills/mobile-android/references/identity.md +10 -0
- package/skills/{android-camerax/SKILL.md → mobile-android/references/media/camerax/GUIDE.md} +1 -30
- package/skills/{android-media3-cast-integration/SKILL.md → mobile-android/references/media/media3-cast-integration/GUIDE.md} +1 -24
- package/skills/mobile-android/references/media.md +10 -0
- package/skills/{android-appfunctions/SKILL.md → mobile-android/references/on-device-ai/appfunctions/GUIDE.md} +1 -24
- package/skills/{android-ml-kit-genai-prompt-api/SKILL.md → mobile-android/references/on-device-ai/ml-kit-genai-prompt-api/GUIDE.md} +1 -20
- package/skills/mobile-android/references/on-device-ai.md +10 -0
- package/skills/{android-engage-sdk-integration/SKILL.md → mobile-android/references/play/engage-sdk-integration/GUIDE.md} +1 -19
- package/skills/{android-play-billing-library-version-upgrade/SKILL.md → mobile-android/references/play/play-billing-library-version-upgrade/GUIDE.md} +1 -22
- package/skills/{android-play-policy-insights/SKILL.md → mobile-android/references/play/play-policy-insights/GUIDE.md} +1 -43
- package/skills/mobile-android/references/play.md +11 -0
- package/skills/{android-adaptive/SKILL.md → mobile-android/references/ui/adaptive/GUIDE.md} +1 -25
- package/skills/{android-edge-to-edge/SKILL.md → mobile-android/references/ui/edge-to-edge/GUIDE.md} +1 -21
- package/skills/{android-migrate-xml-views-to-jetpack-compose/SKILL.md → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose/GUIDE.md} +1 -24
- package/skills/{android-navigation-3/SKILL.md → mobile-android/references/ui/navigation-3/GUIDE.md} +1 -37
- package/skills/{android-navigation-event/SKILL.md → mobile-android/references/ui/navigation-event/GUIDE.md} +1 -25
- package/skills/{android-styles/SKILL.md → mobile-android/references/ui/styles/GUIDE.md} +1 -21
- 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/{flutter-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/{flutter-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/{flutter-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/{flutter-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/{android-code-review/SKILL.md → mobile-code-review/references/android.md} +1 -8
- package/skills/{flutter-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/{flutter-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/{ios-code-review/SKILL.md → mobile-code-review/references/ios.md} +1 -8
- package/skills/mobile-code-review/references/react-native.md +58 -0
- package/skills/mobile-debug/SKILL.md +50 -0
- package/skills/{android-gradle-build-debug/SKILL.md → mobile-debug/references/android/gradle-build.md} +0 -8
- package/skills/mobile-debug/references/android.md +26 -0
- package/skills/{flutter-build-debug/SKILL.md → mobile-debug/references/flutter/build.md} +5 -13
- 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/{flutter-dart-resolve-package-conflicts/SKILL.md → mobile-debug/references/flutter/package-conflicts.md} +2 -11
- package/skills/{flutter-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/{ios-cocoapods-debug/SKILL.md → mobile-debug/references/ios/cocoapods.md} +1 -9
- package/skills/{ios-xcode-build-debug/SKILL.md → mobile-debug/references/ios/xcode-build.md} +0 -8
- package/skills/mobile-debug/references/ios.md +23 -0
- package/skills/mobile-debug/references/react-native.md +43 -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/{flutter-dart-3-updates/SKILL.md → mobile-flutter/references/dart/dart-3.md} +1 -8
- package/skills/{flutter-effective-dart/SKILL.md → mobile-flutter/references/dart/effective-dart.md} +1 -8
- package/skills/{flutter-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/{android-intent-security/SKILL.md → mobile-security/references/android/intent-security.md} +1 -28
- 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-security-audit/SKILL.md +0 -101
- /package/skills/{android-agp-9-upgrade → mobile-android/references/build-and-performance/agp-9-upgrade}/references/android/build/migrate-to-built-in-kotlin.md +0 -0
- /package/skills/{android-agp-9-upgrade → mobile-android/references/build-and-performance/agp-9-upgrade}/references/android/build/releases/agp-9-0-0-release-notes.md +0 -0
- /package/skills/{android-agp-9-upgrade → mobile-android/references/build-and-performance/agp-9-upgrade}/references/buildconfig.md +0 -0
- /package/skills/{android-agp-9-upgrade → mobile-android/references/build-and-performance/agp-9-upgrade}/references/ksp-kapt.md +0 -0
- /package/skills/{android-agp-9-upgrade → mobile-android/references/build-and-performance/agp-9-upgrade}/references/paparazzi-gradle-9.md +0 -0
- /package/skills/{android-agp-9-upgrade → mobile-android/references/build-and-performance/agp-9-upgrade}/references/recipes.md +0 -0
- /package/skills/{android-cli → mobile-android/references/build-and-performance/android-cli}/references/interact.md +0 -0
- /package/skills/{android-cli → mobile-android/references/build-and-performance/android-cli}/references/journeys.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/analysis_orchestrator.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-sql/perfetto_sql.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/perfetto_trace_analysis.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/guiding_principles.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/hints/domain_hints_template.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_cpu.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_graphics.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_io.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_ipc.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_memory.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_power.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/per_candidate_analysis.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/analysis/workflows/perfetto-trace-analysis/references/triage.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/recording_orchestrator.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/perfetto_trace_recording.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/example-configs/app_jank.pftxt +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/example-configs/cpu_profile.pftxt +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/example-configs/java_heap_dump.pftxt +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/example-configs/long_background.pftxt +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/example-configs/memory_counters.pftxt +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/example-configs/native_heap.pftxt +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/example-configs/sched_cpu.pftxt +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/references/env_setup.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/references/perfetto/setup.md +0 -0
- /package/skills/{android-profiler → mobile-android/references/build-and-performance/android-profiler}/references/perfetto/sql.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/CONFIGURATION-ANALYZER.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/CONFIGURATION.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/KEEP-RULES-IMPACT-HIERARCHY.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/REDUNDANT-RULES.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/REFLECTION-GUIDE.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/REPORT_FORMAT.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/android/topic/performance/app-optimization/enable-app-optimization.md +0 -0
- /package/skills/{android-r8-analyzer → mobile-android/references/build-and-performance/r8-analyzer}/references/android/training/testing/other-components/ui-automator.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/design/ui/ai-glasses/guides/interaction/inputs.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/buttons.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/cards.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/focus.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icons.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/text.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/button-samples-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/button-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/card-samples-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/card-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/deptheffect-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/deptheffectlevels-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/glimmersansflextypography-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/glimmertheme-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/icon-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/iconbutton-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/iconsizes-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/list-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/listitem-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/liststate-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/material-hct-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/projectedcontext-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/stack-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/stackitemscope-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/stackstate-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/surface-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/titlechip-samples-source.md +0 -0
- /package/skills/{android-display-glasses-with-jetpack-compose-glimmer → mobile-android/references/devices/display-glasses-with-jetpack-compose-glimmer}/references/titlechip-source.md +0 -0
- /package/skills/{android-leanback-to-compose-tv-migration → mobile-android/references/devices/leanback-to-compose-tv-migration}/references/android/training/tv/get-started/navigation.md +0 -0
- /package/skills/{android-leanback-to-compose-tv-migration → mobile-android/references/devices/leanback-to-compose-tv-migration}/references/android/training/tv/playback/compose/browse.md +0 -0
- /package/skills/{android-leanback-to-compose-tv-migration → mobile-android/references/devices/leanback-to-compose-tv-migration}/references/android/training/tv/playback/compose/index.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/android/training/wearables/compose/migrate-to-material3.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/AmbientModeSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/AmbientModeSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/CurvedWorldSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/CurvedWorldSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/ExpandableSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/ExpandableSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/HierarchicalFocusSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/HierarchicalFocusSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/PagerSamples.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/PagerSamples.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/RotarySamples.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/RotarySamples.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/ScalingLazyColumnSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/ScalingLazyColumnSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/SwipeToDismissBoxSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/SwipeToDismissBoxSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/SwipeToRevealSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/SwipeToRevealSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/TransformingLazyColumnSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/foundation/TransformingLazyColumnSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/AlertDialogSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/AlertDialogSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/AnimatedTextSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/AnimatedTextSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ButtonGroupSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ButtonGroupSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/CardSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/CardSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/CheckboxButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/CheckboxButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ConfirmationDialogSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ConfirmationDialogSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/CurvedTextSamples.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/CurvedTextSamples.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/DatePickerSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/DatePickerSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/DynamicColorSchemeSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/DynamicColorSchemeSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/EdgeButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/EdgeButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/FadingExpandingLabelSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/FadingExpandingLabelSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/IconButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/IconButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/IconToggleButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/IconToggleButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/LevelIndicatorSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/LevelIndicatorSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/LinearProgressIndicatorSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/LinearProgressIndicatorSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ListHeaderSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ListHeaderSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/OneHandedGestureSamples.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/OneHandedGestureSamples.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/OpenOnPhoneDialogSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/OpenOnPhoneDialogSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PageIndicatorSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PageIndicatorSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PagerScaffoldSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PagerScaffoldSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PickerGroupSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PickerGroupSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PickerSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PickerSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PlaceholderSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/PlaceholderSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ProgressIndicatorSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ProgressIndicatorSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/RadioButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/RadioButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ScaffoldSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ScaffoldSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ScrollAwaySample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ScrollAwaySample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ScrollIndicatorSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/ScrollIndicatorSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SliderSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SliderSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/StepperSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/StepperSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SurfaceTransformationSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SurfaceTransformationSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SwipeToDismissBoxSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SwipeToDismissBoxSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SwipeToRevealSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SwipeToRevealSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SwitchButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/SwitchButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TextButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TextButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TextToggleButtonSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TextToggleButtonSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TimePickerSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TimePickerSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TimeTextSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TimeTextSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TransformationSpecSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TransformationSpecSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TransformingLazyColumnNotificationsSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TransformingLazyColumnNotificationsSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TransformingLazyColumnSample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/material3/TransformingLazyColumnSample.kt.md.txt +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/navigation3/SwipeDismissableSceneStrategySample.kt.md +0 -0
- /package/skills/{android-wear-compose-m3 → mobile-android/references/devices/wear-compose-m3}/references/navigation3/SwipeDismissableSceneStrategySample.kt.md.txt +0 -0
- /package/skills/{android-restore-credentials → mobile-android/references/identity/restore-credentials}/references/android/guide/topics/manifest/application-element.md +0 -0
- /package/skills/{android-restore-credentials → mobile-android/references/identity/restore-credentials}/references/android/identity/passkeys/create-passkeys.md +0 -0
- /package/skills/{android-restore-credentials → mobile-android/references/identity/restore-credentials}/references/android/identity/passkeys/sign-in-with-passkeys.md +0 -0
- /package/skills/{android-verified-email → mobile-android/references/identity/verified-email}/references/android/identity/credential-manager/index.md +0 -0
- /package/skills/{android-verified-email → mobile-android/references/identity/verified-email}/references/android/identity/digital-credentials/credential-verifier.md +0 -0
- /package/skills/{android-verified-email → mobile-android/references/identity/verified-email}/references/android/identity/digital-credentials/email-verification-implementation.md +0 -0
- /package/skills/{android-verified-email → mobile-android/references/identity/verified-email}/references/android/identity/digital-credentials/email-verification.md +0 -0
- /package/skills/{android-verified-email → mobile-android/references/identity/verified-email}/references/android/identity/digital-credentials/index.md +0 -0
- /package/skills/{android-verified-email → mobile-android/references/identity/verified-email}/references/android/identity/passkeys/create-passkeys.md +0 -0
- /package/skills/{android-verified-email → mobile-android/references/identity/verified-email}/references/android/identity/sign-in/credential-manager-webview.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/camera1-to-camerax.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/camera2-to-camerax.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/expert-blueprints.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/foldables.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/immutability.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/low-light.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/mlkit-spatial.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/modern-apis.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/testing.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/thermals.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/wear-os.md +0 -0
- /package/skills/{android-camerax → mobile-android/references/media/camerax}/references/xr.md +0 -0
- /package/skills/{android-media3-cast-integration → mobile-android/references/media/media3-cast-integration}/references/android/media/media3/cast/create-castplayer.md +0 -0
- /package/skills/{android-media3-cast-integration → mobile-android/references/media/media3-cast-integration}/references/android/media/media3/cast/customize-castoptions.md +0 -0
- /package/skills/{android-media3-cast-integration → mobile-android/references/media/media3-cast-integration}/references/android/media/media3/cast/index.md +0 -0
- /package/skills/{android-appfunctions → mobile-android/references/on-device-ai/appfunctions}/references/adb-interaction-testing.md +0 -0
- /package/skills/{android-appfunctions → mobile-android/references/on-device-ai/appfunctions}/references/context.md +0 -0
- /package/skills/{android-appfunctions → mobile-android/references/on-device-ai/appfunctions}/references/feature-discovery-analysis.md +0 -0
- /package/skills/{android-appfunctions → mobile-android/references/on-device-ai/appfunctions}/references/implementation-configuration.md +0 -0
- /package/skills/{android-appfunctions → mobile-android/references/on-device-ai/appfunctions}/references/kdoc-refinement-optimization.md +0 -0
- /package/skills/{android-appfunctions → mobile-android/references/on-device-ai/appfunctions}/references/migrate-to-service-entry-point.md +0 -0
- /package/skills/{android-ml-kit-genai-prompt-api → mobile-android/references/on-device-ai/ml-kit-genai-prompt-api}/references/get-started.md +0 -0
- /package/skills/{android-ml-kit-genai-prompt-api → mobile-android/references/on-device-ai/ml-kit-genai-prompt-api}/references/prefix-caching.md +0 -0
- /package/skills/{android-ml-kit-genai-prompt-api → mobile-android/references/on-device-ai/ml-kit-genai-prompt-api}/references/prompt-design.md +0 -0
- /package/skills/{android-ml-kit-genai-prompt-api → mobile-android/references/on-device-ai/ml-kit-genai-prompt-api}/references/prompt-optimization.md +0 -0
- /package/skills/{android-ml-kit-genai-prompt-api → mobile-android/references/on-device-ai/ml-kit-genai-prompt-api}/references/structured-output.md +0 -0
- /package/skills/{android-ml-kit-genai-prompt-api → mobile-android/references/on-device-ai/ml-kit-genai-prompt-api}/references/system-instructions.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/faq.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/food.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/healthandfitness.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/listen.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/otherverticals.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/read.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/shopping.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/social.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/travel.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/tv/continue-watching/index.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/tv/entitlements.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/tv/getting-started.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/tv/recommendations.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/android/guide/playcore/engage/watch.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/clusters.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/common.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/patterns.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/requests.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/food.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/listen.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/other.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/read.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/shopping.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/social.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/travel.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/tv.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/schemas/watch.md +0 -0
- /package/skills/{android-engage-sdk-integration → mobile-android/references/play/engage-sdk-integration}/references/troubleshooting.md +0 -0
- /package/skills/{android-play-billing-library-version-upgrade → mobile-android/references/play/play-billing-library-version-upgrade}/references/android/google/play/billing/release-notes.md +0 -0
- /package/skills/{android-play-billing-library-version-upgrade → mobile-android/references/play/play-billing-library-version-upgrade}/references/migration-logic.md +0 -0
- /package/skills/{android-play-billing-library-version-upgrade → mobile-android/references/play/play-billing-library-version-upgrade}/references/version-checklist.md +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/common_mandates.md +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/compliance_report_template.md +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/critic.md +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/goal_data_safety.md +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/goal_permissions_and_apis.md +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/goal_user_account.md +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/policies.json +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/resources/scanner_config.json +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/scripts/generate_report.py +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/scripts/orchestrator.py +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/scripts/play_store_scraper.py +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/scripts/scanner.py +0 -0
- /package/skills/{android-play-policy-insights → mobile-android/references/play/play-policy-insights}/scripts/template_engine.py +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/develop/ui/compose/tooling/debug.md +0 -0
- /package/skills/{android-adaptive → mobile-android/references/ui/adaptive}/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +0 -0
- /package/skills/{android-migrate-xml-views-to-jetpack-compose → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose}/references/analysis-of-the-project-and-layout.md +0 -0
- /package/skills/{android-migrate-xml-views-to-jetpack-compose → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose}/references/android/develop/ui/compose/designsystems/migrate-xml-theme-to-compose.md +0 -0
- /package/skills/{android-migrate-xml-views-to-jetpack-compose → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose}/references/android/develop/ui/compose/migrate/interoperability-apis/compose-in-views.md +0 -0
- /package/skills/{android-migrate-xml-views-to-jetpack-compose → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose}/references/android/develop/ui/compose/migrate/interoperability-apis/views-in-compose.md +0 -0
- /package/skills/{android-migrate-xml-views-to-jetpack-compose → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose}/references/android/develop/ui/compose/setup-compose-dependencies-and-compiler.md +0 -0
- /package/skills/{android-migrate-xml-views-to-jetpack-compose → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose}/references/identify-optimal-xml-candidate.md +0 -0
- /package/skills/{android-migrate-xml-views-to-jetpack-compose → mobile-android/references/ui/migrate-xml-views-to-jetpack-compose}/references/xml-layout-migration.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/index.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/migration-guide.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/animations.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/basic.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/common-ui.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/conditional-transitions.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/conditional.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/dialog.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/lifecycle-owner.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/results-event.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/results-state.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +0 -0
- /package/skills/{android-navigation-3 → mobile-android/references/ui/navigation-3}/references/android/guide/navigation/type-safe-destinations.md +0 -0
- /package/skills/{android-navigation-event → mobile-android/references/ui/navigation-event}/references/android/guide/navigation/navigation-event/dispatcher.md +0 -0
- /package/skills/{android-navigation-event → mobile-android/references/ui/navigation-event}/references/android/guide/navigation/navigation-event/handle-back.md +0 -0
- /package/skills/{android-navigation-event → mobile-android/references/ui/navigation-event}/references/android/guide/navigation/navigation-event/index.md +0 -0
- /package/skills/{android-navigation-event → mobile-android/references/ui/navigation-event}/references/android/guide/navigation/navigation-event/setup.md +0 -0
- /package/skills/{android-styles → mobile-android/references/ui/styles}/references/android/develop/ui/compose/designsystems/custom.md +0 -0
- /package/skills/{android-styles → mobile-android/references/ui/styles}/references/android/develop/ui/compose/styles/fundamentals.md +0 -0
- /package/skills/{android-styles → mobile-android/references/ui/styles}/references/android/develop/ui/compose/styles/state-animations.md +0 -0
- /package/skills/{android-styles → mobile-android/references/ui/styles}/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +0 -0
- /package/skills/{android-styles → mobile-android/references/ui/styles}/references/android/develop/ui/compose/styles/theming.md +0 -0
- /package/skills/{flutter-dart-use-pattern-matching → mobile-flutter/references/dart/pattern-matching}/examples/json_patterns.dart +0 -0
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Configures a Flutter app to support assistive technologies like Screen Readers. Use when ensuring an application is usable for people with disabilities.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:17:37 GMT
|
|
7
|
-
intents: [accessibility]
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-improving-accessibility` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Flutter Accessibility
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Add `flutter_localizations` and `intl` dependencies, enable "generate true" in `pubspec.yaml`, and create an `l10n.yaml` configuration file. Use when initializing localization support for a new Flutter project.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Tue, 21 Apr 2026 21:27:35 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-setup-localization` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Internationalizing Flutter Applications
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Flutter: Accessibility and internationalization
|
|
2
|
+
|
|
3
|
+
Screen readers, semantics and localization. Open only the guide the task needs.
|
|
4
|
+
|
|
5
|
+
| Guide | What it covers |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [accessibility](accessibility-i18n/accessibility.md) | Configures a Flutter app to support assistive technologies like Screen Readers. |
|
|
8
|
+
| [localization](accessibility-i18n/localization.md) | Add `flutter_localizations` and `intl` dependencies, enable "generate true" in `pubspec.yaml`, and create an `l10n.yaml` configuration file. |
|
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
name: flutter-dart-3-updates
|
|
3
|
-
description: Applies Dart 3 language features in Flutter/Dart code. Use when writing if-else or switch statements, creating new classes, or deciding between a data class and a record.
|
|
4
|
-
intents: [migration]
|
|
5
|
-
stacks: [flutter]
|
|
6
|
-
source: https://github.com/evanca/flutter-ai-rules
|
|
7
|
-
license: MIT
|
|
8
|
-
---
|
|
1
|
+
> Adapted from the `dart-3-updates` skill in [evanca/flutter-ai-rules](https://github.com/evanca/flutter-ai-rules) (MIT). See `THIRD_PARTY_NOTICES.md`.
|
|
9
2
|
|
|
10
3
|
# Dart 3 Updates Skill
|
|
11
4
|
|
package/skills/{flutter-effective-dart/SKILL.md → mobile-flutter/references/dart/effective-dart.md}
RENAMED
|
@@ -1,11 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
name: flutter-effective-dart
|
|
3
|
-
description: Applies Effective Dart guidelines in Flutter/Dart code. Use when writing or reviewing Dart code for naming conventions, types, style, imports, file structure, usage patterns, documentation, testing, widgets, state management, or performance.
|
|
4
|
-
intents: [review]
|
|
5
|
-
stacks: [flutter]
|
|
6
|
-
source: https://github.com/evanca/flutter-ai-rules
|
|
7
|
-
license: MIT
|
|
8
|
-
---
|
|
1
|
+
> Adapted from the `effective-dart` skill in [evanca/flutter-ai-rules](https://github.com/evanca/flutter-ai-rules) (MIT). See `THIRD_PARTY_NOTICES.md`.
|
|
9
2
|
|
|
10
3
|
# Effective Dart Skill
|
|
11
4
|
|
|
@@ -1,21 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: >-
|
|
4
|
-
Applies Dart 3 pattern matching, switch expressions, and destructuring
|
|
5
|
-
idiomatically to validate data schemas, handle algebraic data types, and
|
|
6
|
-
decompose control flow. Use when refactoring complex if-else chains,
|
|
7
|
-
parsing polymorphic JSON or API responses, destructuring Records or Maps, or
|
|
8
|
-
enforcing exhaustiveness on sealed classes. Don't use for simple boolean
|
|
9
|
-
conditions, single-variable type promotion (use `is`), or basic collection
|
|
10
|
-
filtering.
|
|
11
|
-
metadata:
|
|
12
|
-
model: models/gemini-3.1-pro-preview
|
|
13
|
-
last_modified: Sun, 06 Sep 2026 06:43:00 GMT
|
|
14
|
-
routing: manual
|
|
15
|
-
stacks: [flutter]
|
|
16
|
-
source: https://github.com/dart-lang/skills
|
|
17
|
-
license: BSD-3-Clause
|
|
18
|
-
---
|
|
1
|
+
> Adapted from the `dart-use-pattern-matching` skill in [dart-lang/skills](https://github.com/dart-lang/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
19
3
|
# Implementing Dart Patterns
|
|
20
4
|
|
|
21
5
|
## Contents
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Flutter: Dart language
|
|
2
|
+
|
|
3
|
+
Effective Dart, Dart 3 features and pattern matching. Open only the guide the task needs.
|
|
4
|
+
|
|
5
|
+
| Guide | What it covers |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [effective-dart](dart/effective-dart.md) | Applies Effective Dart guidelines in Flutter/Dart code. |
|
|
8
|
+
| [dart-3](dart/dart-3.md) | Applies Dart 3 language features in Flutter/Dart code. |
|
|
9
|
+
| [pattern-matching](dart/pattern-matching/GUIDE.md) | Applies Dart 3 pattern matching, switch expressions, and destructuring idiomatically to validate data schemas, handle algebraic data types, and decompose control flow. |
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Implements caching strategies for Flutter apps to improve performance and offline support. Use when retaining app data locally to reduce network requests or speed up startup.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:19:54 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-caching-data` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Flutter Caching and Offline-First Architectures
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Manages local data persistence using SQLite or other database solutions. Use when a Flutter app needs to store, query, or synchronize large amounts of structured data on the device.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:19:15 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-working-with-databases` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Architecting the Data Layer
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Use the `http` package to execute GET, POST, PUT, or DELETE requests. Use when you need to fetch from or send data to a REST API.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Tue, 21 Apr 2026 21:36:42 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-use-http-package` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Flutter Networking
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Create model classes with `fromJson` and `toJson` methods using `dart:convert`. Use when manually mapping JSON keys to class properties for simple data structures.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Tue, 21 Apr 2026 21:44:50 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-implement-json-serialization` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Serializing JSON Manually in Flutter
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Flutter: Data and networking
|
|
2
|
+
|
|
3
|
+
HTTP, JSON models, local databases and caching. Open only the guide the task needs.
|
|
4
|
+
|
|
5
|
+
| Guide | What it covers |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [http](data/http.md) | Use the `http` package to execute GET, POST, PUT, or DELETE requests. |
|
|
8
|
+
| [json-serialization](data/json-serialization.md) | Create model classes with `fromJson` and `toJson` methods using `dart:convert`. |
|
|
9
|
+
| [databases](data/databases.md) | Manages local data persistence using SQLite or other database solutions. |
|
|
10
|
+
| [caching](data/caching.md) | Implements caching strategies for Flutter apps to improve performance and offline support. |
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Interoperates with native platform APIs on Android, iOS, and the web. Use when accessing device-specific features not available in Dart or calling existing native code.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:21:02 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-interoperating-with-native-apis` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Integrating Platform-Specific Code in Flutter
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Embeds native Android, iOS, or macOS views into a Flutter app. Use when integrating complex native components like maps or web views.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:20:28 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-embedding-native-views` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Integrating Platform Views and Web Content
|
|
13
4
|
|
|
14
5
|
## Contents
|
package/skills/{flutter-building-plugins/SKILL.md → mobile-flutter/references/native/plugins.md}
RENAMED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Builds Flutter plugins that provide native interop for other apps to use. Use when creating reusable packages that bridge Flutter with platform-specific functionality.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:21:35 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-building-plugins` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Developing Flutter Plugins
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Flutter: Native code and plugins
|
|
2
|
+
|
|
3
|
+
Platform channels, native APIs, plugins and embedded native views. Open only the guide the task needs.
|
|
4
|
+
|
|
5
|
+
| Guide | What it covers |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [plugins](native/plugins.md) | Builds Flutter plugins that provide native interop for other apps to use. |
|
|
8
|
+
| [native-apis](native/native-apis.md) | Interoperates with native platform APIs on Android, iOS, and the web. |
|
|
9
|
+
| [native-views](native/native-views.md) | Embeds native Android, iOS, or macOS views into a Flutter app. |
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Measures and optimizes the size of Flutter application bundles for deployment. Use when minimizing download size or meeting app store package constraints.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:22:44 GMT
|
|
7
|
-
intents: [performance]
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-reducing-app-size` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Reducing Flutter App Size
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Executes long-running tasks in background isolates to keep the UI responsive. Use when performing heavy computations or parsing large datasets.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:23:14 GMT
|
|
7
|
-
intents: [performance]
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-handling-concurrency` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Managing Dart Concurrency and Isolates
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Flutter: Performance and size
|
|
2
|
+
|
|
3
|
+
Isolates for heavy work and app size. Open only the guide the task needs.
|
|
4
|
+
|
|
5
|
+
| Guide | What it covers |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [concurrency](performance/concurrency.md) | Executes long-running tasks in background isolates to keep the UI responsive. |
|
|
8
|
+
| [app-size](performance/app-size.md) | Measures and optimizes the size of Flutter application bundles for deployment. |
|
package/skills/{flutter-setting-up-on-macos/SKILL.md → mobile-flutter/references/setup/macos.md}
RENAMED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Sets up a macOS environment for Flutter development. Use when configuring a macOS machine to run, build, or deploy Flutter applications for iOS or macOS.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:12:50 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-setting-up-on-macos` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Setting Up a macOS Environment for Flutter Development
|
|
13
4
|
|
|
14
5
|
## Contents
|
package/skills/{flutter-animating-apps/SKILL.md → mobile-flutter/references/ui/animations.md}
RENAMED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Implements animated effects, transitions, and motion in a Flutter app. Use when adding visual feedback, shared element transitions, or physics-based animations.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:16:34 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-animating-apps` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Flutter Animations
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Builds Flutter forms with validation and user input handling. Use when creating login screens, data entry forms, or any multi-field user input.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:15:24 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-building-forms` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Building Validated Forms
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Adds home screen widgets to a Flutter app for Android and iOS. Use when providing glanceable app information or quick actions on the device home screen.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:23:50 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-adding-home-screen-widgets` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Flutter Home Screen Widgets
|
|
13
4
|
|
|
14
5
|
## Contents
|
package/skills/{flutter-building-layouts/SKILL.md → mobile-flutter/references/ui/layouts.md}
RENAMED
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Builds Flutter layouts using the constraint system and layout widgets. Use when creating or refining the UI structure of a Flutter application.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:14:15 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-building-layouts` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Architecting Flutter Layouts
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. Use when you need the UI to look good on both mobile and tablet/desktop form factors.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Tue, 21 Apr 2026 20:17:40 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-build-responsive-layout` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Adaptive Layouts
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Configure `MaterialApp.router` using a package like `go_router` for advanced URL-based navigation. Use when developing web applications or mobile apps that require specific deep linking and browser history support.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Tue, 21 Apr 2026 21:08:03 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-setup-declarative-routing` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Routing and Deep Linking
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Customizes the visual appearance of a Flutter app using the theming system. Use when defining global styles, colors, or typography for an application.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Thu, 12 Mar 2026 22:14:47 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-theming-apps` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Implementing Flutter Theming and Adaptive Design
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -1,14 +1,5 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
description: Adds interactive widget previews to the project using the previews.dart system. Use when creating new UI components or updating existing screens to ensure consistent design and interactive testing.
|
|
4
|
-
metadata:
|
|
5
|
-
model: models/gemini-3.1-pro-preview
|
|
6
|
-
last_modified: Tue, 21 Apr 2026 20:05:23 GMT
|
|
7
|
-
routing: manual
|
|
8
|
-
stacks: [flutter]
|
|
9
|
-
source: https://github.com/flutter/skills
|
|
10
|
-
license: BSD-3-Clause
|
|
11
|
-
---
|
|
1
|
+
> Adapted from the `flutter-add-widget-preview` skill in [flutter/skills](https://github.com/flutter/skills) (BSD-3-Clause). See `THIRD_PARTY_NOTICES.md`.
|
|
2
|
+
|
|
12
3
|
# Previewing Flutter Widgets
|
|
13
4
|
|
|
14
5
|
## Contents
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Flutter: UI, layout and navigation
|
|
2
|
+
|
|
3
|
+
Layouts, forms, animations, theming, routing and widgets outside the app. Open only the guide the task needs.
|
|
4
|
+
|
|
5
|
+
| Guide | What it covers |
|
|
6
|
+
|---|---|
|
|
7
|
+
| [layouts](ui/layouts.md) | Builds Flutter layouts using the constraint system and layout widgets. |
|
|
8
|
+
| [responsive-layout](ui/responsive-layout.md) | Use `LayoutBuilder`, `MediaQuery`, or `Expanded/Flexible` to create a layout that adapts to different screen sizes. |
|
|
9
|
+
| [forms](ui/forms.md) | Builds Flutter forms with validation and user input handling. |
|
|
10
|
+
| [animations](ui/animations.md) | Implements animated effects, transitions, and motion in a Flutter app. |
|
|
11
|
+
| [theming](ui/theming.md) | Customizes the visual appearance of a Flutter app using the theming system. |
|
|
12
|
+
| [routing](ui/routing.md) | Configure `MaterialApp.router` using a package like `go_router` for advanced URL-based navigation. |
|
|
13
|
+
| [widget-previews](ui/widget-previews.md) | Adds interactive widget previews to the project using the previews.dart system. |
|
|
14
|
+
| [home-screen-widgets](ui/home-screen-widgets.md) | Adds home screen widgets to a Flutter app for Android and iOS. |
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: mobile-ios
|
|
3
|
+
description: Builds native iOS apps in Swift — SwiftUI and UIKit screens, state and data flow, NavigationStack, lists, forms and accessibility; networking with URLSession and Codable, persistence with SwiftData, Core Data, files and the Keychain; permissions, push notifications, universal links, background tasks, widgets, App Intents and StoreKit 2 purchases; performance with Instruments and MetricKit; and release with signing, TestFlight and App Store Connect. Use when writing or changing native iOS code, adding a platform feature, preparing a build for TestFlight or the App Store, or when the user asks how to do something on iOS, even if they do not name the framework.
|
|
4
|
+
intents: [performance, release, accessibility]
|
|
5
|
+
stacks: [ios]
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Mobile iOS
|
|
9
|
+
|
|
10
|
+
Guides for building native iOS apps. Cross-platform topics live in their own skills and have iOS references there: architecture in `mobile-architecture`, tests in `mobile-test`, debugging (Xcode, CocoaPods, crashes) in `mobile-debug`, code review in `mobile-code-review`, security in `mobile-security` and Firebase in `mobile-firebase`.
|
|
11
|
+
|
|
12
|
+
## Pick the topic
|
|
13
|
+
|
|
14
|
+
| Topic | Read |
|
|
15
|
+
|---|---|
|
|
16
|
+
| SwiftUI and UIKit screens, navigation, lists, forms, accessibility, localization | [references/ui-navigation.md](references/ui-navigation.md) |
|
|
17
|
+
| Networking, JSON, persistence, caching, offline | [references/data-networking.md](references/data-networking.md) |
|
|
18
|
+
| Permissions, push, universal links, background work, widgets, App Intents, in-app purchases | [references/platform-features.md](references/platform-features.md) |
|
|
19
|
+
| Performance, app size, signing, TestFlight and App Store release | [references/performance-release.md](references/performance-release.md) |
|
|
20
|
+
|
|
21
|
+
## Before writing code
|
|
22
|
+
|
|
23
|
+
- Check the deployment target (`IPHONEOS_DEPLOYMENT_TARGET`), the Swift language version and the Xcode version: many APIs in these guides need iOS 16 or 17, and Swift 6 changes concurrency checking.
|
|
24
|
+
- Follow the project: SwiftUI or UIKit, its architecture, and dependencies already in `Package.resolved` or `Podfile.lock`.
|
|
25
|
+
- Apple's requirements change every year (minimum SDK for uploads, privacy manifests, review guidelines); check the current ones instead of relying on these guides for dates or version numbers.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# iOS data and networking
|
|
2
|
+
|
|
3
|
+
## HTTP with URLSession
|
|
4
|
+
|
|
5
|
+
```swift
|
|
6
|
+
struct APIClient {
|
|
7
|
+
let baseURL: URL
|
|
8
|
+
let session: URLSession = .shared
|
|
9
|
+
let decoder: JSONDecoder = {
|
|
10
|
+
let decoder = JSONDecoder()
|
|
11
|
+
decoder.keyDecodingStrategy = .convertFromSnakeCase
|
|
12
|
+
decoder.dateDecodingStrategy = .iso8601
|
|
13
|
+
return decoder
|
|
14
|
+
}()
|
|
15
|
+
|
|
16
|
+
func get<T: Decodable>(_ path: String, as type: T.Type = T.self) async throws -> T {
|
|
17
|
+
let (data, response) = try await session.data(from: baseURL.appending(path: path))
|
|
18
|
+
guard let http = response as? HTTPURLResponse, (200..<300).contains(http.statusCode) else {
|
|
19
|
+
throw APIError.badStatus((response as? HTTPURLResponse)?.statusCode ?? -1)
|
|
20
|
+
}
|
|
21
|
+
return try decoder.decode(T.self, from: data)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The names are illustrative.
|
|
27
|
+
|
|
28
|
+
- `URLSession` does not throw for 4xx/5xx responses: check the status code.
|
|
29
|
+
- Async requests are cancelled when their `Task` is cancelled; SwiftUI's `.task` cancels when the view disappears.
|
|
30
|
+
- Configure timeouts on a custom `URLSessionConfiguration` instead of relying on defaults for slow endpoints.
|
|
31
|
+
- Decoding errors (`DecodingError`) should be logged with the key path; silently returning empty data hides API contract changes.
|
|
32
|
+
- Large downloads and uploads that must continue when the app is suspended use a background `URLSessionConfiguration`.
|
|
33
|
+
- Observe connectivity with `NWPathMonitor` to show offline state, but still handle request failures: reachability is only a hint.
|
|
34
|
+
|
|
35
|
+
## Persistence
|
|
36
|
+
|
|
37
|
+
| Data | Store |
|
|
38
|
+
|---|---|
|
|
39
|
+
| Secrets, tokens, credentials | Keychain |
|
|
40
|
+
| Small preferences | `UserDefaults` (or `@AppStorage` in SwiftUI) |
|
|
41
|
+
| Structured app data | SwiftData (iOS 17+) or Core Data |
|
|
42
|
+
| Documents, media, caches | Files in Application Support, Documents or Caches, with the right Data Protection class |
|
|
43
|
+
| HTTP response caching | `URLCache` with proper cache headers |
|
|
44
|
+
|
|
45
|
+
### SwiftData
|
|
46
|
+
|
|
47
|
+
```swift
|
|
48
|
+
@Model
|
|
49
|
+
final class Note {
|
|
50
|
+
var title: String
|
|
51
|
+
var createdAt: Date
|
|
52
|
+
init(title: String, createdAt: Date = .now) { self.title = title; self.createdAt = createdAt }
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
// App: .modelContainer(for: Note.self)
|
|
56
|
+
// View: @Query(sort: \Note.createdAt, order: .reverse) private var notes: [Note]
|
|
57
|
+
// Writes: @Environment(\.modelContext) private var context; context.insert(Note(title: "..."))
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
- Plan migrations (`VersionedSchema` and `SchemaMigrationPlan`) before shipping schema changes.
|
|
61
|
+
- Model contexts are not shared across concurrency domains; use a `ModelActor` for background work.
|
|
62
|
+
- Core Data projects keep Core Data unless there is a reason to migrate; both can coexist during a transition.
|
|
63
|
+
|
|
64
|
+
## Offline-first
|
|
65
|
+
|
|
66
|
+
Read from local storage, refresh from the network into it, and show the cached data while refreshing. Queue writes made offline and retry them with backoff; show pending state to the user.
|
|
67
|
+
|
|
68
|
+
## Images
|
|
69
|
+
|
|
70
|
+
`AsyncImage` has no persistent cache and decodes at full size. For feeds, use an image library the project already has, or downsample with ImageIO and cache the result.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# iOS performance and release
|
|
2
|
+
|
|
3
|
+
## Measure before optimizing
|
|
4
|
+
|
|
5
|
+
- **Instruments:** Time Profiler for CPU, Allocations and Leaks for memory, Hangs for main-thread blocks, the SwiftUI template for view updates. Profile a Release build on a device, not the simulator.
|
|
6
|
+
- **In the field:** Xcode Organizer (launch time, hangs, memory, energy, disk writes) and MetricKit (`MXMetricManager`) for diagnostics from users' devices.
|
|
7
|
+
|
|
8
|
+
## Common fixes
|
|
9
|
+
|
|
10
|
+
- **Launch:** defer SDK initialization and data loading that the first screen does not need; avoid synchronous work in the `App` initializer or `application(_:didFinishLaunchingWithOptions:)`.
|
|
11
|
+
- **Hangs:** move disk, network, JSON decoding and image decoding off the main actor.
|
|
12
|
+
- **Scrolling:** stable identity in lists, no heavy work in `body` or `cellForItemAt`, downsampled images.
|
|
13
|
+
- **Memory:** break retain cycles (`[weak self]`, weak delegates), bound in-memory caches and clear them on memory warnings.
|
|
14
|
+
- **Size:** check the App Thinning size report from an archive export; keep images in asset catalogs, remove unused resources and dependencies.
|
|
15
|
+
|
|
16
|
+
## Versioning and signing
|
|
17
|
+
|
|
18
|
+
- `CFBundleShortVersionString` (Marketing Version) is the user-facing version; `CFBundleVersion` (build number) must increase for every upload of the same version.
|
|
19
|
+
- Automatic signing is simplest for teams; CI usually uses manual signing or an App Store Connect API key with `xcodebuild -allowProvisioningUpdates`. Keep certificates and keys in the CI secret store, never in the repository.
|
|
20
|
+
- Each extension (widgets, notification services) needs its own bundle identifier, prefixed by the app's, and a matching profile.
|
|
21
|
+
|
|
22
|
+
## Build and upload
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
xcodebuild -scheme App -configuration Release -archivePath build/App.xcarchive archive
|
|
26
|
+
xcodebuild -exportArchive -archivePath build/App.xcarchive -exportOptionsPlist ExportOptions.plist -exportPath build/export
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
- Upload with Xcode Organizer, Transporter, fastlane, or a tool based on the App Store Connect API; check which command-line upload method Apple currently supports before scripting it.
|
|
30
|
+
- Keep dSYMs for crash symbolication (upload them to the crash reporter).
|
|
31
|
+
|
|
32
|
+
## TestFlight and App Store
|
|
33
|
+
|
|
34
|
+
- Internal testers (members of the App Store Connect team) get builds without review; external testers need a Beta App Review for the first build of a version.
|
|
35
|
+
- Before submitting: screenshots and metadata, privacy details (the App Privacy section must match the privacy manifest and SDKs), export compliance (`ITSAppUsesNonExemptEncryption` in `Info.plist` avoids the question on each upload), sign-in credentials for the reviewer when the app requires an account, and account deletion in the app if it allows creating accounts.
|
|
36
|
+
- Check the current App Store Review Guidelines and the minimum Xcode/SDK required for uploads; both change regularly.
|
|
37
|
+
- Use phased release for updates to limit the impact of a bad build.
|