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,156 @@
|
|
|
1
|
+
# Firebase AI Logic iOS Setup Guide
|
|
2
|
+
|
|
3
|
+
## 1. Import and Initialize
|
|
4
|
+
|
|
5
|
+
Ensure you have installed the `FirebaseAILogic` SDK via Swift Package Manager.
|
|
6
|
+
|
|
7
|
+
```swift
|
|
8
|
+
import FirebaseAILogic
|
|
9
|
+
|
|
10
|
+
// Initialize the Firebase AI service and the generative model.
|
|
11
|
+
let ai = FirebaseAI.firebaseAI()
|
|
12
|
+
|
|
13
|
+
// [AGENT] Replace "<latest_supported_model>" with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
14
|
+
let model = ai.generativeModel(modelName: "<latest_supported_model>")
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 2. SwiftUI Integration (Best Practices)
|
|
18
|
+
|
|
19
|
+
Use the `@Observable` pattern to manage AI state and provide a smooth UX with
|
|
20
|
+
loading indicators and error handling.
|
|
21
|
+
|
|
22
|
+
> **⛔️ CRITICAL WARNING:** Do NOT initialize the model inline as a class
|
|
23
|
+
> property if there's any chance the view model is instantiated before
|
|
24
|
+
> `FirebaseApp.configure()` executes in the app root. To be safe, initialize the
|
|
25
|
+
> model lazily or pass it in from a point in the hierarchy where Firebase is
|
|
26
|
+
> guaranteed to be configured.
|
|
27
|
+
|
|
28
|
+
```swift
|
|
29
|
+
import SwiftUI
|
|
30
|
+
import FirebaseAILogic
|
|
31
|
+
|
|
32
|
+
@MainActor
|
|
33
|
+
@Observable
|
|
34
|
+
final class AIViewModel {
|
|
35
|
+
// [AGENT] Replace with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
36
|
+
private lazy var model = FirebaseAI.firebaseAI().generativeModel(modelName: "<latest_supported_model>")
|
|
37
|
+
|
|
38
|
+
var responseText: String = ""
|
|
39
|
+
var isFetching: Bool = false
|
|
40
|
+
var errorMessage: String?
|
|
41
|
+
|
|
42
|
+
func generate(prompt: String) async {
|
|
43
|
+
isFetching = true
|
|
44
|
+
errorMessage = nil
|
|
45
|
+
defer { isFetching = false }
|
|
46
|
+
|
|
47
|
+
do {
|
|
48
|
+
let response = try await model.generateContent(prompt)
|
|
49
|
+
self.responseText = response.text ?? "No response"
|
|
50
|
+
} catch {
|
|
51
|
+
self.errorMessage = error.localizedDescription
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
struct AIView: View {
|
|
57
|
+
@State private var viewModel = AIViewModel()
|
|
58
|
+
@State private var prompt = "Write a story about a magic backpack."
|
|
59
|
+
|
|
60
|
+
var body: some View {
|
|
61
|
+
VStack {
|
|
62
|
+
TextField("Enter prompt", text: $prompt)
|
|
63
|
+
|
|
64
|
+
Button("Generate") {
|
|
65
|
+
Task { await viewModel.generate(prompt: prompt) }
|
|
66
|
+
}
|
|
67
|
+
.disabled(viewModel.isFetching)
|
|
68
|
+
|
|
69
|
+
if viewModel.isFetching {
|
|
70
|
+
ProgressView()
|
|
71
|
+
} else if let error = viewModel.errorMessage {
|
|
72
|
+
Text(error).foregroundStyle(.red)
|
|
73
|
+
} else {
|
|
74
|
+
ScrollView {
|
|
75
|
+
Text(viewModel.responseText)
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
.padding()
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
## 3. Safety Settings
|
|
85
|
+
|
|
86
|
+
You can configure safety thresholds to prevent the model from generating harmful
|
|
87
|
+
content.
|
|
88
|
+
|
|
89
|
+
```swift
|
|
90
|
+
let safetySettings = [
|
|
91
|
+
SafetySetting(category: .harassment, threshold: .blockLowAndAbove),
|
|
92
|
+
SafetySetting(category: .hateSpeech, threshold: .blockMediumAndAbove)
|
|
93
|
+
]
|
|
94
|
+
|
|
95
|
+
let model = FirebaseAI.firebaseAI().generativeModel(
|
|
96
|
+
modelName: "<latest_supported_model>", // [AGENT] Replace with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
97
|
+
safetySettings: safetySettings
|
|
98
|
+
)
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
# Advanced Features
|
|
102
|
+
|
|
103
|
+
### Chat Session (Multi-turn)
|
|
104
|
+
|
|
105
|
+
Chat sessions persist state across multiple interactions, which is essential for
|
|
106
|
+
ongoing conversations or when using tools like function calling.
|
|
107
|
+
|
|
108
|
+
```swift
|
|
109
|
+
let chat = model.startChat()
|
|
110
|
+
|
|
111
|
+
Task {
|
|
112
|
+
do {
|
|
113
|
+
let response1 = try await chat.sendMessage("Hello! I have two dogs in my house.")
|
|
114
|
+
print(response1.text ?? "")
|
|
115
|
+
|
|
116
|
+
let response2 = try await chat.sendMessage("How many paws are in my house?")
|
|
117
|
+
print(response2.text ?? "")
|
|
118
|
+
} catch {
|
|
119
|
+
print("Error in chat: \(error)")
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Function Calling (Tools)
|
|
125
|
+
|
|
126
|
+
Define functions that the model can request to execute to interact with external
|
|
127
|
+
systems. *Note: Advanced workflows like function calling generally require a
|
|
128
|
+
multi-turn Chat Session to handle the back-and-forth execution.*
|
|
129
|
+
|
|
130
|
+
```swift
|
|
131
|
+
let getStockPriceTool = Tool(functionDeclarations: [
|
|
132
|
+
FunctionDeclaration(
|
|
133
|
+
name: "getStockPrice",
|
|
134
|
+
description: "Get the current stock price for a given symbol.",
|
|
135
|
+
parameters: [
|
|
136
|
+
"symbol": Schema(
|
|
137
|
+
type: .string,
|
|
138
|
+
description: "The stock symbol, e.g. AAPL"
|
|
139
|
+
)
|
|
140
|
+
]
|
|
141
|
+
)
|
|
142
|
+
])
|
|
143
|
+
|
|
144
|
+
let model = FirebaseAI.firebaseAI().generativeModel(
|
|
145
|
+
modelName: "<latest_supported_model>", // [AGENT] Replace with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
146
|
+
tools: [getStockPriceTool]
|
|
147
|
+
)
|
|
148
|
+
|
|
149
|
+
// In your task (using a chat session):
|
|
150
|
+
let chat = model.startChat()
|
|
151
|
+
let response = try await chat.sendMessage("What is the stock price of Apple?")
|
|
152
|
+
if let functionCall = response.functionCalls.first {
|
|
153
|
+
// Handle the function call (e.g. call a local API and send the result back)
|
|
154
|
+
print("Model requested function: \(functionCall.name) with args: \(functionCall.args)")
|
|
155
|
+
}
|
|
156
|
+
```
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
# Firebase AI Logic on Android (Kotlin)
|
|
2
|
+
|
|
3
|
+
First, ensure you have initialized the Firebase App (see `firebase-basics`
|
|
4
|
+
skill). Then, initialize the AI Logic service as below
|
|
5
|
+
|
|
6
|
+
### 0. Enable Firebase AI Logic via CLI
|
|
7
|
+
|
|
8
|
+
Before adding dependencies in your app, make sure you enable the AI Logic
|
|
9
|
+
service in your Firebase Project using the Firebase CLI:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx -y firebase-tools@latest init
|
|
13
|
+
# When prompted, select 'AI logic' to enable the Gemini API in your project.
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
______________________________________________________________________
|
|
17
|
+
|
|
18
|
+
### 1. Add Dependencies
|
|
19
|
+
|
|
20
|
+
In your module-level `build.gradle.kts` (usually `app/build.gradle.kts`), add
|
|
21
|
+
the dependency for Firebase AI:
|
|
22
|
+
|
|
23
|
+
```kotlin
|
|
24
|
+
dependencies {
|
|
25
|
+
// [AGENT] Fetch the latest available BoM version from https://firebase.google.com/support/release-notes/android before adding this
|
|
26
|
+
implementation(platform("com.google.firebase:firebase-bom:<latest_bom_version>"))
|
|
27
|
+
|
|
28
|
+
// Add the dependency for the Firebase AI library
|
|
29
|
+
implementation("com.google.firebase:firebase-ai")
|
|
30
|
+
}
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
______________________________________________________________________
|
|
34
|
+
|
|
35
|
+
### 2. Initialize and Generate Content
|
|
36
|
+
|
|
37
|
+
In your Activity or Fragment, initialize the `FirebaseAI` service and generate
|
|
38
|
+
content using a Gemini model:
|
|
39
|
+
|
|
40
|
+
```kotlin
|
|
41
|
+
import com.google.firebase.ai.FirebaseAI
|
|
42
|
+
import com.google.firebase.ai.ktx.ai
|
|
43
|
+
import com.google.firebase.ktx.Firebase
|
|
44
|
+
|
|
45
|
+
class MainActivity : AppCompatActivity() {
|
|
46
|
+
|
|
47
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
48
|
+
super.onCreate(savedInstanceState)
|
|
49
|
+
setContentView(R.layout.activity_main)
|
|
50
|
+
|
|
51
|
+
// Initialize Firebase AI
|
|
52
|
+
val ai = Firebase.ai
|
|
53
|
+
|
|
54
|
+
// [AGENT] Replace "<latest_supported_model>" with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
55
|
+
val model = ai.generativeModel("<latest_supported_model>")
|
|
56
|
+
|
|
57
|
+
// Generate content
|
|
58
|
+
lifecycleScope.launch {
|
|
59
|
+
try {
|
|
60
|
+
val response = model.generateContent("Write a story about a magic backpack.")
|
|
61
|
+
Log.d(TAG, "Response: ${response.text}")
|
|
62
|
+
} catch (e: Exception) {
|
|
63
|
+
Log.e(TAG, "Error generating content", e)
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
#### Jetpack Compose (Modern)
|
|
71
|
+
|
|
72
|
+
Initialize inside a `ComponentActivity` and use `setContent`:
|
|
73
|
+
|
|
74
|
+
```kotlin
|
|
75
|
+
import android.os.Bundle
|
|
76
|
+
import androidx.activity.ComponentActivity
|
|
77
|
+
import androidx.activity.compose.setContent
|
|
78
|
+
import androidx.compose.material3.MaterialTheme
|
|
79
|
+
import androidx.compose.material3.Text
|
|
80
|
+
import androidx.lifecycle.lifecycleScope
|
|
81
|
+
import com.google.firebase.Firebase
|
|
82
|
+
import com.google.firebase.ai.ai
|
|
83
|
+
import kotlinx.coroutines.launch
|
|
84
|
+
|
|
85
|
+
class MainActivity : ComponentActivity() {
|
|
86
|
+
override fun onCreate(savedInstanceState: Bundle?) {
|
|
87
|
+
super.onCreate(savedInstanceState)
|
|
88
|
+
val ai = Firebase.ai
|
|
89
|
+
// [AGENT] Replace with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
90
|
+
val model = ai.generativeModel("<latest_supported_model>")
|
|
91
|
+
|
|
92
|
+
lifecycleScope.launch {
|
|
93
|
+
val response = model.generateContent("Hello Gemini!")
|
|
94
|
+
setContent {
|
|
95
|
+
MaterialTheme {
|
|
96
|
+
Text("AI Response: ${response.text}")
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
______________________________________________________________________
|
|
105
|
+
|
|
106
|
+
### 3. Multimodal Input (Text and Images)
|
|
107
|
+
|
|
108
|
+
Pass bitmap data along with text prompts:
|
|
109
|
+
|
|
110
|
+
```kotlin
|
|
111
|
+
val image1: Bitmap = ... // Load your bitmap
|
|
112
|
+
val image2: Bitmap = ...
|
|
113
|
+
|
|
114
|
+
val response = model.generateContent(
|
|
115
|
+
content("Analyze these images for me") {
|
|
116
|
+
image(image1)
|
|
117
|
+
image(image2)
|
|
118
|
+
text("Compare these two items.")
|
|
119
|
+
}
|
|
120
|
+
)
|
|
121
|
+
Log.d(TAG, response.text)
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
______________________________________________________________________
|
|
125
|
+
|
|
126
|
+
### 4. Chat Session (Multi-turn)
|
|
127
|
+
|
|
128
|
+
Maintain chat history automatically:
|
|
129
|
+
|
|
130
|
+
```kotlin
|
|
131
|
+
val chat = model.startChat(
|
|
132
|
+
history = listOf(
|
|
133
|
+
content("user") { text("Hello, I am a software engineer.") },
|
|
134
|
+
content("model") { text("Hello! How can I help you today?") }
|
|
135
|
+
)
|
|
136
|
+
)
|
|
137
|
+
|
|
138
|
+
lifecycleScope.launch {
|
|
139
|
+
val response = chat.sendMessage("What should I learn next?")
|
|
140
|
+
Log.d(TAG, response.text)
|
|
141
|
+
}
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
______________________________________________________________________
|
|
145
|
+
|
|
146
|
+
### 5. Streaming Responses
|
|
147
|
+
|
|
148
|
+
For faster display, stream the response:
|
|
149
|
+
|
|
150
|
+
```kotlin
|
|
151
|
+
lifecycleScope.launch {
|
|
152
|
+
model.generateContentStream("Tell me a long story.")
|
|
153
|
+
.collect { chunk ->
|
|
154
|
+
print(chunk.text) // Update UI incrementally
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
# Firebase AI Logic Basics
|
|
2
|
+
|
|
3
|
+
## Initialization Pattern
|
|
4
|
+
|
|
5
|
+
You must initialize the ai-logic service after the main Firebase App.
|
|
6
|
+
|
|
7
|
+
```JavaScript
|
|
8
|
+
import { initializeApp } from "firebase/app";
|
|
9
|
+
import { getAI, getGenerativeModel, GoogleAIBackend } from "firebase/ai";
|
|
10
|
+
|
|
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 firebase config
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
const app = initializeApp(firebaseConfig);
|
|
20
|
+
|
|
21
|
+
// Initialize the AI Logic service (defaults to Gemini Developer API)
|
|
22
|
+
// To set the AI provider, set the backend as the second parameter
|
|
23
|
+
const ai = getAI(app, { backend: new GoogleAIBackend() });
|
|
24
|
+
|
|
25
|
+
const generationConfig = {
|
|
26
|
+
candidate_count: 1,
|
|
27
|
+
maxOutputTokens: 2048,
|
|
28
|
+
stopSequences: [],
|
|
29
|
+
temperature: 0.7, // Balanced: creative but focused
|
|
30
|
+
topP: 0.95, // Standard: allows a wide range of probable tokens
|
|
31
|
+
topK: 40, // Standard: considers the top 40 tokens
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// Specify the config as part of creating the `GenerativeModel` instance
|
|
35
|
+
// [AGENT] Replace "<latest_supported_model>" with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
36
|
+
const model = getGenerativeModel(ai, { model: "<latest_supported_model>", generationConfig });
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
## Core Capabilities
|
|
40
|
+
|
|
41
|
+
Text-Only Generation
|
|
42
|
+
|
|
43
|
+
```JavaScript
|
|
44
|
+
async function generateText(prompt) {
|
|
45
|
+
const result = await model.generateContent(prompt);
|
|
46
|
+
const response = await result.response;
|
|
47
|
+
return response.text();
|
|
48
|
+
}
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Multimodal (Text + Images/Audio/Video/PDF input)
|
|
52
|
+
|
|
53
|
+
Firebase AI Logic accepts Base64 encoded data or specific file references.
|
|
54
|
+
|
|
55
|
+
```JavaScript
|
|
56
|
+
// Helper to convert file to base64 generic object
|
|
57
|
+
async function fileToGenerativePart(file) {
|
|
58
|
+
const base64EncodedDataPromise = new Promise((resolve) => {
|
|
59
|
+
const reader = new FileReader();
|
|
60
|
+
reader.onloadend = () => resolve(reader.result.split(',')[1]);
|
|
61
|
+
reader.readAsDataURL(file);
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
return {
|
|
65
|
+
inlineData: {
|
|
66
|
+
data: await base64EncodedDataPromise,
|
|
67
|
+
mimeType: file.type,
|
|
68
|
+
},
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
async function analyzeImage(prompt, imageFile) {
|
|
73
|
+
const imagePart = await fileToGenerativePart(imageFile);
|
|
74
|
+
const result = await model.generateContent([prompt, imagePart]);
|
|
75
|
+
return result.response.text();
|
|
76
|
+
}
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
## Chat Session (Multi-turn)
|
|
80
|
+
|
|
81
|
+
Maintain history automatically using startChat.
|
|
82
|
+
|
|
83
|
+
```JavaScript
|
|
84
|
+
const chat = model.startChat({
|
|
85
|
+
history: [
|
|
86
|
+
{
|
|
87
|
+
role: "user",
|
|
88
|
+
parts: [{ text: "Hello, I am a developer." }],
|
|
89
|
+
},
|
|
90
|
+
{
|
|
91
|
+
role: "model",
|
|
92
|
+
parts: [{ text: "Great to meet you. How can I help with code?" }],
|
|
93
|
+
},
|
|
94
|
+
],
|
|
95
|
+
});
|
|
96
|
+
|
|
97
|
+
async function sendMessage(msg) {
|
|
98
|
+
const result = await chat.sendMessage(msg);
|
|
99
|
+
return result.response.text();
|
|
100
|
+
}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Streaming Responses
|
|
104
|
+
|
|
105
|
+
For real-time UI updates (like a typing effect).
|
|
106
|
+
|
|
107
|
+
```JavaScript
|
|
108
|
+
async function streamResponse(prompt) {
|
|
109
|
+
const result = await model.generateContentStream(prompt);
|
|
110
|
+
for await (const chunk of result.stream) {
|
|
111
|
+
const chunkText = chunk.text();
|
|
112
|
+
console.log("Stream chunk:", chunkText);
|
|
113
|
+
// Update UI here
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
Generate Images with Nano Banana
|
|
119
|
+
|
|
120
|
+
```Javascript
|
|
121
|
+
import { initializeApp } from "firebase/app";
|
|
122
|
+
import { getAI, getGenerativeModel, GoogleAIBackend, ResponseModality } from "firebase/ai";
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
// Initialize FirebaseApp
|
|
126
|
+
const firebaseApp = initializeApp(firebaseConfig);
|
|
127
|
+
|
|
128
|
+
// Initialize the Gemini Developer API backend service
|
|
129
|
+
const ai = getAI(firebaseApp, { backend: new GoogleAIBackend() });
|
|
130
|
+
|
|
131
|
+
// Create a `GenerativeModel` instance with a model that supports your use case
|
|
132
|
+
const model = getGenerativeModel(ai, {
|
|
133
|
+
model: "<latest_supported_image_model>", // [AGENT] Replace with the latest image model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
134
|
+
// Configure the model to respond with text and images (required)
|
|
135
|
+
generationConfig: {
|
|
136
|
+
responseModalities: [ResponseModality.TEXT, ResponseModality.IMAGE],
|
|
137
|
+
},
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Provide a text prompt instructing the model to generate an image
|
|
141
|
+
const prompt = 'Generate an image of the Eiffel Tower with fireworks in the background.';
|
|
142
|
+
|
|
143
|
+
// To generate an image, call `generateContent` with the text input
|
|
144
|
+
const result = model.generateContent(prompt);
|
|
145
|
+
|
|
146
|
+
// Handle the generated image
|
|
147
|
+
try {
|
|
148
|
+
const inlineDataParts = result.response.inlineDataParts();
|
|
149
|
+
if (inlineDataParts?.[0]) {
|
|
150
|
+
const image = inlineDataParts[0].inlineData;
|
|
151
|
+
console.log(image.mimeType, image.data);
|
|
152
|
+
}
|
|
153
|
+
} catch (err) {
|
|
154
|
+
console.error('Prompt or candidate was blocked:', err);
|
|
155
|
+
}
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
## Advanced Features
|
|
159
|
+
|
|
160
|
+
Structured Output (JSON) Enforce a specific JSON schema for the response.
|
|
161
|
+
|
|
162
|
+
```JavaScript
|
|
163
|
+
import { getGenerativeModel, Schema } from "firebase/ai";
|
|
164
|
+
const jsonModel = getGenerativeModel(ai, {
|
|
165
|
+
model: "<latest_supported_model>", // [AGENT] Replace with the latest model from https://firebase.google.com/docs/ai-logic/models.md.txt
|
|
166
|
+
generationConfig: {
|
|
167
|
+
responseMimeType: "application/json",
|
|
168
|
+
// Optional: Define a schema
|
|
169
|
+
schema = Schema.object({ ... });
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
async function getJsonData(prompt) {
|
|
174
|
+
const result = await jsonModel.generateContent(prompt);
|
|
175
|
+
return JSON.parse(result.response.text());
|
|
176
|
+
}
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
On-Device AI (Hybrid) Automatically switch between local Gemini Nano and cloud
|
|
180
|
+
models based on device capability.
|
|
181
|
+
|
|
182
|
+
```JavaScript
|
|
183
|
+
import {getGenerativeModel, InferenceMode } from "firebase/ai";
|
|
184
|
+
|
|
185
|
+
const hybridModel = getGenerativeModel(ai, { mode: InferenceMode.PREFER_ON_DEVICE });
|
|
186
|
+
```
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: firebase-app-hosting-basics
|
|
3
|
+
description: Deploy and manage web apps with Firebase App Hosting. Use this skill when deploying Next.js/Angular apps with backends.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# App Hosting Basics
|
|
7
|
+
|
|
8
|
+
## Description
|
|
9
|
+
|
|
10
|
+
This skill enables the agent to deploy and manage modern, full-stack web
|
|
11
|
+
applications (Next.js, Angular, etc.) using Firebase App Hosting.
|
|
12
|
+
|
|
13
|
+
**Important**: In order to use App Hosting, your Firebase project must be on the
|
|
14
|
+
Blaze pricing plan. Direct the user to
|
|
15
|
+
https://console.firebase.google.com/project/_/overview?purchaseBillingPlan=metered
|
|
16
|
+
to upgrade their plan.
|
|
17
|
+
|
|
18
|
+
## Hosting vs App Hosting
|
|
19
|
+
|
|
20
|
+
**Choose Firebase Hosting if:**
|
|
21
|
+
|
|
22
|
+
- You are deploying a static site (HTML/CSS/JS).
|
|
23
|
+
- You are deploying a simple SPA (React, Vue, etc. without SSR).
|
|
24
|
+
- You want full control over the build and deploy process via CLI.
|
|
25
|
+
|
|
26
|
+
**Choose Firebase App Hosting if:**
|
|
27
|
+
|
|
28
|
+
- You are using a supported full-stack framework like Next.js or Angular.
|
|
29
|
+
- You need Server-Side Rendering (SSR) or ISR.
|
|
30
|
+
- You want an automated "git push to deploy" workflow with zero configuration.
|
|
31
|
+
|
|
32
|
+
## Deploying to App Hosting
|
|
33
|
+
|
|
34
|
+
### Deploy from Source
|
|
35
|
+
|
|
36
|
+
This is the recommended flow for most users.
|
|
37
|
+
|
|
38
|
+
1. Configure `firebase.json` with an `apphosting` block.
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"apphosting": {
|
|
42
|
+
"backendId": "my-app-id",
|
|
43
|
+
"rootDir": "/",
|
|
44
|
+
"ignore": [
|
|
45
|
+
"node_modules",
|
|
46
|
+
".git",
|
|
47
|
+
"firebase-debug.log",
|
|
48
|
+
"firebase-debug.*.log",
|
|
49
|
+
"functions"
|
|
50
|
+
]
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
1. Create or edit `apphosting.yaml`- see
|
|
55
|
+
[Configuration](references/configuration.md) for more information on how to
|
|
56
|
+
do so.
|
|
57
|
+
1. If the app needs safe access to sensitive keys, use
|
|
58
|
+
`npx -y firebase-tools@latest apphosting:secrets` commands to set and grant
|
|
59
|
+
access to secrets.
|
|
60
|
+
1. Run `npx -y firebase-tools@latest deploy` when you are ready to deploy.
|
|
61
|
+
|
|
62
|
+
### Automated deployment via GitHub (CI/CD)
|
|
63
|
+
|
|
64
|
+
Alternatively, set up a backend connected to a GitHub repository for automated
|
|
65
|
+
deployments "git push" deployments. This is only recommended for more advanced
|
|
66
|
+
users, and is not required to use App Hosting. See
|
|
67
|
+
[CLI Commands](references/cli_commands.md) for more information on how to set
|
|
68
|
+
this up using CLI commands.
|
|
69
|
+
|
|
70
|
+
## Emulation
|
|
71
|
+
|
|
72
|
+
See [Emulation](references/emulation.md) for more information on how to test
|
|
73
|
+
your app locally using the Firebase Local Emulator Suite.
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
# App Hosting CLI Commands
|
|
2
|
+
|
|
3
|
+
The Firebase CLI provides a comprehensive suite of commands to manage App
|
|
4
|
+
Hosting resources. These commands are often faster and more scriptable than
|
|
5
|
+
using the Firebase Console.
|
|
6
|
+
|
|
7
|
+
## Initialization
|
|
8
|
+
|
|
9
|
+
### `npx -y firebase-tools@latest init apphosting`
|
|
10
|
+
|
|
11
|
+
- **Purpose**: Interactive command that sets up App Hosting in your local
|
|
12
|
+
project. Use this command only if you are able to handle interactive CLI
|
|
13
|
+
inputs well. Alternatively, you can manually edit `firebase.json` and
|
|
14
|
+
`apphosting.yml`.
|
|
15
|
+
|
|
16
|
+
- **Effect**:
|
|
17
|
+
|
|
18
|
+
- Detects your web framework.
|
|
19
|
+
- Creates/updates `apphosting.yaml`.
|
|
20
|
+
- Can optionally create a backend if one doesn't exist.
|
|
21
|
+
|
|
22
|
+
## Backend Management
|
|
23
|
+
|
|
24
|
+
### `npx -y firebase-tools@latest apphosting:backends:list`
|
|
25
|
+
|
|
26
|
+
- **Purpose**: Lists all backends in the current project.
|
|
27
|
+
|
|
28
|
+
### `npx -y firebase-tools@latest apphosting:backends:get <backend-id>`
|
|
29
|
+
|
|
30
|
+
- **Purpose**: Shows details for a specific backend.
|
|
31
|
+
|
|
32
|
+
### `npx -y firebase-tools@latest apphosting:backends:delete <backend-id>`
|
|
33
|
+
|
|
34
|
+
- **Purpose**: Deletes a backend and its associated resources.
|
|
35
|
+
|
|
36
|
+
### `npx -y firebase-tools@latest apphosting:rollouts:list <backend-id>`
|
|
37
|
+
|
|
38
|
+
- **Purpose**: Lists the history of rollouts for a backend.
|
|
39
|
+
|
|
40
|
+
## Secrets Management
|
|
41
|
+
|
|
42
|
+
App Hosting uses Cloud Secret Manager to securely handle sensitive environment
|
|
43
|
+
variables (like API keys).
|
|
44
|
+
|
|
45
|
+
### `npx -y firebase-tools@latest apphosting:secrets:set <secret-name>`
|
|
46
|
+
|
|
47
|
+
- **Purpose**: Creates or updates a secret in Cloud Secret Manager and makes it
|
|
48
|
+
available to App Hosting.
|
|
49
|
+
- **Behavior**: Prompts for the secret value (hidden input).
|
|
50
|
+
|
|
51
|
+
### `npx -y firebase-tools@latest apphosting:secrets:grantaccess <secret-name>`
|
|
52
|
+
|
|
53
|
+
- **Purpose**: Grants the App Hosting service account permission to access the
|
|
54
|
+
secret.
|
|
55
|
+
- **Note**: Often handled automatically by `secrets:set`, but useful for
|
|
56
|
+
debugging permission issues or granting access to existing secrets.
|
|
57
|
+
|
|
58
|
+
## Automated deployment via GitHub (CI/CD)
|
|
59
|
+
|
|
60
|
+
**IMPORTANT** Only use these commands if you are setting up automated
|
|
61
|
+
deployments via GitHub. If you are managing deployments using
|
|
62
|
+
`npx -y firebase-tools@latest deploy`, DO NOT use these commands.
|
|
63
|
+
|
|
64
|
+
### `npx -y firebase-tools@latest apphosting:rollouts:create <backend-id>`
|
|
65
|
+
|
|
66
|
+
- **Purpose**: Manually triggers a new rollout (deployment).
|
|
67
|
+
- **Options**:
|
|
68
|
+
- `--git-branch <branch>`: Deploy the latest commit from a specific branch.
|
|
69
|
+
- `--git-commit <commit-hash>`: Deploy a specific commit.
|
|
70
|
+
- **Use Case**: Useful for redeploying without code changes, or rolling back to
|
|
71
|
+
a specific commit.
|
|
72
|
+
|
|
73
|
+
### `npx -y firebase-tools@latest apphosting:backends:create`
|
|
74
|
+
|
|
75
|
+
- **Purpose**: Creates a new App Hosting backend. Use this when setting up
|
|
76
|
+
automated deployments via GitHub.
|
|
77
|
+
- **Options**:
|
|
78
|
+
- `--app <webAppId>`: The ID of an existing Firebase web app to associate with
|
|
79
|
+
the backend.
|
|
80
|
+
- `--backend <backendId>`: The ID of the new backend.
|
|
81
|
+
- `--primary-region <location>`: The primary region for the backend.
|
|
82
|
+
- `--root-dir <rootDir>`: The root directory for the backend. If omitted,
|
|
83
|
+
defaults to the root directory of the project.
|
|
84
|
+
- `--service-account <service-account>`: The service account used to run the
|
|
85
|
+
server. If omitted, defaults to the default service account.
|