[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-firebase-firebase-auth-basics":3,"mdc--hx1y1b-key":35,"related-repo-firebase-firebase-auth-basics":602,"related-org-firebase-firebase-auth-basics":714},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":33,"mdContent":34},"firebase-auth-basics","set up Firebase Authentication","Guide for setting up and using Firebase Authentication. Use this skill when the user's app requires user sign-in, user management, or secure data access using auth rules.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},"firebase","Firebase (Google)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ffirebase.png",[12,16,19,22],{"name":13,"slug":14,"type":15},"Security","security","tag",{"name":17,"slug":18,"type":15},"Backend","backend",{"name":20,"slug":21,"type":15},"Auth","auth",{"name":23,"slug":8,"type":15},"Firebase",376,"https:\u002F\u002Fgithub.com\u002Ffirebase\u002Fagent-skills","2026-07-31T05:53:20.79137",null,75,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":32},[],"Agent Skills for Firebase","https:\u002F\u002Fgithub.com\u002Ffirebase\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Ffirebase-auth-basics","---\nname: firebase-auth-basics\ndescription: Guide for setting up and using Firebase Authentication. Use this skill when the user's app requires user sign-in, user management, or secure data access using auth rules.\ncompatibility: 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`.\n---\n\n## Prerequisites\n\n- **Firebase Project**: Created via\n  `npx -y firebase-tools@latest projects:create` (see `firebase-basics`).\n- **Firebase CLI**: Installed and logged in (see `firebase-basics`).\n\n## Core Concepts\n\nFirebase Authentication provides backend services, easy-to-use SDKs, and\nready-made UI libraries to authenticate users to your app.\n\n### Users\n\nA user is an entity that can sign in to your app. Each user is identified by a\nunique ID (`uid`) which is guaranteed to be unique across all providers. User\nproperties include:\n\n- `uid`: Unique identifier.\n- `email`: User's email address (if available).\n- `displayName`: User's display name (if available).\n- `photoURL`: URL to user's photo (if available).\n- `emailVerified`: Boolean indicating if the email is verified.\n\n### Identity Providers\n\nFirebase Auth supports multiple ways to sign in:\n\n- **Email\u002FPassword**: Basic email and password authentication.\n- **Federated Identity Providers**: Google, Facebook, Twitter, GitHub,\n  Microsoft, Apple, etc.\n- **Phone Number**: SMS-based authentication.\n- **Anonymous**: Temporary guest accounts that can be linked to permanent\n  accounts later.\n- **Custom Auth**: Integrate with your existing auth system.\n\nGoogle Sign In is recommended as a good and secure default provider.\n\n### Tokens\n\nWhen a user signs in, they receive an ID Token (JWT). This token is used to\nidentify the user when making requests to Firebase services (Realtime Database,\nCloud Storage, Firestore) or your own backend.\n\n- **ID Token**: Short-lived (1 hour), verifies identity.\n- **Refresh Token**: Long-lived, used to get new ID tokens.\n\n## Workflow\n\n### 1. Provisioning\n\n#### Option 1. Enabling Authentication via CLI\n\nOnly Google Sign In, anonymous auth, and email\u002Fpassword auth can be enabled via\nCLI. For other providers, use the Firebase Console.\n\nConfigure Firebase Authentication in `firebase.json` by adding an 'auth' block:\n\n```\n{\n  \"auth\": {\n  \"authorizedDomains\": [\"localhost\"],\n    \"providers\": {\n      \"anonymous\": true,\n      \"emailPassword\": true,\n      \"googleSignIn\": {\n        \"oAuthBrandDisplayName\": \"Your Brand Name\",\n        \"supportEmail\": \"support@example.com\"\n      }\n    }\n  }\n}\n```\n\n> [!NOTE] If the Google Sign-In popup opens and immediately closes with the\n> error `[firebase_auth\u002Funauthorized-domain]`, it means the domain is not\n> authorized. For local development, ensure `localhost` is included in the\n> **Authorized Domains** list in the Firebase Console or via the\n> `authorizedDomains` field in `firebase.json`. **CRITICAL**: Do NOT include the\n> protocol or port number in the Authorized Domains list (e.g., use `localhost`,\n> NOT `http:\u002F\u002Flocalhost:9090`).\n\n**CRITICAL**: After configuring `firebase.json`, you MUST deploy the auth\nconfiguration to the Firebase backend for the changes to take effect. This is\nessential for auth providers like Google Sign-In, email\u002Fpassword, etc. to\nauto-generate the necessary OAuth clients for your app platforms. Run:\n\n```bash\nnpx -y firebase-tools@latest deploy --only auth\n```\n\n#### Option 2. Enabling Authentication in Console\n\nEnable other providers in the Firebase Console.\n\n1. Go to the\n   https:\u002F\u002Fconsole.firebase.google.com\u002Fproject\u002F_\u002Fauthentication\u002Fproviders\n1. Select your project.\n1. Enable the desired Sign-in providers (e.g., Email\u002FPassword, Google).\n\n### 2. Client Setup & Usage\n\n**Web** See [references\u002Fclient_sdk_web.md](references\u002Fclient_sdk_web.md).\n\n**Flutter** See [references\u002Fflutter_setup.md](references\u002Fflutter_setup.md).\n**Android (Kotlin)** See\n[references\u002Fclient_sdk_android.md](references\u002Fclient_sdk_android.md).\n\n### 3. Security Rules\n\nSecure your data using `request.auth` in Firestore\u002FStorage rules.\n\nSee [references\u002Fsecurity_rules.md](references\u002Fsecurity_rules.md).\n",{"data":36,"body":38},{"name":4,"description":6,"compatibility":37},"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`.",{"type":39,"children":40},"root",[41,50,99,105,111,118,131,188,194,199,252,257,263,268,291,297,303,310,315,328,340,414,430,476,482,487,514,520,537,566,572,585,596],{"type":42,"tag":43,"props":44,"children":46},"element","h2",{"id":45},"prerequisites",[47],{"type":48,"value":49},"text","Prerequisites",{"type":42,"tag":51,"props":52,"children":53},"ul",{},[54,83],{"type":42,"tag":55,"props":56,"children":57},"li",{},[58,64,66,73,75,81],{"type":42,"tag":59,"props":60,"children":61},"strong",{},[62],{"type":48,"value":63},"Firebase Project",{"type":48,"value":65},": Created via\n",{"type":42,"tag":67,"props":68,"children":70},"code",{"className":69},[],[71],{"type":48,"value":72},"npx -y firebase-tools@latest projects:create",{"type":48,"value":74}," (see ",{"type":42,"tag":67,"props":76,"children":78},{"className":77},[],[79],{"type":48,"value":80},"firebase-basics",{"type":48,"value":82},").",{"type":42,"tag":55,"props":84,"children":85},{},[86,91,93,98],{"type":42,"tag":59,"props":87,"children":88},{},[89],{"type":48,"value":90},"Firebase CLI",{"type":48,"value":92},": Installed and logged in (see ",{"type":42,"tag":67,"props":94,"children":96},{"className":95},[],[97],{"type":48,"value":80},{"type":48,"value":82},{"type":42,"tag":43,"props":100,"children":102},{"id":101},"core-concepts",[103],{"type":48,"value":104},"Core Concepts",{"type":42,"tag":106,"props":107,"children":108},"p",{},[109],{"type":48,"value":110},"Firebase Authentication provides backend services, easy-to-use SDKs, and\nready-made UI libraries to authenticate users to your app.",{"type":42,"tag":112,"props":113,"children":115},"h3",{"id":114},"users",[116],{"type":48,"value":117},"Users",{"type":42,"tag":106,"props":119,"children":120},{},[121,123,129],{"type":48,"value":122},"A user is an entity that can sign in to your app. Each user is identified by a\nunique ID (",{"type":42,"tag":67,"props":124,"children":126},{"className":125},[],[127],{"type":48,"value":128},"uid",{"type":48,"value":130},") which is guaranteed to be unique across all providers. User\nproperties include:",{"type":42,"tag":51,"props":132,"children":133},{},[134,144,155,166,177],{"type":42,"tag":55,"props":135,"children":136},{},[137,142],{"type":42,"tag":67,"props":138,"children":140},{"className":139},[],[141],{"type":48,"value":128},{"type":48,"value":143},": Unique identifier.",{"type":42,"tag":55,"props":145,"children":146},{},[147,153],{"type":42,"tag":67,"props":148,"children":150},{"className":149},[],[151],{"type":48,"value":152},"email",{"type":48,"value":154},": User's email address (if available).",{"type":42,"tag":55,"props":156,"children":157},{},[158,164],{"type":42,"tag":67,"props":159,"children":161},{"className":160},[],[162],{"type":48,"value":163},"displayName",{"type":48,"value":165},": User's display name (if available).",{"type":42,"tag":55,"props":167,"children":168},{},[169,175],{"type":42,"tag":67,"props":170,"children":172},{"className":171},[],[173],{"type":48,"value":174},"photoURL",{"type":48,"value":176},": URL to user's photo (if available).",{"type":42,"tag":55,"props":178,"children":179},{},[180,186],{"type":42,"tag":67,"props":181,"children":183},{"className":182},[],[184],{"type":48,"value":185},"emailVerified",{"type":48,"value":187},": Boolean indicating if the email is verified.",{"type":42,"tag":112,"props":189,"children":191},{"id":190},"identity-providers",[192],{"type":48,"value":193},"Identity Providers",{"type":42,"tag":106,"props":195,"children":196},{},[197],{"type":48,"value":198},"Firebase Auth supports multiple ways to sign in:",{"type":42,"tag":51,"props":200,"children":201},{},[202,212,222,232,242],{"type":42,"tag":55,"props":203,"children":204},{},[205,210],{"type":42,"tag":59,"props":206,"children":207},{},[208],{"type":48,"value":209},"Email\u002FPassword",{"type":48,"value":211},": Basic email and password authentication.",{"type":42,"tag":55,"props":213,"children":214},{},[215,220],{"type":42,"tag":59,"props":216,"children":217},{},[218],{"type":48,"value":219},"Federated Identity Providers",{"type":48,"value":221},": Google, Facebook, Twitter, GitHub,\nMicrosoft, Apple, etc.",{"type":42,"tag":55,"props":223,"children":224},{},[225,230],{"type":42,"tag":59,"props":226,"children":227},{},[228],{"type":48,"value":229},"Phone Number",{"type":48,"value":231},": SMS-based authentication.",{"type":42,"tag":55,"props":233,"children":234},{},[235,240],{"type":42,"tag":59,"props":236,"children":237},{},[238],{"type":48,"value":239},"Anonymous",{"type":48,"value":241},": Temporary guest accounts that can be linked to permanent\naccounts later.",{"type":42,"tag":55,"props":243,"children":244},{},[245,250],{"type":42,"tag":59,"props":246,"children":247},{},[248],{"type":48,"value":249},"Custom Auth",{"type":48,"value":251},": Integrate with your existing auth system.",{"type":42,"tag":106,"props":253,"children":254},{},[255],{"type":48,"value":256},"Google Sign In is recommended as a good and secure default provider.",{"type":42,"tag":112,"props":258,"children":260},{"id":259},"tokens",[261],{"type":48,"value":262},"Tokens",{"type":42,"tag":106,"props":264,"children":265},{},[266],{"type":48,"value":267},"When a user signs in, they receive an ID Token (JWT). This token is used to\nidentify the user when making requests to Firebase services (Realtime Database,\nCloud Storage, Firestore) or your own backend.",{"type":42,"tag":51,"props":269,"children":270},{},[271,281],{"type":42,"tag":55,"props":272,"children":273},{},[274,279],{"type":42,"tag":59,"props":275,"children":276},{},[277],{"type":48,"value":278},"ID Token",{"type":48,"value":280},": Short-lived (1 hour), verifies identity.",{"type":42,"tag":55,"props":282,"children":283},{},[284,289],{"type":42,"tag":59,"props":285,"children":286},{},[287],{"type":48,"value":288},"Refresh Token",{"type":48,"value":290},": Long-lived, used to get new ID tokens.",{"type":42,"tag":43,"props":292,"children":294},{"id":293},"workflow",[295],{"type":48,"value":296},"Workflow",{"type":42,"tag":112,"props":298,"children":300},{"id":299},"_1-provisioning",[301],{"type":48,"value":302},"1. Provisioning",{"type":42,"tag":304,"props":305,"children":307},"h4",{"id":306},"option-1-enabling-authentication-via-cli",[308],{"type":48,"value":309},"Option 1. Enabling Authentication via CLI",{"type":42,"tag":106,"props":311,"children":312},{},[313],{"type":48,"value":314},"Only Google Sign In, anonymous auth, and email\u002Fpassword auth can be enabled via\nCLI. For other providers, use the Firebase Console.",{"type":42,"tag":106,"props":316,"children":317},{},[318,320,326],{"type":48,"value":319},"Configure Firebase Authentication in ",{"type":42,"tag":67,"props":321,"children":323},{"className":322},[],[324],{"type":48,"value":325},"firebase.json",{"type":48,"value":327}," by adding an 'auth' block:",{"type":42,"tag":329,"props":330,"children":334},"pre",{"className":331,"code":333,"language":48},[332],"language-text","{\n  \"auth\": {\n  \"authorizedDomains\": [\"localhost\"],\n    \"providers\": {\n      \"anonymous\": true,\n      \"emailPassword\": true,\n      \"googleSignIn\": {\n        \"oAuthBrandDisplayName\": \"Your Brand Name\",\n        \"supportEmail\": \"support@example.com\"\n      }\n    }\n  }\n}\n",[335],{"type":42,"tag":67,"props":336,"children":338},{"__ignoreMap":337},"",[339],{"type":48,"value":333},{"type":42,"tag":341,"props":342,"children":343},"blockquote",{},[344],{"type":42,"tag":106,"props":345,"children":346},{},[347,353,355,361,363,369,371,376,378,384,386,391,393,398,400,405,407,413],{"type":42,"tag":348,"props":349,"children":350},"span",{},[351],{"type":48,"value":352},"!NOTE",{"type":48,"value":354}," If the Google Sign-In popup opens and immediately closes with the\nerror ",{"type":42,"tag":67,"props":356,"children":358},{"className":357},[],[359],{"type":48,"value":360},"[firebase_auth\u002Funauthorized-domain]",{"type":48,"value":362},", it means the domain is not\nauthorized. For local development, ensure ",{"type":42,"tag":67,"props":364,"children":366},{"className":365},[],[367],{"type":48,"value":368},"localhost",{"type":48,"value":370}," is included in the\n",{"type":42,"tag":59,"props":372,"children":373},{},[374],{"type":48,"value":375},"Authorized Domains",{"type":48,"value":377}," list in the Firebase Console or via the\n",{"type":42,"tag":67,"props":379,"children":381},{"className":380},[],[382],{"type":48,"value":383},"authorizedDomains",{"type":48,"value":385}," field in ",{"type":42,"tag":67,"props":387,"children":389},{"className":388},[],[390],{"type":48,"value":325},{"type":48,"value":392},". ",{"type":42,"tag":59,"props":394,"children":395},{},[396],{"type":48,"value":397},"CRITICAL",{"type":48,"value":399},": Do NOT include the\nprotocol or port number in the Authorized Domains list (e.g., use ",{"type":42,"tag":67,"props":401,"children":403},{"className":402},[],[404],{"type":48,"value":368},{"type":48,"value":406},",\nNOT ",{"type":42,"tag":67,"props":408,"children":410},{"className":409},[],[411],{"type":48,"value":412},"http:\u002F\u002Flocalhost:9090",{"type":48,"value":82},{"type":42,"tag":106,"props":415,"children":416},{},[417,421,423,428],{"type":42,"tag":59,"props":418,"children":419},{},[420],{"type":48,"value":397},{"type":48,"value":422},": After configuring ",{"type":42,"tag":67,"props":424,"children":426},{"className":425},[],[427],{"type":48,"value":325},{"type":48,"value":429},", you MUST deploy the auth\nconfiguration to the Firebase backend for the changes to take effect. This is\nessential for auth providers like Google Sign-In, email\u002Fpassword, etc. to\nauto-generate the necessary OAuth clients for your app platforms. Run:",{"type":42,"tag":329,"props":431,"children":435},{"className":432,"code":433,"language":434,"meta":337,"style":337},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","npx -y firebase-tools@latest deploy --only auth\n","bash",[436],{"type":42,"tag":67,"props":437,"children":438},{"__ignoreMap":337},[439],{"type":42,"tag":348,"props":440,"children":443},{"class":441,"line":442},"line",1,[444,450,456,461,466,471],{"type":42,"tag":348,"props":445,"children":447},{"style":446},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[448],{"type":48,"value":449},"npx",{"type":42,"tag":348,"props":451,"children":453},{"style":452},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[454],{"type":48,"value":455}," -y",{"type":42,"tag":348,"props":457,"children":458},{"style":452},[459],{"type":48,"value":460}," firebase-tools@latest",{"type":42,"tag":348,"props":462,"children":463},{"style":452},[464],{"type":48,"value":465}," deploy",{"type":42,"tag":348,"props":467,"children":468},{"style":452},[469],{"type":48,"value":470}," --only",{"type":42,"tag":348,"props":472,"children":473},{"style":452},[474],{"type":48,"value":475}," auth\n",{"type":42,"tag":304,"props":477,"children":479},{"id":478},"option-2-enabling-authentication-in-console",[480],{"type":48,"value":481},"Option 2. Enabling Authentication in Console",{"type":42,"tag":106,"props":483,"children":484},{},[485],{"type":48,"value":486},"Enable other providers in the Firebase Console.",{"type":42,"tag":488,"props":489,"children":490},"ol",{},[491,504,509],{"type":42,"tag":55,"props":492,"children":493},{},[494,496],{"type":48,"value":495},"Go to the\n",{"type":42,"tag":497,"props":498,"children":502},"a",{"href":499,"rel":500},"https:\u002F\u002Fconsole.firebase.google.com\u002Fproject\u002F_\u002Fauthentication\u002Fproviders",[501],"nofollow",[503],{"type":48,"value":499},{"type":42,"tag":55,"props":505,"children":506},{},[507],{"type":48,"value":508},"Select your project.",{"type":42,"tag":55,"props":510,"children":511},{},[512],{"type":48,"value":513},"Enable the desired Sign-in providers (e.g., Email\u002FPassword, Google).",{"type":42,"tag":112,"props":515,"children":517},{"id":516},"_2-client-setup-usage",[518],{"type":48,"value":519},"2. Client Setup & Usage",{"type":42,"tag":106,"props":521,"children":522},{},[523,528,530,535],{"type":42,"tag":59,"props":524,"children":525},{},[526],{"type":48,"value":527},"Web",{"type":48,"value":529}," See ",{"type":42,"tag":497,"props":531,"children":533},{"href":532},"references\u002Fclient_sdk_web.md",[534],{"type":48,"value":532},{"type":48,"value":536},".",{"type":42,"tag":106,"props":538,"children":539},{},[540,545,546,551,553,558,560,565],{"type":42,"tag":59,"props":541,"children":542},{},[543],{"type":48,"value":544},"Flutter",{"type":48,"value":529},{"type":42,"tag":497,"props":547,"children":549},{"href":548},"references\u002Fflutter_setup.md",[550],{"type":48,"value":548},{"type":48,"value":552},".\n",{"type":42,"tag":59,"props":554,"children":555},{},[556],{"type":48,"value":557},"Android (Kotlin)",{"type":48,"value":559}," See\n",{"type":42,"tag":497,"props":561,"children":563},{"href":562},"references\u002Fclient_sdk_android.md",[564],{"type":48,"value":562},{"type":48,"value":536},{"type":42,"tag":112,"props":567,"children":569},{"id":568},"_3-security-rules",[570],{"type":48,"value":571},"3. Security Rules",{"type":42,"tag":106,"props":573,"children":574},{},[575,577,583],{"type":48,"value":576},"Secure your data using ",{"type":42,"tag":67,"props":578,"children":580},{"className":579},[],[581],{"type":48,"value":582},"request.auth",{"type":48,"value":584}," in Firestore\u002FStorage rules.",{"type":42,"tag":106,"props":586,"children":587},{},[588,590,595],{"type":48,"value":589},"See ",{"type":42,"tag":497,"props":591,"children":593},{"href":592},"references\u002Fsecurity_rules.md",[594],{"type":48,"value":592},{"type":48,"value":536},{"type":42,"tag":597,"props":598,"children":599},"style",{},[600],{"type":48,"value":601},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":603,"total":713},[604,620,635,655,662,677,697],{"slug":605,"name":605,"fn":606,"description":607,"org":608,"tags":609,"stars":24,"repoUrl":25,"updatedAt":619},"extension-to-functions-codebase","convert Firebase Extensions to Cloud Functions","Skill for converting an installed Firebase Extension (or extension source) to a standalone Cloud Functions for Firebase codebase or publishable npm package, including upgrading triggers from V1 to V2 and configuring lifecycle hooks and declarative security",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[610,613,614,617],{"name":611,"slug":612,"type":15},"Cloud Functions","cloud-functions",{"name":23,"slug":8,"type":15},{"name":615,"slug":616,"type":15},"Migration","migration",{"name":618,"slug":618,"type":15},"npm","2026-07-31T06:23:32.436718",{"slug":621,"name":621,"fn":622,"description":623,"org":624,"tags":625,"stars":24,"repoUrl":25,"updatedAt":634},"firebase-ai-logic-basics","integrate Firebase AI Logic","Official skill for integrating Firebase AI Logic (Gemini API) into web applications. Covers setup, multimodal inference, structured output, and security.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[626,627,628,631],{"name":17,"slug":18,"type":15},{"name":23,"slug":8,"type":15},{"name":629,"slug":630,"type":15},"Gemini","gemini",{"name":632,"slug":633,"type":15},"LLM","llm","2026-07-31T05:53:23.557174",{"slug":636,"name":636,"fn":637,"description":638,"org":639,"tags":640,"stars":24,"repoUrl":25,"updatedAt":654},"firebase-app-hosting-basics","deploy web apps with Firebase App Hosting","Deploys and manages full-stack web applications (Next.js, Angular) with Server-Side Rendering (SSR) using Firebase App Hosting. Use when deploying Next.js\u002FAngular apps, configuring apphosting.yaml or firebase.json apphosting blocks, managing secrets, setting up GitHub CI\u002FCD, or configuring Blaze billing requirements. Don't use for classic static web hosting, Auth, Firestore, Crashlytics, or Xcode.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[641,644,647,648,651],{"name":642,"slug":643,"type":15},"Angular","angular",{"name":645,"slug":646,"type":15},"Deployment","deployment",{"name":23,"slug":8,"type":15},{"name":649,"slug":650,"type":15},"Frontend","frontend",{"name":652,"slug":653,"type":15},"Next.js","next-js","2026-07-31T05:53:19.57287",{"slug":4,"name":4,"fn":5,"description":6,"org":656,"tags":657,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[658,659,660,661],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":80,"name":80,"fn":663,"description":664,"org":665,"tags":666,"stars":24,"repoUrl":25,"updatedAt":676},"build applications with Firebase","Provides foundational Firebase CLI setup, CLI installation, version checks (`firebase-tools@latest --version`), CLI login (including --no-localhost), project creation, project selection (`firebase use`), and app config file downloads (`google-services.json`, `GoogleService-Info.plist`). Use ONLY for CLI login, project creation\u002Fswitching, or downloading app config files. Don't use for Firebase Hosting deploy, Firestore, Auth, App Hosting, Data Connect, Crashlytics, or Remote Config.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[667,670,671,674,675],{"name":668,"slug":669,"type":15},"Authentication","authentication",{"name":17,"slug":18,"type":15},{"name":672,"slug":673,"type":15},"Database","database",{"name":645,"slug":646,"type":15},{"name":23,"slug":8,"type":15},"2026-07-31T05:53:21.570684",{"slug":678,"name":678,"fn":679,"description":680,"org":681,"tags":682,"stars":24,"repoUrl":25,"updatedAt":696},"firebase-crashlytics","set up and manage Firebase Crashlytics","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[683,686,687,690,693],{"name":684,"slug":685,"type":15},"Android","android",{"name":23,"slug":8,"type":15},{"name":688,"slug":689,"type":15},"iOS","ios",{"name":691,"slug":692,"type":15},"Mobile","mobile",{"name":694,"slug":695,"type":15},"Observability","observability","2026-05-01T05:54:14.072678",{"slug":698,"name":698,"fn":699,"description":700,"org":701,"tags":702,"stars":24,"repoUrl":25,"updatedAt":712},"firebase-data-connect","build backends with Firebase Data Connect","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.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[703,704,705,706,709],{"name":17,"slug":18,"type":15},{"name":672,"slug":673,"type":15},{"name":23,"slug":8,"type":15},{"name":707,"slug":708,"type":15},"GraphQL","graphql",{"name":710,"slug":711,"type":15},"PostgreSQL","postgresql","2026-04-06T18:12:07.681031",12,{"items":715,"total":713},[716,723,730,738,745,753,761,769,782,795,813,829],{"slug":605,"name":605,"fn":606,"description":607,"org":717,"tags":718,"stars":24,"repoUrl":25,"updatedAt":619},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[719,720,721,722],{"name":611,"slug":612,"type":15},{"name":23,"slug":8,"type":15},{"name":615,"slug":616,"type":15},{"name":618,"slug":618,"type":15},{"slug":621,"name":621,"fn":622,"description":623,"org":724,"tags":725,"stars":24,"repoUrl":25,"updatedAt":634},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[726,727,728,729],{"name":17,"slug":18,"type":15},{"name":23,"slug":8,"type":15},{"name":629,"slug":630,"type":15},{"name":632,"slug":633,"type":15},{"slug":636,"name":636,"fn":637,"description":638,"org":731,"tags":732,"stars":24,"repoUrl":25,"updatedAt":654},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[733,734,735,736,737],{"name":642,"slug":643,"type":15},{"name":645,"slug":646,"type":15},{"name":23,"slug":8,"type":15},{"name":649,"slug":650,"type":15},{"name":652,"slug":653,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":739,"tags":740,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[741,742,743,744],{"name":20,"slug":21,"type":15},{"name":17,"slug":18,"type":15},{"name":23,"slug":8,"type":15},{"name":13,"slug":14,"type":15},{"slug":80,"name":80,"fn":663,"description":664,"org":746,"tags":747,"stars":24,"repoUrl":25,"updatedAt":676},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[748,749,750,751,752],{"name":668,"slug":669,"type":15},{"name":17,"slug":18,"type":15},{"name":672,"slug":673,"type":15},{"name":645,"slug":646,"type":15},{"name":23,"slug":8,"type":15},{"slug":678,"name":678,"fn":679,"description":680,"org":754,"tags":755,"stars":24,"repoUrl":25,"updatedAt":696},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[756,757,758,759,760],{"name":684,"slug":685,"type":15},{"name":23,"slug":8,"type":15},{"name":688,"slug":689,"type":15},{"name":691,"slug":692,"type":15},{"name":694,"slug":695,"type":15},{"slug":698,"name":698,"fn":699,"description":700,"org":762,"tags":763,"stars":24,"repoUrl":25,"updatedAt":712},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[764,765,766,767,768],{"name":17,"slug":18,"type":15},{"name":672,"slug":673,"type":15},{"name":23,"slug":8,"type":15},{"name":707,"slug":708,"type":15},{"name":710,"slug":711,"type":15},{"slug":770,"name":770,"fn":771,"description":772,"org":773,"tags":774,"stars":24,"repoUrl":25,"updatedAt":781},"firebase-firestore","manage and query Cloud Firestore databases","Sets up, manages, queries, and configures Cloud Firestore databases (Standard\u002FEnterprise edition), including data modeling, security rules, indexes, and SDK integrations (Web, Python, iOS, Android, Flutter). Use when creating\u002Flisting Firestore databases, defining data models\u002Findexes, writing SDK queries, or integrating Firestore SDKs. Don't use for Firebase Hosting, Data Connect, Auth, Storage\u002FGCS, Crashlytics, Functions, or BigQuery.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[775,776,777,778],{"name":17,"slug":18,"type":15},{"name":672,"slug":673,"type":15},{"name":23,"slug":8,"type":15},{"name":779,"slug":780,"type":15},"NoSQL","nosql","2026-07-31T05:53:17.562137",{"slug":783,"name":783,"fn":784,"description":785,"org":786,"tags":787,"stars":24,"repoUrl":25,"updatedAt":794},"firebase-hosting-basics","deploy static apps with Firebase Hosting","Deploys and configures classic Firebase Hosting for static websites, single-page apps (SPAs), and microservices. Use when deploying static sites\u002FSPAs, setting up custom domains, configuring firebase.json hosting settings (redirects, rewrites, headers, multi-site), or managing preview channels. Don't use for Firebase App Hosting (Next.js\u002FSSR), Auth, Firestore queries\u002Frules, Data Connect, or Crashlytics.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[788,789,790,791],{"name":645,"slug":646,"type":15},{"name":23,"slug":8,"type":15},{"name":649,"slug":650,"type":15},{"name":792,"slug":793,"type":15},"Web Development","web-development","2026-07-31T05:53:22.565034",{"slug":796,"name":796,"fn":797,"description":798,"org":799,"tags":800,"stars":24,"repoUrl":25,"updatedAt":812},"firebase-remote-config-basics","manage Firebase Remote Config and feature flags","Manages Firebase Remote Config templates, feature flags, loading strategies, and SDKs (Android, iOS). Use when downloading\u002Fdeploying remoteconfig JSON templates, managing version history\u002Ffeature flags, setting in-app defaults, fetchAndActivate(), real-time listeners, or SDK setup. Don't use for Firebase Hosting, Auth, Firestore, Data Connect, Crashlytics, or App Hosting.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[801,804,807,808,809],{"name":802,"slug":803,"type":15},"Configuration","configuration",{"name":805,"slug":806,"type":15},"Feature Flags","feature-flags",{"name":23,"slug":8,"type":15},{"name":691,"slug":692,"type":15},{"name":810,"slug":811,"type":15},"SDK","sdk","2026-07-31T05:53:18.552749",{"slug":814,"name":814,"fn":815,"description":816,"org":817,"tags":818,"stars":24,"repoUrl":25,"updatedAt":828},"firebase-security-rules-auditor","audit Firestore security rules","Audits Firebase (Firestore, Cloud Storage) security rules for vulnerabilities, privilege escalation, role bypasses, create vs update inconsistencies, resource exhaustion, type safety, size limits, and hasOnly ownership checks. Use when auditing\u002Freviewing rules, running red-team rule assessments, or scoring against auditor checklists. Don't use for Firebase CLI (login, deploy), Auth, Crashlytics, Remote Config, or database queries.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[819,822,825,826,827],{"name":820,"slug":821,"type":15},"Audit","audit",{"name":823,"slug":824,"type":15},"Compliance","compliance",{"name":672,"slug":673,"type":15},{"name":23,"slug":8,"type":15},{"name":13,"slug":14,"type":15},"2026-07-31T05:53:16.588011",{"slug":830,"name":830,"fn":831,"description":832,"org":833,"tags":834,"stars":24,"repoUrl":25,"updatedAt":843},"xcode-project-setup","manage Xcode project dependencies and packages","Safely modifies Xcode projects (.pbxproj) to add Swift Packages and link files. Use this skill whenever an iOS project needs dependencies installed (e.g. Firebase, Alamofire).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[835,836,837,840],{"name":688,"slug":689,"type":15},{"name":691,"slug":692,"type":15},{"name":838,"slug":839,"type":15},"Swift","swift",{"name":841,"slug":842,"type":15},"Xcode","xcode","2026-05-01T05:54:12.834251"]