vybekiit 0.4.0 → 0.6.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/dist/bin.js +840 -296
- package/dist/global-skills/add-ai/SKILL.md +53 -0
- package/dist/global-skills/add-analytics/SKILL.md +65 -0
- package/dist/global-skills/add-app-clip/SKILL.md +280 -0
- package/dist/global-skills/add-app-clip/agents/openai.yaml +4 -0
- package/dist/global-skills/add-app-clip/references/native-module.md +96 -0
- package/dist/global-skills/add-blog/SKILL.md +49 -0
- package/dist/global-skills/add-crud/SKILL.md +28 -0
- package/dist/global-skills/add-files/SKILL.md +65 -0
- package/dist/global-skills/add-images/SKILL.md +64 -0
- package/dist/global-skills/add-language/SKILL.md +44 -0
- package/dist/global-skills/add-notifications/SKILL.md +61 -0
- package/dist/global-skills/add-realtime/SKILL.md +49 -0
- package/dist/global-skills/add-route/SKILL.md +28 -0
- package/dist/global-skills/add-search/SKILL.md +43 -0
- package/dist/global-skills/add-signin/SKILL.md +78 -0
- package/dist/global-skills/add-teams/SKILL.md +64 -0
- package/dist/global-skills/add-upload/SKILL.md +27 -0
- package/dist/global-skills/aws-cdk/SKILL.md +72 -0
- package/dist/global-skills/aws-cdk/references/bootstrap-and-project-setup.md +257 -0
- package/dist/global-skills/aws-cdk/references/compliance-and-drift.md +193 -0
- package/dist/global-skills/aws-cdk/references/construct-patterns.md +315 -0
- package/dist/global-skills/aws-cdk/references/import-and-migrate.md +184 -0
- package/dist/global-skills/aws-cdk/references/refactor-and-prevent-replacement.md +198 -0
- package/dist/global-skills/aws-cdk/references/troubleshooting-credentials.md +183 -0
- package/dist/global-skills/aws-cdk/references/troubleshooting-deployment.md +293 -0
- package/dist/global-skills/aws-cdk/references/troubleshooting-synth.md +274 -0
- package/dist/global-skills/aws-cdk/references/v1-to-v2-migration.md +119 -0
- package/dist/global-skills/aws-cloudformation/SKILL.md +88 -0
- package/dist/global-skills/aws-cloudformation/references/author-cloudformation-best-practices.script.md +179 -0
- package/dist/global-skills/aws-cloudformation/references/check-cloudformation-template-compliance.script.md +159 -0
- package/dist/global-skills/aws-cloudformation/references/cloudformation-pre-deploy-validation.script.md +217 -0
- package/dist/global-skills/aws-cloudformation/references/deploy-with-express-mode.script.md +271 -0
- package/dist/global-skills/aws-cloudformation/references/lookup-resource-properties.script.md +130 -0
- package/dist/global-skills/aws-cloudformation/references/troubleshoot-deployment.script.md +200 -0
- package/dist/global-skills/aws-cloudformation/references/validate-cloudformation-template.script.md +135 -0
- package/dist/global-skills/aws-serverless/SKILL.md +51 -0
- package/dist/global-skills/aws-serverless/assets/powertools-handler.py +49 -0
- package/dist/global-skills/aws-serverless/references/api-gateway.md +553 -0
- package/dist/global-skills/aws-serverless/references/architecture.md +262 -0
- package/dist/global-skills/aws-serverless/references/concurrency.md +200 -0
- package/dist/global-skills/aws-serverless/references/deployment.md +94 -0
- package/dist/global-skills/aws-serverless/references/event-sources.md +484 -0
- package/dist/global-skills/aws-serverless/references/lambda.md +548 -0
- package/dist/global-skills/aws-serverless/references/orchestration.md +449 -0
- package/dist/global-skills/aws-serverless/references/production.md +493 -0
- package/dist/global-skills/aws-serverless/references/troubleshooting.md +711 -0
- package/dist/global-skills/back-up-my-code/SKILL.md +48 -0
- package/dist/global-skills/better-auth-best-practices/SKILL.md +182 -0
- package/dist/global-skills/better-auth-security-best-practices/SKILL.md +432 -0
- package/dist/global-skills/building-native-ui/SKILL.md +377 -0
- package/dist/global-skills/building-native-ui/agents/openai.yaml +4 -0
- package/dist/global-skills/building-native-ui/references/animations.md +220 -0
- package/dist/global-skills/building-native-ui/references/controls.md +270 -0
- package/dist/global-skills/building-native-ui/references/form-sheet.md +253 -0
- package/dist/global-skills/building-native-ui/references/gradients.md +106 -0
- package/dist/global-skills/building-native-ui/references/icons.md +213 -0
- package/dist/global-skills/building-native-ui/references/media.md +198 -0
- package/dist/global-skills/building-native-ui/references/route-structure.md +229 -0
- package/dist/global-skills/building-native-ui/references/search.md +248 -0
- package/dist/global-skills/building-native-ui/references/storage.md +121 -0
- package/dist/global-skills/building-native-ui/references/tabs.md +433 -0
- package/dist/global-skills/building-native-ui/references/toolbar-and-headers.md +284 -0
- package/dist/global-skills/building-native-ui/references/visual-effects.md +197 -0
- package/dist/global-skills/building-native-ui/references/webgpu-three.md +605 -0
- package/dist/global-skills/building-native-ui/references/zoom-transitions.md +158 -0
- package/dist/global-skills/buy-domain/SKILL.md +64 -0
- package/dist/global-skills/check-safety/SKILL.md +94 -0
- package/dist/global-skills/claimable-postgres/SKILL.md +249 -0
- package/dist/global-skills/configure-capabilities/SKILL.md +38 -0
- package/dist/global-skills/connect-account/SKILL.md +64 -0
- package/dist/global-skills/connect-account-backend/SKILL.md +41 -0
- package/dist/global-skills/create-auth-skill/SKILL.md +321 -0
- package/dist/global-skills/design-my-data/SKILL.md +48 -0
- package/dist/global-skills/doctor/SKILL.md +84 -0
- package/dist/global-skills/eas-app-stores/SKILL.md +152 -0
- package/dist/global-skills/eas-app-stores/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-app-stores/references/app-store-metadata.md +497 -0
- package/dist/global-skills/eas-app-stores/references/ios-app-store.md +371 -0
- package/dist/global-skills/eas-app-stores/references/play-store.md +246 -0
- package/dist/global-skills/eas-app-stores/references/testflight.md +58 -0
- package/dist/global-skills/eas-app-stores/references/workflows.md +120 -0
- package/dist/global-skills/eas-hosting/SKILL.md +423 -0
- package/dist/global-skills/eas-hosting/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-observe/SKILL.md +32 -0
- package/dist/global-skills/eas-observe/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-observe/references/metrics.md +47 -0
- package/dist/global-skills/eas-observe/references/queries.md +342 -0
- package/dist/global-skills/eas-observe/references/setup.md +317 -0
- package/dist/global-skills/eas-simulator/SKILL.md +156 -0
- package/dist/global-skills/eas-simulator/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-simulator/references/controllers.md +67 -0
- package/dist/global-skills/eas-simulator/references/run-your-app.md +185 -0
- package/dist/global-skills/eas-simulator/references/troubleshooting.md +38 -0
- package/dist/global-skills/eas-update-insights/SKILL.md +230 -0
- package/dist/global-skills/eas-update-insights/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-update-insights/references/channel-insights-schema.md +47 -0
- package/dist/global-skills/eas-update-insights/references/update-insights-schema.md +69 -0
- package/dist/global-skills/eas-workflows/SKILL.md +94 -0
- package/dist/global-skills/eas-workflows/agents/openai.yaml +4 -0
- package/dist/global-skills/eas-workflows/scripts/fetch.js +109 -0
- package/dist/global-skills/eas-workflows/scripts/package.json +11 -0
- package/dist/global-skills/eas-workflows/scripts/validate.js +84 -0
- package/dist/global-skills/email-best-practices/SKILL.md +73 -0
- package/dist/global-skills/expo-api-routes/SKILL.md +368 -0
- package/dist/global-skills/expo-api-routes/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-app-clip/SKILL.md +282 -0
- package/dist/global-skills/expo-app-clip/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-app-clip/references/native-module.md +96 -0
- package/dist/global-skills/expo-brownfield/SKILL.md +54 -0
- package/dist/global-skills/expo-brownfield/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-brownfield/references/brownfield-integrated.md +526 -0
- package/dist/global-skills/expo-brownfield/references/brownfield-isolated.md +402 -0
- package/dist/global-skills/expo-brownfield/references/comparison.md +63 -0
- package/dist/global-skills/expo-brownfield/references/troubleshooting.md +88 -0
- package/dist/global-skills/expo-cicd-workflows/SKILL.md +92 -0
- package/dist/global-skills/expo-cicd-workflows/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-cicd-workflows/scripts/fetch.js +109 -0
- package/dist/global-skills/expo-cicd-workflows/scripts/package.json +11 -0
- package/dist/global-skills/expo-cicd-workflows/scripts/validate.js +84 -0
- package/dist/global-skills/expo-data-fetching/SKILL.md +449 -0
- package/dist/global-skills/expo-data-fetching/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-data-fetching/references/expo-router-loaders.md +341 -0
- package/dist/global-skills/expo-data-fetching/references/offline-and-cancellation.md +68 -0
- package/dist/global-skills/expo-deployment/SKILL.md +167 -0
- package/dist/global-skills/expo-deployment/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-deployment/references/app-store-metadata.md +497 -0
- package/dist/global-skills/expo-deployment/references/ios-app-store.md +371 -0
- package/dist/global-skills/expo-deployment/references/play-store.md +246 -0
- package/dist/global-skills/expo-deployment/references/testflight.md +58 -0
- package/dist/global-skills/expo-deployment/references/workflows.md +160 -0
- package/dist/global-skills/expo-dev-client/SKILL.md +174 -0
- package/dist/global-skills/expo-dev-client/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-dom/SKILL.md +417 -0
- package/dist/global-skills/expo-dom/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-examples/SKILL.md +99 -0
- package/dist/global-skills/expo-examples/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-examples/references/catalog.md +105 -0
- package/dist/global-skills/expo-module/SKILL.md +141 -0
- package/dist/global-skills/expo-module/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-module/references/config-plugin.md +90 -0
- package/dist/global-skills/expo-module/references/create-expo-module.md +206 -0
- package/dist/global-skills/expo-module/references/lifecycle.md +127 -0
- package/dist/global-skills/expo-module/references/module-config.md +48 -0
- package/dist/global-skills/expo-module/references/native-module.md +286 -0
- package/dist/global-skills/expo-module/references/native-view.md +171 -0
- package/dist/global-skills/expo-native-ui/SKILL.md +181 -0
- package/dist/global-skills/expo-native-ui/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-native-ui/references/animations.md +220 -0
- package/dist/global-skills/expo-native-ui/references/controls.md +270 -0
- package/dist/global-skills/expo-native-ui/references/gradients.md +106 -0
- package/dist/global-skills/expo-native-ui/references/icons.md +213 -0
- package/dist/global-skills/expo-native-ui/references/media.md +198 -0
- package/dist/global-skills/expo-native-ui/references/storage.md +121 -0
- package/dist/global-skills/expo-native-ui/references/visual-effects.md +197 -0
- package/dist/global-skills/expo-native-ui/references/webgpu-three.md +605 -0
- package/dist/global-skills/expo-observe/SKILL.md +30 -0
- package/dist/global-skills/expo-observe/references/metrics.md +47 -0
- package/dist/global-skills/expo-observe/references/queries.md +342 -0
- package/dist/global-skills/expo-observe/references/setup.md +317 -0
- package/dist/global-skills/expo-router/SKILL.md +230 -0
- package/dist/global-skills/expo-router/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-router/references/form-sheet.md +253 -0
- package/dist/global-skills/expo-router/references/route-structure.md +229 -0
- package/dist/global-skills/expo-router/references/search.md +248 -0
- package/dist/global-skills/expo-router/references/tabs.md +433 -0
- package/dist/global-skills/expo-router/references/toolbar-and-headers.md +284 -0
- package/dist/global-skills/expo-router/references/zoom-transitions.md +158 -0
- package/dist/global-skills/expo-skill-eval/SKILL.md +314 -0
- package/dist/global-skills/expo-skill-eval/agents/visual-grader.md +52 -0
- package/dist/global-skills/expo-skill-eval/references/design-rubric.md +45 -0
- package/dist/global-skills/expo-skill-eval/references/runtime-matrix.md +34 -0
- package/dist/global-skills/expo-skill-eval/scripts/check-static.sh +64 -0
- package/dist/global-skills/expo-skill-eval/scripts/clean-fixture.sh +56 -0
- package/dist/global-skills/expo-skill-eval/scripts/generate_viewer.py +450 -0
- package/dist/global-skills/expo-skill-eval/scripts/latest-sdk.sh +46 -0
- package/dist/global-skills/expo-skill-eval/scripts/make-fixture.sh +95 -0
- package/dist/global-skills/expo-skill-eval/scripts/make-workspace.sh +31 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-android.sh +284 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-ios.sh +132 -0
- package/dist/global-skills/expo-skill-eval/scripts/snapshot-web.sh +61 -0
- package/dist/global-skills/expo-skill-feedback/SKILL.md +54 -0
- package/dist/global-skills/expo-skill-feedback/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-skill-feedback/scripts/skill-event.cjs +180 -0
- package/dist/global-skills/expo-skill-feedback/scripts/skill-feedback.cjs +118 -0
- package/dist/global-skills/expo-skill-feedback/scripts/telemetry.cjs +65 -0
- package/dist/global-skills/expo-skill-feedback/scripts/telemetry_common.cjs +171 -0
- package/dist/global-skills/expo-tailwind-setup/SKILL.md +480 -0
- package/dist/global-skills/expo-tailwind-setup/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-ui/SKILL.md +47 -0
- package/dist/global-skills/expo-ui/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-ui/references/drop-in-replacements.md +27 -0
- package/dist/global-skills/expo-ui/references/jetpack-compose.md +73 -0
- package/dist/global-skills/expo-ui/references/swift-ui.md +73 -0
- package/dist/global-skills/expo-ui/references/universal.md +73 -0
- package/dist/global-skills/expo-ui/scripts/list-components.js +193 -0
- package/dist/global-skills/expo-upgrade/SKILL.md +134 -0
- package/dist/global-skills/expo-upgrade/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-upgrade/references/expo-av-to-audio.md +132 -0
- package/dist/global-skills/expo-upgrade/references/expo-av-to-video.md +160 -0
- package/dist/global-skills/expo-upgrade/references/native-tabs.md +124 -0
- package/dist/global-skills/expo-upgrade/references/new-architecture.md +79 -0
- package/dist/global-skills/expo-upgrade/references/react-19.md +79 -0
- package/dist/global-skills/expo-upgrade/references/react-compiler.md +59 -0
- package/dist/global-skills/expo-upgrade/references/react-navigation-to-expo-router.md +61 -0
- package/dist/global-skills/expo-web-to-native/SKILL.md +83 -0
- package/dist/global-skills/expo-web-to-native/agents/openai.yaml +4 -0
- package/dist/global-skills/expo-web-to-native/references/false-friends.md +119 -0
- package/dist/global-skills/expo-web-to-native/references/native-patterns.md +39 -0
- package/dist/global-skills/expo-web-to-native/references/run-as-goal.md +48 -0
- package/dist/global-skills/expo-web-to-native/references/verify-on-device.md +45 -0
- package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +165 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/flutter_setup.md +95 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/ios_setup.md +156 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_android.md +157 -0
- package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_web.md +186 -0
- package/dist/global-skills/firebase-app-hosting-basics/SKILL.md +73 -0
- package/dist/global-skills/firebase-app-hosting-basics/references/cli_commands.md +85 -0
- package/dist/global-skills/firebase-app-hosting-basics/references/configuration.md +59 -0
- package/dist/global-skills/firebase-app-hosting-basics/references/emulation.md +59 -0
- package/dist/global-skills/firebase-auth-basics/SKILL.md +118 -0
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_android.md +160 -0
- package/dist/global-skills/firebase-auth-basics/references/client_sdk_web.md +301 -0
- package/dist/global-skills/firebase-auth-basics/references/flutter_setup.md +149 -0
- package/dist/global-skills/firebase-auth-basics/references/ios_setup.md +87 -0
- package/dist/global-skills/firebase-auth-basics/references/security_rules.md +49 -0
- package/dist/global-skills/firebase-basics/SKILL.md +148 -0
- package/dist/global-skills/firebase-basics/references/android_setup.md +41 -0
- package/dist/global-skills/firebase-basics/references/firebase-cli-guide.md +18 -0
- package/dist/global-skills/firebase-basics/references/firebase-service-init.md +20 -0
- package/dist/global-skills/firebase-basics/references/flutter_setup.md +143 -0
- package/dist/global-skills/firebase-basics/references/ios_setup.md +113 -0
- package/dist/global-skills/firebase-basics/references/local-env-setup.md +80 -0
- package/dist/global-skills/firebase-basics/references/refresh/android_studio.md +41 -0
- package/dist/global-skills/firebase-basics/references/refresh/antigravity.md +64 -0
- package/dist/global-skills/firebase-basics/references/refresh/claude.md +12 -0
- package/dist/global-skills/firebase-basics/references/refresh/gemini-cli.md +13 -0
- package/dist/global-skills/firebase-basics/references/refresh/other-agents.md +67 -0
- package/dist/global-skills/firebase-basics/references/setup/android_studio.md +23 -0
- package/dist/global-skills/firebase-basics/references/setup/antigravity.md +98 -0
- package/dist/global-skills/firebase-basics/references/setup/claude_code.md +45 -0
- package/dist/global-skills/firebase-basics/references/setup/cursor.md +93 -0
- package/dist/global-skills/firebase-basics/references/setup/gemini_cli.md +53 -0
- package/dist/global-skills/firebase-basics/references/setup/github_copilot.md +104 -0
- package/dist/global-skills/firebase-basics/references/setup/other_agents.md +99 -0
- package/dist/global-skills/firebase-basics/references/web_setup.md +77 -0
- package/dist/global-skills/firebase-crashlytics/SKILL.md +42 -0
- package/dist/global-skills/firebase-crashlytics/references/android_setup.md +152 -0
- package/dist/global-skills/firebase-crashlytics/references/ios_setup.md +115 -0
- package/dist/global-skills/firebase-data-connect/SKILL.md +191 -0
- package/dist/global-skills/firebase-data-connect/examples.md +638 -0
- package/dist/global-skills/firebase-data-connect/reference/cloud_functions.md +184 -0
- package/dist/global-skills/firebase-data-connect/reference/config.md +271 -0
- package/dist/global-skills/firebase-data-connect/reference/data_seeding.md +185 -0
- package/dist/global-skills/firebase-data-connect/reference/native_sql.md +170 -0
- package/dist/global-skills/firebase-data-connect/reference/operations.md +385 -0
- package/dist/global-skills/firebase-data-connect/reference/realtime.md +210 -0
- package/dist/global-skills/firebase-data-connect/reference/schema.md +290 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_admin_node.md +141 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_android.md +126 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_flutter.md +134 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_ios.md +157 -0
- package/dist/global-skills/firebase-data-connect/reference/sdk_web.md +146 -0
- package/dist/global-skills/firebase-data-connect/reference/search.md +264 -0
- package/dist/global-skills/firebase-data-connect/reference/security.md +295 -0
- package/dist/global-skills/firebase-data-connect/templates.md +318 -0
- package/dist/global-skills/firebase-firestore/SKILL.md +89 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/android_sdk_usage.md +230 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/data_model.md +66 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/flutter_setup.md +180 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/indexes.md +135 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/ios_setup.md +189 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/provisioning.md +118 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/python_sdk_usage.md +138 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/security_rules.md +577 -0
- package/dist/global-skills/firebase-firestore/references/enterprise/web_sdk_usage.md +127 -0
- package/dist/global-skills/firebase-firestore/references/standard/android_sdk_usage.md +193 -0
- package/dist/global-skills/firebase-firestore/references/standard/flutter_setup.md +176 -0
- package/dist/global-skills/firebase-firestore/references/standard/indexes.md +113 -0
- package/dist/global-skills/firebase-firestore/references/standard/ios_setup.md +174 -0
- package/dist/global-skills/firebase-firestore/references/standard/provisioning.md +110 -0
- package/dist/global-skills/firebase-firestore/references/standard/security_rules.md +577 -0
- package/dist/global-skills/firebase-firestore/references/standard/web_sdk_usage.md +192 -0
- package/dist/global-skills/firebase-hosting-basics/SKILL.md +64 -0
- package/dist/global-skills/firebase-hosting-basics/references/configuration.md +115 -0
- package/dist/global-skills/firebase-hosting-basics/references/deploying.md +48 -0
- package/dist/global-skills/firebase-remote-config-basics/SKILL.md +124 -0
- package/dist/global-skills/firebase-remote-config-basics/references/android_setup.md +91 -0
- package/dist/global-skills/firebase-remote-config-basics/references/ios_setup.md +89 -0
- package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +70 -0
- package/dist/global-skills/go-live/SKILL.md +90 -0
- package/dist/global-skills/harden/SKILL.md +101 -0
- package/dist/global-skills/instrument-feature-flags/SKILL.md +88 -0
- package/dist/global-skills/instrument-feature-flags/references/adding-feature-flag-code.md +3578 -0
- package/dist/global-skills/instrument-feature-flags/references/android.md +146 -0
- package/dist/global-skills/instrument-feature-flags/references/api.md +194 -0
- package/dist/global-skills/instrument-feature-flags/references/best-practices.md +231 -0
- package/dist/global-skills/instrument-feature-flags/references/django.md +263 -0
- package/dist/global-skills/instrument-feature-flags/references/dotnet.md +763 -0
- package/dist/global-skills/instrument-feature-flags/references/elixir.md +47 -0
- package/dist/global-skills/instrument-feature-flags/references/flask.md +131 -0
- package/dist/global-skills/instrument-feature-flags/references/flutter.md +212 -0
- package/dist/global-skills/instrument-feature-flags/references/go.md +208 -0
- package/dist/global-skills/instrument-feature-flags/references/ios.md +146 -0
- package/dist/global-skills/instrument-feature-flags/references/java.md +94 -0
- package/dist/global-skills/instrument-feature-flags/references/laravel.md +170 -0
- package/dist/global-skills/instrument-feature-flags/references/next-js.md +383 -0
- package/dist/global-skills/instrument-feature-flags/references/nodejs.md +216 -0
- package/dist/global-skills/instrument-feature-flags/references/php.md +187 -0
- package/dist/global-skills/instrument-feature-flags/references/python.md +191 -0
- package/dist/global-skills/instrument-feature-flags/references/react-native.md +166 -0
- package/dist/global-skills/instrument-feature-flags/references/react.md +302 -0
- package/dist/global-skills/instrument-feature-flags/references/ruby-on-rails.md +604 -0
- package/dist/global-skills/instrument-feature-flags/references/ruby.md +200 -0
- package/dist/global-skills/instrument-feature-flags/references/rust.md +222 -0
- package/dist/global-skills/instrument-feature-flags/references/usage.md +600 -0
- package/dist/global-skills/instrument-feature-flags/references/web.md +193 -0
- package/dist/global-skills/instrument-product-analytics/SKILL.md +139 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-android.md +1639 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-angular.md +944 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-hybrid.md +1001 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-ssr.md +1004 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-static.md +720 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-astro-view-transitions.md +810 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-django.md +1167 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-expo.md +1412 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-fastapi.md +1585 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-flask.md +1208 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-laravel.md +2267 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-next-app-router.md +712 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-next-pages-router.md +767 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-nuxt-3-6.md +939 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-nuxt-4.md +1078 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-php.md +527 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-python.md +481 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-native.md +1823 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-6.md +582 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-7-data.md +892 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-7-declarative.md +649 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-react-router-7-framework.md +1218 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-tanstack-router-code-based.md +793 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-react-tanstack-router-file-based.md +780 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby-on-rails.md +1320 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-ruby.md +452 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-sveltekit.md +854 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-swift.md +665 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-tanstack-start.md +1199 -0
- package/dist/global-skills/instrument-product-analytics/references/EXAMPLE-vue-3.md +910 -0
- package/dist/global-skills/instrument-product-analytics/references/android.md +811 -0
- package/dist/global-skills/instrument-product-analytics/references/angular.md +376 -0
- package/dist/global-skills/instrument-product-analytics/references/astro.md +165 -0
- package/dist/global-skills/instrument-product-analytics/references/configuration.md +299 -0
- package/dist/global-skills/instrument-product-analytics/references/django.md +263 -0
- package/dist/global-skills/instrument-product-analytics/references/dotnet.md +763 -0
- package/dist/global-skills/instrument-product-analytics/references/elixir.md +414 -0
- package/dist/global-skills/instrument-product-analytics/references/flask.md +131 -0
- package/dist/global-skills/instrument-product-analytics/references/flutter.md +845 -0
- package/dist/global-skills/instrument-product-analytics/references/go.md +567 -0
- package/dist/global-skills/instrument-product-analytics/references/identify-users.md +272 -0
- package/dist/global-skills/instrument-product-analytics/references/ios.md +154 -0
- package/dist/global-skills/instrument-product-analytics/references/laravel.md +170 -0
- package/dist/global-skills/instrument-product-analytics/references/next-js.md +383 -0
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js-3-6.md +244 -0
- package/dist/global-skills/instrument-product-analytics/references/nuxt-js.md +253 -0
- package/dist/global-skills/instrument-product-analytics/references/php.md +646 -0
- package/dist/global-skills/instrument-product-analytics/references/posthog-python.md +1675 -0
- package/dist/global-skills/instrument-product-analytics/references/python.md +898 -0
- package/dist/global-skills/instrument-product-analytics/references/react-native.md +1338 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v6.md +376 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-data-mode.md +364 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-declarative-mode.md +376 -0
- package/dist/global-skills/instrument-product-analytics/references/react-router-v7-framework-mode.md +479 -0
- package/dist/global-skills/instrument-product-analytics/references/ruby-on-rails.md +604 -0
- package/dist/global-skills/instrument-product-analytics/references/ruby.md +759 -0
- package/dist/global-skills/instrument-product-analytics/references/svelte.md +234 -0
- package/dist/global-skills/instrument-product-analytics/references/tanstack-start.md +193 -0
- package/dist/global-skills/instrument-product-analytics/references/usage.md +600 -0
- package/dist/global-skills/instrument-product-analytics/references/vue-js.md +306 -0
- package/dist/global-skills/manifest.json +125 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/SKILL.md +284 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/connection-configs.md +298 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/development-workflow.md +304 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/mcp-troubleshooting.md +55 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/output-diagnostics.md +150 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/pipeline-patterns.md +457 -0
- package/dist/global-skills/mongodb-atlas-stream-processing/references/sizing-and-parallelism.md +178 -0
- package/dist/global-skills/mongodb-connection/SKILL.md +201 -0
- package/dist/global-skills/mongodb-connection/references/monitoring-guide.md +191 -0
- package/dist/global-skills/mongodb-mcp-setup/SKILL.md +324 -0
- package/dist/global-skills/mongodb-natural-language-querying/SKILL.md +195 -0
- package/dist/global-skills/mongodb-query-optimizer/SKILL.md +150 -0
- package/dist/global-skills/mongodb-query-optimizer/references/aggregation-optimization.md +210 -0
- package/dist/global-skills/mongodb-query-optimizer/references/antipattern-examples.md +74 -0
- package/dist/global-skills/mongodb-query-optimizer/references/core-indexing-principles.md +134 -0
- package/dist/global-skills/mongodb-query-optimizer/references/update-query-examples.md +39 -0
- package/dist/global-skills/mongodb-schema-design/SKILL.md +181 -0
- package/dist/global-skills/mongodb-schema-design/references/antipattern-excessive-lookups.md +84 -0
- package/dist/global-skills/mongodb-schema-design/references/antipattern-unnecessary-collections.md +91 -0
- package/dist/global-skills/mongodb-schema-design/references/antipattern-unnecessary-indexes.md +95 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-document-model.md +91 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-document-size.md +226 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-embed-vs-reference.md +418 -0
- package/dist/global-skills/mongodb-schema-design/references/fundamental-schema-validation.md +131 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-approximation.md +80 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-archive.md +143 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-attribute.md +77 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-bucket.md +102 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-computed.md +162 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-document-versioning.md +166 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-extended-reference.md +72 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-outlier.md +159 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-polymorphic.md +167 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-schema-versioning.md +273 -0
- package/dist/global-skills/mongodb-schema-design/references/pattern-time-series-collections.md +190 -0
- package/dist/global-skills/mongodb-schema-design/references/source-query-stats.md +123 -0
- package/dist/global-skills/mongodb-schema-design/references/source-slow-query-logs.md +63 -0
- package/dist/global-skills/mongodb-search-and-ai/SKILL.md +142 -0
- package/dist/global-skills/mongodb-search-and-ai/references/hybrid-search.md +697 -0
- package/dist/global-skills/mongodb-search-and-ai/references/lexical-search-indexing.md +584 -0
- package/dist/global-skills/mongodb-search-and-ai/references/lexical-search-querying.md +636 -0
- package/dist/global-skills/mongodb-search-and-ai/references/vector-search.md +746 -0
- package/dist/global-skills/native-data-fetching/SKILL.md +505 -0
- package/dist/global-skills/native-data-fetching/agents/openai.yaml +4 -0
- package/dist/global-skills/native-data-fetching/references/expo-router-loaders.md +341 -0
- package/dist/global-skills/neon/SKILL.md +343 -0
- package/dist/global-skills/neon-ai-gateway/SKILL.md +236 -0
- package/dist/global-skills/neon-functions/SKILL.md +490 -0
- package/dist/global-skills/neon-functions/references/ai-sdk.md +139 -0
- package/dist/global-skills/neon-functions/references/hono-websockets.md +145 -0
- package/dist/global-skills/neon-functions/references/mastra-studio.md +127 -0
- package/dist/global-skills/neon-functions/references/mcp.md +137 -0
- package/dist/global-skills/neon-functions/references/sentry.md +131 -0
- package/dist/global-skills/neon-functions/references/sse.md +143 -0
- package/dist/global-skills/neon-object-storage/SKILL.md +197 -0
- package/dist/global-skills/neon-postgres/SKILL.md +376 -0
- package/dist/global-skills/neon-postgres-branches/SKILL.md +281 -0
- package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +247 -0
- package/dist/global-skills/onboarding/SKILL.md +101 -0
- package/dist/global-skills/plan-my-idea/SKILL.md +67 -0
- package/dist/global-skills/publish-app/SKILL.md +72 -0
- package/dist/global-skills/publish-extension/SKILL.md +47 -0
- package/dist/global-skills/resend/SKILL.md +294 -0
- package/dist/global-skills/resend/references/api-keys.md +98 -0
- package/dist/global-skills/resend/references/automations.md +228 -0
- package/dist/global-skills/resend/references/broadcasts.md +125 -0
- package/dist/global-skills/resend/references/contact-properties.md +111 -0
- package/dist/global-skills/resend/references/contacts.md +174 -0
- package/dist/global-skills/resend/references/domains.md +179 -0
- package/dist/global-skills/resend/references/events.md +119 -0
- package/dist/global-skills/resend/references/fetch-all-templates.mjs +37 -0
- package/dist/global-skills/resend/references/installation.md +142 -0
- package/dist/global-skills/resend/references/logs.md +161 -0
- package/dist/global-skills/resend/references/receiving.md +287 -0
- package/dist/global-skills/resend/references/segments.md +77 -0
- package/dist/global-skills/resend/references/sending/batch-email-examples.md +807 -0
- package/dist/global-skills/resend/references/sending/best-practices.md +453 -0
- package/dist/global-skills/resend/references/sending/email-management.md +135 -0
- package/dist/global-skills/resend/references/sending/overview.md +209 -0
- package/dist/global-skills/resend/references/sending/single-email-examples.md +470 -0
- package/dist/global-skills/resend/references/templates.md +202 -0
- package/dist/global-skills/resend/references/topics.md +104 -0
- package/dist/global-skills/resend/references/webhooks.md +317 -0
- package/dist/global-skills/reset-password/SKILL.md +59 -0
- package/dist/global-skills/save-data/SKILL.md +70 -0
- package/dist/global-skills/sentry-sdk-setup/SKILL.md +116 -0
- package/dist/global-skills/sentry-workflow/SKILL.md +32 -0
- package/dist/global-skills/setup-email/SKILL.md +69 -0
- package/dist/global-skills/setup-payments/SKILL.md +82 -0
- package/dist/global-skills/setup-sms/SKILL.md +51 -0
- package/dist/global-skills/sign-in-with-email-link/SKILL.md +53 -0
- package/dist/global-skills/sign-in-with-google/SKILL.md +68 -0
- package/dist/global-skills/sign-in-with-phone/SKILL.md +53 -0
- package/dist/global-skills/stripe-best-practices/SKILL.md +48 -0
- package/dist/global-skills/stripe-best-practices/references/billing.md +58 -0
- package/dist/global-skills/stripe-best-practices/references/connect.md +173 -0
- package/dist/global-skills/stripe-best-practices/references/payments.md +79 -0
- package/dist/global-skills/stripe-best-practices/references/security.md +109 -0
- package/dist/global-skills/stripe-best-practices/references/tax.md +37 -0
- package/dist/global-skills/stripe-best-practices/references/treasury.md +16 -0
- package/dist/global-skills/supabase/CHANGELOG.md +53 -0
- package/dist/global-skills/supabase/SKILL.md +145 -0
- package/dist/global-skills/supabase/assets/feedback-issue-template.md +17 -0
- package/dist/global-skills/supabase/references/skill-feedback.md +17 -0
- package/dist/global-skills/supabase-postgres-best-practices/CHANGELOG.md +43 -0
- package/dist/global-skills/supabase-postgres-best-practices/SKILL.md +64 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/_contributing.md +170 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/_sections.md +39 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/_template.md +34 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/advanced-full-text-search.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/advanced-jsonb-indexing.md +49 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-idle-timeout.md +46 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-limits.md +44 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-pooling.md +41 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/conn-prepared-statements.md +46 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-batch-inserts.md +54 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-n-plus-one.md +53 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-pagination.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/data-upsert.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-advisory.md +56 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-deadlock-prevention.md +68 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-short-transactions.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/lock-skip-locked.md +54 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/monitor-explain-analyze.md +45 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/monitor-pg-stat-statements.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/monitor-vacuum-analyze.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-composite-indexes.md +44 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-covering-indexes.md +40 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-index-types.md +48 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-missing-indexes.md +43 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/query-partial-indexes.md +45 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-constraints.md +80 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-data-types.md +46 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-foreign-key-indexes.md +59 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-lowercase-identifiers.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-partitioning.md +55 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/schema-primary-keys.md +61 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/security-privileges.md +54 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/security-rls-basics.md +50 -0
- package/dist/global-skills/supabase-postgres-best-practices/references/security-rls-performance.md +63 -0
- package/dist/global-skills/track-errors/SKILL.md +67 -0
- package/dist/global-skills/update-kit/SKILL.md +75 -0
- package/dist/global-skills/upgrading-expo/SKILL.md +134 -0
- package/dist/global-skills/upgrading-expo/agents/openai.yaml +4 -0
- package/dist/global-skills/upgrading-expo/references/expo-av-to-audio.md +132 -0
- package/dist/global-skills/upgrading-expo/references/expo-av-to-video.md +160 -0
- package/dist/global-skills/upgrading-expo/references/native-tabs.md +124 -0
- package/dist/global-skills/upgrading-expo/references/new-architecture.md +79 -0
- package/dist/global-skills/upgrading-expo/references/react-19.md +79 -0
- package/dist/global-skills/upgrading-expo/references/react-compiler.md +59 -0
- package/dist/global-skills/upgrading-expo/references/react-navigation-to-expo-router.md +61 -0
- package/dist/global-skills/use-dom/SKILL.md +417 -0
- package/dist/global-skills/use-dom/agents/openai.yaml +4 -0
- package/dist/global-skills/use-kit-mcp/SKILL.md +100 -0
- package/dist/global-skills/use-railway/SKILL.md +357 -0
- package/dist/global-skills/use-railway/references/analyze-db-mongo.md +84 -0
- package/dist/global-skills/use-railway/references/analyze-db-mysql.md +254 -0
- package/dist/global-skills/use-railway/references/analyze-db-postgres.md +479 -0
- package/dist/global-skills/use-railway/references/analyze-db-redis.md +208 -0
- package/dist/global-skills/use-railway/references/analyze-db.md +344 -0
- package/dist/global-skills/use-railway/references/configure.md +359 -0
- package/dist/global-skills/use-railway/references/deploy.md +225 -0
- package/dist/global-skills/use-railway/references/feature-flags.md +89 -0
- package/dist/global-skills/use-railway/references/iac.md +108 -0
- package/dist/global-skills/use-railway/references/operate.md +273 -0
- package/dist/global-skills/use-railway/references/request.md +262 -0
- package/dist/global-skills/use-railway/references/sandbox.md +167 -0
- package/dist/global-skills/use-railway/references/setup.md +364 -0
- package/dist/global-skills/use-railway/scripts/analyze-mongo.py +1549 -0
- package/dist/global-skills/use-railway/scripts/analyze-mysql.py +1195 -0
- package/dist/global-skills/use-railway/scripts/analyze-postgres.py +3058 -0
- package/dist/global-skills/use-railway/scripts/analyze-redis.py +1090 -0
- package/dist/global-skills/use-railway/scripts/dal.py +671 -0
- package/dist/global-skills/use-railway/scripts/enable-pg-stats.py +170 -0
- package/dist/global-skills/use-railway/scripts/pg-extensions.py +370 -0
- package/dist/global-skills/use-railway/scripts/railway-api.sh +52 -0
- package/dist/global-skills/vercel-composition-patterns/AGENTS.md +946 -0
- package/dist/global-skills/vercel-composition-patterns/README.md +60 -0
- package/dist/global-skills/vercel-composition-patterns/SKILL.md +89 -0
- package/dist/global-skills/vercel-composition-patterns/metadata.json +11 -0
- package/dist/global-skills/vercel-composition-patterns/rules/_sections.md +29 -0
- package/dist/global-skills/vercel-composition-patterns/rules/_template.md +24 -0
- package/dist/global-skills/vercel-composition-patterns/rules/architecture-avoid-boolean-props.md +100 -0
- package/dist/global-skills/vercel-composition-patterns/rules/architecture-compound-components.md +112 -0
- package/dist/global-skills/vercel-composition-patterns/rules/patterns-children-over-render-props.md +87 -0
- package/dist/global-skills/vercel-composition-patterns/rules/patterns-explicit-variants.md +100 -0
- package/dist/global-skills/vercel-composition-patterns/rules/react19-no-forwardref.md +42 -0
- package/dist/global-skills/vercel-composition-patterns/rules/state-context-interface.md +191 -0
- package/dist/global-skills/vercel-composition-patterns/rules/state-decouple-implementation.md +113 -0
- package/dist/global-skills/vercel-composition-patterns/rules/state-lift-state.md +125 -0
- package/dist/global-skills/vercel-react-best-practices/AGENTS.md +3810 -0
- package/dist/global-skills/vercel-react-best-practices/README.md +123 -0
- package/dist/global-skills/vercel-react-best-practices/SKILL.md +149 -0
- package/dist/global-skills/vercel-react-best-practices/metadata.json +15 -0
- package/dist/global-skills/vercel-react-best-practices/rules/_sections.md +46 -0
- package/dist/global-skills/vercel-react-best-practices/rules/_template.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-effect-event-deps.md +56 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-event-handler-refs.md +55 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-init-once.md +42 -0
- package/dist/global-skills/vercel-react-best-practices/rules/advanced-use-latest.md +39 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-api-routes.md +38 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-cheap-condition-before-await.md +37 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-defer-await.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-dependencies.md +51 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-parallel.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/async-suspense-boundaries.md +99 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-analyzable-paths.md +63 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-barrel-imports.md +60 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-conditional.md +31 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-defer-third-party.md +49 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-dynamic-imports.md +35 -0
- package/dist/global-skills/vercel-react-best-practices/rules/bundle-preload.md +50 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-event-listeners.md +74 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-localstorage-schema.md +71 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-passive-event-listeners.md +48 -0
- package/dist/global-skills/vercel-react-best-practices/rules/client-swr-dedup.md +56 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-batch-dom-css.md +107 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-cache-function-results.md +80 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-cache-property-access.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-cache-storage.md +70 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-combine-iterations.md +32 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-early-exit.md +50 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-flatmap-filter.md +60 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-hoist-regexp.md +45 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-index-maps.md +37 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-length-check-first.md +49 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-min-max-loop.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-request-idle-callback.md +105 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-set-map-lookups.md +24 -0
- package/dist/global-skills/vercel-react-best-practices/rules/js-tosorted-immutable.md +57 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-activity.md +26 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-animate-svg-wrapper.md +47 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-conditional-render.md +40 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-content-visibility.md +38 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-hoist-jsx.md +46 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-hydration-no-flicker.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-hydration-suppress-warning.md +30 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-resource-hints.md +85 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-script-defer-async.md +68 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-svg-precision.md +28 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rendering-usetransition-loading.md +75 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-defer-reads.md +39 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-dependencies.md +45 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-derived-state-no-effect.md +40 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-derived-state.md +29 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-functional-setstate.md +74 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-lazy-state-init.md +58 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-memo-with-default-value.md +38 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-memo.md +44 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-move-effect-to-event.md +45 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-no-inline-components.md +82 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-simple-expression-in-memo.md +35 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-split-combined-hooks.md +64 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-transitions.md +40 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-use-deferred-value.md +59 -0
- package/dist/global-skills/vercel-react-best-practices/rules/rerender-use-ref-transient-values.md +73 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-after-nonblocking.md +73 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-auth-actions.md +96 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-cache-lru.md +41 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-cache-react.md +76 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-dedup-props.md +65 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-hoist-static-io.md +149 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-no-shared-module-state.md +50 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-parallel-fetching.md +83 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-parallel-nested-fetching.md +34 -0
- package/dist/global-skills/vercel-react-best-practices/rules/server-serialization.md +38 -0
- package/dist/global-skills/web-to-native/SKILL.md +83 -0
- package/dist/global-skills/web-to-native/references/false-friends.md +119 -0
- package/dist/global-skills/web-to-native/references/native-patterns.md +39 -0
- package/dist/global-skills/web-to-native/references/run-as-goal.md +48 -0
- package/dist/global-skills/web-to-native/references/verify-on-device.md +45 -0
- package/dist/global-skills/wire-auth/SKILL.md +28 -0
- package/dist/global-skills/wire-database/SKILL.md +28 -0
- package/dist/global-skills/wire-email/SKILL.md +27 -0
- package/dist/global-skills/wire-payments/SKILL.md +27 -0
- package/dist/global-skills/workers-best-practices/SKILL.md +127 -0
- package/dist/global-skills/workers-best-practices/references/review.md +174 -0
- package/dist/global-skills/workers-best-practices/references/rules.md +463 -0
- package/dist/global-skills/wrangler/SKILL.md +922 -0
- package/dist/global-skills/xcode-project-setup/SKILL.md +140 -0
- package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Package.resolved +41 -0
- package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Package.swift +17 -0
- package/dist/global-skills/xcode-project-setup/scripts/xcode_spm_setup/Sources/main.swift +232 -0
- package/package.json +21 -20
- package/LICENSE.md +0 -47
- package/dist/index.js +0 -21593
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
# Firebase Auth & Google Sign-In for Flutter
|
|
2
|
+
|
|
3
|
+
When integrating Firebase Authentication and Google Sign-In into Flutter apps
|
|
4
|
+
targeting cross-platform environments (like Mobile + Web), you must navigate
|
|
5
|
+
several breaking changes introduced in `google_sign_in` 7.x+ and some
|
|
6
|
+
platform-specific quirks.
|
|
7
|
+
|
|
8
|
+
## 1. `google_sign_in` 7.2.0 API Changes
|
|
9
|
+
|
|
10
|
+
- **Method Renamed**: The `signIn()` method is deprecated/removed and has been
|
|
11
|
+
replaced with `authenticate()`.
|
|
12
|
+
- **Token Separation**: The `GoogleSignInAuthentication` object no longer
|
|
13
|
+
packages both identity and authorization tokens together. Initial
|
|
14
|
+
authentication now only provides the `idToken`. If an `accessToken` is
|
|
15
|
+
required for Google APIs, you must explicitly request server authorization
|
|
16
|
+
separately.
|
|
17
|
+
|
|
18
|
+
## 2. Initialization & Web Hang/Crash Pitfalls
|
|
19
|
+
|
|
20
|
+
- **Initialization Requirement**: In 7.x, you must call
|
|
21
|
+
`await GoogleSignIn.instance.initialize();` globally before using the plugin.
|
|
22
|
+
- **Web Client ID Constraint**: On Flutter Web, if you call `initialize()`
|
|
23
|
+
without passing a `clientId` argument OR specifying the
|
|
24
|
+
`<meta name="google-signin-client_id" ... />` tag in `web/index.html`, the
|
|
25
|
+
Dart Web Debug Service (DWDS) and the app will throw an assertion error and
|
|
26
|
+
**hang infinitely**, resulting in a blank screen.
|
|
27
|
+
- **Common Workaround**: If you intend to use Firebase Auth's
|
|
28
|
+
`signInWithPopup(GoogleAuthProvider())` for the web, you can conditionally
|
|
29
|
+
skip the local `GoogleSignIn` package initialization entirely:
|
|
30
|
+
```dart
|
|
31
|
+
import 'package:flutter/foundation.dart' show kIsWeb;
|
|
32
|
+
|
|
33
|
+
if (!kIsWeb) {
|
|
34
|
+
await GoogleSignIn.instance.initialize();
|
|
35
|
+
}
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
## 3. Web Logout Crashes
|
|
39
|
+
|
|
40
|
+
- If you bypassed `GoogleSignIn` initialization on the web (as demonstrated
|
|
41
|
+
above), you cannot call its `signOut()` method later. Attempting to execute
|
|
42
|
+
`await GoogleSignIn.instance.signOut();` during the user's logout flow on the
|
|
43
|
+
Web platform evaluates against an uninitialized context or unsupported
|
|
44
|
+
environment, crashing the app.
|
|
45
|
+
- **Solution**: Conditionally separate the logout logic for Web to rely entirely
|
|
46
|
+
on `FirebaseAuth`:
|
|
47
|
+
```dart
|
|
48
|
+
if (!kIsWeb) {
|
|
49
|
+
await GoogleSignIn.instance.signOut();
|
|
50
|
+
}
|
|
51
|
+
await FirebaseAuth.instance.signOut();
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
## 4. Prototyping Workaround: Bypassing Firestore Composite Indices
|
|
55
|
+
|
|
56
|
+
*Note: This is a Firestore consideration frequently encountered while fetching
|
|
57
|
+
user-specific auth data.*
|
|
58
|
+
|
|
59
|
+
When querying data via `FirebaseFirestore.instance`, using
|
|
60
|
+
`.where('userId', isEqualTo: uid)` combined with a sort on a different field
|
|
61
|
+
like `.orderBy('createdAt', descending: true)` mandates a custom composite
|
|
62
|
+
index.
|
|
63
|
+
|
|
64
|
+
- **Quick Alternative**: During local development, you can avoid defining
|
|
65
|
+
indexes by pulling the data using only `.where()` and applying the `.sort()`
|
|
66
|
+
operation client-side on the resulting `List` in Dart.
|
|
67
|
+
|
|
68
|
+
## 5. Robust `AuthService` Boilerplate
|
|
69
|
+
|
|
70
|
+
Here is a comprehensive `AuthService` implementation that properly handles the
|
|
71
|
+
initialization and platform differences between Flutter Web and Mobile:
|
|
72
|
+
|
|
73
|
+
```dart
|
|
74
|
+
import 'package:firebase_auth/firebase_auth.dart';
|
|
75
|
+
import 'package:flutter/foundation.dart';
|
|
76
|
+
import 'package:google_sign_in/google_sign_in.dart';
|
|
77
|
+
|
|
78
|
+
class AuthService {
|
|
79
|
+
final FirebaseAuth _auth = FirebaseAuth.instance;
|
|
80
|
+
|
|
81
|
+
AuthService() {
|
|
82
|
+
if (!kIsWeb) {
|
|
83
|
+
GoogleSignIn.instance.initialize();
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
// Stream to listen to auth state changes
|
|
88
|
+
Stream<User?> get authStateChanges => _auth.authStateChanges();
|
|
89
|
+
|
|
90
|
+
// Get current user
|
|
91
|
+
User? get currentUser => _auth.currentUser;
|
|
92
|
+
|
|
93
|
+
// Google Sign-In
|
|
94
|
+
Future<UserCredential?> signInWithGoogle() async {
|
|
95
|
+
try {
|
|
96
|
+
if (kIsWeb) {
|
|
97
|
+
// Web uses popup to avoid DWDS hangs and manual client ID config
|
|
98
|
+
GoogleAuthProvider authProvider = GoogleAuthProvider();
|
|
99
|
+
return await _auth.signInWithPopup(authProvider);
|
|
100
|
+
} else {
|
|
101
|
+
// Mobile uses standard flow
|
|
102
|
+
final GoogleSignInAccount? googleUser = await GoogleSignIn.instance.authenticate();
|
|
103
|
+
if (googleUser == null) return null; // Cancelled
|
|
104
|
+
|
|
105
|
+
final GoogleSignInAuthentication googleAuth = await googleUser.authentication;
|
|
106
|
+
|
|
107
|
+
final AuthCredential credential = GoogleAuthProvider.credential(
|
|
108
|
+
idToken: googleAuth.idToken,
|
|
109
|
+
);
|
|
110
|
+
|
|
111
|
+
return await _auth.signInWithCredential(credential);
|
|
112
|
+
}
|
|
113
|
+
} catch (e) {
|
|
114
|
+
print("Error during Google Sign-In: \$e");
|
|
115
|
+
return null;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
// Sign out
|
|
120
|
+
Future<void> signOut() async {
|
|
121
|
+
try {
|
|
122
|
+
if (!kIsWeb) {
|
|
123
|
+
await GoogleSignIn.instance.signOut();
|
|
124
|
+
}
|
|
125
|
+
await _auth.signOut();
|
|
126
|
+
} catch (e) {
|
|
127
|
+
print("Error signing out: \$e");
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
## 6. Troubleshooting `auth/unauthorized-domain` on Flutter Web
|
|
134
|
+
|
|
135
|
+
When running Flutter Web locally and using `signInWithPopup`, you might
|
|
136
|
+
encounter a situation where the Google Sign-In popup opens and immediately
|
|
137
|
+
closes.
|
|
138
|
+
|
|
139
|
+
- **Symptom**: The console shows
|
|
140
|
+
`Sign-in failed: [firebase_auth/unauthorized-domain] This domain is not authorized for OAuth operation for your Firebase project.`
|
|
141
|
+
- **Cause**: The domain (usually `localhost` during local testing) is not listed
|
|
142
|
+
in the Authorized Domains in the Firebase Console.
|
|
143
|
+
- **Solution**: Add `localhost` to the Authorized Domains list in the Firebase
|
|
144
|
+
Console (Authentication > Settings > Authorized domains) or in your
|
|
145
|
+
`firebase.json` auth config.
|
|
146
|
+
- **CRITICAL**: Do NOT include the protocol or port number when adding the
|
|
147
|
+
domain (e.g., use `localhost`, NOT `http://localhost:9090`). Flutter Web often
|
|
148
|
+
runs on random ports or specific ports, but Firebase Auth only cares about the
|
|
149
|
+
domain.
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
# Firebase Auth iOS Setup Guide
|
|
2
|
+
|
|
3
|
+
# ⛔️ CRITICAL RULE: NO INLINE INITIALIZATION ⛔️
|
|
4
|
+
|
|
5
|
+
NEVER write `let auth = Auth.auth()` as an inline class or struct property if
|
|
6
|
+
there is ANY chance the object is instantiated before `FirebaseApp.configure()`
|
|
7
|
+
executes in the app root.
|
|
8
|
+
|
|
9
|
+
- **FATAL CRASH:** `@Observable class AuthManager { let auth = Auth.auth() }`
|
|
10
|
+
initialized as a `@State` in the App root.
|
|
11
|
+
- **SAFE PATTERN:** Initialize `Auth.auth()` lazily
|
|
12
|
+
(`lazy var auth = Auth.auth()`) OR explicitly initialize the manager *after*
|
|
13
|
+
`FirebaseApp.configure()` finishes.
|
|
14
|
+
|
|
15
|
+
## 1. Import and Initialize
|
|
16
|
+
|
|
17
|
+
Ensure you have installed the `FirebaseAuth` SDK. Use the `xcode-project-setup`
|
|
18
|
+
skill to automate adding the SPM dependency to the Xcode project.
|
|
19
|
+
|
|
20
|
+
> **Note:** Ensure `FirebaseApp.configure()` has been executed in your app's
|
|
21
|
+
> entry point before calling any `Auth.auth()` methods, otherwise your app will
|
|
22
|
+
> crash. Do not initialize Auth objects in SwiftUI `@State` properties at the
|
|
23
|
+
> App root level.
|
|
24
|
+
|
|
25
|
+
```swift
|
|
26
|
+
import FirebaseAuth
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
## 2. Authentication State
|
|
30
|
+
|
|
31
|
+
To listen for authentication state changes (recommended way to check if a user
|
|
32
|
+
is signed in):
|
|
33
|
+
|
|
34
|
+
```swift
|
|
35
|
+
var handle: AuthStateDidChangeListenerHandle?
|
|
36
|
+
|
|
37
|
+
handle = Auth.auth().addStateDidChangeListener { auth, user in
|
|
38
|
+
if let user = user {
|
|
39
|
+
print("User is signed in with uid: \(user.uid)")
|
|
40
|
+
} else {
|
|
41
|
+
print("User is signed out")
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// To remove the listener when no longer needed:
|
|
46
|
+
if let handle = handle {
|
|
47
|
+
Auth.auth().removeStateDidChangeListener(handle)
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## 3. Email and Password Authentication (Modern Concurrency)
|
|
52
|
+
|
|
53
|
+
Modern Swift projects should prioritize `async/await` for authentication calls
|
|
54
|
+
to avoid nested completion handlers and improve readability.
|
|
55
|
+
|
|
56
|
+
### Sign Up
|
|
57
|
+
|
|
58
|
+
```swift
|
|
59
|
+
do {
|
|
60
|
+
let authResult = try await Auth.auth().createUser(withEmail: "user@example.com", password: "password")
|
|
61
|
+
print("User created successfully with uid: \(authResult.user.uid)")
|
|
62
|
+
} catch {
|
|
63
|
+
print("Error creating user: \(error.localizedDescription)")
|
|
64
|
+
}
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Sign In
|
|
68
|
+
|
|
69
|
+
```swift
|
|
70
|
+
do {
|
|
71
|
+
let authResult = try await Auth.auth().signIn(withEmail: "user@example.com", password: "password")
|
|
72
|
+
print("User signed in successfully with uid: \(authResult.user.uid)")
|
|
73
|
+
} catch {
|
|
74
|
+
print("Error signing in: \(error.localizedDescription)")
|
|
75
|
+
}
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## 4. Sign Out
|
|
79
|
+
|
|
80
|
+
```swift
|
|
81
|
+
do {
|
|
82
|
+
try Auth.auth().signOut()
|
|
83
|
+
print("Successfully signed out")
|
|
84
|
+
} catch let signOutError as NSError {
|
|
85
|
+
print("Error signing out: \(signOutError)")
|
|
86
|
+
}
|
|
87
|
+
```
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
# Authentication in Security Rules
|
|
2
|
+
|
|
3
|
+
Firebase Security Rules work with Firebase Authentication to provide rule-based
|
|
4
|
+
access control. For better advice on writing safe security rules, enable the
|
|
5
|
+
`firebase-firestore-basics` or `firebase-storage-basics` skills.
|
|
6
|
+
|
|
7
|
+
The `request.auth` variable contains authentication information for the user
|
|
8
|
+
requesting data.
|
|
9
|
+
|
|
10
|
+
## Basic Checks
|
|
11
|
+
|
|
12
|
+
### Check if user is signed in
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
allow read, write: if request.auth != null;
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### Check if user owns the data
|
|
19
|
+
|
|
20
|
+
Access data only if the document ID matches the user's UID.
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
allow read, write: if request.auth != null && request.auth.uid == userId;
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
(Where `userId` is a path variable, e.g., `match /users/{userId}`)
|
|
27
|
+
|
|
28
|
+
### Check if user owns the document (field-based)
|
|
29
|
+
|
|
30
|
+
Access data only if the document has a `owner_uid` field matching the user's
|
|
31
|
+
UID.
|
|
32
|
+
|
|
33
|
+
```
|
|
34
|
+
allow read, write: if request.auth != null && request.auth.uid == resource.data.owner_uid;
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Token Properties
|
|
38
|
+
|
|
39
|
+
`request.auth.token` contains standard JWT claims and custom claims.
|
|
40
|
+
|
|
41
|
+
- `request.auth.token.email`: The user's email address.
|
|
42
|
+
- `request.auth.token.email_verified`: If the email is verified.
|
|
43
|
+
- `request.auth.token.name`: The user's display name.
|
|
44
|
+
|
|
45
|
+
### Example: Email Verification Check
|
|
46
|
+
|
|
47
|
+
```
|
|
48
|
+
allow create: if request.auth.token.email_verified == true;
|
|
49
|
+
```
|
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: firebase-basics
|
|
3
|
+
description: >-
|
|
4
|
+
Provides foundational setup, authentication, and project management workflows
|
|
5
|
+
for Firebase using the Firebase CLI. Use when checking Firebase CLI version
|
|
6
|
+
(must use 'npx -y firebase-tools@latest --version'), initializing a Firebase
|
|
7
|
+
environment, authenticating, setting active projects, or setting up `google-services.json`
|
|
8
|
+
or `GoogleService-Info.plist` files.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Prerequisites
|
|
12
|
+
|
|
13
|
+
Complete these setup steps before proceeding:
|
|
14
|
+
|
|
15
|
+
1. **Local Environment Setup:** Verify the environment is properly set up so we
|
|
16
|
+
can use Firebase tools:
|
|
17
|
+
|
|
18
|
+
- Run `npx -y firebase-tools@latest --version` to check if the Firebase CLI
|
|
19
|
+
is installed.
|
|
20
|
+
- Verify if the Firebase MCP server is installed using your existing tools.
|
|
21
|
+
- **CRITICAL**: Before configuring any extensions or agent environments
|
|
22
|
+
below, you MUST read
|
|
23
|
+
[references/local-env-setup.md](references/local-env-setup.md).
|
|
24
|
+
- **DO NOT SKIP** this step: if 'firebase-basics' is the only Firebase skill
|
|
25
|
+
available to you, you must follow the reference for your agent environment
|
|
26
|
+
to set up the full suite of Firebase skills:
|
|
27
|
+
- **Gemini CLI**: Review
|
|
28
|
+
[references/setup/gemini_cli.md](references/setup/gemini_cli.md)
|
|
29
|
+
- **Antigravity**: Review
|
|
30
|
+
[references/setup/antigravity.md](references/setup/antigravity.md)
|
|
31
|
+
- **Android Studio**: Review
|
|
32
|
+
[references/setup/android_studio.md](references/setup/android_studio.md)
|
|
33
|
+
- **Claude Code**: Review
|
|
34
|
+
[references/setup/claude_code.md](references/setup/claude_code.md)
|
|
35
|
+
- **Cursor**: Review
|
|
36
|
+
[references/setup/cursor.md](references/setup/cursor.md)
|
|
37
|
+
- **GitHub Copilot**: Review
|
|
38
|
+
[references/setup/github_copilot.md](references/setup/github_copilot.md)
|
|
39
|
+
- **Other Agents**: Review
|
|
40
|
+
[references/setup/other_agents.md](references/setup/other_agents.md)
|
|
41
|
+
|
|
42
|
+
1. **Authentication:** Ensure you are logged in to Firebase so that commands
|
|
43
|
+
have the correct permissions. Run `npx -y firebase-tools@latest login`. For
|
|
44
|
+
environments without a browser (e.g., remote shells), use
|
|
45
|
+
`npx -y firebase-tools@latest login --no-localhost`.
|
|
46
|
+
|
|
47
|
+
- The command should output the current user.
|
|
48
|
+
- If you are not logged in, follow the interactive instructions from this
|
|
49
|
+
command to authenticate.
|
|
50
|
+
|
|
51
|
+
1. **Active Project:** Most Firebase tasks require an active project context.
|
|
52
|
+
|
|
53
|
+
> [!IMPORTANT] **For Agents:** Before proceeding with project configuration,
|
|
54
|
+
> you MUST pause and ask the developer if they prefer to:
|
|
55
|
+
>
|
|
56
|
+
> 1. **Provide an existing Firebase Project ID**, or
|
|
57
|
+
> 1. **Create a new Firebase project**.
|
|
58
|
+
|
|
59
|
+
- **If using an existing Project ID:**
|
|
60
|
+
|
|
61
|
+
1. Check the current project by running `npx -y firebase-tools@latest use`.
|
|
62
|
+
1. If the command outputs `Active Project: <project-id>`, confirm with the
|
|
63
|
+
user if this is the intended project.
|
|
64
|
+
1. If not, or if no project is active, set the project provided by the
|
|
65
|
+
user:
|
|
66
|
+
```bash
|
|
67
|
+
npx -y firebase-tools@latest use <PROJECT_ID>
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
- **If creating a new project:** Run the following command to create it:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
npx -y firebase-tools@latest projects:create <project-id> --display-name "<display-name>"
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
*Note: The `<project-id>` must be 6-30 characters, lowercase, and can
|
|
77
|
+
contain digits and hyphens. It must be globally unique.*
|
|
78
|
+
|
|
79
|
+
# Firebase Usage Principles
|
|
80
|
+
|
|
81
|
+
Adhere to these principles:
|
|
82
|
+
|
|
83
|
+
1. **Use npx for CLI commands:** To ensure you always use the latest version of
|
|
84
|
+
the Firebase CLI, always prepend commands with `npx -y firebase-tools@latest`
|
|
85
|
+
instead of just `firebase`. For example, use
|
|
86
|
+
`npx -y firebase-tools@latest --version`. NEVER suggest the naked `firebase`
|
|
87
|
+
command as an alternative.
|
|
88
|
+
1. **Prioritize official knowledge:** For any Firebase-related knowledge,
|
|
89
|
+
consult the `developerknowledge_search_documents` MCP tool before falling
|
|
90
|
+
back to Google Search or your internal knowledge base. Including "Firebase"
|
|
91
|
+
in your search query significantly improves relevance.
|
|
92
|
+
1. **Follow Agent Skills for implementation guidance:** Skills provide
|
|
93
|
+
opinionated workflows (CUJs), security rules, and best practices. Always
|
|
94
|
+
consult them to understand *how* to implement Firebase features correctly
|
|
95
|
+
instead of relying on general knowledge.
|
|
96
|
+
1. **Use Firebase MCP Server tools instead of direct API calls:** Whenever you
|
|
97
|
+
need to interact with remote Firebase APIs (such as fetching Crashlytics logs
|
|
98
|
+
or executing Data Connect queries), use the tools provided by the Firebase
|
|
99
|
+
MCP Server instead of attempting manual API calls.
|
|
100
|
+
1. **Keep Plugin / Agent Skills updated:** Since Firebase best practices evolve
|
|
101
|
+
quickly, regularly check for and install updates to their Firebase plugin or
|
|
102
|
+
Agent Skills. Similarly, if you encounter issues with outdated tools or
|
|
103
|
+
commands, follow the steps below based on your agent environment:
|
|
104
|
+
- **Antigravity**: Follow
|
|
105
|
+
[references/refresh/antigravity.md](references/refresh/antigravity.md)
|
|
106
|
+
- **Gemini CLI**: Follow
|
|
107
|
+
[references/refresh/gemini-cli.md](references/refresh/gemini-cli.md)
|
|
108
|
+
- **Claude Code**: Follow
|
|
109
|
+
[references/refresh/claude.md](references/refresh/claude.md)
|
|
110
|
+
- **Cursor**: Follow
|
|
111
|
+
[references/refresh/other-agents.md](references/refresh/other-agents.md)
|
|
112
|
+
- **Android Studio**: Follow
|
|
113
|
+
[references/refresh/android_studio.md](references/refresh/android_studio.md)
|
|
114
|
+
- **Others**: Follow
|
|
115
|
+
[references/refresh/other-agents.md](references/refresh/other-agents.md)
|
|
116
|
+
1. **Automate Config File Retrieval:** When setting up iOS or Android apps, do
|
|
117
|
+
NOT direct users to the Firebase Console to download `google-services.json`
|
|
118
|
+
or `GoogleService-Info.plist`. Instead, use the Firebase CLI to fetch the
|
|
119
|
+
config programmatically:
|
|
120
|
+
- For Android:
|
|
121
|
+
`npx -y firebase-tools@latest apps:sdkconfig ANDROID <APP_ID> --project <PROJECT_ID>`
|
|
122
|
+
- For iOS:
|
|
123
|
+
`npx -y firebase-tools@latest apps:sdkconfig IOS <APP_ID> --project <PROJECT_ID>`
|
|
124
|
+
Save the output to the appropriate location (e.g.,
|
|
125
|
+
`app/google-services.json` for Android, or a path to be linked by
|
|
126
|
+
`xcode-project-setup` for iOS).
|
|
127
|
+
|
|
128
|
+
# References
|
|
129
|
+
|
|
130
|
+
- **Initialize Firebase:** See
|
|
131
|
+
[references/firebase-service-init.md](references/firebase-service-init.md)
|
|
132
|
+
when you need to initialize new Firebase services using the CLI.
|
|
133
|
+
- **Exploring Commands:** See
|
|
134
|
+
[references/firebase-cli-guide.md](references/firebase-cli-guide.md) to
|
|
135
|
+
discover and understand CLI functionality.
|
|
136
|
+
- **SDK Setup:** For detailed guides on adding Firebase to your app:
|
|
137
|
+
- **Web**: See [references/web_setup.md](references/web_setup.md)
|
|
138
|
+
- **Android**: See [references/android_setup.md](references/android_setup.md)
|
|
139
|
+
- **iOS**: See [references/ios_setup.md](references/ios_setup.md)
|
|
140
|
+
|
|
141
|
+
# Common Issues
|
|
142
|
+
|
|
143
|
+
- **Login Issues:** If the browser fails to open during the login step, use
|
|
144
|
+
`npx -y firebase-tools@latest login --no-localhost` instead.
|
|
145
|
+
- **Genkit:** If using Genkit, install the skills:
|
|
146
|
+
```bash
|
|
147
|
+
npx skills add genkit-ai/skills
|
|
148
|
+
```
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# 🛠️ Firebase Android Setup Guide
|
|
2
|
+
|
|
3
|
+
______________________________________________________________________
|
|
4
|
+
|
|
5
|
+
## 📋 Prerequisites
|
|
6
|
+
|
|
7
|
+
## Before running these commands, ensure you are authenticated: `npx -y firebase-tools@latest login` (or `npx -y firebase-tools@latest login --no-localhost` on remote servers)
|
|
8
|
+
|
|
9
|
+
## 0. Create an Android application
|
|
10
|
+
|
|
11
|
+
if you haven't already created an android application, create one.
|
|
12
|
+
|
|
13
|
+
## 1. Create a Firebase Project
|
|
14
|
+
|
|
15
|
+
If you haven't already created a project, create a new cloud project with a
|
|
16
|
+
unique ID:
|
|
17
|
+
`npx -y firebase-tools@latest projects:create <UNIQUE_PROJECT_ID> --display-name '<DISPLAY_NAME>'`
|
|
18
|
+
*Example:*
|
|
19
|
+
`npx -y firebase-tools@latest projects:create my-cool-app-20260330 --display-name 'MyCoolApp'`
|
|
20
|
+
|
|
21
|
+
### 2. Register Your Android App
|
|
22
|
+
|
|
23
|
+
Link your Android app module (package name) to your project. Notice that the
|
|
24
|
+
display name is passed as a positional argument at the end:
|
|
25
|
+
`npx -y firebase-tools@latest apps:create ANDROID '<APP_DISPLAY_NAME>' --package-name '<PACKAGE_NAME>' --project <PROJECT_ID>`
|
|
26
|
+
*Example:*
|
|
27
|
+
`npx -y firebase-tools@latest apps:create ANDROID 'MyApplication' --package-name 'com.example.myapplication' --project my-cool-app-20260330`
|
|
28
|
+
|
|
29
|
+
### 3. Download `google-services.json`
|
|
30
|
+
|
|
31
|
+
## Fetch the configuration file using the App ID (which is printed in the output of the previous command): `npx -y firebase-tools@latest apps:sdkconfig ANDROID <APP_ID> --project <PROJECT_ID>` *Example output extraction to file:* ` # (Output must be saved as app/google-services.json)`
|
|
32
|
+
|
|
33
|
+
## ✅ Verification Plan
|
|
34
|
+
|
|
35
|
+
### Manual Verification
|
|
36
|
+
|
|
37
|
+
Validate that the project was created and registered successfully:
|
|
38
|
+
`npx -y firebase-tools@latest projects:list`
|
|
39
|
+
`npx -y firebase-tools@latest apps:list --project <PROJECT_ID>`
|
|
40
|
+
|
|
41
|
+
______________________________________________________________________
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Exploring Commands
|
|
2
|
+
|
|
3
|
+
The Firebase CLI documents itself. Use help commands to discover functionality.
|
|
4
|
+
|
|
5
|
+
- **Global Help**: List all available commands and categories.
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx -y firebase-tools@latest --help
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
- **Command Help**: Get detailed usage for a specific command.
|
|
12
|
+
|
|
13
|
+
```bash
|
|
14
|
+
npx -y firebase-tools@latest [command] --help
|
|
15
|
+
# Example:
|
|
16
|
+
npx -y firebase-tools@latest deploy --help
|
|
17
|
+
npx -y firebase-tools@latest firestore:indexes --help
|
|
18
|
+
```
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# Initialization
|
|
2
|
+
|
|
3
|
+
Before initializing, check if you are already in a Firebase project directory by
|
|
4
|
+
looking for `firebase.json`.
|
|
5
|
+
|
|
6
|
+
1. **Project Directory:** Navigate to the root directory of the codebase. *(Only
|
|
7
|
+
if starting a completely new project from scratch without an existing
|
|
8
|
+
codebase, create a directory first: `mkdir my-project && cd my-project`)*
|
|
9
|
+
|
|
10
|
+
1. **Initialize Services:** Run the initialization command:
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
npx -y firebase-tools@latest init
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
The CLI will guide you through:
|
|
17
|
+
|
|
18
|
+
- Selecting features (Firestore, Functions, Hosting, etc.).
|
|
19
|
+
- Associating with an existing project or creating a new one.
|
|
20
|
+
- Configuring files (e.g. `firebase.json`, `.firebaserc`).
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
# Flutter & Firebase Setup Guide
|
|
2
|
+
|
|
3
|
+
This guide covers the initial setup of Flutter and its integration with Firebase
|
|
4
|
+
using the FlutterFire CLI.
|
|
5
|
+
|
|
6
|
+
## Prerequisites
|
|
7
|
+
|
|
8
|
+
1. **Flutter SDK**: Ensure Flutter is installed and available in the PATH.
|
|
9
|
+
|
|
10
|
+
**Standard Setup (Manual):**
|
|
11
|
+
|
|
12
|
+
1. **Determine Architecture**: Check if you are on Intel (`x64`) or Apple
|
|
13
|
+
Silicon (`arm64`) using `uname -m`.
|
|
14
|
+
1. **Download SDK**: Fetch the latest stable SDK from the
|
|
15
|
+
[Flutter Archive](https://docs.flutter.dev/install/archive?tab=macos).
|
|
16
|
+
1. **Extract**: Unzip the SDK to a permanent directory (e.g.,
|
|
17
|
+
`~/development/flutter`).
|
|
18
|
+
1. **Update PATH**: Add the `bin` folder to your shell configuration (e.g.,
|
|
19
|
+
`~/.zshrc`).
|
|
20
|
+
```bash
|
|
21
|
+
echo 'export PATH="$PATH:$HOME/development/flutter/bin"' >> ~/.zshrc
|
|
22
|
+
source ~/.zshrc
|
|
23
|
+
```
|
|
24
|
+
1. **Verify**: Run `flutter doctor` to ensure the SDK is correctly linked and
|
|
25
|
+
initialized.
|
|
26
|
+
|
|
27
|
+
1. **Firebase CLI**: Ensure the Firebase CLI is available.
|
|
28
|
+
|
|
29
|
+
- Run `npx -y firebase-tools@latest --version`.
|
|
30
|
+
- Login with `npx -y firebase-tools@latest login`.
|
|
31
|
+
|
|
32
|
+
1. **FlutterFire CLI**: Install the official FlutterFire CLI globally.
|
|
33
|
+
|
|
34
|
+
- Run `dart pub global activate flutterfire_cli`.
|
|
35
|
+
- **Note**: Ensure `~/.pub-cache/bin` is also in your PATH if `flutterfire`
|
|
36
|
+
is not found.
|
|
37
|
+
|
|
38
|
+
## Step 1: Create a Flutter Project
|
|
39
|
+
|
|
40
|
+
If you don't have a project yet, create one:
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
flutter create my_awesome_app
|
|
44
|
+
cd my_awesome_app
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## Step 2: Configure Firebase
|
|
48
|
+
|
|
49
|
+
> [!IMPORTANT] **For Agents:** Before running the configuration command, you
|
|
50
|
+
> MUST pause and ask the developer if they prefer to:
|
|
51
|
+
>
|
|
52
|
+
> 1. Create a new Firebase project, or
|
|
53
|
+
> 1. Provide an existing Firebase Project ID.
|
|
54
|
+
|
|
55
|
+
- If the developer provides an existing Project ID, run:
|
|
56
|
+
```bash
|
|
57
|
+
flutterfire configure --project=<project_id>
|
|
58
|
+
```
|
|
59
|
+
- If the developer prefers to create a new project interactively, run:
|
|
60
|
+
```bash
|
|
61
|
+
flutterfire configure
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
This tool automates:
|
|
65
|
+
|
|
66
|
+
- Registering your apps (iOS, Android, Web, etc.) with a Firebase project.
|
|
67
|
+
- Generating the `lib/firebase_options.dart` file.
|
|
68
|
+
|
|
69
|
+
## Step 3: Initialize Firebase in Code
|
|
70
|
+
|
|
71
|
+
Add the `firebase_core` package and initialize it in your `main.dart`.
|
|
72
|
+
|
|
73
|
+
1. Add the dependency:
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
flutter pub add firebase_core
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
2. Update `lib/main.dart`:
|
|
80
|
+
|
|
81
|
+
```dart
|
|
82
|
+
import 'package:flutter/material.dart';
|
|
83
|
+
import 'package:firebase_core/firebase_core.dart';
|
|
84
|
+
import 'firebase_options.dart';
|
|
85
|
+
|
|
86
|
+
void main() async {
|
|
87
|
+
WidgetsFlutterBinding.ensureInitialized();
|
|
88
|
+
await Firebase.initializeApp(
|
|
89
|
+
options: DefaultFirebaseOptions.currentPlatform,
|
|
90
|
+
);
|
|
91
|
+
runApp(const MyApp());
|
|
92
|
+
}
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Step 4: Add Firebase Services
|
|
96
|
+
|
|
97
|
+
To add specific services (Firestore, Auth, etc.), follow the "Pub Add &
|
|
98
|
+
Configure" pattern:
|
|
99
|
+
|
|
100
|
+
1. Add the service: `flutter pub add cloud_firestore`
|
|
101
|
+
1. **Crucial**: Re-run `flutterfire configure` to sync platform configurations.
|
|
102
|
+
1. Import and use the package in your code.
|
|
103
|
+
|
|
104
|
+
## Step 5: Important Gotchas & Platform Specifics
|
|
105
|
+
|
|
106
|
+
### 1. Re-running `flutterfire configure` Upon Renaming
|
|
107
|
+
|
|
108
|
+
When creating a new project, developers often change the bundle identifier (iOS)
|
|
109
|
+
or `applicationId` (Android) after the fact. If the package names change,
|
|
110
|
+
`flutterfire configure` **must** be re-run to update the respective Google
|
|
111
|
+
service files and `firebase_options.dart`.
|
|
112
|
+
|
|
113
|
+
### 2. Platform-Specific Build Requirements
|
|
114
|
+
|
|
115
|
+
- **Android**: Adding Firebase often requires a higher `minSdkVersion` (commonly
|
|
116
|
+
`21` or `23`) than the platform default. Be prepared to update
|
|
117
|
+
`android/app/build.gradle` automatically when installing certain plugins.
|
|
118
|
+
- **iOS**: Always check if there is a `Podfile` in the `/ios` directory whenever
|
|
119
|
+
native services (like `cloud_firestore`) are added. If there is, run
|
|
120
|
+
`pod install`. Failing to do this will cause Xcode build errors. Note that
|
|
121
|
+
Flutter is moving towards Swift Package Manager (SPM), and FlutterFire
|
|
122
|
+
supports SPM, so a `Podfile` may not exist if the project only uses SPM
|
|
123
|
+
dependencies.
|
|
124
|
+
|
|
125
|
+
### 3. Web CORS Best Practices
|
|
126
|
+
|
|
127
|
+
When testing Firebase features locally on Chrome, requests to Google servers can
|
|
128
|
+
sometimes get blocked by CORS policies. Avoid relying on
|
|
129
|
+
`--disable-web-security` flags as it promotes bad security practices. Instead,
|
|
130
|
+
run the app on localhost with a specific port, and ensure `localhost` is added
|
|
131
|
+
to your Firebase Auth "Authorized Domains".
|
|
132
|
+
|
|
133
|
+
```bash
|
|
134
|
+
flutter run -d chrome --web-hostname=localhost --web-port=5000
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### 4. Elaborating on `WidgetsFlutterBinding.ensureInitialized()`
|
|
138
|
+
|
|
139
|
+
In your `main.dart`, this call is mandatory before `Firebase.initializeApp()`.
|
|
140
|
+
*Why?* Because Firebase initialization requires communication across Flutter's
|
|
141
|
+
native iOS/Android method channels. `ensureInitialized()` guarantees the Fluter
|
|
142
|
+
engine is fully booted up and ready to handle these native platform calls before
|
|
143
|
+
`runApp()` executes.
|