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,192 @@
|
|
|
1
|
+
# Firestore Web SDK Usage Guide
|
|
2
|
+
|
|
3
|
+
This guide focuses on the **Modular Web SDK** (v9+), which is tree-shakeable and
|
|
4
|
+
efficient.
|
|
5
|
+
|
|
6
|
+
## Initialization
|
|
7
|
+
|
|
8
|
+
```javascript
|
|
9
|
+
import { initializeApp } from "firebase/app";
|
|
10
|
+
import { getFirestore } from "firebase/firestore";
|
|
11
|
+
|
|
12
|
+
// If running in Firebase App Hosting, you can skip Firebase Config and instead use:
|
|
13
|
+
// const app = initializeApp();
|
|
14
|
+
|
|
15
|
+
const firebaseConfig = {
|
|
16
|
+
// Your config options. Get the values by running 'npx -y firebase-tools@latest apps:sdkconfig <platform> <app-id>'
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const app = initializeApp(firebaseConfig);
|
|
20
|
+
const db = getFirestore(app);
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Writing Data
|
|
25
|
+
|
|
26
|
+
### Set a Document (`setDoc`)
|
|
27
|
+
|
|
28
|
+
Creates a document if it doesn't exist, or overwrites it if it does.
|
|
29
|
+
|
|
30
|
+
```javascript
|
|
31
|
+
import { doc, setDoc } from "firebase/firestore";
|
|
32
|
+
|
|
33
|
+
// Create/Overwrite document with ID "LA"
|
|
34
|
+
await setDoc(doc(db, "cities", "LA"), {
|
|
35
|
+
name: "Los Angeles",
|
|
36
|
+
state: "CA",
|
|
37
|
+
country: "USA"
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// To merge with existing data instead of overwriting:
|
|
41
|
+
await setDoc(doc(db, "cities", "LA"), { population: 3900000 }, { merge: true });
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
### Add a Document with Auto-ID (`addDoc`)
|
|
45
|
+
|
|
46
|
+
Use when you don't care about the document ID.
|
|
47
|
+
|
|
48
|
+
```javascript
|
|
49
|
+
import { collection, addDoc } from "firebase/firestore";
|
|
50
|
+
|
|
51
|
+
const docRef = await addDoc(collection(db, "cities"), {
|
|
52
|
+
name: "Tokyo",
|
|
53
|
+
country: "Japan"
|
|
54
|
+
});
|
|
55
|
+
console.log("Document written with ID: ", docRef.id);
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Update a Document (`updateDoc`)
|
|
59
|
+
|
|
60
|
+
Update some fields of an existing document without overwriting the entire
|
|
61
|
+
document. Fails if the document doesn't exist.
|
|
62
|
+
|
|
63
|
+
```javascript
|
|
64
|
+
import { doc, updateDoc } from "firebase/firestore";
|
|
65
|
+
|
|
66
|
+
const laRef = doc(db, "cities", "LA");
|
|
67
|
+
|
|
68
|
+
await updateDoc(laRef, {
|
|
69
|
+
capital: true
|
|
70
|
+
});
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
### Transactions
|
|
74
|
+
|
|
75
|
+
Perform an atomic read-modify-write operation.
|
|
76
|
+
|
|
77
|
+
```javascript
|
|
78
|
+
import { runTransaction, doc } from "firebase/firestore";
|
|
79
|
+
|
|
80
|
+
const sfDocRef = doc(db, "cities", "SF");
|
|
81
|
+
|
|
82
|
+
try {
|
|
83
|
+
await runTransaction(db, async (transaction) => {
|
|
84
|
+
const sfDoc = await transaction.get(sfDocRef);
|
|
85
|
+
if (!sfDoc.exists()) {
|
|
86
|
+
throw "Document does not exist!";
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
const newPopulation = sfDoc.data().population + 1;
|
|
90
|
+
transaction.update(sfDocRef, { population: newPopulation });
|
|
91
|
+
});
|
|
92
|
+
console.log("Transaction successfully committed!");
|
|
93
|
+
} catch (e) {
|
|
94
|
+
console.log("Transaction failed: ", e);
|
|
95
|
+
}
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
## Reading Data
|
|
99
|
+
|
|
100
|
+
### Get a Single Document (`getDoc`)
|
|
101
|
+
|
|
102
|
+
```javascript
|
|
103
|
+
import { doc, getDoc } from "firebase/firestore";
|
|
104
|
+
|
|
105
|
+
const docRef = doc(db, "cities", "SF");
|
|
106
|
+
const docSnap = await getDoc(docRef);
|
|
107
|
+
|
|
108
|
+
if (docSnap.exists()) {
|
|
109
|
+
console.log("Document data:", docSnap.data());
|
|
110
|
+
} else {
|
|
111
|
+
console.log("No such document!");
|
|
112
|
+
}
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Get Multiple Documents (`getDocs`)
|
|
116
|
+
|
|
117
|
+
Fetches all documents in a query or collection once.
|
|
118
|
+
|
|
119
|
+
```javascript
|
|
120
|
+
import { collection, getDocs } from "firebase/firestore";
|
|
121
|
+
|
|
122
|
+
const querySnapshot = await getDocs(collection(db, "cities"));
|
|
123
|
+
querySnapshot.forEach((doc) => {
|
|
124
|
+
// doc.data() is never undefined for query doc snapshots
|
|
125
|
+
console.log(doc.id, " => ", doc.data());
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
## Realtime Updates
|
|
130
|
+
|
|
131
|
+
### Listen to a Document/Query (`onSnapshot`)
|
|
132
|
+
|
|
133
|
+
```javascript
|
|
134
|
+
import { doc, onSnapshot } from "firebase/firestore";
|
|
135
|
+
|
|
136
|
+
const unsub = onSnapshot(doc(db, "cities", "SF"), (doc) => {
|
|
137
|
+
console.log("Current data: ", doc.data());
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Stop listening
|
|
141
|
+
// unsub();
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
### Handle Changes (Added/Modified/Removed)
|
|
145
|
+
|
|
146
|
+
```javascript
|
|
147
|
+
import { collection, query, where, onSnapshot } from "firebase/firestore";
|
|
148
|
+
|
|
149
|
+
const q = query(collection(db, "cities"), where("state", "==", "CA"));
|
|
150
|
+
const unsubscribe = onSnapshot(q, (snapshot) => {
|
|
151
|
+
snapshot.docChanges().forEach((change) => {
|
|
152
|
+
if (change.type === "added") {
|
|
153
|
+
console.log("New city: ", change.doc.data());
|
|
154
|
+
}
|
|
155
|
+
if (change.type === "modified") {
|
|
156
|
+
console.log("Modified city: ", change.doc.data());
|
|
157
|
+
}
|
|
158
|
+
if (change.type === "removed") {
|
|
159
|
+
console.log("Removed city: ", change.doc.data());
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
});
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Queries
|
|
166
|
+
|
|
167
|
+
### Simple and Compound Queries
|
|
168
|
+
|
|
169
|
+
Use `query()` to combine filters.
|
|
170
|
+
|
|
171
|
+
```javascript
|
|
172
|
+
import { collection, query, where, getDocs } from "firebase/firestore";
|
|
173
|
+
|
|
174
|
+
const citiesRef = collection(db, "cities");
|
|
175
|
+
|
|
176
|
+
// Simple equality
|
|
177
|
+
const q1 = query(citiesRef, where("state", "==", "CA"));
|
|
178
|
+
|
|
179
|
+
// Compound (AND)
|
|
180
|
+
// Note: Requires an index if filtering on different fields
|
|
181
|
+
const q2 = query(citiesRef, where("state", "==", "CA"), where("population", ">", 1000000));
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
### Order and Limit
|
|
185
|
+
|
|
186
|
+
Sort and limit results.
|
|
187
|
+
|
|
188
|
+
```javascript
|
|
189
|
+
import { orderBy, limit } from "firebase/firestore";
|
|
190
|
+
|
|
191
|
+
const q = query(citiesRef, orderBy("name"), limit(3));
|
|
192
|
+
```
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: firebase-hosting-basics
|
|
3
|
+
description: Skill for working with Firebase Hosting (Classic). Use this when you want to deploy static web apps, Single Page Apps (SPAs), or simple microservices. Do NOT use for Firebase App Hosting.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# hosting-basics
|
|
7
|
+
|
|
8
|
+
This skill provides instructions and references for working with Firebase
|
|
9
|
+
Hosting, a fast and secure hosting service for your web app, static and dynamic
|
|
10
|
+
content, and microservices.
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Firebase Hosting provides production-grade web content hosting for developers.
|
|
15
|
+
With a single command, you can deploy web apps and serve both static and dynamic
|
|
16
|
+
content to a global CDN (content delivery network).
|
|
17
|
+
|
|
18
|
+
**Key Features:**
|
|
19
|
+
|
|
20
|
+
- **Fast Content Delivery:** Files are cached on SSDs at CDN edges around the
|
|
21
|
+
world.
|
|
22
|
+
- **Secure by Default:** Zero-configuration SSL is built-in.
|
|
23
|
+
- **Preview Channels:** View and test changes on temporary preview URLs before
|
|
24
|
+
deploying live.
|
|
25
|
+
- **GitHub Integration:** Automate previews and deploys with GitHub Actions.
|
|
26
|
+
- **Dynamic Content:** Serve dynamic content and microservices using Cloud
|
|
27
|
+
Functions or Cloud Run.
|
|
28
|
+
|
|
29
|
+
## Hosting vs App Hosting
|
|
30
|
+
|
|
31
|
+
**Choose Firebase Hosting if:**
|
|
32
|
+
|
|
33
|
+
- You are deploying a static site (HTML/CSS/JS).
|
|
34
|
+
- You are deploying a simple SPA (React, Vue, etc. without SSR).
|
|
35
|
+
- You want full control over the build and deploy process via CLI.
|
|
36
|
+
|
|
37
|
+
**Choose Firebase App Hosting if:**
|
|
38
|
+
|
|
39
|
+
- You are using a supported full-stack framework like Next.js or Angular.
|
|
40
|
+
- You need Server-Side Rendering (SSR) or ISR.
|
|
41
|
+
- You want an automated "git push to deploy" workflow with zero configuration.
|
|
42
|
+
|
|
43
|
+
## Instructions
|
|
44
|
+
|
|
45
|
+
### 1. Configuration (`firebase.json`)
|
|
46
|
+
|
|
47
|
+
For details on configuring Hosting behavior, including public directories,
|
|
48
|
+
redirects, rewrites, and headers, see
|
|
49
|
+
[configuration.md](references/configuration.md).
|
|
50
|
+
|
|
51
|
+
### 2. Deploying
|
|
52
|
+
|
|
53
|
+
For instructions on deploying your site, using preview channels, and managing
|
|
54
|
+
releases, see [deploying.md](references/deploying.md).
|
|
55
|
+
|
|
56
|
+
### 3. Emulation
|
|
57
|
+
|
|
58
|
+
To test your app locally:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npx -y firebase-tools@latest emulators:start --only hosting
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
This serves your app at `http://localhost:5000` by default.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Hosting Configuration (`firebase.json`)
|
|
2
|
+
|
|
3
|
+
The `hosting` section of `firebase.json` configures how your site is deployed
|
|
4
|
+
and served.
|
|
5
|
+
|
|
6
|
+
## Key Attributes
|
|
7
|
+
|
|
8
|
+
### `public` (Required)
|
|
9
|
+
|
|
10
|
+
Specifies the directory to deploy to Firebase Hosting.
|
|
11
|
+
|
|
12
|
+
```json
|
|
13
|
+
"hosting": {
|
|
14
|
+
"public": "public"
|
|
15
|
+
}
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
### `ignore` (Optional)
|
|
19
|
+
|
|
20
|
+
Files to ignore on deploy. Uses glob patterns (like `.gitignore`). **Default
|
|
21
|
+
ignores:** `firebase.json`, `**/.*`, `**/node_modules/**`
|
|
22
|
+
|
|
23
|
+
### `redirects` (Optional)
|
|
24
|
+
|
|
25
|
+
URL redirects to prevent broken links or shorten URLs.
|
|
26
|
+
|
|
27
|
+
```json
|
|
28
|
+
"redirects": [
|
|
29
|
+
{
|
|
30
|
+
"source": "/foo",
|
|
31
|
+
"destination": "/bar",
|
|
32
|
+
"type": 301
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### `rewrites` (Optional)
|
|
38
|
+
|
|
39
|
+
Serve the same content for multiple URLs, useful for SPAs or Dynamic Content.
|
|
40
|
+
|
|
41
|
+
```json
|
|
42
|
+
"rewrites": [
|
|
43
|
+
{
|
|
44
|
+
"source": "**",
|
|
45
|
+
"destination": "/index.html"
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
"source": "/api/**",
|
|
49
|
+
"function": "apiFunction"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
"source": "/container/**",
|
|
53
|
+
"run": {
|
|
54
|
+
"serviceId": "helloworld",
|
|
55
|
+
"region": "us-central1"
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### `headers` (Optional)
|
|
62
|
+
|
|
63
|
+
Custom response headers.
|
|
64
|
+
|
|
65
|
+
```json
|
|
66
|
+
"headers": [
|
|
67
|
+
{
|
|
68
|
+
"source": "**/*.@(eot|otf|ttf|ttc|woff|font.css)",
|
|
69
|
+
"headers": [
|
|
70
|
+
{
|
|
71
|
+
"key": "Access-Control-Allow-Origin",
|
|
72
|
+
"value": "*"
|
|
73
|
+
}
|
|
74
|
+
]
|
|
75
|
+
}
|
|
76
|
+
]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### `cleanUrls` (Optional)
|
|
80
|
+
|
|
81
|
+
If `true`, drops `.html` extension from URLs.
|
|
82
|
+
|
|
83
|
+
```json
|
|
84
|
+
"cleanUrls": true
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
### `trailingSlash` (Optional)
|
|
88
|
+
|
|
89
|
+
Controls trailing slashes in static content URLs.
|
|
90
|
+
|
|
91
|
+
- `true`: Adds trailing slash.
|
|
92
|
+
- `false`: Removes trailing slash.
|
|
93
|
+
|
|
94
|
+
## Full Example
|
|
95
|
+
|
|
96
|
+
```json
|
|
97
|
+
{
|
|
98
|
+
"hosting": {
|
|
99
|
+
"public": "dist",
|
|
100
|
+
"ignore": [
|
|
101
|
+
"firebase.json",
|
|
102
|
+
"**/.*",
|
|
103
|
+
"**/node_modules/**"
|
|
104
|
+
],
|
|
105
|
+
"rewrites": [
|
|
106
|
+
{
|
|
107
|
+
"source": "**",
|
|
108
|
+
"destination": "/index.html"
|
|
109
|
+
}
|
|
110
|
+
],
|
|
111
|
+
"cleanUrls": true,
|
|
112
|
+
"trailingSlash": false
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
```
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# Deploying to Firebase Hosting
|
|
2
|
+
|
|
3
|
+
## Standard Deployment
|
|
4
|
+
|
|
5
|
+
To deploy your Hosting content and configuration to your live site:
|
|
6
|
+
|
|
7
|
+
```bash
|
|
8
|
+
npx -y firebase-tools@latest deploy --only hosting
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
This deploys to your default sites (`PROJECT_ID.web.app` and
|
|
12
|
+
`PROJECT_ID.firebaseapp.com`).
|
|
13
|
+
|
|
14
|
+
## Preview Channels
|
|
15
|
+
|
|
16
|
+
Preview channels allow you to test changes on a temporary URL before going live.
|
|
17
|
+
|
|
18
|
+
### Deploy to a Preview Channel
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
npx -y firebase-tools@latest hosting:channel:deploy CHANNEL_ID
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Replace `CHANNEL_ID` with a name (e.g., `feature-beta`). This returns a preview
|
|
25
|
+
URL like `PROJECT_ID--CHANNEL_ID-RANDOM_HASH.web.app`.
|
|
26
|
+
|
|
27
|
+
### Expiration
|
|
28
|
+
|
|
29
|
+
Channels expire after 7 days by default. To set a different expiration:
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npx -y firebase-tools@latest hosting:channel:deploy CHANNEL_ID --expires 1d
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Cloning to Live
|
|
36
|
+
|
|
37
|
+
You can promote a version from a preview channel to your live channel without
|
|
38
|
+
rebuilding.
|
|
39
|
+
|
|
40
|
+
```bash
|
|
41
|
+
npx -y firebase-tools@latest hosting:clone SOURCE_SITE_ID:SOURCE_CHANNEL_ID TARGET_SITE_ID:live
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Example:** Clone the `feature-beta` channel on your default site to live:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npx -y firebase-tools@latest hosting:clone my-project:feature-beta my-project:live
|
|
48
|
+
```
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: firebase-remote-config-basics
|
|
3
|
+
description: Comprehensive guide for Firebase Remote Config, including template management and SDK usage. Use this skill when the user needs help setting up Remote Config, managing feature flags, or updating app behavior dynamically.
|
|
4
|
+
compatibility: This skill is best used with the Firebase CLI, but does not require it. Firebase CLI can be accessed through `npx -y firebase-tools@latest`.
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Remote Config
|
|
8
|
+
|
|
9
|
+
This skill provides a complete guide for getting started with Remote Config on
|
|
10
|
+
Android or iOS. Remote Config allows you to change the behavior and appearance
|
|
11
|
+
of your app without publishing an app update by maintaining a cloud-based
|
|
12
|
+
configuration template.
|
|
13
|
+
|
|
14
|
+
## Prerequisites
|
|
15
|
+
|
|
16
|
+
Provisioning Remote Config requires both a Firebase project and a Firebase app,
|
|
17
|
+
either Android or iOS. To manage the Remote Config template and conditions via
|
|
18
|
+
the command line, use the Firebase CLI. See the `firebase-basics` skill for
|
|
19
|
+
references on project initialization.
|
|
20
|
+
|
|
21
|
+
## Troubleshooting Execution
|
|
22
|
+
|
|
23
|
+
### Handling npx 403 Forbidden Errors
|
|
24
|
+
|
|
25
|
+
If `npx -y firebase-tools@latest` fails due to registry permissions (403 error):
|
|
26
|
+
|
|
27
|
+
1. **Inform the user**: "I am unable to fetch the latest Firebase tools via npx
|
|
28
|
+
due to a registry error."
|
|
29
|
+
1. **Fallback**: Attempt to use the local `firebase` command directly if the
|
|
30
|
+
user confirms it is installed globally (`npm install -g firebase-tools`).
|
|
31
|
+
|
|
32
|
+
### Handling Project Context Issues
|
|
33
|
+
|
|
34
|
+
If a command fails because "no active project is selected":
|
|
35
|
+
|
|
36
|
+
1. **Check login**: Run `npx -y firebase-tools@latest login:list`.
|
|
37
|
+
1. **Prompt for ID**: If logged in but no project is active, ask the user:
|
|
38
|
+
"Please provide your Firebase Project ID to proceed."
|
|
39
|
+
1. **Use Flag**: Append `--project <PROJECT_ID>` to every subsequent command.
|
|
40
|
+
|
|
41
|
+
## SDK Setup
|
|
42
|
+
|
|
43
|
+
To learn how to set up Remote Config in your application code, choose your
|
|
44
|
+
platform:
|
|
45
|
+
|
|
46
|
+
- **Android**: [android_setup.md](references/android_setup.md)
|
|
47
|
+
- **iOS**: [ios_setup.md](references/ios_setup.md)
|
|
48
|
+
|
|
49
|
+
## Best Practices and Template Management
|
|
50
|
+
|
|
51
|
+
Follow these guidelines and use the associated CLI tools to ensure efficient and
|
|
52
|
+
safe use of Remote Config.
|
|
53
|
+
|
|
54
|
+
### Fetching Strategies
|
|
55
|
+
|
|
56
|
+
To optimize app performance and user experience, follow these recommended
|
|
57
|
+
patterns (see
|
|
58
|
+
[Loading Strategies](https://firebase.google.com/docs/remote-config/loading)):
|
|
59
|
+
|
|
60
|
+
- **Load new values for next startup**: The most effective pattern is to
|
|
61
|
+
activate previously fetched values immediately on startup and fetch new values
|
|
62
|
+
in the background to be used next time. This minimizes user wait time.
|
|
63
|
+
- **Real-time Updates**: Use the SDK's real-time listener to update the app
|
|
64
|
+
instantly without a refresh when server-side configuration changes.
|
|
65
|
+
|
|
66
|
+
### Template Management via CLI
|
|
67
|
+
|
|
68
|
+
Use the following commands to manage your Remote Config template and version
|
|
69
|
+
history through the terminal:
|
|
70
|
+
|
|
71
|
+
### Template Management via CLI
|
|
72
|
+
|
|
73
|
+
Use the following commands to manage your Remote Config template and version
|
|
74
|
+
history through the terminal:
|
|
75
|
+
|
|
76
|
+
- **Get current template**: Save the remote template to a local JSON file for
|
|
77
|
+
auditing or modification.
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npx -y firebase-tools@latest remoteconfig:get -o remote_config.json
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
- **Autonomous Editing & Discovery** : Modify the local `remote_config.json`
|
|
84
|
+
directly. Determine the correct signal (e.g., device.country or percent) and
|
|
85
|
+
update the "conditions" array and "parameters" map accordingly.
|
|
86
|
+
|
|
87
|
+
- **MANDATORY: User Review and Verification** : STOP and ask the user to verify
|
|
88
|
+
your changes before proceeding to deployment.
|
|
89
|
+
|
|
90
|
+
- Action: Inform the user: "I have prepared the changes in remote_config.json.
|
|
91
|
+
Please review the file for accuracy. Once you are satisfied, tell me to
|
|
92
|
+
'deploy' to make the changes live."
|
|
93
|
+
|
|
94
|
+
- **Deployment Orchestration** : To push changes, you must ensure the
|
|
95
|
+
environment is configured for deployment.
|
|
96
|
+
|
|
97
|
+
- Config Mapping: If a firebase.json file is missing, create one to map the
|
|
98
|
+
local JSON to the Remote Config service:
|
|
99
|
+
|
|
100
|
+
```json
|
|
101
|
+
{ "remoteconfig": { "template": "remote_config.json" } }
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
- Deploy: Execute the partial deployment command
|
|
105
|
+
```bash
|
|
106
|
+
npx -y firebase-tools@latest deploy --only remoteconfig
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
- **Verification**: After deployment, verify the update by listing the version
|
|
110
|
+
history.
|
|
111
|
+
|
|
112
|
+
```bash
|
|
113
|
+
npx -y firebase-tools@latest remoteconfig:versions:list
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
The SDK provides a number of features to make your application dynamic and
|
|
117
|
+
responsive to user segments.
|
|
118
|
+
|
|
119
|
+
- **Set In-App Defaults**: Define baseline values to ensure the app functions
|
|
120
|
+
offline or before the first fetch.
|
|
121
|
+
- **Fetch and Activate**: Retrieve values from the Firebase backend and apply
|
|
122
|
+
them to the local UI/Logic.
|
|
123
|
+
- **Template Management**: Use the Firebase CLI to version-control, get, and
|
|
124
|
+
deploy your config JSON files.
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
# Firebase Remote Config Android Setup Guide
|
|
2
|
+
|
|
3
|
+
Important references:
|
|
4
|
+
|
|
5
|
+
- Refer to the `firebase-basics` skills, particularly those for project and app
|
|
6
|
+
setup, before proceeding.
|
|
7
|
+
|
|
8
|
+
## Project and App Setup
|
|
9
|
+
|
|
10
|
+
Before you begin, ensure you have the following. If a `google-services.json`
|
|
11
|
+
file is present, then use that Firebase project and app. Otherwise you may need
|
|
12
|
+
to create them.
|
|
13
|
+
|
|
14
|
+
- **Firebase CLI**: Installed and logged in (see `firebase-basics`).
|
|
15
|
+
- **Firebase Project**: Created via
|
|
16
|
+
`npx -y firebase-tools@latest projects:create` (see `firebase-basics`).
|
|
17
|
+
- **Firebase App**: Created via
|
|
18
|
+
`npx -y firebase-tools@latest apps:create <IOS|ANDROID|WEB> <package-name-or-bundle-id>`
|
|
19
|
+
|
|
20
|
+
The `google-services.json` file must be present in the Android app's module
|
|
21
|
+
directory. If missing, get the config using the Firebase CLI:
|
|
22
|
+
`npx -y firebase-tools@latest apps:sdkconfig ANDROID <App-ID>`.
|
|
23
|
+
|
|
24
|
+
## Add Dependencies to Gradle Build
|
|
25
|
+
|
|
26
|
+
These changes are made to your Android project's Gradle files. Google Analytics
|
|
27
|
+
is highly recommended as it enables conditional targeting based on user
|
|
28
|
+
properties and audiences.
|
|
29
|
+
|
|
30
|
+
### Project-level `build.gradle.kts` (`<project>/build.gradle.kts`)
|
|
31
|
+
|
|
32
|
+
Ensure the Google Services plugin is in the `plugins` block:
|
|
33
|
+
|
|
34
|
+
```kotlin
|
|
35
|
+
plugins {
|
|
36
|
+
// ... other plugins
|
|
37
|
+
id("com.google.gms.google-services") version "4.4.0" apply false
|
|
38
|
+
}
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### App-level `build.gradle.kts` (`<project>/<app-module>/build.gradle.kts`)
|
|
42
|
+
|
|
43
|
+
1. Add the Google Services plugin to the `plugins` block:
|
|
44
|
+
|
|
45
|
+
```kotlin
|
|
46
|
+
plugins {
|
|
47
|
+
// ... other plugins
|
|
48
|
+
id("com.google.gms.google-services")
|
|
49
|
+
}
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
1. Add the Firebase Remote Config and Analytics dependencies. Using the Firebase
|
|
53
|
+
Bill of Materials (BoM) is the best practice for version management.
|
|
54
|
+
|
|
55
|
+
```kotlin
|
|
56
|
+
dependencies {
|
|
57
|
+
// ... other dependencies
|
|
58
|
+
|
|
59
|
+
// Import the Firebase BoM
|
|
60
|
+
implementation(platform("com.google.firebase:firebase-bom:32.7.0"))
|
|
61
|
+
|
|
62
|
+
// Add the dependencies for Remote Config and Analytics
|
|
63
|
+
implementation("com.google.firebase:firebase-config-ktx")
|
|
64
|
+
implementation("com.google.firebase:firebase-analytics-ktx")
|
|
65
|
+
}
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Follow up Steps
|
|
69
|
+
|
|
70
|
+
The following steps cover the essential patterns for using Remote Config
|
|
71
|
+
effectively.
|
|
72
|
+
|
|
73
|
+
### Set In-App Defaults
|
|
74
|
+
|
|
75
|
+
Define default values so your app has functional logic before it ever fetches a
|
|
76
|
+
template from the server. Create an XML file (e.g.,
|
|
77
|
+
`res/xml/remote_config_defaults.xml`):
|
|
78
|
+
`xml <!-- Example Remote Config Defaults File --> <?xml version="1.0" encoding="utf-8"?> <defaultsMap> <entry> <key>welcome_message</key> <value>Welcome to the app!</value> </entry> <entry> <key>is_feature_enabled</key> <value>false</value> </entry> </defaultsMap> `
|
|
79
|
+
Then, initialize the SDK in your Activity or Application class:
|
|
80
|
+
|
|
81
|
+
````
|
|
82
|
+
```kotlin
|
|
83
|
+
val remoteConfig = Firebase.remoteConfig
|
|
84
|
+
remoteConfig.setDefaultsAsync(R.xml.remote_config_defaults)
|
|
85
|
+
```
|
|
86
|
+
````
|
|
87
|
+
|
|
88
|
+
### Fetch and Activate Values
|
|
89
|
+
|
|
90
|
+
To apply values from the cloud, you must fetch them and then activate them.
|
|
91
|
+
`kotlin remoteConfig.fetchAndActivate() .addOnCompleteListener(this) { task -> if (task.isSuccessful) { val updated = task.result println("Config params updated: $updated") } else { println("Fetch failed") } // Access a value val message = remoteConfig.getString("welcome_message") } `
|