vybekiit 0.7.29 → 0.7.33

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.
Files changed (262) hide show
  1. package/dist/bin.js +3407 -2769
  2. package/dist/global-guidance/language.md +7 -102
  3. package/dist/global-skills/add-ai/SKILL.md +7 -8
  4. package/dist/global-skills/add-analytics/SKILL.md +4 -7
  5. package/dist/global-skills/add-app-clip/SKILL.md +1 -0
  6. package/dist/global-skills/add-blog/SKILL.md +4 -7
  7. package/dist/global-skills/add-files/SKILL.md +4 -7
  8. package/dist/global-skills/add-images/SKILL.md +4 -7
  9. package/dist/global-skills/add-language/SKILL.md +5 -8
  10. package/dist/global-skills/add-notifications/SKILL.md +4 -7
  11. package/dist/global-skills/add-realtime/SKILL.md +4 -7
  12. package/dist/global-skills/add-search/SKILL.md +4 -7
  13. package/dist/global-skills/add-signin/SKILL.md +4 -8
  14. package/dist/global-skills/add-teams/SKILL.md +4 -7
  15. package/dist/global-skills/aws-cdk/SKILL.md +1 -0
  16. package/dist/global-skills/aws-cloudformation/SKILL.md +1 -0
  17. package/dist/global-skills/aws-serverless/SKILL.md +169 -32
  18. package/dist/global-skills/aws-serverless/references/api-gateway.md +17 -0
  19. package/dist/global-skills/aws-serverless/references/architecture.md +9 -13
  20. package/dist/global-skills/aws-serverless/references/compute-decision-edge-cases.md +77 -0
  21. package/dist/global-skills/aws-serverless/references/lambda.md +3 -3
  22. package/dist/global-skills/aws-serverless/references/orchestration.md +46 -20
  23. package/dist/global-skills/aws-serverless/references/production.md +1 -1
  24. package/dist/global-skills/better-auth-best-practices/SKILL.md +1 -0
  25. package/dist/global-skills/better-auth-security-best-practices/SKILL.md +1 -0
  26. package/dist/global-skills/building-native-ui/SKILL.md +1 -0
  27. package/dist/global-skills/buy-domain/SKILL.md +4 -7
  28. package/dist/global-skills/check-safety/SKILL.md +5 -8
  29. package/dist/global-skills/claimable-postgres/SKILL.md +1 -0
  30. package/dist/global-skills/configure-capabilities/SKILL.md +1 -1
  31. package/dist/global-skills/connect-account/SKILL.md +1 -1
  32. package/dist/global-skills/create-auth-skill/SKILL.md +1 -0
  33. package/dist/global-skills/doctor/SKILL.md +1 -1
  34. package/dist/global-skills/eas-app-stores/SKILL.md +2 -1
  35. package/dist/global-skills/eas-app-stores/agents/openai.yaml +1 -1
  36. package/dist/global-skills/eas-hosting/SKILL.md +2 -1
  37. package/dist/global-skills/eas-hosting/agents/openai.yaml +1 -1
  38. package/dist/global-skills/eas-observe/SKILL.md +2 -1
  39. package/dist/global-skills/eas-observe/agents/openai.yaml +1 -1
  40. package/dist/global-skills/eas-simulator/SKILL.md +24 -16
  41. package/dist/global-skills/eas-simulator/agents/openai.yaml +1 -1
  42. package/dist/global-skills/eas-simulator/references/controllers.md +11 -7
  43. package/dist/global-skills/eas-simulator/references/logs-and-crashes.md +101 -0
  44. package/dist/global-skills/eas-simulator/references/run-your-app.md +8 -8
  45. package/dist/global-skills/eas-simulator/references/troubleshooting.md +14 -6
  46. package/dist/global-skills/eas-update/SKILL.md +2 -1
  47. package/dist/global-skills/eas-update/agents/openai.yaml +1 -1
  48. package/dist/global-skills/eas-update-insights/SKILL.md +2 -1
  49. package/dist/global-skills/eas-update-insights/agents/openai.yaml +1 -1
  50. package/dist/global-skills/eas-workflows/SKILL.md +2 -1
  51. package/dist/global-skills/eas-workflows/agents/openai.yaml +1 -1
  52. package/dist/global-skills/email-best-practices/SKILL.md +1 -0
  53. package/dist/global-skills/email-best-practices/references/sending-reliability.md +17 -22
  54. package/dist/global-skills/expo-animation/SKILL.md +2 -1
  55. package/dist/global-skills/expo-api-routes/SKILL.md +1 -0
  56. package/dist/global-skills/expo-app-clip/SKILL.md +2 -1
  57. package/dist/global-skills/expo-brownfield/SKILL.md +2 -1
  58. package/dist/global-skills/expo-cicd-workflows/SKILL.md +1 -0
  59. package/dist/global-skills/expo-data-fetching/SKILL.md +2 -1
  60. package/dist/global-skills/expo-deployment/SKILL.md +1 -0
  61. package/dist/global-skills/expo-design-system/SKILL.md +2 -1
  62. package/dist/global-skills/expo-dev-client/SKILL.md +2 -1
  63. package/dist/global-skills/expo-dom/SKILL.md +2 -1
  64. package/dist/global-skills/expo-examples/SKILL.md +2 -1
  65. package/dist/global-skills/expo-migrate-module/SKILL.md +2 -1
  66. package/dist/global-skills/expo-module/SKILL.md +2 -1
  67. package/dist/global-skills/expo-native-ui/SKILL.md +2 -1
  68. package/dist/global-skills/expo-observe/SKILL.md +1 -0
  69. package/dist/global-skills/expo-overview/SKILL.md +2 -1
  70. package/dist/global-skills/expo-project-structure/SKILL.md +2 -1
  71. package/dist/global-skills/expo-router/SKILL.md +2 -1
  72. package/dist/global-skills/expo-skill-eval/SKILL.md +1 -0
  73. package/dist/global-skills/expo-skill-feedback/SKILL.md +1 -0
  74. package/dist/global-skills/expo-tailwind-setup/SKILL.md +1 -0
  75. package/dist/global-skills/expo-ui/SKILL.md +2 -1
  76. package/dist/global-skills/expo-upgrade/SKILL.md +2 -1
  77. package/dist/global-skills/expo-web-to-native/SKILL.md +2 -1
  78. package/dist/global-skills/extension-to-functions-codebase/SKILL.md +2 -0
  79. package/dist/global-skills/firebase-ai-logic-basics/SKILL.md +162 -76
  80. package/dist/global-skills/firebase-ai-logic-basics/references/flutter_setup.md +37 -0
  81. package/dist/global-skills/firebase-ai-logic-basics/references/ios_setup.md +97 -3
  82. package/dist/global-skills/firebase-ai-logic-basics/references/tts_generation.md +676 -0
  83. package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_android.md +88 -3
  84. package/dist/global-skills/firebase-ai-logic-basics/references/usage_patterns_web.md +91 -3
  85. package/dist/global-skills/firebase-app-hosting-basics/SKILL.md +6 -1
  86. package/dist/global-skills/firebase-auth-basics/SKILL.md +12 -6
  87. package/dist/global-skills/firebase-auth-basics/references/client_sdk_android.md +61 -23
  88. package/dist/global-skills/firebase-auth-basics/references/client_sdk_web.md +3 -3
  89. package/dist/global-skills/firebase-auth-basics/references/flutter_setup.md +22 -19
  90. package/dist/global-skills/firebase-auth-basics/references/security_rules.md +2 -2
  91. package/dist/global-skills/firebase-basics/SKILL.md +8 -2
  92. package/dist/global-skills/firebase-basics/references/android_setup.md +229 -23
  93. package/dist/global-skills/firebase-basics/references/ios_setup.md +57 -0
  94. package/dist/global-skills/firebase-basics/references/web_setup.md +52 -0
  95. package/dist/global-skills/firebase-crashlytics/SKILL.md +2 -0
  96. package/dist/global-skills/firebase-crashlytics/references/android_setup.md +99 -71
  97. package/dist/global-skills/firebase-crashlytics/references/ios_setup.md +1 -0
  98. package/dist/global-skills/firebase-data-connect/SKILL.md +2 -0
  99. package/dist/global-skills/firebase-data-connect/reference/config.md +8 -8
  100. package/dist/global-skills/firebase-data-connect/reference/realtime.md +4 -1
  101. package/dist/global-skills/firebase-data-connect/reference/sdk_android.md +84 -29
  102. package/dist/global-skills/firebase-data-connect/reference/sdk_web.md +8 -3
  103. package/dist/global-skills/firebase-data-connect/reference/security.md +13 -13
  104. package/dist/global-skills/firebase-firestore/SKILL.md +18 -7
  105. package/dist/global-skills/firebase-firestore/references/enterprise/android_sdk_usage.md +47 -21
  106. package/dist/global-skills/firebase-firestore/references/enterprise/indexes.md +2 -1
  107. package/dist/global-skills/firebase-firestore/references/standard/android_sdk_usage.md +63 -27
  108. package/dist/global-skills/firebase-firestore/references/standard/indexes.md +2 -1
  109. package/dist/global-skills/firebase-hosting-basics/SKILL.md +2 -0
  110. package/dist/global-skills/firebase-remote-config-basics/SKILL.md +3 -1
  111. package/dist/global-skills/firebase-remote-config-basics/references/android_setup.md +83 -92
  112. package/dist/global-skills/firebase-security-rules-auditor/SKILL.md +8 -6
  113. package/dist/global-skills/firestore-rules-creation/SKILL.md +23 -10
  114. package/dist/global-skills/go-live/SKILL.md +7 -7
  115. package/dist/global-skills/harden/SKILL.md +7 -10
  116. package/dist/global-skills/instrument-feature-flags/SKILL.md +1 -0
  117. package/dist/global-skills/instrument-product-analytics/SKILL.md +1 -0
  118. package/dist/global-skills/manifest.json +2 -1
  119. package/dist/global-skills/mongodb-atlas-stream-processing/SKILL.md +1 -0
  120. package/dist/global-skills/mongodb-connection/SKILL.md +1 -0
  121. package/dist/global-skills/mongodb-mcp-setup/SKILL.md +1 -0
  122. package/dist/global-skills/mongodb-natural-language-querying/SKILL.md +1 -0
  123. package/dist/global-skills/mongodb-qe-size-estimation/SKILL.md +224 -0
  124. package/dist/global-skills/mongodb-query-optimizer/SKILL.md +1 -0
  125. package/dist/global-skills/mongodb-schema-design/SKILL.md +1 -0
  126. package/dist/global-skills/mongodb-search-and-ai/SKILL.md +1 -0
  127. package/dist/global-skills/native-data-fetching/SKILL.md +1 -0
  128. package/dist/global-skills/neon/SKILL.md +34 -5
  129. package/dist/global-skills/neon-ai-gateway/SKILL.md +44 -14
  130. package/dist/global-skills/neon-auth/SKILL.md +1 -0
  131. package/dist/global-skills/neon-functions/SKILL.md +12 -0
  132. package/dist/global-skills/neon-functions/references/native-binaries.md +188 -0
  133. package/dist/global-skills/neon-object-storage/SKILL.md +1 -0
  134. package/dist/global-skills/neon-postgres/SKILL.md +2 -1
  135. package/dist/global-skills/neon-postgres/references/full-text-search.md +27 -17
  136. package/dist/global-skills/neon-postgres/references/hybrid-search.md +19 -15
  137. package/dist/global-skills/neon-postgres/references/lakebase-search-drizzle.md +99 -14
  138. package/dist/global-skills/neon-postgres/references/vector-search.md +93 -10
  139. package/dist/global-skills/neon-postgres-branches/SKILL.md +1 -0
  140. package/dist/global-skills/neon-postgres-egress-optimizer/SKILL.md +1 -0
  141. package/dist/global-skills/onboarding/SKILL.md +14 -13
  142. package/dist/global-skills/plan-my-idea/SKILL.md +1 -1
  143. package/dist/global-skills/publish-app/SKILL.md +1 -1
  144. package/dist/global-skills/publish-extension/SKILL.md +1 -1
  145. package/dist/global-skills/resend/SKILL.md +5 -15
  146. package/dist/global-skills/resend/references/domains.md +1 -1
  147. package/dist/global-skills/resend/references/installation.md +3 -3
  148. package/dist/global-skills/resend/references/sending/best-practices.md +3 -3
  149. package/dist/global-skills/resend/references/sending/single-email-examples.md +3 -3
  150. package/dist/global-skills/resend/references/webhooks.md +2 -0
  151. package/dist/global-skills/reset-password/SKILL.md +4 -6
  152. package/dist/global-skills/save-data/SKILL.md +3 -0
  153. package/dist/global-skills/sentry-sdk-setup/SKILL.md +1 -0
  154. package/dist/global-skills/sentry-workflow/SKILL.md +1 -0
  155. package/dist/global-skills/setup-email/SKILL.md +7 -8
  156. package/dist/global-skills/setup-payments/SKILL.md +10 -12
  157. package/dist/global-skills/setup-sms/SKILL.md +1 -1
  158. package/dist/global-skills/sign-in-with-email-link/SKILL.md +4 -6
  159. package/dist/global-skills/sign-in-with-google/SKILL.md +14 -13
  160. package/dist/global-skills/sign-in-with-phone/SKILL.md +5 -7
  161. package/dist/global-skills/stripe-best-practices/SKILL.md +20 -19
  162. package/dist/global-skills/stripe-best-practices/references/billing.md +2 -0
  163. package/dist/global-skills/stripe-best-practices/references/payments.md +1 -1
  164. package/dist/global-skills/stripe-best-practices/references/tax.md +27 -15
  165. package/dist/global-skills/supabase/CHANGELOG.md +19 -0
  166. package/dist/global-skills/supabase/SKILL.md +1 -0
  167. package/dist/global-skills/supabase-postgres-best-practices/SKILL.md +1 -0
  168. package/dist/global-skills/track-errors/SKILL.md +12 -13
  169. package/dist/global-skills/update-kit/SKILL.md +1 -1
  170. package/dist/global-skills/upgrading-expo/SKILL.md +1 -0
  171. package/dist/global-skills/use-dom/SKILL.md +1 -0
  172. package/dist/global-skills/use-railway/SKILL.md +9 -8
  173. package/dist/global-skills/use-railway/references/configure.md +34 -1
  174. package/dist/global-skills/use-railway/references/iac.md +3 -0
  175. package/dist/global-skills/use-railway/references/tracing.md +97 -44
  176. package/dist/global-skills/vercel-composition-patterns/SKILL.md +1 -0
  177. package/dist/global-skills/vercel-react-best-practices/SKILL.md +1 -0
  178. package/dist/global-skills/vybekiitReferences/backend/AGENTS.md +11 -3
  179. package/dist/global-skills/vybekiitReferences/backend/agent/goal-index.md +1 -1
  180. package/dist/global-skills/vybekiitReferences/backend/agent/goal-routes.json +229 -0
  181. package/dist/global-skills/vybekiitReferences/backend/agent/mcp-setup.md +11 -2
  182. package/dist/global-skills/vybekiitReferences/backend/agent/session-bootstrap.md +1 -1
  183. package/dist/global-skills/vybekiitReferences/backend/agent/tech-references.md +1 -1
  184. package/dist/global-skills/vybekiitReferences/backend/language.md +7 -102
  185. package/dist/global-skills/vybekiitReferences/backend/platform-skills/deploy-railway-vybekiit.md +2 -2
  186. package/dist/global-skills/vybekiitReferences/backend/platform-skills/extend-capabilities-vybekiit.md +1 -1
  187. package/dist/global-skills/vybekiitReferences/backend/platform-skills/mongodb-vybekiit.md +1 -1
  188. package/dist/global-skills/vybekiitReferences/extension/AGENTS.md +11 -3
  189. package/dist/global-skills/vybekiitReferences/extension/agent/goal-index.md +1 -1
  190. package/dist/global-skills/vybekiitReferences/extension/agent/goal-routes.json +239 -0
  191. package/dist/global-skills/vybekiitReferences/extension/agent/mcp-setup.md +10 -1
  192. package/dist/global-skills/vybekiitReferences/extension/agent/session-bootstrap.md +1 -1
  193. package/dist/global-skills/vybekiitReferences/extension/agent/tech-references.md +1 -1
  194. package/dist/global-skills/vybekiitReferences/extension/agent/ui-sources.md +11 -8
  195. package/dist/global-skills/vybekiitReferences/extension/language.md +7 -92
  196. package/dist/global-skills/vybekiitReferences/extension/platform-skills/browser-automation-vybekiit.md +9 -1
  197. package/dist/global-skills/vybekiitReferences/extension/platform-skills/env-secrets-vybekiit.md +1 -0
  198. package/dist/global-skills/vybekiitReferences/extension/platform-skills/extend-capabilities-vybekiit.md +1 -1
  199. package/dist/global-skills/vybekiitReferences/extension/platform-skills/observability-vybekiit.md +1 -1
  200. package/dist/global-skills/vybekiitReferences/extension/platform-skills/sentry-vybekiit.md +1 -1
  201. package/dist/global-skills/vybekiitReferences/mobile/AGENTS.md +27 -12
  202. package/dist/global-skills/vybekiitReferences/mobile/agent/goal-index.md +1 -1
  203. package/dist/global-skills/vybekiitReferences/mobile/agent/goal-routes.json +279 -0
  204. package/dist/global-skills/vybekiitReferences/mobile/agent/mcp-setup.md +10 -1
  205. package/dist/global-skills/vybekiitReferences/mobile/agent/session-bootstrap.md +1 -1
  206. package/dist/global-skills/vybekiitReferences/mobile/agent/tech-references.md +1 -1
  207. package/dist/global-skills/vybekiitReferences/mobile/agent/ui-sources.mobile.md +1 -1
  208. package/dist/global-skills/vybekiitReferences/mobile/language.md +7 -93
  209. package/dist/global-skills/vybekiitReferences/mobile/platform-skills/env-secrets-vybekiit.md +1 -0
  210. package/dist/global-skills/vybekiitReferences/mobile/platform-skills/extend-capabilities-vybekiit.md +1 -1
  211. package/dist/global-skills/vybekiitReferences/mobile/platform-skills/i18n-vybekiit.md +1 -1
  212. package/dist/global-skills/vybekiitReferences/mobile/platform-skills/observability-vybekiit.md +1 -1
  213. package/dist/global-skills/vybekiitReferences/mobile/platform-skills/sentry-vybekiit.md +1 -1
  214. package/dist/global-skills/vybekiitReferences/mobile/platform-skills/ui-port-from-web-vybekiit.md +2 -2
  215. package/dist/global-skills/vybekiitReferences/spa/AGENTS.md +11 -3
  216. package/dist/global-skills/vybekiitReferences/spa/agent/goal-index.md +1 -1
  217. package/dist/global-skills/vybekiitReferences/spa/agent/goal-routes.json +267 -0
  218. package/dist/global-skills/vybekiitReferences/spa/agent/mcp-setup.md +10 -1
  219. package/dist/global-skills/vybekiitReferences/spa/agent/session-bootstrap.md +1 -1
  220. package/dist/global-skills/vybekiitReferences/spa/agent/ui-sources.md +11 -8
  221. package/dist/global-skills/vybekiitReferences/spa/language.md +7 -11
  222. package/dist/global-skills/vybekiitReferences/web/AGENTS.md +15 -30
  223. package/dist/global-skills/vybekiitReferences/web/agent/goal-index.md +1 -1
  224. package/dist/global-skills/vybekiitReferences/web/agent/goal-routes.json +366 -0
  225. package/dist/global-skills/vybekiitReferences/web/agent/mcp-setup.md +11 -2
  226. package/dist/global-skills/vybekiitReferences/web/agent/session-bootstrap.md +1 -1
  227. package/dist/global-skills/vybekiitReferences/web/language.md +7 -102
  228. package/dist/global-skills/vybekiitReferences/web/platform-skills/ai-vybekiit.md +1 -1
  229. package/dist/global-skills/vybekiitReferences/web/platform-skills/analytics-vybekiit.md +1 -1
  230. package/dist/global-skills/vybekiitReferences/web/platform-skills/assets-vybekiit.md +1 -1
  231. package/dist/global-skills/vybekiitReferences/web/platform-skills/better-auth-vybekiit.md +1 -1
  232. package/dist/global-skills/vybekiitReferences/web/platform-skills/browser-automation-vybekiit.md +9 -1
  233. package/dist/global-skills/vybekiitReferences/web/platform-skills/cms-vybekiit.md +1 -1
  234. package/dist/global-skills/vybekiitReferences/web/platform-skills/compliance-vybekiit.md +1 -1
  235. package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-github-pages-vybekiit.md +2 -2
  236. package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-railway-vybekiit.md +2 -2
  237. package/dist/global-skills/vybekiitReferences/web/platform-skills/deploy-vercel-vybekiit.md +2 -2
  238. package/dist/global-skills/vybekiitReferences/web/platform-skills/env-secrets-vybekiit.md +1 -0
  239. package/dist/global-skills/vybekiitReferences/web/platform-skills/extend-capabilities-vybekiit.md +1 -1
  240. package/dist/global-skills/vybekiitReferences/web/platform-skills/i18n-vybekiit.md +1 -1
  241. package/dist/global-skills/vybekiitReferences/web/platform-skills/jobs-vybekiit.md +1 -1
  242. package/dist/global-skills/vybekiitReferences/web/platform-skills/kv-vybekiit.md +1 -1
  243. package/dist/global-skills/vybekiitReferences/web/platform-skills/lemon-squeezy-vybekiit.md +1 -1
  244. package/dist/global-skills/vybekiitReferences/web/platform-skills/mongodb-vybekiit.md +1 -1
  245. package/dist/global-skills/vybekiitReferences/web/platform-skills/notifications-vybekiit.md +1 -1
  246. package/dist/global-skills/vybekiitReferences/web/platform-skills/observability-vybekiit.md +1 -1
  247. package/dist/global-skills/vybekiitReferences/web/platform-skills/paypal-vybekiit.md +1 -1
  248. package/dist/global-skills/vybekiitReferences/web/platform-skills/realtime-vybekiit.md +1 -1
  249. package/dist/global-skills/vybekiitReferences/web/platform-skills/registrar-vybekiit.md +1 -1
  250. package/dist/global-skills/vybekiitReferences/web/platform-skills/search-vybekiit.md +1 -1
  251. package/dist/global-skills/vybekiitReferences/web/platform-skills/sentry-vybekiit.md +1 -1
  252. package/dist/global-skills/vybekiitReferences/web/platform-skills/seo-vybekiit.md +1 -3
  253. package/dist/global-skills/vybekiitReferences/web/platform-skills/supabase-vybekiit.md +1 -1
  254. package/dist/global-skills/vybekiitReferences/web/platform-skills/tenancy-vybekiit.md +1 -1
  255. package/dist/global-skills/web-to-native/SKILL.md +1 -0
  256. package/dist/global-skills/workers-best-practices/SKILL.md +5 -4
  257. package/dist/global-skills/workers-best-practices/references/configuration.md +1 -1
  258. package/dist/global-skills/workers-best-practices/references/platform-apis.md +5 -5
  259. package/dist/global-skills/workers-best-practices/references/runtime-patterns.md +1 -1
  260. package/dist/global-skills/wrangler/SKILL.md +28 -25
  261. package/dist/global-skills/xcode-project-setup/SKILL.md +2 -0
  262. package/package.json +10 -8
@@ -1,41 +1,247 @@
1
- # 🛠️ Firebase Android Setup Guide
1
+ # Firebase Android Setup Guide
2
2
 
3
3
  ______________________________________________________________________
4
4
 
5
- ## 📋 Prerequisites
5
+ ## Prerequisites
6
6
 
7
- ## Before running these commands, ensure you are authenticated: `npx -y firebase-tools@latest login` (or `npx -y firebase-tools@latest login --no-localhost` on remote servers)
7
+ 1. **Firebase CLI**: Make sure the Firebase CLI is available and authenticated.
8
8
 
9
- ## 0. Create an Android application
9
+ For detailed instructions about the Firebase CLI, see
10
+ `firebase_basics/references/local-env-setup`. Here are high-level
11
+ instructions for setting up the Firebase CLI.
10
12
 
11
- if you haven't already created an android application, create one.
13
+ 1. Ensure the Firebase CLI is available:
12
14
 
13
- ## 1. Create a Firebase Project
15
+ ```bash
16
+ npx -y firebase-tools@latest --version
17
+ ```
14
18
 
15
- If you haven't already created a project, create a new cloud project with a
16
- unique ID:
17
- `npx -y firebase-tools@latest projects:create <UNIQUE_PROJECT_ID> --display-name '<DISPLAY_NAME>'`
18
- *Example:*
19
- `npx -y firebase-tools@latest projects:create my-cool-app-20260330 --display-name 'MyCoolApp'`
19
+ 1. Login to the CLI:
20
+
21
+ - local:
22
+
23
+ ```bash
24
+ npx -y firebase-tools@latest login
25
+ ```
26
+
27
+ - remote servers:
28
+
29
+ ```bash
30
+ npx -y firebase-tools@latest login --no-localhost
31
+ ```
32
+
33
+ 1. **Android project**: Create or use an existing Android project in an
34
+ Android-development IDE.
35
+
36
+ ______________________________________________________________________
37
+
38
+ ## 1. Check if the Android project is connected to a Firebase Project
39
+
40
+ Check if the Android project already has a `google-services.json` file in its
41
+ **module (app-level)** root directory.
42
+
43
+ ### `google-services.json` file is present
44
+
45
+ If the Android project already has a `google-services.json` file, do NOT create
46
+ a new Firebase project or re-register the app — skip steps 2 through 4 below.
47
+ Instead, verify the existing Firebase setup within the codebase and fix anything
48
+ that is missing:
49
+
50
+ - The `google-services.json` file is in the **module (app-level)** root
51
+ directory: `app/google-services.json`
52
+
53
+ - The Google services Gradle plugin (`google-services`) is added to *both* the
54
+ project-level and module (app-level) Gradle build files. If it is missing from
55
+ either file, add it by following step 5 below.
56
+
57
+ ### `google-services.json` file is NOT present
58
+
59
+ If the Android project does NOT already have a `google-services.json` file, then
60
+ proceed with the remaining steps in this guide.
61
+
62
+ ______________________________________________________________________
63
+
64
+ ## 2. Create a new Firebase project or use an existing one
65
+
66
+ Check if there's an existing Firebase Project available for use with the Android
67
+ project:
68
+
69
+ ```bash
70
+ npx -y firebase-tools@latest projects:list
71
+ ```
72
+
73
+ - **If existing Firebase Project:** Ask the human user if they want to use the
74
+ existing project.
75
+
76
+ - **If no existing Firebase Project or human user does not want to use an
77
+ existing project:** Create a new Firebase Project.
78
+
79
+ Provide a required unique PROJECT_ID and an optional PROJECT_DISPLAY_NAME:
80
+
81
+ ```bash
82
+ npx -y firebase-tools@latest projects:create <UNIQUE_PROJECT_ID> --display-name <PROJECT_DISPLAY_NAME>
83
+ ```
84
+
85
+ *Example:*
20
86
 
21
- ### 2. Register Your Android App
87
+ ```bash
88
+ npx -y firebase-tools@latest projects:create my-cool-app-20260330 --display-name MyCoolApp
89
+ ```
90
+
91
+ ______________________________________________________________________
92
+
93
+ ## 3. Register the Android project
94
+
95
+ Register the app module (package name) of the Android project with the Firebase
96
+ project. Provide an optional APP_DISPLAY_NAME and required PACKAGE_NAME:
97
+
98
+ ```bash
99
+ npx -y firebase-tools@latest apps:create ANDROID <APP_DISPLAY_NAME> --package-name <PACKAGE_NAME> --project <PROJECT_ID>
100
+ ```
22
101
 
23
- Link your Android app module (package name) to your project. Notice that the
24
- display name is passed as a positional argument at the end:
25
- `npx -y firebase-tools@latest apps:create ANDROID '<APP_DISPLAY_NAME>' --package-name '<PACKAGE_NAME>' --project <PROJECT_ID>`
26
102
  *Example:*
27
- `npx -y firebase-tools@latest apps:create ANDROID 'MyApplication' --package-name 'com.example.myapplication' --project my-cool-app-20260330`
28
103
 
29
- ### 3. Download `google-services.json`
104
+ ```bash
105
+ npx -y firebase-tools@latest apps:create ANDROID MyApplication --package-name com.example.myapplication --project my-cool-app-20260330
106
+ ```
107
+
108
+ NOTE: A package name is often referred to as an *application ID* within an
109
+ Android project. Find an app's package name in the module (app-level) Gradle
110
+ file, usually `app/build.gradle.kts`.
111
+
112
+ ______________________________________________________________________
113
+
114
+ ## 4. Obtain and save `google-services.json`
115
+
116
+ 1. Fetch the Firebase configuration file (`google-services.json`) using the
117
+ Firebase Android APP_ID (which is printed in the output of the previous
118
+ `apps:create` command):
119
+
120
+ ```bash
121
+ npx -y firebase-tools@latest apps:sdkconfig ANDROID <APP_ID> --project <PROJECT_ID>
122
+ ```
123
+
124
+ 1. Save the configuration file within the **module (app-level)** root directory
125
+ of the Android project: `app/google-services.json`
126
+
127
+ ______________________________________________________________________
128
+
129
+ ## 5. Add the `google-services` plugin
130
+
131
+ > [!IMPORTANT] **[AGENT] RESOLVING THE PLUGIN VERSION DETERMINISTICALLY** Never
132
+ > guess or hardcode a memorized out-of-date plugin version. Before adding
133
+ > dependencies, you MUST query the latest available versions directly from the
134
+ > Google Maven Repository:
135
+ >
136
+ > ```bash
137
+ > # Find the latest Google services Gradle plugin version
138
+ > curl -s https://dl.google.com/dl/android/maven2/com/google/gms/google-services/maven-metadata.xml | grep -oE '<latest>[^<]+' | cut -d'>' -f2
139
+ > ```
140
+
141
+ These changes are made to the Android project's Gradle files.
142
+
143
+ ### Project-level `build.gradle.kts` (`<project>/build.gradle.kts`)
144
+
145
+ Add the latest version of the Google services Gradle plugin to the `plugins`
146
+ block:
147
+
148
+ ```kotlin
149
+ plugins {
150
+ // ... other plugins
151
+
152
+ // [AGENT] Fetch the latest resolved version using the Gradle command above
153
+ id("com.google.gms.google-services") version "<latest_plugin_version>" apply false
154
+ }
155
+ ```
156
+
157
+ ### Module (app-level) `build.gradle.kts` (`<project>/<app-module>/build.gradle.kts`)
158
+
159
+ Add the Google services Gradle plugin to the `plugins` block:
160
+
161
+ ```kotlin
162
+ plugins {
163
+ // ... other plugins
164
+ id("com.google.gms.google-services")
165
+ }
166
+ ```
167
+
168
+ ______________________________________________________________________
169
+
170
+ ## 6. App Check (Debug Token Persistence)
171
+
172
+ When using App Check on Android emulators or local development,
173
+ `DebugAppCheckProviderFactory.getInstance()` generates a UUID token and stores
174
+ it in `SharedPreferences`. Wiping emulator data, clearing app storage, or fresh
175
+ installs generate a new UUID in Logcat, causing debug token churn in the
176
+ Firebase Console.
177
+
178
+ > [!WARNING] **CRITICAL: Never Hardcode or Commit Debug Tokens** App Check debug
179
+ > tokens allow clients to bypass attestation and access backend resources
180
+ > without a genuine device. **Never hardcode debug token strings in
181
+ > build.gradle.kts, Java, or Kotlin files, and never commit tokens to version
182
+ > control.** If a token is compromised, revoke it immediately in the Firebase
183
+ > Console.
184
+
185
+ To persist a stable debug token across emulator resets and testing without
186
+ committing secrets:
187
+
188
+ 1. Obtain or generate a stable UUID debug token and register it in the Firebase
189
+ Console under **Security > App Check > Apps > Manage debug tokens**.
190
+
191
+ 1. Store the token in your project's gitignored `local.properties`:
192
+
193
+ ```properties
194
+ # In local.properties (ensure this file is in your .gitignore!)
195
+ APP_CHECK_DEBUG_TOKEN=<YOUR_DEBUG_TOKEN>
196
+ ```
197
+
198
+ 1. Inject the secret in `app/build.gradle.kts` for instrumentation/testing:
199
+
200
+ ```kotlin
201
+ val localProperties = java.util.Properties().apply {
202
+ val localPropertiesFile = rootProject.file("local.properties")
203
+ if (localPropertiesFile.exists()) {
204
+ load(localPropertiesFile.inputStream())
205
+ }
206
+ }
207
+ val appCheckDebugToken = localProperties.getProperty("APP_CHECK_DEBUG_TOKEN")
208
+ ?: System.getenv("APP_CHECK_DEBUG_TOKEN") ?: ""
209
+
210
+ android {
211
+ defaultConfig {
212
+ // For normal emulator runs (injects into AndroidManifest)
213
+ manifestPlaceholders["firebaseAppCheckDebugSecret"] = appCheckDebugToken
214
+
215
+ // For instrumentation tests
216
+ if (appCheckDebugToken.isNotEmpty()) {
217
+ testInstrumentationRunnerArguments["firebaseAppCheckDebugSecret"] = appCheckDebugToken
218
+ }
219
+ }
220
+ }
221
+ ```
222
+
223
+ 1. In your application or activity, install the debug provider for debug builds:
224
+
225
+ ```kotlin
226
+ if (BuildConfig.DEBUG) {
227
+ Firebase.appCheck.installAppCheckProviderFactory(
228
+ DebugAppCheckProviderFactory.getInstance()
229
+ )
230
+ }
231
+ ```
232
+
233
+ ______________________________________________________________________
30
234
 
31
- ## Fetch the configuration file using the App ID (which is printed in the output of the previous command): `npx -y firebase-tools@latest apps:sdkconfig ANDROID <APP_ID> --project <PROJECT_ID>` *Example output extraction to file:* ` # (Output must be saved as app/google-services.json)`
235
+ ## Verification plan
32
236
 
33
- ## ✅ Verification Plan
237
+ ### Manual verification
34
238
 
35
- ### Manual Verification
239
+ Validate that the Firebase Project was created and the Firebase Android App was
240
+ registered successfully:
36
241
 
37
- Validate that the project was created and registered successfully:
38
- `npx -y firebase-tools@latest projects:list`
39
- `npx -y firebase-tools@latest apps:list --project <PROJECT_ID>`
242
+ ```bash
243
+ npx -y firebase-tools@latest projects:list
244
+ npx -y firebase-tools@latest apps:list --project <PROJECT_ID>
245
+ ```
40
246
 
41
247
  ______________________________________________________________________
@@ -111,3 +111,60 @@ class AppDelegate: UIResponder, UIApplicationDelegate {
111
111
  }
112
112
  }
113
113
  ```
114
+
115
+ ## 4. App Check (Debug Token Persistence)
116
+
117
+ When using App Check in local development or the iOS Simulator, the Firebase iOS
118
+ SDK generates a new UUID debug token whenever `NSUserDefaults` is erased (such
119
+ as during a simulator reset or fresh install). This causes debug token churn and
120
+ invalidates tokens previously registered in the Firebase console.
121
+
122
+ > [!WARNING] **CRITICAL: Never Hardcode or Commit Debug Tokens** App Check debug
123
+ > tokens allow clients to bypass attestation and access backend resources
124
+ > without a genuine device. Treat them as sensitive secrets. **Never commit
125
+ > debug tokens into version control or hardcode them directly into source
126
+ > code.** If a token is compromised, revoke it immediately in the Firebase
127
+ > Console.
128
+
129
+ To persist a stable debug token across simulator resets without committing
130
+ secrets:
131
+
132
+ 1. Obtain or generate a stable UUID debug token and register it in the Firebase
133
+ Console under **Security > App Check > Apps > Manage debug tokens**.
134
+
135
+ 1. Supply `AppCheckDebugToken` via your local environment instead of hardcoding
136
+ it in code:
137
+
138
+ - **Xcode Scheme Environment Variables (Recommended):**
139
+
140
+ - Select **Product > Scheme > Edit Scheme...** (or `Cmd + <`).
141
+ - Navigate to **Run > Arguments > Environment Variables**.
142
+ - Add `AppCheckDebugToken = <YOUR_DEBUG_TOKEN>`.
143
+ - *Tip:* Keep your personal scheme unshared or ensure user scheme data
144
+ (`xcuserdata/`) is included in `.gitignore` so your personal debug token
145
+ is not committed.
146
+
147
+ - **In Code (Only with Secure / Gitignored Loading):** If setting the
148
+ environment variable in code before initializing
149
+ `AppCheckDebugProviderFactory`, load the token dynamically from a
150
+ gitignored local file or build configuration—never hardcode the raw token
151
+ string:
152
+
153
+ ```swift
154
+ #if DEBUG
155
+ // ⛔️ DO NOT hardcode literal tokens: setenv("AppCheckDebugToken", "secret-uuid", 0)
156
+ // ✅ SAFE: Load dynamically from a gitignored local file, xcconfig, or process environment
157
+ // Note: loadGitIgnoredDebugToken() is a placeholder for your custom helper (e.g., reading from a gitignored plist)
158
+ if let debugToken = loadGitIgnoredDebugToken() {
159
+ setenv("AppCheckDebugToken", debugToken, 0)
160
+ }
161
+ let providerFactory = AppCheckDebugProviderFactory()
162
+ AppCheck.setAppCheckProviderFactory(providerFactory)
163
+ #endif
164
+
165
+ FirebaseApp.configure() // Must be called AFTER setting the App Check provider factory
166
+ ```
167
+
168
+ Setting this environment variable avoids invalidating tokens registered in the
169
+ Firebase console by ensuring a consistent debug token is reused across simulator
170
+ resets and fresh app installs.
@@ -75,3 +75,55 @@ async function getUsers() {
75
75
  });
76
76
  }
77
77
  ```
78
+
79
+ ## 5. App Check (Debug Token Persistence)
80
+
81
+ When developing locally with App Check on Web, setting
82
+ `self.FIREBASE_APPCHECK_DEBUG_TOKEN = true` generates a temporary UUID token in
83
+ the browser console and stores it in browser storage (IndexedDB). Clearing site
84
+ data, using incognito/private browsing, or switching browsers causes debug token
85
+ churn and invalidates console registration.
86
+
87
+ > [!WARNING] **CRITICAL: Never Hardcode or Commit Debug Tokens** App Check debug
88
+ > tokens allow clients to bypass attestation and access backend resources
89
+ > without a genuine client. Treat them as sensitive secrets. **Never commit
90
+ > debug tokens to version control or hardcode raw token strings in client
91
+ > files.** If a token is compromised, revoke it immediately in the Firebase
92
+ > Console.
93
+
94
+ To persist a stable debug token across browser resets without leaking secrets:
95
+
96
+ 1. Obtain or generate a stable UUID debug token and register it in the Firebase
97
+ Console under **Security > App Check > Apps > Manage debug tokens**.
98
+
99
+ 1. Add the token to a local, gitignored environment file (e.g. `.env.local`):
100
+
101
+ ```bash
102
+ # In .env.local (ensure this file is in your .gitignore!)
103
+ NEXT_PUBLIC_APP_CHECK_DEBUG_TOKEN="<YOUR_DEBUG_TOKEN>"
104
+ # Or for Vite:
105
+ # VITE_APPCHECK_DEBUG_TOKEN="<YOUR_DEBUG_TOKEN>"
106
+ ```
107
+
108
+ 1. Configure your code before initializing App Check:
109
+
110
+ ```javascript
111
+ import { initializeAppCheck, ReCaptchaEnterpriseProvider } from "firebase/app-check";
112
+
113
+ if (typeof self !== "undefined") {
114
+ if (typeof process !== "undefined" && process.env.NODE_ENV === "development") {
115
+ // ✅ SAFE: Load dynamically from Next.js environment variable; fallback to true to auto-generate
116
+ self.FIREBASE_APPCHECK_DEBUG_TOKEN =
117
+ process.env.NEXT_PUBLIC_APP_CHECK_DEBUG_TOKEN || true;
118
+ } else if (typeof import.meta !== "undefined" && import.meta.env?.DEV) {
119
+ // ✅ SAFE: Load dynamically from Vite environment variable; fallback to true to auto-generate
120
+ self.FIREBASE_APPCHECK_DEBUG_TOKEN =
121
+ import.meta.env.VITE_APPCHECK_DEBUG_TOKEN || true;
122
+ }
123
+ }
124
+
125
+ const appCheck = initializeAppCheck(app, {
126
+ provider: new ReCaptchaEnterpriseProvider("/* reCAPTCHA site key */"),
127
+ isTokenAutoRefreshEnabled: true,
128
+ });
129
+ ```
@@ -3,7 +3,9 @@ name: firebase-crashlytics
3
3
  description: Comprehensive guide for Firebase Crashlytics, including provisioning and SDK usage. Use this skill when the user needs help setting up Crashlytics, adding crash reporting, or using the Crashlytics SDK in their application.
4
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
5
  metadata:
6
+ author: Google LLC
6
7
  category: CloudObservabilityAndMonitoring
8
+ disable-model-invocation: true
7
9
  ---
8
10
 
9
11
  # Crashlytics
@@ -1,80 +1,98 @@
1
- # Firebase Crashlytics 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 ANDROID <display-name> --package-name=<package-name>`
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.
1
+ # Firebase Crashlytics - Android Setup Guide (Kotlin)
2
+
3
+ This guide describes the SDK setup and basic usage patterns for Firebase
4
+ Crashlytics in an Android app using Kotlin DSL (`build.gradle.kts`) and Kotlin
5
+ code.
6
+
7
+ ## Prerequisites
8
+
9
+ IMPORTANT: Before specifically working with Firebase Crashlytics, make sure to
10
+ use the skill and reference `firebase_basics/references/android_setup` to ensure
11
+ the following is done.
12
+
13
+ - The Firebase CLI is available and authenticated.
14
+ - An Android project exists and is registered with a Firebase Project.
15
+ - The Android project has a Firebase config file (`google-services.json`) and
16
+ the Google services Gradle plugin (`google-services`).
17
+
18
+ ______________________________________________________________________
19
+
20
+ ## 1. Add dependencies to Gradle build files
21
+
22
+ > [!IMPORTANT] **[AGENT] RESOLVING THE SDK & PLUGIN VERSIONS DETERMINISTICALLY**
23
+ > Never guess or hardcode a memorized out-of-date SDK or plugin version. Before
24
+ > adding dependencies, you MUST query the latest available versions directly
25
+ > from the Google Maven Repository:
26
+ >
27
+ > ```bash
28
+ > # Find the latest Firebase Android BoM version
29
+ > curl -s https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-bom/maven-metadata.xml | grep -oE '<latest>[^<]+' | cut -d'>' -f2
30
+ >
31
+ > # Find the latest Crashlytics Gradle plugin version
32
+ > curl -s https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-crashlytics-gradle/maven-metadata.xml | grep -oE '<latest>[^<]+' | cut -d'>' -f2
33
+ >
34
+ > # Find the latest firebase-crashlytics version
35
+ > curl -s https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-crashlytics/maven-metadata.xml | grep -oE '<latest>[^<]+' | cut -d'>' -f2
36
+ >
37
+ > # Find the latest firebase-crashlytics-ndk version
38
+ > curl -s https://dl.google.com/dl/android/maven2/com/google/firebase/firebase-crashlytics-ndk/maven-metadata.xml | grep -oE '<latest>[^<]+' | cut -d'>' -f2
39
+ > ```
40
+ >
41
+ > If the dependency is already declared, fetch the exact resolved version
42
+ > currently active in the workspace's build graph:
43
+ >
44
+ > ```bash
45
+ > ./gradlew -q :app:dependencyInsight --dependency firebase-crashlytics --configuration releaseRuntimeClasspath
46
+ > ```
47
+
48
+ These changes are made to the Android project's Gradle files.
27
49
 
28
50
  ### Project-level `build.gradle.kts` (`<project>/build.gradle.kts`)
29
51
 
30
- Add the latest version of the Crashlytics Gradle plugin to the `plugins` block.
31
- Fetch the
32
- [latest version from the Google Maven repository](https://maven.google.com/web/index.html?q=firebase-crashlytics-gradle#com.google.firebase:firebase-crashlytics-gradle)
33
- before adding this.
52
+ Add the latest version of the Crashlytics Gradle plugin to the `plugins` block:
34
53
 
35
54
  ```kotlin
36
55
  plugins {
37
56
  // ... other plugins
57
+
58
+ // [AGENT] Fetch the latest resolved version using the Gradle command above
38
59
  id("com.google.firebase.crashlytics") version "<latest_plugin_version>" apply false
39
60
  }
40
61
  ```
41
62
 
42
- ### App-level `build.gradle.kts` (`<project>/<app-module>/build.gradle.kts`)
63
+ ### Module (app-level) `build.gradle.kts` (`<project>/<app-module>/build.gradle.kts`)
43
64
 
44
- 1. Add the Crashlytics plugin to the `plugins` block:
65
+ 1. Add the Crashlytics Gradle plugin to the `plugins` block:
45
66
 
46
67
  ```kotlin
47
68
  plugins {
48
69
  // ... other plugins
70
+
49
71
  id("com.google.firebase.crashlytics")
50
72
  }
51
73
  ```
52
74
 
53
- 1. Add the Firebase Crashlytics dependency to the `dependencies` block. It is
54
- recommended to use the Firebase Bill of Materials (BoM) to manage SDK
55
- versions. Fetch the
56
- [latest version from the Google Maven repository](https://maven.google.com/web/index.html?q=firebase-bom#com.google.firebase:firebase-bom)
57
- before adding this.
75
+ 1. Add the Firebase Crashlytics dependency to the `dependencies` block:
58
76
 
59
77
  ```kotlin
60
78
  dependencies {
61
79
  // ... other dependencies
62
80
 
63
- // Import the Firebase BoM
81
+ // [AGENT] Fetch the latest resolved version using the Gradle command above
64
82
  implementation(platform("com.google.firebase:firebase-bom:<latest_bom_version>"))
65
83
 
66
- // Add the dependencies for the Crashlytics and Analytics
84
+ // Add the dependency for the Firebase Crashlytics library
85
+ // When using the BoM, don't specify versions in Firebase library dependencies
67
86
  implementation("com.google.firebase:firebase-crashlytics")
68
- implementation("com.google.firebase:firebase-analytics")
69
87
  }
70
88
  ```
71
89
 
72
- ## Follow up Steps
90
+ ______________________________________________________________________
73
91
 
74
- ### Optional: Install the NDK SDK to capture native crashes
92
+ ## 2. *Optional:* Install the NDK SDK to capture native crashes
75
93
 
76
- If your app uses native code (C/C++), or includes a library with native code,
77
- you can configure Crashlytics to report native crashes.
94
+ If the Android project uses native code (C/C++), or includes a library with
95
+ native code, configure Crashlytics to report native crashes.
78
96
 
79
97
  App-level `build.gradle.kts` (`<project>/<app-module>/build.gradle.kts`)
80
98
 
@@ -83,23 +101,27 @@ App-level `build.gradle.kts` (`<project>/<app-module>/build.gradle.kts`)
83
101
  ```kotlin
84
102
  dependencies {
85
103
  // ... other dependencies
104
+
105
+ // [AGENT] Fetch the latest resolved version using the Gradle command above
106
+ implementation(platform("com.google.firebase:firebase-bom:<latest_bom_version>"))
107
+
108
+ // Add the dependency for the Firebase Crashlytics NDK library
109
+ // When using the BoM, don't specify versions in Firebase library dependencies
86
110
  implementation("com.google.firebase:firebase-crashlytics-ndk")
87
111
  }
88
112
  ```
89
113
 
90
- 1. Enable the `nativeSymbolUpload` flag in your `buildTypes` configuration. This
91
- will automatically upload symbol files for your native code, which are
114
+ 1. Enable the `nativeSymbolUpload` flag in the `buildTypes` configuration. This
115
+ will automatically upload symbol files for the native code, which are
92
116
  required to symbolicate native crash reports.
93
117
 
94
118
  ```kotlin
95
- import com.google.firebase.crashlytics.buildtools.gradle.CrashlyticsExtension
96
-
97
119
  android {
98
120
  // ... other config
99
121
  buildTypes {
100
122
  getByName("release") {
101
123
  // ...
102
- configure<CrashlyticsExtension> {
124
+ firebaseCrashlytics {
103
125
  nativeSymbolUploadEnabled = true
104
126
  }
105
127
  }
@@ -107,49 +129,55 @@ App-level `build.gradle.kts` (`<project>/<app-module>/build.gradle.kts`)
107
129
  }
108
130
  ```
109
131
 
110
- After these changes, Crashlytics will automatically report crashes in your app's
132
+ After these changes, Crashlytics will automatically report crashes in the app's
111
133
  native code.
112
134
 
113
- ### Required: Force a Test Crash
135
+ ______________________________________________________________________
136
+
137
+ ## 3. *Required:* Force a test crash
114
138
 
115
- To verify that Crashlytics is correctly installed, you need to force a test
116
- crash in the app.
139
+ To verify that Crashlytics is correctly set up in the Android project, force a
140
+ test crash in the app.
117
141
 
118
- 1. Add code to your main activity (e.g., in `onCreate`) to trigger a crash a few
142
+ 1. Add code to the main activity (e.g., in `onCreate`) to trigger a crash a few
119
143
  seconds after app startup:
120
144
 
121
145
  ```kotlin
122
146
  import android.os.Handler
123
147
  import android.os.Looper
124
148
 
125
- // ... in your Activity's onCreate method or similar startup logic
149
+ // ... in the Activity's onCreate method or similar startup logic
126
150
  Handler(Looper.getMainLooper()).postDelayed({
127
151
  throw RuntimeException("Test Crash") // Force a crash after 3 seconds
128
152
  }, 3000)
129
153
  ```
130
154
 
131
- 1. Run your app on a device or emulator. The app should crash after a short
155
+ 1. Run the app on a device or emulator. The app should crash after a short
132
156
  delay.
133
157
 
134
158
  1. Restart the app. The Crashlytics SDK will send the crash report to Firebase
135
159
  on the next app launch.
136
160
 
137
- 1. After a few minutes, the crash should be available in the Firebase console.
138
- Go to **DevOps & Engagement** > **Crashlytics** to view your dashboard and
139
- crash reports.
161
+ 1. After a few minutes, the crash should be available in Firebase.
162
+
163
+ - If the Firebase MCP server is installed, use the `get_report` tool to
164
+ verify that a crash was received.
165
+ - As a fallback, tell the human user to go to the Crashlytics dashboard in
166
+ the Firebase console to verify the new crash report. Provide the human user
167
+ with a constructed Firebase console URL using the Firebase PROJECT_ID and
168
+ the PACKAGE_NAME:
169
+ `https://console.firebase.google.com/u/0/project/PROJECT_ID/crashlytics/app/android:PACKAGE_NAME/issues`
170
+
171
+ 1. After verifying that Firebase has received the crash report -- either using
172
+ the `get_report` tool or manually viewing it in the Firebase console --
173
+ remove the code that triggers the test crash.
140
174
 
141
- - If the Firebase MCP server is installed, use the `get_report` tool to check
142
- that a crash was received.
143
- - As a fallback, visit the Crashlytics dashboard in the Firebase console to see
144
- the new crash report.
175
+ ______________________________________________________________________
145
176
 
146
- 5. After verifying that Firebase has received the crash report - either using
147
- the `get_report` tool or manually viewing it in the Firebase console - remove
148
- the code from step 1 that triggers the crash. This prevents the application
149
- from always crashing on start up after a delay.
177
+ ## Optional additional steps
150
178
 
151
- ### Optional: Add custom debugging information
179
+ ### Add custom debugging information
152
180
 
153
- Customize reports to help you better understand what's happening in your app and
154
- the circumstances around events reported to Crashlytics. See
155
- [Customize Crash Reports for Android](https://firebase.google.com/docs/crashlytics/android/customize-crash-reports.md).
181
+ Customize reports to help better understand what's happening in the app and the
182
+ circumstances around events reported to Crashlytics. See
183
+ https://firebase.google.com/docs/crashlytics/android/customize-crash-reports.md.txt.
@@ -66,6 +66,7 @@ two options to be done manually.
66
66
  **For SwiftUI Apps (in `AppDelegate.swift`):**
67
67
 
68
68
  *File: `AppDelegate.swift`*
69
+
69
70
  ```swift
70
71
  import UIKit
71
72
  import FirebaseCore
@@ -2,7 +2,9 @@
2
2
  name: firebase-data-connect
3
3
  description: Builds and deploys Firebase SQL Connect (aka Firebase Data Connect) backends with PostgreSQL securely. Use when designing schemas with tables and relations, writing authorized queries and mutations, configuring real-time data updates, or generating type-safe SDKs. Use when you need a relational database with Firebase, or when the user mentions SQL Connect or Data Connect.
4
4
  metadata:
5
+ author: Google LLC
5
6
  category: Databases
7
+ disable-model-invocation: true
6
8
  ---
7
9
 
8
10
  # Firebase SQL Connect