reis-mobile 0.3.5 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +2 -2
- package/.claude-plugin/plugin.json +1 -1
- package/CHANGELOG.md +33 -0
- package/README.md +186 -172
- package/THIRD_PARTY_NOTICES.md +224 -4
- package/agents/android-architect.md +89 -0
- package/agents/android-performance-engineer.md +92 -0
- package/agents/android-test-engineer.md +97 -0
- package/agents/flutter-test-engineer.md +2 -0
- package/agents/ios-architect.md +93 -0
- package/agents/ios-performance-engineer.md +92 -0
- package/agents/ios-test-engineer.md +95 -0
- package/agents/lead-mobile.md +10 -1
- package/agents/mobile-staff-engineer.md +1 -1
- package/agents/rn-architect.md +94 -0
- package/agents/rn-performance-engineer.md +92 -0
- package/agents/rn-test-engineer.md +98 -0
- package/bin/reis-mobile.mjs +83 -33
- package/commands/debate.md +10 -1
- package/commands/debug.md +60 -0
- package/commands/reis-mobile.md +7 -2
- package/core/config/project.mjs +59 -0
- package/core/install/codex-plugin.mjs +66 -0
- package/core/install/init.mjs +46 -0
- package/core/registry/frontmatter.mjs +15 -4
- package/core/registry/registry.mjs +21 -1
- package/core/router/intents.mjs +2 -0
- package/core/router/router.mjs +10 -5
- package/package.json +1 -1
- package/skills/android-adaptive/SKILL.md +304 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/container-behavior.md +112 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/get-started.md +69 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/index.md +81 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/flexbox/item-behavior.md +170 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/container-properties.md +415 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/get-started.md +51 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/index.md +73 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/grid/item-properties.md +170 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/layouts/adaptive/mediaquery/index.md +333 -0
- package/skills/android-adaptive/references/android/develop/ui/compose/tooling/debug.md +114 -0
- package/skills/android-adaptive/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/skills/android-agp-9-upgrade/SKILL.md +106 -0
- package/skills/android-agp-9-upgrade/references/android/build/migrate-to-built-in-kotlin.md +416 -0
- package/skills/android-agp-9-upgrade/references/android/build/releases/agp-9-0-0-release-notes.md +554 -0
- package/skills/android-agp-9-upgrade/references/buildconfig.md +54 -0
- package/skills/android-agp-9-upgrade/references/ksp-kapt.md +39 -0
- package/skills/android-agp-9-upgrade/references/paparazzi-gradle-9.md +30 -0
- package/skills/android-agp-9-upgrade/references/recipes.md +62 -0
- package/skills/android-appfunctions/SKILL.md +74 -0
- package/skills/android-appfunctions/references/adb-interaction-testing.md +95 -0
- package/skills/android-appfunctions/references/context.md +26 -0
- package/skills/android-appfunctions/references/feature-discovery-analysis.md +71 -0
- package/skills/android-appfunctions/references/implementation-configuration.md +282 -0
- package/skills/android-appfunctions/references/kdoc-refinement-optimization.md +75 -0
- package/skills/android-appfunctions/references/migrate-to-service-entry-point.md +226 -0
- package/skills/android-camerax/SKILL.md +135 -0
- package/skills/android-camerax/references/camera1-to-camerax.md +198 -0
- package/skills/android-camerax/references/camera2-to-camerax.md +193 -0
- package/skills/android-camerax/references/expert-blueprints.md +58 -0
- package/skills/android-camerax/references/foldables.md +83 -0
- package/skills/android-camerax/references/immutability.md +60 -0
- package/skills/android-camerax/references/low-light.md +124 -0
- package/skills/android-camerax/references/mlkit-spatial.md +75 -0
- package/skills/android-camerax/references/modern-apis.md +42 -0
- package/skills/android-camerax/references/testing.md +69 -0
- package/skills/android-camerax/references/thermals.md +85 -0
- package/skills/android-camerax/references/wear-os.md +76 -0
- package/skills/android-camerax/references/xr.md +54 -0
- package/skills/android-cli/SKILL.md +474 -0
- package/skills/android-cli/references/interact.md +113 -0
- package/skills/android-cli/references/journeys.md +120 -0
- package/skills/android-code-review/SKILL.md +58 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/SKILL.md +340 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/design/ui/ai-glasses/guides/interaction/inputs.md +67 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md +388 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/buttons.md +139 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/cards.md +148 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/focus.md +107 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/icons.md +90 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/text.md +69 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/jetpack-compose-glimmer/title-chips.md +82 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/request-hardware-permissions.md +213 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/button-samples-source.md +176 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/button-source.md +203 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/card-samples-source.md +296 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/card-source.md +515 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/deptheffect-source.md +224 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/deptheffectlevels-source.md +105 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/glimmersansflextypography-source.md +270 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/glimmertheme-source.md +182 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/icon-source.md +388 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/iconbutton-source.md +126 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/iconsizes-source.md +78 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/list-source.md +27 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/listitem-source.md +272 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/liststate-source.md +427 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/material-hct-source.md +217 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/projectedcontext-source.md +265 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stack-source.md +368 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stackitemscope-source.md +440 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/stackstate-source.md +325 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/surface-source.md +1211 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/titlechip-samples-source.md +101 -0
- package/skills/android-display-glasses-with-jetpack-compose-glimmer/references/titlechip-source.md +131 -0
- package/skills/android-edge-to-edge/SKILL.md +429 -0
- package/skills/android-engage-sdk-integration/SKILL.md +130 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/faq.md +439 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/food.md +1149 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/healthandfitness.md +1055 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/listen.md +1050 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/otherverticals.md +1301 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/read.md +910 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/shopping.md +1224 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/social.md +719 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/travel.md +1413 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/continue-watching/index.md +19 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/entitlements.md +353 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/getting-started.md +202 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/tv/recommendations.md +471 -0
- package/skills/android-engage-sdk-integration/references/android/guide/playcore/engage/watch.md +1081 -0
- package/skills/android-engage-sdk-integration/references/clusters.md +154 -0
- package/skills/android-engage-sdk-integration/references/common.md +519 -0
- package/skills/android-engage-sdk-integration/references/patterns.md +527 -0
- package/skills/android-engage-sdk-integration/references/requests.md +260 -0
- package/skills/android-engage-sdk-integration/references/schemas/food.md +509 -0
- package/skills/android-engage-sdk-integration/references/schemas/listen.md +842 -0
- package/skills/android-engage-sdk-integration/references/schemas/other.md +220 -0
- package/skills/android-engage-sdk-integration/references/schemas/read.md +412 -0
- package/skills/android-engage-sdk-integration/references/schemas/shopping.md +357 -0
- package/skills/android-engage-sdk-integration/references/schemas/social.md +228 -0
- package/skills/android-engage-sdk-integration/references/schemas/travel.md +923 -0
- package/skills/android-engage-sdk-integration/references/schemas/tv.md +1226 -0
- package/skills/android-engage-sdk-integration/references/schemas/watch.md +1137 -0
- package/skills/android-engage-sdk-integration/references/troubleshooting.md +39 -0
- package/skills/android-gradle-build-debug/SKILL.md +71 -0
- package/skills/android-intent-security/SKILL.md +550 -0
- package/skills/android-leanback-to-compose-tv-migration/SKILL.md +743 -0
- package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/get-started/navigation.md +372 -0
- package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/browse.md +243 -0
- package/skills/android-leanback-to-compose-tv-migration/references/android/training/tv/playback/compose/index.md +153 -0
- package/skills/android-media3-cast-integration/SKILL.md +236 -0
- package/skills/android-media3-cast-integration/references/android/media/media3/cast/create-castplayer.md +390 -0
- package/skills/android-media3-cast-integration/references/android/media/media3/cast/customize-castoptions.md +93 -0
- package/skills/android-media3-cast-integration/references/android/media/media3/cast/index.md +21 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/SKILL.md +127 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/analysis-of-the-project-and-layout.md +42 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/designsystems/migrate-xml-theme-to-compose.md +171 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/compose-in-views.md +299 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/migrate/interoperability-apis/views-in-compose.md +286 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/android/develop/ui/compose/setup-compose-dependencies-and-compiler.md +197 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/identify-optimal-xml-candidate.md +31 -0
- package/skills/android-migrate-xml-views-to-jetpack-compose/references/xml-layout-migration.md +86 -0
- package/skills/android-ml-kit-genai-prompt-api/SKILL.md +124 -0
- package/skills/android-ml-kit-genai-prompt-api/references/get-started.md +272 -0
- package/skills/android-ml-kit-genai-prompt-api/references/prefix-caching.md +146 -0
- package/skills/android-ml-kit-genai-prompt-api/references/prompt-design.md +55 -0
- package/skills/android-ml-kit-genai-prompt-api/references/prompt-optimization.md +74 -0
- package/skills/android-ml-kit-genai-prompt-api/references/structured-output.md +219 -0
- package/skills/android-ml-kit-genai-prompt-api/references/system-instructions.md +71 -0
- package/skills/android-navigation-3/SKILL.md +122 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/index.md +51 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/migration-guide.md +670 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/animations.md +147 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basic.md +89 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basicdsl.md +85 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/basicsaveable.md +90 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/bottomsheet.md +195 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/common-ui.md +200 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional-transitions.md +182 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/conditional.md +230 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-custommatcher.md +176 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-staticuri.md +140 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/deeplinks-syntheticbackstack.md +184 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/dialog.md +107 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/lifecycle-owner.md +185 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/material-listdetail.md +141 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/material-supportingpane.md +145 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-hilt.md +283 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/modular-koin.md +287 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/multiple-backstacks.md +468 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/passingarguments.md +371 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/results-event.md +273 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/results-state.md +266 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-listdetail.md +435 -0
- package/skills/android-navigation-3/references/android/guide/navigation/navigation-3/recipes/scenes-twopane.md +244 -0
- package/skills/android-navigation-3/references/android/guide/navigation/type-safe-destinations.md +129 -0
- package/skills/android-navigation-event/SKILL.md +312 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/dispatcher.md +134 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/handle-back.md +217 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/index.md +83 -0
- package/skills/android-navigation-event/references/android/guide/navigation/navigation-event/setup.md +32 -0
- package/skills/android-play-billing-library-version-upgrade/SKILL.md +96 -0
- package/skills/android-play-billing-library-version-upgrade/references/android/google/play/billing/release-notes.md +1240 -0
- package/skills/android-play-billing-library-version-upgrade/references/migration-logic.md +78 -0
- package/skills/android-play-billing-library-version-upgrade/references/version-checklist.md +54 -0
- package/skills/android-play-policy-insights/SKILL.md +172 -0
- package/skills/android-play-policy-insights/resources/common_mandates.md +100 -0
- package/skills/android-play-policy-insights/resources/compliance_report_template.md +59 -0
- package/skills/android-play-policy-insights/resources/critic.md +86 -0
- package/skills/android-play-policy-insights/resources/goal_data_safety.md +212 -0
- package/skills/android-play-policy-insights/resources/goal_permissions_and_apis.md +459 -0
- package/skills/android-play-policy-insights/resources/goal_user_account.md +106 -0
- package/skills/android-play-policy-insights/resources/policies.json +321 -0
- package/skills/android-play-policy-insights/resources/scanner_config.json +843 -0
- package/skills/android-play-policy-insights/scripts/generate_report.py +860 -0
- package/skills/android-play-policy-insights/scripts/orchestrator.py +1313 -0
- package/skills/android-play-policy-insights/scripts/play_store_scraper.py +410 -0
- package/skills/android-play-policy-insights/scripts/scanner.py +261 -0
- package/skills/android-play-policy-insights/scripts/template_engine.py +243 -0
- package/skills/android-profiler/SKILL.md +60 -0
- package/skills/android-profiler/analysis/analysis_orchestrator.md +32 -0
- package/skills/android-profiler/analysis/workflows/perfetto-sql/perfetto_sql.md +28 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/perfetto_trace_analysis.md +121 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/guiding_principles.md +51 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/domain_hints_template.md +7 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_cpu.md +56 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_graphics.md +51 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_io.md +46 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_ipc.md +41 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_memory.md +55 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/hints/subsystems/hints_power.md +33 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/per_candidate_analysis.md +172 -0
- package/skills/android-profiler/analysis/workflows/perfetto-trace-analysis/references/triage.md +94 -0
- package/skills/android-profiler/recording/recording_orchestrator.md +36 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/perfetto_trace_recording.md +148 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/app_jank.pftxt +43 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/cpu_profile.pftxt +35 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/java_heap_dump.pftxt +21 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/long_background.pftxt +37 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/memory_counters.pftxt +45 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/native_heap.pftxt +21 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/example-configs/sched_cpu.pftxt +33 -0
- package/skills/android-profiler/recording/workflows/perfetto-trace-recording/references/trace_config_reference.md +102 -0
- package/skills/android-profiler/references/env_setup.md +15 -0
- package/skills/android-profiler/references/perfetto/setup.md +29 -0
- package/skills/android-profiler/references/perfetto/sql.md +327 -0
- package/skills/android-r8-analyzer/SKILL.md +72 -0
- package/skills/android-r8-analyzer/references/CONFIGURATION-ANALYZER.md +287 -0
- package/skills/android-r8-analyzer/references/CONFIGURATION.md +44 -0
- package/skills/android-r8-analyzer/references/KEEP-RULES-IMPACT-HIERARCHY.md +83 -0
- package/skills/android-r8-analyzer/references/REDUNDANT-RULES.md +222 -0
- package/skills/android-r8-analyzer/references/REFLECTION-GUIDE.md +139 -0
- package/skills/android-r8-analyzer/references/REPORT_FORMAT.md +51 -0
- package/skills/android-r8-analyzer/references/android/topic/performance/app-optimization/enable-app-optimization.md +252 -0
- package/skills/android-r8-analyzer/references/android/training/testing/other-components/ui-automator.md +312 -0
- package/skills/android-restore-credentials/SKILL.md +359 -0
- package/skills/android-restore-credentials/references/android/guide/topics/manifest/application-element.md +832 -0
- package/skills/android-restore-credentials/references/android/identity/passkeys/create-passkeys.md +327 -0
- package/skills/android-restore-credentials/references/android/identity/passkeys/sign-in-with-passkeys.md +219 -0
- package/skills/android-styles/SKILL.md +229 -0
- package/skills/android-styles/references/android/develop/ui/compose/designsystems/custom.md +459 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/fundamentals.md +421 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/state-animations.md +461 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/styles-vs-modifiers.md +48 -0
- package/skills/android-styles/references/android/develop/ui/compose/styles/theming.md +269 -0
- package/skills/android-verified-email/SKILL.md +432 -0
- package/skills/android-verified-email/references/android/identity/credential-manager/index.md +67 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/credential-verifier.md +166 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/email-verification-implementation.md +313 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/email-verification.md +158 -0
- package/skills/android-verified-email/references/android/identity/digital-credentials/index.md +112 -0
- package/skills/android-verified-email/references/android/identity/passkeys/create-passkeys.md +327 -0
- package/skills/android-verified-email/references/android/identity/sign-in/credential-manager-webview.md +84 -0
- package/skills/android-wear-compose-m3/SKILL.md +365 -0
- package/skills/android-wear-compose-m3/references/android/training/wearables/compose/migrate-to-material3.md +677 -0
- package/skills/android-wear-compose-m3/references/foundation/AmbientModeSample.kt.md +123 -0
- package/skills/android-wear-compose-m3/references/foundation/AmbientModeSample.kt.md.txt +123 -0
- package/skills/android-wear-compose-m3/references/foundation/CurvedWorldSample.kt.md +430 -0
- package/skills/android-wear-compose-m3/references/foundation/CurvedWorldSample.kt.md.txt +430 -0
- package/skills/android-wear-compose-m3/references/foundation/ExpandableSample.kt.md +99 -0
- package/skills/android-wear-compose-m3/references/foundation/ExpandableSample.kt.md.txt +99 -0
- package/skills/android-wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md +141 -0
- package/skills/android-wear-compose-m3/references/foundation/HierarchicalFocusSample.kt.md.txt +141 -0
- package/skills/android-wear-compose-m3/references/foundation/PagerSamples.kt.md +56 -0
- package/skills/android-wear-compose-m3/references/foundation/PagerSamples.kt.md.txt +56 -0
- package/skills/android-wear-compose-m3/references/foundation/RotarySamples.kt.md +153 -0
- package/skills/android-wear-compose-m3/references/foundation/RotarySamples.kt.md.txt +153 -0
- package/skills/android-wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md +131 -0
- package/skills/android-wear-compose-m3/references/foundation/ScalingLazyColumnSample.kt.md.txt +131 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md +169 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToDismissBoxSample.kt.md.txt +169 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md +282 -0
- package/skills/android-wear-compose-m3/references/foundation/SwipeToRevealSample.kt.md.txt +282 -0
- package/skills/android-wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md +335 -0
- package/skills/android-wear-compose-m3/references/foundation/TransformingLazyColumnSample.kt.md.txt +335 -0
- package/skills/android-wear-compose-m3/references/material3/AlertDialogSample.kt.md +377 -0
- package/skills/android-wear-compose-m3/references/material3/AlertDialogSample.kt.md.txt +377 -0
- package/skills/android-wear-compose-m3/references/material3/AnimatedTextSample.kt.md +165 -0
- package/skills/android-wear-compose-m3/references/material3/AnimatedTextSample.kt.md.txt +165 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonGroupSample.kt.md +91 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonGroupSample.kt.md.txt +91 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonSample.kt.md +496 -0
- package/skills/android-wear-compose-m3/references/material3/ButtonSample.kt.md.txt +496 -0
- package/skills/android-wear-compose-m3/references/material3/CardSample.kt.md +470 -0
- package/skills/android-wear-compose-m3/references/material3/CardSample.kt.md.txt +470 -0
- package/skills/android-wear-compose-m3/references/material3/CheckboxButtonSample.kt.md +67 -0
- package/skills/android-wear-compose-m3/references/material3/CheckboxButtonSample.kt.md.txt +67 -0
- package/skills/android-wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md +162 -0
- package/skills/android-wear-compose-m3/references/material3/ConfirmationDialogSample.kt.md.txt +162 -0
- package/skills/android-wear-compose-m3/references/material3/CurvedTextSamples.kt.md +78 -0
- package/skills/android-wear-compose-m3/references/material3/CurvedTextSamples.kt.md.txt +78 -0
- package/skills/android-wear-compose-m3/references/material3/DatePickerSample.kt.md +131 -0
- package/skills/android-wear-compose-m3/references/material3/DatePickerSample.kt.md.txt +131 -0
- package/skills/android-wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md +74 -0
- package/skills/android-wear-compose-m3/references/material3/DynamicColorSchemeSample.kt.md.txt +74 -0
- package/skills/android-wear-compose-m3/references/material3/EdgeButtonSample.kt.md +63 -0
- package/skills/android-wear-compose-m3/references/material3/EdgeButtonSample.kt.md.txt +63 -0
- package/skills/android-wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md +60 -0
- package/skills/android-wear-compose-m3/references/material3/FadingExpandingLabelSample.kt.md.txt +60 -0
- package/skills/android-wear-compose-m3/references/material3/IconButtonSample.kt.md +125 -0
- package/skills/android-wear-compose-m3/references/material3/IconButtonSample.kt.md.txt +125 -0
- package/skills/android-wear-compose-m3/references/material3/IconToggleButtonSample.kt.md +116 -0
- package/skills/android-wear-compose-m3/references/material3/IconToggleButtonSample.kt.md.txt +116 -0
- package/skills/android-wear-compose-m3/references/material3/LevelIndicatorSample.kt.md +68 -0
- package/skills/android-wear-compose-m3/references/material3/LevelIndicatorSample.kt.md.txt +68 -0
- package/skills/android-wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md +50 -0
- package/skills/android-wear-compose-m3/references/material3/LinearProgressIndicatorSample.kt.md.txt +50 -0
- package/skills/android-wear-compose-m3/references/material3/ListHeaderSample.kt.md +177 -0
- package/skills/android-wear-compose-m3/references/material3/ListHeaderSample.kt.md.txt +177 -0
- package/skills/android-wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md +651 -0
- package/skills/android-wear-compose-m3/references/material3/OneHandedGestureSamples.kt.md.txt +651 -0
- package/skills/android-wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md +57 -0
- package/skills/android-wear-compose-m3/references/material3/OpenOnPhoneDialogSample.kt.md.txt +57 -0
- package/skills/android-wear-compose-m3/references/material3/PageIndicatorSample.kt.md +110 -0
- package/skills/android-wear-compose-m3/references/material3/PageIndicatorSample.kt.md.txt +110 -0
- package/skills/android-wear-compose-m3/references/material3/PagerScaffoldSample.kt.md +204 -0
- package/skills/android-wear-compose-m3/references/material3/PagerScaffoldSample.kt.md.txt +204 -0
- package/skills/android-wear-compose-m3/references/material3/PickerGroupSample.kt.md +139 -0
- package/skills/android-wear-compose-m3/references/material3/PickerGroupSample.kt.md.txt +139 -0
- package/skills/android-wear-compose-m3/references/material3/PickerSample.kt.md +111 -0
- package/skills/android-wear-compose-m3/references/material3/PickerSample.kt.md.txt +111 -0
- package/skills/android-wear-compose-m3/references/material3/PlaceholderSample.kt.md +184 -0
- package/skills/android-wear-compose-m3/references/material3/PlaceholderSample.kt.md.txt +184 -0
- package/skills/android-wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md +263 -0
- package/skills/android-wear-compose-m3/references/material3/ProgressIndicatorSample.kt.md.txt +263 -0
- package/skills/android-wear-compose-m3/references/material3/RadioButtonSample.kt.md +105 -0
- package/skills/android-wear-compose-m3/references/material3/RadioButtonSample.kt.md.txt +105 -0
- package/skills/android-wear-compose-m3/references/material3/ScaffoldSample.kt.md +146 -0
- package/skills/android-wear-compose-m3/references/material3/ScaffoldSample.kt.md.txt +146 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollAwaySample.kt.md +97 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollAwaySample.kt.md.txt +97 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md +66 -0
- package/skills/android-wear-compose-m3/references/material3/ScrollIndicatorSample.kt.md.txt +66 -0
- package/skills/android-wear-compose-m3/references/material3/SliderSample.kt.md +86 -0
- package/skills/android-wear-compose-m3/references/material3/SliderSample.kt.md.txt +86 -0
- package/skills/android-wear-compose-m3/references/material3/StepperSample.kt.md +148 -0
- package/skills/android-wear-compose-m3/references/material3/StepperSample.kt.md.txt +148 -0
- package/skills/android-wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md +166 -0
- package/skills/android-wear-compose-m3/references/material3/SurfaceTransformationSample.kt.md.txt +166 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md +172 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToDismissBoxSample.kt.md.txt +172 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToRevealSample.kt.md +367 -0
- package/skills/android-wear-compose-m3/references/material3/SwipeToRevealSample.kt.md.txt +367 -0
- package/skills/android-wear-compose-m3/references/material3/SwitchButtonSample.kt.md +66 -0
- package/skills/android-wear-compose-m3/references/material3/SwitchButtonSample.kt.md.txt +66 -0
- package/skills/android-wear-compose-m3/references/material3/TextButtonSample.kt.md +115 -0
- package/skills/android-wear-compose-m3/references/material3/TextButtonSample.kt.md.txt +115 -0
- package/skills/android-wear-compose-m3/references/material3/TextToggleButtonSample.kt.md +71 -0
- package/skills/android-wear-compose-m3/references/material3/TextToggleButtonSample.kt.md.txt +71 -0
- package/skills/android-wear-compose-m3/references/material3/TimePickerSample.kt.md +151 -0
- package/skills/android-wear-compose-m3/references/material3/TimePickerSample.kt.md.txt +151 -0
- package/skills/android-wear-compose-m3/references/material3/TimeTextSample.kt.md +65 -0
- package/skills/android-wear-compose-m3/references/material3/TimeTextSample.kt.md.txt +65 -0
- package/skills/android-wear-compose-m3/references/material3/TransformationSpecSample.kt.md +246 -0
- package/skills/android-wear-compose-m3/references/material3/TransformationSpecSample.kt.md.txt +246 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md +89 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnNotificationsSample.kt.md.txt +89 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md +309 -0
- package/skills/android-wear-compose-m3/references/material3/TransformingLazyColumnSample.kt.md.txt +309 -0
- package/skills/android-wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md +205 -0
- package/skills/android-wear-compose-m3/references/navigation3/SwipeDismissableSceneStrategySample.kt.md.txt +205 -0
- package/skills/{architecture-feature-first → flutter-architecture-feature-first}/SKILL.md +1 -1
- package/skills/{bloc → flutter-bloc}/SKILL.md +1 -1
- package/skills/flutter-build-debug/SKILL.md +66 -0
- package/skills/{code-review → flutter-code-review}/SKILL.md +1 -1
- package/skills/{dart-3-updates → flutter-dart-3-updates}/SKILL.md +1 -1
- package/skills/{dart-fix-runtime-errors → flutter-dart-fix-runtime-errors}/SKILL.md +1 -1
- package/skills/{dart-resolve-package-conflicts → flutter-dart-resolve-package-conflicts}/SKILL.md +1 -1
- package/skills/{dart-run-static-analysis → flutter-dart-run-static-analysis}/SKILL.md +1 -1
- package/skills/{dart-use-pattern-matching → flutter-dart-use-pattern-matching}/SKILL.md +1 -1
- package/skills/{effective-dart → flutter-effective-dart}/SKILL.md +1 -1
- package/skills/{provider → flutter-provider}/SKILL.md +1 -1
- package/skills/{riverpod → flutter-riverpod}/SKILL.md +1 -1
- package/skills/ios-cocoapods-debug/SKILL.md +65 -0
- package/skills/ios-code-review/SKILL.md +56 -0
- package/skills/ios-xcode-build-debug/SKILL.md +66 -0
- package/skills/{detect-mobile-stack → mobile-detect-stack}/SKILL.md +1 -1
- package/skills/mobile-firebase/SKILL.md +54 -0
- package/skills/mobile-firebase/references/android/ai-logic.md +31 -0
- package/skills/mobile-firebase/references/android/analytics.md +33 -0
- package/skills/mobile-firebase/references/android/app-check.md +36 -0
- package/skills/mobile-firebase/references/android/auth.md +44 -0
- package/skills/mobile-firebase/references/android/crashlytics.md +31 -0
- package/skills/mobile-firebase/references/android/firestore.md +44 -0
- package/skills/mobile-firebase/references/android/functions.md +33 -0
- package/skills/mobile-firebase/references/android/in-app-messaging.md +28 -0
- package/skills/mobile-firebase/references/android/messaging.md +41 -0
- package/skills/mobile-firebase/references/android/realtime-database.md +50 -0
- package/skills/mobile-firebase/references/android/remote-config.md +43 -0
- package/skills/mobile-firebase/references/android/sql-connect.md +31 -0
- package/skills/mobile-firebase/references/android/storage.md +39 -0
- package/skills/mobile-firebase/references/android.md +30 -0
- package/skills/{firebase-ai/SKILL.md → mobile-firebase/references/flutter/ai-logic.md} +2 -8
- package/skills/{firebase-analytics/SKILL.md → mobile-firebase/references/flutter/analytics.md} +2 -8
- package/skills/{firebase-app-check/SKILL.md → mobile-firebase/references/flutter/app-check.md} +2 -8
- package/skills/{firebase-auth/SKILL.md → mobile-firebase/references/flutter/auth.md} +2 -8
- package/skills/{firebase-crashlytics/SKILL.md → mobile-firebase/references/flutter/crashlytics.md} +2 -8
- package/skills/{firebase-cloud-firestore/SKILL.md → mobile-firebase/references/flutter/firestore.md} +2 -8
- package/skills/{firebase-cloud-functions/SKILL.md → mobile-firebase/references/flutter/functions.md} +2 -8
- package/skills/{firebase-in-app-messaging/SKILL.md → mobile-firebase/references/flutter/in-app-messaging.md} +2 -8
- package/skills/{firebase-messaging/SKILL.md → mobile-firebase/references/flutter/messaging.md} +2 -8
- package/skills/{firebase-database/SKILL.md → mobile-firebase/references/flutter/realtime-database.md} +2 -8
- package/skills/{firebase-remote-config/SKILL.md → mobile-firebase/references/flutter/remote-config.md} +2 -8
- package/skills/{flutterfire-configure/SKILL.md → mobile-firebase/references/flutter/setup-flutterfire.md} +1 -8
- package/skills/{firebase-data-connect/SKILL.md → mobile-firebase/references/flutter/sql-connect.md} +2 -8
- package/skills/{firebase-storage/SKILL.md → mobile-firebase/references/flutter/storage.md} +2 -8
- package/skills/mobile-firebase/references/flutter.md +36 -0
- package/skills/mobile-firebase/references/ios/ai-logic.md +30 -0
- package/skills/mobile-firebase/references/ios/analytics.md +33 -0
- package/skills/mobile-firebase/references/ios/app-check.md +36 -0
- package/skills/mobile-firebase/references/ios/auth.md +48 -0
- package/skills/mobile-firebase/references/ios/crashlytics.md +34 -0
- package/skills/mobile-firebase/references/ios/firestore.md +53 -0
- package/skills/mobile-firebase/references/ios/functions.md +35 -0
- package/skills/mobile-firebase/references/ios/in-app-messaging.md +26 -0
- package/skills/mobile-firebase/references/ios/messaging.md +45 -0
- package/skills/mobile-firebase/references/ios/realtime-database.md +49 -0
- package/skills/mobile-firebase/references/ios/remote-config.md +44 -0
- package/skills/mobile-firebase/references/ios/sql-connect.md +33 -0
- package/skills/mobile-firebase/references/ios/storage.md +36 -0
- package/skills/mobile-firebase/references/ios.md +28 -0
- package/skills/mobile-firebase/references/react-native/ai-logic.md +32 -0
- package/skills/mobile-firebase/references/react-native/analytics.md +43 -0
- package/skills/mobile-firebase/references/react-native/app-check.md +35 -0
- package/skills/mobile-firebase/references/react-native/auth.md +50 -0
- package/skills/mobile-firebase/references/react-native/crashlytics.md +36 -0
- package/skills/mobile-firebase/references/react-native/firestore.md +45 -0
- package/skills/mobile-firebase/references/react-native/functions.md +28 -0
- package/skills/mobile-firebase/references/react-native/in-app-messaging.md +27 -0
- package/skills/mobile-firebase/references/react-native/messaging.md +46 -0
- package/skills/mobile-firebase/references/react-native/realtime-database.md +46 -0
- package/skills/mobile-firebase/references/react-native/remote-config.md +32 -0
- package/skills/mobile-firebase/references/react-native/sql-connect.md +11 -0
- package/skills/mobile-firebase/references/react-native/storage.md +30 -0
- package/skills/mobile-firebase/references/react-native.md +29 -0
- package/skills/mobile-test/SKILL.md +63 -0
- package/skills/mobile-test/references/android/setup/GUIDE.md +183 -0
- package/skills/mobile-test/references/android/setup/references/android/develop/ui/compose/testing/common-patterns.md +181 -0
- package/skills/mobile-test/references/android/setup/references/android/studio/preview/compose-screenshot-testing.md +255 -0
- package/skills/mobile-test/references/android/setup/references/android/training/dependency-injection/hilt-testing.md +447 -0
- package/skills/mobile-test/references/android.md +83 -0
- package/skills/{dart-collect-coverage/SKILL.md → mobile-test/references/flutter/coverage.md} +2 -11
- package/skills/{dart-generate-test-mocks/SKILL.md → mobile-test/references/flutter/generate-mocks.md} +2 -11
- package/skills/{flutter-add-integration-test/SKILL.md → mobile-test/references/flutter/integration-tests.md} +2 -11
- package/skills/{dart-migrate-to-checks-package/SKILL.md → mobile-test/references/flutter/migrate-to-checks.md} +2 -13
- package/skills/{mockito/SKILL.md → mobile-test/references/flutter/mockito.md} +1 -8
- package/skills/{mocktail/SKILL.md → mobile-test/references/flutter/mocktail.md} +1 -8
- package/skills/{patrol-e2e-testing/SKILL.md → mobile-test/references/flutter/patrol.md} +1 -8
- package/skills/{testing/SKILL.md → mobile-test/references/flutter/testing-guidelines.md} +1 -8
- package/skills/{dart-add-unit-test/SKILL.md → mobile-test/references/flutter/unit-tests.md} +2 -11
- package/skills/{flutter-add-widget-test/SKILL.md → mobile-test/references/flutter/widget-tests.md} +2 -11
- package/skills/mobile-test/references/flutter.md +44 -0
- package/skills/mobile-test/references/ios.md +79 -0
- package/skills/mobile-test/references/react-native.md +62 -0
- /package/skills/{dart-use-pattern-matching → flutter-dart-use-pattern-matching}/examples/json_patterns.dart +0 -0
package/README.md
CHANGED
|
@@ -6,7 +6,7 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
6
6
|
|
|
7
7
|
<p align="center">
|
|
8
8
|
<a href="https://github.com/wrsilva/reis-mobile/actions/workflows/ci.yml"><img src="https://github.com/wrsilva/reis-mobile/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
|
|
9
|
-
<img src="https://img.shields.io/badge/Version-0.
|
|
9
|
+
<img src="https://img.shields.io/badge/Version-0.4.0-blue" alt="Version 0.4.0">
|
|
10
10
|
<img src="https://img.shields.io/badge/Claude_Code-plugin-blueviolet" alt="Claude Code plugin">
|
|
11
11
|
<img src="https://img.shields.io/badge/Node.js-22+-339933?logo=node.js&logoColor=white" alt="Node.js 22+">
|
|
12
12
|
<img src="https://img.shields.io/badge/Dependencies-0-brightgreen" alt="Zero dependencies">
|
|
@@ -23,9 +23,9 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
23
23
|
|
|
24
24
|
🔎 **Detects the stack on its own.** Flutter (app or plugin), React Native (including Expo), Kotlin Multiplatform, native Android and iOS, with languages and target platforms. A Flutter app with `android/` and `ios/` is still Flutter.
|
|
25
25
|
|
|
26
|
-
👥 **
|
|
26
|
+
👥 **16 agents and 74 mobile skills.** Architect, performance and test engineers for Flutter, native Android, native iOS and React Native, a staff engineer, a native plugin specialist, a code reviewer and a lead that coordinates them all, plus skills for Gradle, Xcode and CocoaPods builds, Jetpack Compose, BLoC, Riverpod, Firebase and testing on every platform, plugins and security.
|
|
27
27
|
|
|
28
|
-
🌐 **Answers in English or Portuguese.** `reis-mobile init
|
|
28
|
+
🌐 **Answers in English or Portuguese.** `reis-mobile init eng` or `reis-mobile init pt` sets the language of reports, explanations and debates.
|
|
29
29
|
|
|
30
30
|
🧭 **Routes to the right specialist.** Describe the problem in English or Portuguese, and the router identifies the intent, the stack and the platform in focus. "The Android build of my Flutter app broke" loads Flutter **and** Android context.
|
|
31
31
|
|
|
@@ -35,24 +35,26 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
35
35
|
|
|
36
36
|
🔒 **Secrets never reach the model.** The diff sent for review goes through a layer that masks API keys, tokens, JWTs, private keys and keystore passwords.
|
|
37
37
|
|
|
38
|
-
🪶 **
|
|
38
|
+
🪶 **Two commands to install.** `npm install -g reis-mobile` and `reis-mobile init eng` set it up in Claude Code and Codex, with zero npm dependencies, no hooks and no external provider.
|
|
39
39
|
|
|
40
40
|
---
|
|
41
41
|
|
|
42
42
|
## What's new
|
|
43
43
|
|
|
44
|
-
> 🆕 **v0.
|
|
44
|
+
> 🆕 **v0.4.0: every mobile stack.** Native Android, native iOS and React Native get their own architect, performance and test specialists, and `/reis-mobile:debug` finds the cause of a failing build with the toolchain versions in hand.
|
|
45
45
|
>
|
|
46
46
|
> ```bash
|
|
47
|
-
> /reis-mobile:
|
|
48
|
-
> /reis-mobile:
|
|
47
|
+
> /reis-mobile:debug Execution failed for task ':app:compileDebugKotlin'
|
|
48
|
+
> /reis-mobile:debug pod install could not find compatible versions for Firebase
|
|
49
49
|
> ```
|
|
50
50
|
>
|
|
51
|
-
>
|
|
51
|
+
> Tests and Firebase are one skill each — `mobile-test` and `mobile-firebase` — with a guide per platform, so a request loads only what your stack needs.
|
|
52
52
|
|
|
53
53
|
| Version | Highlights |
|
|
54
54
|
|--------|-----------|
|
|
55
|
-
| **v0.
|
|
55
|
+
| **v0.4.0** (current) | Native Android, iOS and React Native: architect, performance and test agents for each; `/reis-mobile:debug` for Gradle, Xcode, CocoaPods and Flutter failures; `mobile-test` and `mobile-firebase` with a guide per platform; the Android team's skills; `.reis-mobile/config.yaml` for monorepos. Skills now use stack prefixes. |
|
|
56
|
+
| **v0.3.6** | `reis-mobile init eng` installs the plugin in Claude Code and Codex at once, skipping whichever is not installed; `init --uninstall` removes it from both. |
|
|
57
|
+
| **v0.3.5** | Installs through npm and the Claude Code and Codex plugins. |
|
|
56
58
|
| **v0.3.4** | Back to the `reis-mobile` name: `reis-mobile` CLI and `/reis-mobile:*` commands, undoing the `mobile` renames of v0.3.2 and v0.3.3. |
|
|
57
59
|
| **v0.3.1** | Answers in English or Portuguese: `reis-mobile init pt\|en` and `reis-mobile lang` save the language for reports, doctor explanations and debates. Agents, skills, commands and docs are now written in English. |
|
|
58
60
|
| **v0.3.0** | `/reis-mobile:debate` command: three specialists with conflicting priorities debate over two rounds and `lead-mobile` decides. Participants vary in role and model; `--external` adds Codex and Gemini. Brings forward the `council` planned for v0.8.0. |
|
|
@@ -64,166 +66,133 @@ A mobile app is not a generic project. A code review that does not know about `B
|
|
|
64
66
|
|
|
65
67
|
## Installation
|
|
66
68
|
|
|
67
|
-
|
|
69
|
+
You need **Node.js 22+** and **[Claude Code](https://claude.com/claude-code)**, the **Codex CLI**, or both.
|
|
68
70
|
|
|
69
|
-
|
|
70
|
-
|---|---|
|
|
71
|
-
| **Claude Code plugin** | Everything: 7 agents, 67 skills and the `/reis-mobile:*` commands |
|
|
72
|
-
| **Codex plugin** | The skills, plus the CLI if you install it from npm |
|
|
73
|
-
| **npm** | The `reis-mobile` CLI: `init`, `doctor`, `route`, `review`, `lang`, and the router the commands rely on |
|
|
74
|
-
|
|
75
|
-
Requirements: **Node.js 22+**. For the plugins, **[Claude Code](https://claude.com/claude-code)** or the **Codex CLI**.
|
|
76
|
-
|
|
77
|
-
### Claude Code (recommended)
|
|
78
|
-
|
|
79
|
-
```bash
|
|
80
|
-
npx reis-mobile init pt # registers the plugin and answers in Portuguese; use "en" for English
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
Or install the CLI globally and keep it around for `doctor`, `route` and `review`:
|
|
71
|
+
### Install
|
|
84
72
|
|
|
85
73
|
```bash
|
|
86
74
|
npm install -g reis-mobile
|
|
87
|
-
reis-mobile init
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
Without Node.js tooling, add the plugin straight from GitHub:
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
claude plugin marketplace add https://github.com/wrsilva/reis-mobile.git
|
|
94
|
-
claude plugin install reis-mobile@reis-mobile
|
|
75
|
+
reis-mobile init eng
|
|
95
76
|
```
|
|
96
77
|
|
|
97
|
-
|
|
78
|
+
`init` installs the plugin in Claude Code and Codex, whichever you have, and sets the answer language (`eng` or `pt`):
|
|
98
79
|
|
|
99
80
|
```text
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
/reis-mobile
|
|
81
|
+
✓ Claude Code installed
|
|
82
|
+
✓ Codex installed
|
|
83
|
+
✓ Language en (~/.config/reis-mobile/config.json)
|
|
103
84
|
```
|
|
104
85
|
|
|
105
|
-
|
|
86
|
+
Restart Claude Code and Codex, open your app folder and try it:
|
|
87
|
+
|
|
88
|
+
| Tool | Try |
|
|
89
|
+
|---|---|
|
|
90
|
+
| Claude Code | `/reis-mobile:doctor`, then `/reis-mobile:review` |
|
|
91
|
+
| Codex | Type `$` to search the skills, or use `/skills` |
|
|
106
92
|
|
|
107
|
-
|
|
93
|
+
### Update
|
|
108
94
|
|
|
109
95
|
```bash
|
|
110
|
-
|
|
111
|
-
|
|
96
|
+
npm update -g reis-mobile
|
|
97
|
+
reis-mobile init eng
|
|
112
98
|
```
|
|
113
99
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
Restart Codex and open a conversation in your mobile app folder. In the CLI or the IDE extension, type `$` in the message field to search for skills, or use `/skills`. See the [official Codex skills documentation](https://learn.chatgpt.com/docs/build-skills#how-chatgpt-and-codex-use-skills).
|
|
100
|
+
Then restart Claude Code and Codex. See what changed in the [CHANGELOG](CHANGELOG.md).
|
|
117
101
|
|
|
118
|
-
|
|
102
|
+
### Uninstall
|
|
119
103
|
|
|
120
104
|
```bash
|
|
121
|
-
|
|
122
|
-
reis-mobile
|
|
123
|
-
reis-mobile route "review architecture" --json
|
|
124
|
-
reis-mobile review --json
|
|
105
|
+
reis-mobile init --uninstall
|
|
106
|
+
npm uninstall -g reis-mobile
|
|
125
107
|
```
|
|
126
108
|
|
|
127
|
-
|
|
109
|
+
The first command removes the plugin from Claude Code and Codex and deletes the saved language; the second removes the CLI. Keep the `-g`: without it, npm looks for the package in the current folder and removes nothing.
|
|
128
110
|
|
|
129
|
-
|
|
111
|
+
<details>
|
|
112
|
+
<summary>Install without npm</summary>
|
|
130
113
|
|
|
131
|
-
|
|
114
|
+
Add the plugin straight from GitHub. The `marketplace add` line only needs to run once per machine.
|
|
132
115
|
|
|
133
116
|
```bash
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
reis-mobile
|
|
137
|
-
|
|
117
|
+
# Claude Code
|
|
118
|
+
claude plugin marketplace add https://github.com/wrsilva/reis-mobile.git
|
|
119
|
+
claude plugin install reis-mobile@reis-mobile
|
|
120
|
+
|
|
121
|
+
# Codex
|
|
122
|
+
codex plugin marketplace add https://github.com/wrsilva/reis-mobile.git
|
|
123
|
+
codex plugin add reis-mobile@reis-mobile
|
|
138
124
|
```
|
|
139
125
|
|
|
140
|
-
|
|
126
|
+
To update, run `claude plugin marketplace update reis-mobile` and `claude plugin update reis-mobile@reis-mobile` in Claude Code, or `codex plugin marketplace upgrade reis-mobile` and `codex plugin add reis-mobile@reis-mobile` in Codex.
|
|
141
127
|
|
|
142
|
-
|
|
143
|
-
<summary>Uninstall</summary>
|
|
128
|
+
To uninstall:
|
|
144
129
|
|
|
145
130
|
```bash
|
|
146
|
-
|
|
147
|
-
|
|
131
|
+
# Claude Code
|
|
132
|
+
claude plugin uninstall reis-mobile@reis-mobile
|
|
133
|
+
claude plugin marketplace remove reis-mobile
|
|
148
134
|
|
|
135
|
+
# Codex
|
|
149
136
|
codex plugin remove reis-mobile@reis-mobile
|
|
150
137
|
codex plugin marketplace remove reis-mobile
|
|
151
138
|
```
|
|
152
139
|
</details>
|
|
153
140
|
|
|
154
141
|
<details>
|
|
155
|
-
<summary>
|
|
142
|
+
<summary>Language</summary>
|
|
156
143
|
|
|
157
|
-
|
|
144
|
+
Agents, skills and commands are written in English. The language you choose is the one reis-mobile **answers** in: `/reis-mobile:review` reports, `/reis-mobile:doctor` explanations, and debate rounds and syntheses.
|
|
158
145
|
|
|
159
146
|
```bash
|
|
160
|
-
#
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
# curl installer (macOS/Linux)
|
|
164
|
-
rm -rf ~/.local/share/reis-mobile ~/.local/bin/reis-mobile
|
|
147
|
+
reis-mobile lang pt # switch to Brazilian Portuguese without reinstalling
|
|
148
|
+
reis-mobile lang eng # switch to English
|
|
149
|
+
reis-mobile lang # show the current language
|
|
165
150
|
```
|
|
166
151
|
|
|
167
|
-
|
|
168
|
-
# PowerShell installer (Windows)
|
|
169
|
-
Remove-Item -Recurse -Force "$env:LOCALAPPDATA\reis-mobile"
|
|
170
|
-
Remove-Item -Force "$HOME\.local\bin\reis-mobile.cmd"
|
|
171
|
-
```
|
|
152
|
+
The choice is saved to `~/.config/reis-mobile/config.json` (`%APPDATA%\reis-mobile\config.json` on Windows) and survives plugin updates. `--lang` on a single run and the `REIS_MOBILE_LANG` environment variable override it. With nothing set, each command answers in the language of your request. Agents that Claude Code triggers on its own, outside a `/reis-mobile:*` command, follow the language of the conversation.
|
|
172
153
|
</details>
|
|
173
154
|
|
|
174
155
|
<details>
|
|
175
|
-
<summary>
|
|
156
|
+
<summary>Using the CLI from Codex</summary>
|
|
157
|
+
|
|
158
|
+
The Codex plugin gives Codex the skills; the agents and the `/reis-mobile:*` commands are Claude Code formats and have not been validated in Codex. For routing and review context, run the CLI in the app folder:
|
|
176
159
|
|
|
177
160
|
```bash
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
reis-mobile init --local # plugin pointing at the clone
|
|
182
|
-
npm run check # validates and runs the tests
|
|
161
|
+
reis-mobile doctor
|
|
162
|
+
reis-mobile route "review architecture" --json
|
|
163
|
+
reis-mobile review --json
|
|
183
164
|
```
|
|
184
165
|
|
|
185
|
-
|
|
166
|
+
You can also ask Codex: *"Run `reis-mobile review --json`, read the instructions in the returned files and review the changes using that context."* The CLI selects the instructions and gathers the context; Codex does the analysis.
|
|
186
167
|
</details>
|
|
187
168
|
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
## Updating
|
|
191
|
-
|
|
192
|
-
To see what changed, check the [CHANGELOG](CHANGELOG.md) or the [releases](https://github.com/wrsilva/reis-mobile/releases).
|
|
193
|
-
|
|
194
|
-
```bash
|
|
195
|
-
# Claude Code plugin
|
|
196
|
-
claude plugin marketplace update reis-mobile
|
|
197
|
-
claude plugin update reis-mobile@reis-mobile
|
|
198
|
-
|
|
199
|
-
# Codex plugin
|
|
200
|
-
codex plugin marketplace upgrade reis-mobile
|
|
169
|
+
<details>
|
|
170
|
+
<summary>Troubleshooting</summary>
|
|
201
171
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
172
|
+
| Symptom | Solution |
|
|
173
|
+
|---------|---------|
|
|
174
|
+
| Codex says `plugin reis-mobile was not found in marketplace reis-mobile` | The marketplace is not registered or is outdated. Run `reis-mobile init eng`, or `codex plugin marketplace add https://github.com/wrsilva/reis-mobile.git` followed by `codex plugin add reis-mobile@reis-mobile` |
|
|
175
|
+
| `claude plugin update` says it is already on the latest version, but the release is newer | Run `claude plugin marketplace update reis-mobile` before `update` |
|
|
176
|
+
| New agents or skills do not show up | Restart Claude Code or Codex: plugins only reload in a new session |
|
|
177
|
+
| `reis-mobile --version` still shows the old version after updating | Another `reis-mobile` comes first on the `PATH`; find it with `which -a reis-mobile` (`where.exe reis-mobile` on Windows) and remove it |
|
|
178
|
+
| `npm uninstall reis-mobile` says `up to date` and the command is still there | Add `-g`: `npm uninstall -g reis-mobile` |
|
|
179
|
+
| `/reis-mobile:*` commands missing after upgrading from v0.3.2 or v0.3.3 | Those versions named the plugin `mobile`. Run `reis-mobile init eng`: it installs `reis-mobile@reis-mobile` and removes `mobile@reis-mobile` |
|
|
180
|
+
| Plugin broken after updating | Reinstall: `reis-mobile init --uninstall`, then `reis-mobile init eng` |
|
|
205
181
|
|
|
206
|
-
|
|
182
|
+
</details>
|
|
207
183
|
|
|
208
|
-
|
|
184
|
+
<details>
|
|
185
|
+
<summary>Development from the clone</summary>
|
|
209
186
|
|
|
210
187
|
```bash
|
|
211
|
-
reis-mobile
|
|
212
|
-
|
|
188
|
+
git clone https://github.com/wrsilva/reis-mobile.git
|
|
189
|
+
cd reis-mobile
|
|
190
|
+
npm link # CLI pointing at the clone
|
|
191
|
+
reis-mobile init --local # plugin pointing at the clone
|
|
192
|
+
npm run check # validates and runs the tests
|
|
213
193
|
```
|
|
214
194
|
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
<details>
|
|
218
|
-
<summary>Update troubleshooting</summary>
|
|
219
|
-
|
|
220
|
-
| Symptom | Solution |
|
|
221
|
-
|---------|---------|
|
|
222
|
-
| `claude plugin update` says it is already on the latest version, but the release is newer | Run `claude plugin marketplace update reis-mobile` before `update` |
|
|
223
|
-
| New agents or skills do not show up | Restart Claude Code: plugins only reload in a new session |
|
|
224
|
-
| `reis-mobile --version` is still old after `npm update -g` | Another `reis-mobile` comes first on the `PATH`, often from Homebrew or the old installers; check with `which -a reis-mobile` (`where.exe reis-mobile` on Windows) |
|
|
225
|
-
| Plugin broken after updating | Reinstall: `reis-mobile init --uninstall` and then `reis-mobile init` |
|
|
226
|
-
|
|
195
|
+
After editing agents, skills or commands, restart Claude Code or Codex.
|
|
227
196
|
</details>
|
|
228
197
|
|
|
229
198
|
---
|
|
@@ -238,10 +207,17 @@ claude plugin list | grep -A1 reis-mobile
|
|
|
238
207
|
/reis-mobile:review # Reviews uncommitted changes (or the whole project, if there are none)
|
|
239
208
|
/reis-mobile:review --base main # Reviews the current branch against main, pull request style
|
|
240
209
|
/reis-mobile:review --base main focus on security # Free-form focus, in English or Portuguese
|
|
210
|
+
/reis-mobile:debug pod install fails on CI # Finds the cause of a build or runtime failure and proposes the fix
|
|
241
211
|
/reis-mobile:debate Riverpod or BLoC in this app? # Debate between the specialists, with a decision by lead-mobile
|
|
242
212
|
/reis-mobile:debate --rounds 3 --external ... # More rounds; --external adds Codex and Gemini, if installed
|
|
243
213
|
```
|
|
244
214
|
|
|
215
|
+
### Debug
|
|
216
|
+
|
|
217
|
+
`/reis-mobile:debug` takes the error, the failing command or a description of the problem. It routes to the debug agent and to the skills for the stack and the build area it recognizes (`gradle`, `xcode`, `cocoapods`, `signing`, `pub`...), adds the doctor report with the installed toolchain versions, and answers with the cause, the evidence, the minimal fix and how to verify it.
|
|
218
|
+
|
|
219
|
+
It proposes; it does not change your project on its own. Commands that alter files or caches — `flutter clean`, `pod install`, deleting `DerivedData` or Gradle caches, dependency upgrades — only run after you ask it to apply the fix.
|
|
220
|
+
|
|
245
221
|
### Debate
|
|
246
222
|
|
|
247
223
|
`/reis-mobile:debate` puts three specialists with conflicting priorities to defend positions on the same question. Round 1 is blind, so the first to answer does not anchor the others; in round 2 each one rebuts specific points from the others; at the end, `lead-mobile` decides and delivers the action plan. The rounds are stored in `.reis-mobile/debates/`.
|
|
@@ -259,13 +235,13 @@ $ reis-mobile route "Execution failed for task ':app:compileDebugKotlin'"
|
|
|
259
235
|
Intent debug (confidence 0.5) · area gradle
|
|
260
236
|
Stack flutter · focus android
|
|
261
237
|
Agent mobile-staff-engineer
|
|
262
|
-
Skills dart-fix-runtime-errors, dart-resolve-package-conflicts, flutter-errors, flutter-fix-layout-issues
|
|
238
|
+
Skills flutter-build-debug, flutter-dart-fix-runtime-errors, flutter-dart-resolve-package-conflicts, flutter-errors, flutter-fix-layout-issues, android-gradle-build-debug
|
|
263
239
|
|
|
264
240
|
$ reis-mobile route "write tests for the login cubit"
|
|
265
241
|
Intent test (confidence 1)
|
|
266
242
|
Stack flutter
|
|
267
243
|
Agent flutter-test-engineer
|
|
268
|
-
Skills
|
|
244
|
+
Skills mobile-test
|
|
269
245
|
```
|
|
270
246
|
|
|
271
247
|
The router never invents a specialist: if no agent serves the intent, it warns you. You do not need to call agents by name, because Claude Code triggers them by their description when the request fits. To force one of them, ask: *"use reis-mobile:flutter-architect to review the architecture"*.
|
|
@@ -280,15 +256,14 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
280
256
|
| Review a PR or my changes | `/reis-mobile:review` | ✅ |
|
|
281
257
|
| Audit an entire Flutter project | `/reis-mobile:review` with no pending changes | ✅ |
|
|
282
258
|
| Find out a project's stack | `reis-mobile detect` | ✅ |
|
|
283
|
-
| Review the architecture of
|
|
284
|
-
| Find the cause of jank, rebuilds or leaks | agent `flutter-performance-engineer` | ✅ |
|
|
285
|
-
| Write or audit
|
|
286
|
-
| Debug a Gradle, Xcode or
|
|
259
|
+
| Review the architecture of an app | agent `flutter-architect`, `android-architect`, `ios-architect` or `rn-architect` | ✅ |
|
|
260
|
+
| Find the cause of jank, rebuilds, hangs or leaks | agent `flutter-`, `android-`, `ios-` or `rn-performance-engineer` | ✅ |
|
|
261
|
+
| Write or audit tests | agent `flutter-`, `android-`, `ios-` or `rn-test-engineer` | ✅ |
|
|
262
|
+
| Debug a Gradle, Xcode, CocoaPods or Flutter build | `/reis-mobile:debug` | ✅ |
|
|
287
263
|
| Build a plugin or debug MethodChannel/EventChannel | agent `plugin-native-expert` | ✅ |
|
|
288
264
|
| Full audit with several specialists | agent `lead-mobile` | ✅ |
|
|
289
265
|
| Decide between two architectures with a real trade-off | `/reis-mobile:debate` | ✅ |
|
|
290
|
-
| Dedicated
|
|
291
|
-
| Dedicated test command (including XCTest and Espresso) | `/reis-mobile:test` | 🔜 v0.4 |
|
|
266
|
+
| Dedicated test command (including XCTest and Espresso) | `/reis-mobile:test` | 🔜 v0.5 |
|
|
292
267
|
| Check whether the app is ready for the store | `/reis-mobile:release` | 🔜 v0.5 |
|
|
293
268
|
| Consolidated decision by consensus between agents | `/reis-mobile:council` | 🔜 v0.8 |
|
|
294
269
|
|
|
@@ -301,8 +276,8 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
301
276
|
| **Project context** | You explain the stack | Deterministic detection of stack, platform and variant |
|
|
302
277
|
| **Review** | Generic | Mobile checklists: lifecycle, `BuildContext`, MASVS, manifest, ATS |
|
|
303
278
|
| **Secrets in the diff** | Sent as they are | Masked before reaching the model |
|
|
304
|
-
| **Specialists** | None |
|
|
305
|
-
| **Context cost** | Zero | ~
|
|
279
|
+
| **Specialists** | None | 16 agents and 74 mobile skills |
|
|
280
|
+
| **Context cost** | Zero | ~8,400 fixed tokens (agent and skill descriptions), no hooks |
|
|
306
281
|
| **Best for** | General tasks | Teams and developers working on mobile apps |
|
|
307
282
|
|
|
308
283
|
**In short:** Claude Code already knows how to code. reis-mobile makes it look at what matters in a mobile app.
|
|
@@ -319,7 +294,7 @@ The router never invents a specialist: if no agent serves the intent, it warns y
|
|
|
319
294
|
├─ detect stack ──────── pubspec.yaml → flutter (android, ios)
|
|
320
295
|
├─ detect intent ─────── review
|
|
321
296
|
├─ select agent ──────── mobile-code-reviewer
|
|
322
|
-
├─ select skills ─────── code-review · effective-dart · flutter-project-audit · flutter-widget-review · mobile-security-audit …
|
|
297
|
+
├─ select skills ─────── flutter-code-review · flutter-effective-dart · flutter-project-audit · flutter-widget-review · mobile-security-audit …
|
|
323
298
|
├─ collect context ───── git diff (lock files out, secrets masked)
|
|
324
299
|
└─ review report ─────── Summary · Critical · Bugs · Architecture · Security · Performance · Maintainability
|
|
325
300
|
```
|
|
@@ -344,28 +319,37 @@ The Node.js core decides **what** to load. The model decides **how** to review,
|
|
|
344
319
|
| `flutter-architect` | Flutter | architecture | Layers, feature-first, coupling, misplaced logic, refactoring plan |
|
|
345
320
|
| `flutter-performance-engineer` | Flutter | performance | Rebuilds, jank, lists, leaks, paint, startup, with a score and top 3 fixes |
|
|
346
321
|
| `flutter-test-engineer` | Flutter | test | Unit, BLoC/Cubit, widget and integration, coverage audit and fragile tests |
|
|
322
|
+
| `android-architect` | Android | architecture | UI, domain and data layers, Gradle modules, ViewModel and DI boundaries |
|
|
323
|
+
| `android-performance-engineer` | Android | performance | Compose recomposition, lists, ANRs, startup, leaks, app size |
|
|
324
|
+
| `android-test-engineer` | Android | test | ViewModel and coroutine tests, Compose and Espresso UI tests, flaky tests |
|
|
325
|
+
| `ios-architect` | iOS | architecture | SwiftUI and UIKit structure, packages, navigation, concurrency boundaries |
|
|
326
|
+
| `ios-performance-engineer` | iOS | performance | Hangs, SwiftUI updates, lists, launch time, retain cycles, memory |
|
|
327
|
+
| `ios-test-engineer` | iOS | test | Swift Testing and XCTest unit tests, async code, XCUITest flows |
|
|
328
|
+
| `rn-architect` | React Native | architecture | Feature structure, server vs client state, navigation, native modules |
|
|
329
|
+
| `rn-performance-engineer` | React Native | performance | Re-renders, lists, JavaScript thread, animations, startup, bundle size |
|
|
330
|
+
| `rn-test-engineer` | React Native | test | Jest, React Native Testing Library, native module mocks, Detox or Maestro |
|
|
347
331
|
| `mobile-staff-engineer` | all | debug, architecture, performance, test, security, release, migration, dependency, build, deployment, accessibility | Senior Flutter/Android/iOS specialist for whatever no specific agent covers |
|
|
348
332
|
| `plugin-native-expert` | Flutter | on demand | MethodChannel, EventChannel, Pigeon and Kotlin/Swift bridges, threading and lifecycle |
|
|
349
333
|
| `lead-mobile` | all | on demand | Coordinates the other agents and consolidates a single action plan |
|
|
350
334
|
|
|
351
|
-
When more than one agent serves the intent, the stack-specific one wins. In a Flutter app, `performance` goes to `flutter-performance-engineer`; in a native Android app,
|
|
335
|
+
When more than one agent serves the intent, the stack-specific one wins. In a Flutter app, `performance` goes to `flutter-performance-engineer`; in a native Android app, to `android-performance-engineer`. Intents without a stack specialist, such as `debug` or `release`, go to `mobile-staff-engineer`.
|
|
352
336
|
|
|
353
337
|
### Skills
|
|
354
338
|
|
|
355
|
-
**Auto-routed** skills are loaded by the router together with the agent. The others (—) are triggered by Claude Code when the request matches the description, for example *"add push notifications with FCM"* → `firebase
|
|
339
|
+
**Auto-routed** skills are loaded by the router together with the agent. The others (—) are triggered by Claude Code when the request matches the description, for example *"add push notifications with FCM"* → `mobile-firebase`.
|
|
356
340
|
|
|
357
341
|
<details>
|
|
358
342
|
<summary><strong>Review and quality</strong> (7)</summary>
|
|
359
343
|
|
|
360
344
|
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
361
345
|
|---|---|---|---|---|
|
|
362
|
-
| `code-review` | Performs thorough code reviews for Flutter/Dart pull requests and merge requests. | review | Flutter | evanca/flutter-ai-rules |
|
|
363
|
-
| `effective-dart` | Applies Effective Dart guidelines in Flutter/Dart code. | review | Flutter | evanca/flutter-ai-rules |
|
|
364
|
-
| `dart-run-static-analysis` | Execute `dart analyze` to identify warnings and errors, and use `dart fix --apply` to automatically resolve… | review | Flutter | dart-lang/skills |
|
|
346
|
+
| `flutter-code-review` | Performs thorough code reviews for Flutter/Dart pull requests and merge requests. | review | Flutter | evanca/flutter-ai-rules |
|
|
347
|
+
| `flutter-effective-dart` | Applies Effective Dart guidelines in Flutter/Dart code. | review | Flutter | evanca/flutter-ai-rules |
|
|
348
|
+
| `flutter-dart-run-static-analysis` | Execute `dart analyze` to identify warnings and errors, and use `dart fix --apply` to automatically resolve… | review | Flutter | dart-lang/skills |
|
|
365
349
|
| `flutter-project-audit` | Audits the health of a Flutter project as a whole — pubspec constraints and lock file, analysis_options and lints,… | review, architecture, dependency | Flutter | reis-mobile |
|
|
366
350
|
| `flutter-widget-review` | Reviews Flutter widget code for lifecycle bugs, BuildContext misuse across async gaps, missing dispose, side effects… | review, performance | Flutter | reis-mobile |
|
|
367
|
-
| `dart-3-updates` | Applies Dart 3 language features in Flutter/Dart code. | migration | Flutter | evanca/flutter-ai-rules |
|
|
368
|
-
| `dart-use-pattern-matching` | Applies Dart 3 pattern matching, switch expressions, and destructuring idiomatically to validate data schemas,… | — | Flutter | dart-lang/skills |
|
|
351
|
+
| `flutter-dart-3-updates` | Applies Dart 3 language features in Flutter/Dart code. | migration | Flutter | evanca/flutter-ai-rules |
|
|
352
|
+
| `flutter-dart-use-pattern-matching` | Applies Dart 3 pattern matching, switch expressions, and destructuring idiomatically to validate data schemas,… | — | Flutter | dart-lang/skills |
|
|
369
353
|
|
|
370
354
|
</details>
|
|
371
355
|
|
|
@@ -374,45 +358,37 @@ When more than one agent serves the intent, the stack-specific one wins. In a Fl
|
|
|
374
358
|
|
|
375
359
|
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
376
360
|
|---|---|---|---|---|
|
|
377
|
-
| `architecture-feature-first` | Structures Flutter apps using layered architecture (UI / Logic / Data) with feature-first file organization. | architecture | Flutter | evanca/flutter-ai-rules |
|
|
361
|
+
| `flutter-architecture-feature-first` | Structures Flutter apps using layered architecture (UI / Logic / Data) with feature-first file organization. | architecture | Flutter | evanca/flutter-ai-rules |
|
|
378
362
|
| `flutter-app-architecture` | Provides best practices for Flutter app architecture, including layered architecture, data flow, state management… | architecture | Flutter | evanca/flutter-ai-rules |
|
|
379
363
|
| `flutter-apply-architecture-best-practices` | Architects a Flutter application using the recommended layered approach (UI, Logic, Data). | architecture | Flutter | flutter/skills |
|
|
380
364
|
| `flutter-managing-state` | Manages application and ephemeral state in a Flutter app. | architecture | Flutter | flutter/skills |
|
|
381
|
-
| `bloc` | Implements Flutter state management using the bloc library (Bloc and Cubit). | — | Flutter | evanca/flutter-ai-rules |
|
|
382
|
-
| `riverpod` | Uses Riverpod for state management in Flutter/Dart. | — | Flutter | evanca/flutter-ai-rules |
|
|
383
|
-
| `provider` | Uses the Provider package for dependency injection and state management in Flutter. | — | Flutter | evanca/flutter-ai-rules |
|
|
365
|
+
| `flutter-bloc` | Implements Flutter state management using the bloc library (Bloc and Cubit). | — | Flutter | evanca/flutter-ai-rules |
|
|
366
|
+
| `flutter-riverpod` | Uses Riverpod for state management in Flutter/Dart. | — | Flutter | evanca/flutter-ai-rules |
|
|
367
|
+
| `flutter-provider` | Uses the Provider package for dependency injection and state management in Flutter. | — | Flutter | evanca/flutter-ai-rules |
|
|
384
368
|
| `flutter-change-notifier` | Implements state management with ChangeNotifier and Provider in Flutter. | — | Flutter | evanca/flutter-ai-rules |
|
|
385
369
|
| `flutter-login-usecase` | Implements a Flutter login use case that authenticates through an injected repository and persists the access token… | — | Flutter | reis-mobile |
|
|
386
370
|
|
|
387
371
|
</details>
|
|
388
372
|
|
|
389
373
|
<details>
|
|
390
|
-
<summary><strong>Testing</strong> (
|
|
374
|
+
<summary><strong>Testing</strong> (1)</summary>
|
|
391
375
|
|
|
392
376
|
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
393
377
|
|---|---|---|---|---|
|
|
394
|
-
| `
|
|
395
|
-
| `dart-add-unit-test` | Write and organize unit tests for functions, methods, and classes using `package:test`. | test | Flutter | dart-lang/skills |
|
|
396
|
-
| `flutter-add-widget-test` | Implement a component-level test using `WidgetTester` to verify UI rendering and user interactions (tapping,… | test | Flutter | flutter/skills |
|
|
397
|
-
| `flutter-add-integration-test` | Configures Flutter Driver for app interaction and converts MCP actions into permanent integration tests. | test | Flutter | flutter/skills |
|
|
398
|
-
| `patrol-e2e-testing` | Generates and maintains end-to-end tests for Flutter apps using Patrol. | test | Flutter | evanca/flutter-ai-rules |
|
|
399
|
-
| `mocktail` | Uses the Mocktail package for mocking in Flutter/Dart tests. | test | Flutter | evanca/flutter-ai-rules |
|
|
400
|
-
| `mockito` | Uses the Mockito package for mocking in Flutter/Dart tests. | test | Flutter | evanca/flutter-ai-rules |
|
|
401
|
-
| `dart-generate-test-mocks` | Define and generate mock objects for external dependencies using `package:mockito` and `build_runner`. | test | Flutter | dart-lang/skills |
|
|
402
|
-
| `dart-collect-coverage` | Collect coverage using the coverage packge and create an LCOV report | test | Flutter | dart-lang/skills |
|
|
403
|
-
| `dart-migrate-to-checks-package` | Replace the usage of `expect` and similar functions from `package:matcher` to `package:checks` equivalents. | migration | Flutter | dart-lang/skills |
|
|
378
|
+
| `mobile-test` | Unit, widget, integration and end-to-end tests, mocks and coverage for Flutter, native Android, native iOS and React Native, with one reference per platform. | test | all | reis-mobile, flutter/skills, dart-lang/skills, evanca/flutter-ai-rules, android/skills |
|
|
404
379
|
|
|
405
380
|
</details>
|
|
406
381
|
|
|
407
382
|
<details>
|
|
408
|
-
<summary><strong>Debug</strong> (
|
|
383
|
+
<summary><strong>Debug</strong> (5)</summary>
|
|
409
384
|
|
|
410
385
|
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
411
386
|
|---|---|---|---|---|
|
|
412
387
|
| `flutter-errors` | Diagnoses and fixes common Flutter errors. | debug | Flutter | evanca/flutter-ai-rules |
|
|
413
388
|
| `flutter-fix-layout-issues` | Fixes Flutter layout errors (overflows, unbounded constraints) using Dart and Flutter MCP tools. | debug | Flutter | flutter/skills |
|
|
414
|
-
| `dart-fix-runtime-errors` | Uses get_runtime_errors and lsp to fetch an active stack trace, locate the failing line, apply a fix, and verify… | debug | Flutter | dart-lang/skills |
|
|
415
|
-
| `dart-resolve-package-conflicts` | Workflow for fixing package version conflicts. | debug, dependency | Flutter | dart-lang/skills |
|
|
389
|
+
| `flutter-dart-fix-runtime-errors` | Uses get_runtime_errors and lsp to fetch an active stack trace, locate the failing line, apply a fix, and verify… | debug | Flutter | dart-lang/skills |
|
|
390
|
+
| `flutter-dart-resolve-package-conflicts` | Workflow for fixing package version conflicts. | debug, dependency | Flutter | dart-lang/skills |
|
|
391
|
+
| `flutter-build-debug` | Diagnoses failing Flutter builds by locating the layer that broke — Dart compilation, pub version solving… | debug, build, dependency, migration | Flutter | reis-mobile |
|
|
416
392
|
|
|
417
393
|
</details>
|
|
418
394
|
|
|
@@ -466,13 +442,12 @@ When more than one agent serves the intent, the stack-specific one wins. In a Fl
|
|
|
466
442
|
</details>
|
|
467
443
|
|
|
468
444
|
<details>
|
|
469
|
-
<summary><strong>Security</strong> (
|
|
445
|
+
<summary><strong>Security</strong> (2)</summary>
|
|
470
446
|
|
|
471
447
|
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
472
448
|
|---|---|---|---|---|
|
|
473
449
|
| `mobile-security-audit` | Security audit for mobile apps based on the OWASP MASVS categories — insecure token storage, hardcoded secrets,… | review, security, release | all | reis-mobile |
|
|
474
450
|
| `flutter-secure-token-store` | Stores JWT access tokens on Flutter with platform secure storage (Keychain on iOS, Keystore-backed storage on… | security | Flutter | reis-mobile |
|
|
475
|
-
| `firebase-app-check` | Integrates Firebase App Check into Flutter apps. | security | Flutter | evanca/flutter-ai-rules |
|
|
476
451
|
|
|
477
452
|
</details>
|
|
478
453
|
|
|
@@ -487,23 +462,55 @@ When more than one agent serves the intent, the stack-specific one wins. In a Fl
|
|
|
487
462
|
</details>
|
|
488
463
|
|
|
489
464
|
<details>
|
|
490
|
-
<summary><strong>Firebase</strong> (
|
|
465
|
+
<summary><strong>Firebase</strong> (1)</summary>
|
|
491
466
|
|
|
492
467
|
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
493
468
|
|---|---|---|---|---|
|
|
494
|
-
| `
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
|
502
|
-
|
|
503
|
-
| `
|
|
504
|
-
| `
|
|
505
|
-
| `
|
|
506
|
-
| `
|
|
469
|
+
| `mobile-firebase` | Firebase on Flutter, native Android, native iOS and React Native: setup, Authentication, Firestore, Realtime Database, Storage, Functions, Messaging, Analytics, Crashlytics, Remote Config, App Check, In-App Messaging, AI Logic and SQL Connect, with a guide per platform and product. | — | all | reis-mobile, evanca/flutter-ai-rules |
|
|
470
|
+
|
|
471
|
+
</details>
|
|
472
|
+
|
|
473
|
+
<details>
|
|
474
|
+
<summary><strong>Native Android</strong> (25)</summary>
|
|
475
|
+
|
|
476
|
+
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
477
|
+
|---|---|---|---|---|
|
|
478
|
+
| `android-code-review` | Reviews native Android code in Kotlin and Java for the bugs that reach production — lifecycle and Context leaks… | review, performance | Android, kotlin-multiplatform | reis-mobile |
|
|
479
|
+
| `android-gradle-build-debug` | Diagnoses failing Android Gradle builds — JDK, Gradle, Android Gradle Plugin and Kotlin version mismatches… | debug, build, dependency, migration | Android, kotlin-multiplatform | reis-mobile |
|
|
480
|
+
| `android-intent-security` | Best practices for Android Intent security. | security, review | Android | android/skills |
|
|
481
|
+
| `android-agp-9-upgrade` | Upgrades, or migrates, an Android project to use Android Gradle Plugin (AGP) version 9. | migration, build, dependency | Android | android/skills |
|
|
482
|
+
| `android-r8-analyzer` | Analyzes Android build files and R8 keep rules to identify redundancies, broad package-wide rules, and rules that… | performance, build | Android | android/skills |
|
|
483
|
+
| `android-profiler` | Manages Android performance profiling and debugging. | performance | Android | android/skills |
|
|
484
|
+
| `android-play-policy-insights` | Automated auditor designed to verify Android applications against Google Play Policy domains. | release | Android | android/skills |
|
|
485
|
+
| `android-play-billing-library-version-upgrade` | Use this skill when upgrading or migrating an Android project from any legacy Google Play Billing Library (PBL)… | — | Android | android/skills |
|
|
486
|
+
| `android-engage-sdk-integration` | Helps developers integrate, debug, and resolve Play Engage SDK implementation issues. | — | Android | android/skills |
|
|
487
|
+
| `android-migrate-xml-views-to-jetpack-compose` | Provides a structured workflow for migrating an Android XML View to Jetpack Compose. | — | Android | android/skills |
|
|
488
|
+
| `android-adaptive` | Instructions to make or update an app's UI so that it adapts to different Android devices including phones… | — | Android | android/skills |
|
|
489
|
+
| `android-edge-to-edge` | Use this skill to migrate your Jetpack Compose app to add adaptive edge-to-edge support and troubleshoot common… | — | Android | android/skills |
|
|
490
|
+
| `android-styles` | Use this skill to integrate the Jetpack Compose Styles API into an Android project. | — | Android | android/skills |
|
|
491
|
+
| `android-navigation-3` | Learn how to install and migrate to Jetpack Navigation 3, and how to implement features and patterns such as deep… | — | Android | android/skills |
|
|
492
|
+
| `android-navigation-event` | Intercept back gestures and run Predictive Back animations using the NavigationEvent (androidx.navigationevent)… | — | Android | android/skills |
|
|
493
|
+
| `android-camerax` | Provide technical guidance for Android camera development with CameraX. | — | Android | android/skills |
|
|
494
|
+
| `android-media3-cast-integration` | Implements Google Cast support in Android apps using Jetpack Media3. | — | Android | android/skills |
|
|
495
|
+
| `android-restore-credentials` | Provides knowledge and workflows to implement Android's Restore Credentials feature using the androidx.credentials… | — | Android | android/skills |
|
|
496
|
+
| `android-verified-email` | Provides a complete workflow for implementing verified email retrieval on Android Credential Manager API. | — | Android | android/skills |
|
|
497
|
+
| `android-appfunctions` | Analyzes Android apps to identify key user workflows for AppFunctions such as creating a note, playing media, or… | — | Android | android/skills |
|
|
498
|
+
| `android-ml-kit-genai-prompt-api` | Analyzes Android codebases to implement ML Kit GenAI Prompt API. | — | Android | android/skills |
|
|
499
|
+
| `android-wear-compose-m3` | Expert guidance for working with Wear OS Compose Material3. | — | Android | android/skills |
|
|
500
|
+
| `android-leanback-to-compose-tv-migration` | Provides instructions and architectural patterns for migrating Android TV applications from legacy Leanback UI… | — | Android | android/skills |
|
|
501
|
+
| `android-display-glasses-with-jetpack-compose-glimmer` | Provides guidelines for developing projected Android XR apps for display glasses using the Jetpack Compose Glimmer… | — | Android | android/skills |
|
|
502
|
+
| `android-cli` | Provides instructions for installing and using the `android` CLI. | — | Android | android/skills |
|
|
503
|
+
|
|
504
|
+
</details>
|
|
505
|
+
|
|
506
|
+
<details>
|
|
507
|
+
<summary><strong>Native iOS</strong> (3)</summary>
|
|
508
|
+
|
|
509
|
+
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
510
|
+
|---|---|---|---|---|
|
|
511
|
+
| `ios-code-review` | Reviews native iOS code in Swift and Objective-C for the bugs that reach production — retain cycles in closures… | review, performance | iOS | reis-mobile |
|
|
512
|
+
| `ios-xcode-build-debug` | Diagnoses failing iOS builds in Xcode and xcodebuild — code signing and provisioning, deployment target… | debug, build, release, migration | iOS | reis-mobile |
|
|
513
|
+
| `ios-cocoapods-debug` | Diagnoses CocoaPods failures in iOS, Flutter and React Native projects — "could not find compatible versions"… | debug, dependency, build, migration | iOS | reis-mobile |
|
|
507
514
|
|
|
508
515
|
</details>
|
|
509
516
|
|
|
@@ -513,7 +520,7 @@ When more than one agent serves the intent, the stack-specific one wins. In a Fl
|
|
|
513
520
|
| Skill | What it does | Auto-routed for | Stack | Origin |
|
|
514
521
|
|---|---|---|---|---|
|
|
515
522
|
| `flutter-setting-up-on-macos` | Sets up a macOS environment for Flutter development. | — | Flutter | flutter/skills |
|
|
516
|
-
| `detect-
|
|
523
|
+
| `mobile-detect-stack` | Detects the mobile stack of the current project (Flutter, Android, iOS, React Native, Kotlin Multiplatform), its… | — | all | reis-mobile |
|
|
517
524
|
|
|
518
525
|
</details>
|
|
519
526
|
|
|
@@ -527,17 +534,17 @@ Third-party skills keep their original name and license. See [THIRD_PARTY_NOTICE
|
|
|
527
534
|
|
|
528
535
|
**Secrets masked.** The diff goes through [`core/security/redact.mjs`](core/security/redact.mjs) before reaching the model. Lock files and generated code (`*.g.dart`, `*.freezed.dart`, `*.pbxproj`) stay out of the diff. Redaction is a protection layer, not a guarantee. See [SECURITY.md](SECURITY.md).
|
|
529
536
|
|
|
530
|
-
**No telemetry.** `detect`, `doctor`, `route` and `
|
|
537
|
+
**No telemetry.** `detect`, `doctor`, `route`, `review` and `debug` make no network calls. Only installation touches the network, to download the package and register the plugin. One imported skill, `android-play-policy-insights`, runs Python scripts that download your app's public Google Play listing when the model uses it. The AI analysis uses the model of the session you are working in, such as Claude Code or Codex.
|
|
531
538
|
|
|
532
539
|
**Exception: `/reis-mobile:debate --external`.** This flag, and only this flag, sends the debate context — including excerpts of the files mentioned in the question — to the `codex` and `gemini` CLIs, which are third-party and have their own data policies. Without the flag, nothing leaves your session. The `review` diff is masked by `redact.mjs`, but the context you cite in a debate question does not go through that layer: check what you are sending before using `--external`.
|
|
533
540
|
|
|
534
|
-
**Context cost.** The descriptions of the
|
|
541
|
+
**Context cost.** The descriptions of the 16 agents and 74 skills add up to about 8,400 fixed tokens per session, estimated from their length (v0.3 measured about 4,800 with `claude plugin details reis-mobile`). The full content of each skill is only loaded when it is used.
|
|
535
542
|
|
|
536
543
|
**No hooks.** The plugin does not attach to Claude Code events. It only acts when you call a command or when a skill is relevant.
|
|
537
544
|
|
|
538
545
|
**Own namespace.** Commands live under `/reis-mobile:*` and do not conflict with the built-in `/review` or `/security-review`.
|
|
539
546
|
|
|
540
|
-
**Clean uninstall.** `reis-mobile init --uninstall` removes the plugin
|
|
547
|
+
**Clean uninstall.** `reis-mobile init --uninstall` removes the plugin and its marketplace from Claude Code and Codex, and the saved language, without leaving configuration behind.
|
|
541
548
|
|
|
542
549
|
---
|
|
543
550
|
|
|
@@ -552,7 +559,8 @@ Third-party skills keep their original name and license. See [THIRD_PARTY_NOTICE
|
|
|
552
559
|
| v0.3.1 | Answer language (`reis-mobile init pt\|en`, `reis-mobile lang`) and project content in English | ✅ |
|
|
553
560
|
| v0.3.4 | Back to the `reis-mobile` name after the `mobile` renames of v0.3.2 and v0.3.3 | ✅ |
|
|
554
561
|
| v0.3.5 | Distribution through npm and the Claude Code and Codex plugins only | ✅ |
|
|
555
|
-
| v0.
|
|
562
|
+
| v0.3.6 | `reis-mobile init` installs in Claude Code and Codex | ✅ |
|
|
563
|
+
| v0.4.0 | Native Android and iOS skills, architect, performance and test agents for Android, iOS and React Native, `.reis-mobile/config.yaml` and `/reis-mobile:debug` (Gradle, Xcode, CocoaPods, Flutter) | ✅ |
|
|
556
564
|
| v0.5.0 | `/reis-mobile:test` and native tests (XCTest, Espresso) | ⏳ |
|
|
557
565
|
| v0.6.0 | `/reis-mobile:release` with quality gates | ⏳ |
|
|
558
566
|
| v0.7.0 | React Native pack | ⏳ |
|
|
@@ -568,16 +576,22 @@ Third-party skills keep their original name and license. See [THIRD_PARTY_NOTICE
|
|
|
568
576
|
Not for the review, which only reads code. `/reis-mobile:doctor` shows what is missing in case you want to build.
|
|
569
577
|
|
|
570
578
|
**My app lives inside a monorepo.**
|
|
571
|
-
|
|
579
|
+
Commit a `.reis-mobile/config.yaml` at the repository root pointing at the app:
|
|
580
|
+
|
|
581
|
+
```yaml
|
|
582
|
+
app: apps/mobile
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
Every command then analyzes `apps/mobile`, wherever in the repository you run it, and the review diff is restricted to that folder. Without the file, run from the app folder or pass `--dir apps/mobile`.
|
|
572
586
|
|
|
573
587
|
**Does it work with native Android and iOS?**
|
|
574
|
-
|
|
588
|
+
Yes. Native Android has its own architect, performance and test agents, review and Gradle debugging skills, and the Android team's skills from `android/skills` (Compose, AGP 9, R8, Play policy, Wear, TV and more). Native iOS has its own agents and skills for review, Xcode and CocoaPods. React Native has architect, performance and test agents; its skills are still on the roadmap.
|
|
575
589
|
|
|
576
590
|
**I already have skills with the same names in `~/.claude/skills`.**
|
|
577
591
|
The plugin's skills live in the `reis-mobile:` namespace and do not conflict, but Claude Code loads both descriptions. To save context, remove the global copies the plugin already covers.
|
|
578
592
|
|
|
579
593
|
**Does it work in Codex?**
|
|
580
|
-
|
|
594
|
+
Yes: `reis-mobile init eng` installs the plugin in Codex too. See [installation](#install). Installation does not confirm parity with the Claude Code agents and commands; the `reis-mobile` CLI can also be run by Codex to get diagnostics and context.
|
|
581
595
|
|
|
582
596
|
**Does it work in Cursor?**
|
|
583
597
|
The Cursor integration has not been validated yet. The MCP server remains on the roadmap for v0.8.0.
|