[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-firebase-firebase-app-hosting-basics":3,"mdc--s9tfv2-key":38,"related-org-firebase-firebase-app-hosting-basics":569,"related-repo-firebase-firebase-app-hosting-basics":753},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":11,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":33,"sourceUrl":36,"mdContent":37},"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},"firebase","Firebase (Google)","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ffirebase.png",[12,16,19,22,25],{"name":13,"slug":14,"type":15},"Angular","angular","tag",{"name":17,"slug":18,"type":15},"Next.js","next-js",{"name":20,"slug":21,"type":15},"Deployment","deployment",{"name":23,"slug":24,"type":15},"Frontend","frontend",{"name":26,"slug":8,"type":15},"Firebase",376,"https:\u002F\u002Fgithub.com\u002Ffirebase\u002Fagent-skills","2026-07-31T05:53:19.57287",null,75,[],{"repoUrl":28,"stars":27,"forks":31,"topics":34,"description":35},[],"Agent Skills for Firebase","https:\u002F\u002Fgithub.com\u002Ffirebase\u002Fagent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Ffirebase-app-hosting-basics","---\nname: firebase-app-hosting-basics\ndescription: >-\n  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.\n---\n\n# App Hosting Basics\n\n## Description\n\nThis skill enables the agent to deploy and manage modern, full-stack web\napplications (Next.js, Angular, etc.) using Firebase App Hosting.\n\n**Important**: In order to use App Hosting, your Firebase project must be on the\nBlaze pricing plan. Direct the user to\nhttps:\u002F\u002Fconsole.firebase.google.com\u002Fproject\u002F_\u002Foverview?purchaseBillingPlan=metered\nto upgrade their plan.\n\n## Hosting vs App Hosting\n\n**Choose Firebase Hosting if:**\n\n- You are deploying a static site (HTML\u002FCSS\u002FJS).\n- You are deploying a simple SPA (React, Vue, etc. without SSR).\n- You want full control over the build and deploy process via CLI.\n\n**Choose Firebase App Hosting if:**\n\n- You are using a supported full-stack framework like Next.js or Angular.\n- You need Server-Side Rendering (SSR) or ISR.\n- You want an automated \"git push to deploy\" workflow with zero configuration.\n\n## Deploying to App Hosting\n\n### Deploy from Source\n\nThis is the recommended flow for most users.\n\n1. Configure `firebase.json` with an `apphosting` block.\n   \n   ```json\n   {\n     \"apphosting\": {\n       \"backendId\": \"my-app-id\",\n       \"rootDir\": \"\u002F\",\n       \"ignore\": [\n         \"node_modules\",\n         \".git\",\n         \"firebase-debug.log\",\n         \"firebase-debug.*.log\",\n         \"functions\"\n       ]\n     }\n   }\n   ```\n1. Create or edit `apphosting.yaml`- see\n   [Configuration](references\u002Fconfiguration.md) for more information on how to\n   do so.\n1. If the app needs safe access to sensitive keys, use\n   `npx -y firebase-tools@latest apphosting:secrets` commands to set and grant\n   access to secrets.\n1. Run `npx -y firebase-tools@latest deploy` when you are ready to deploy.\n\n### Automated deployment via GitHub (CI\u002FCD)\n\nAlternatively, set up a backend connected to a GitHub repository for automated\ndeployments \"git push\" deployments. This is only recommended for more advanced\nusers, and is not required to use App Hosting. See\n[CLI Commands](references\u002Fcli_commands.md) for more information on how to set\nthis up using CLI commands.\n\n## Emulation\n\nSee [Emulation](references\u002Femulation.md) for more information on how to test\nyour app locally using the Firebase Local Emulator Suite.\n",{"data":39,"body":40},{"name":4,"description":6},{"type":41,"children":42},"root",[43,52,59,65,86,92,100,120,128,146,152,159,164,526,532,545,551,563],{"type":44,"tag":45,"props":46,"children":48},"element","h1",{"id":47},"app-hosting-basics",[49],{"type":50,"value":51},"text","App Hosting Basics",{"type":44,"tag":53,"props":54,"children":56},"h2",{"id":55},"description",[57],{"type":50,"value":58},"Description",{"type":44,"tag":60,"props":61,"children":62},"p",{},[63],{"type":50,"value":64},"This skill enables the agent to deploy and manage modern, full-stack web\napplications (Next.js, Angular, etc.) using Firebase App Hosting.",{"type":44,"tag":60,"props":66,"children":67},{},[68,74,76,84],{"type":44,"tag":69,"props":70,"children":71},"strong",{},[72],{"type":50,"value":73},"Important",{"type":50,"value":75},": In order to use App Hosting, your Firebase project must be on the\nBlaze pricing plan. Direct the user to\n",{"type":44,"tag":77,"props":78,"children":82},"a",{"href":79,"rel":80},"https:\u002F\u002Fconsole.firebase.google.com\u002Fproject\u002F_\u002Foverview?purchaseBillingPlan=metered",[81],"nofollow",[83],{"type":50,"value":79},{"type":50,"value":85},"\nto upgrade their plan.",{"type":44,"tag":53,"props":87,"children":89},{"id":88},"hosting-vs-app-hosting",[90],{"type":50,"value":91},"Hosting vs App Hosting",{"type":44,"tag":60,"props":93,"children":94},{},[95],{"type":44,"tag":69,"props":96,"children":97},{},[98],{"type":50,"value":99},"Choose Firebase Hosting if:",{"type":44,"tag":101,"props":102,"children":103},"ul",{},[104,110,115],{"type":44,"tag":105,"props":106,"children":107},"li",{},[108],{"type":50,"value":109},"You are deploying a static site (HTML\u002FCSS\u002FJS).",{"type":44,"tag":105,"props":111,"children":112},{},[113],{"type":50,"value":114},"You are deploying a simple SPA (React, Vue, etc. without SSR).",{"type":44,"tag":105,"props":116,"children":117},{},[118],{"type":50,"value":119},"You want full control over the build and deploy process via CLI.",{"type":44,"tag":60,"props":121,"children":122},{},[123],{"type":44,"tag":69,"props":124,"children":125},{},[126],{"type":50,"value":127},"Choose Firebase App Hosting if:",{"type":44,"tag":101,"props":129,"children":130},{},[131,136,141],{"type":44,"tag":105,"props":132,"children":133},{},[134],{"type":50,"value":135},"You are using a supported full-stack framework like Next.js or Angular.",{"type":44,"tag":105,"props":137,"children":138},{},[139],{"type":50,"value":140},"You need Server-Side Rendering (SSR) or ISR.",{"type":44,"tag":105,"props":142,"children":143},{},[144],{"type":50,"value":145},"You want an automated \"git push to deploy\" workflow with zero configuration.",{"type":44,"tag":53,"props":147,"children":149},{"id":148},"deploying-to-app-hosting",[150],{"type":50,"value":151},"Deploying to App Hosting",{"type":44,"tag":153,"props":154,"children":156},"h3",{"id":155},"deploy-from-source",[157],{"type":50,"value":158},"Deploy from Source",{"type":44,"tag":60,"props":160,"children":161},{},[162],{"type":50,"value":163},"This is the recommended flow for most users.",{"type":44,"tag":165,"props":166,"children":167},"ol",{},[168,479,500,513],{"type":44,"tag":105,"props":169,"children":170},{},[171,173,180,182,188,190],{"type":50,"value":172},"Configure ",{"type":44,"tag":174,"props":175,"children":177},"code",{"className":176},[],[178],{"type":50,"value":179},"firebase.json",{"type":50,"value":181}," with an ",{"type":44,"tag":174,"props":183,"children":185},{"className":184},[],[186],{"type":50,"value":187},"apphosting",{"type":50,"value":189}," block.",{"type":44,"tag":191,"props":192,"children":197},"pre",{"className":193,"code":194,"language":195,"meta":196,"style":196},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"apphosting\": {\n    \"backendId\": \"my-app-id\",\n    \"rootDir\": \"\u002F\",\n    \"ignore\": [\n      \"node_modules\",\n      \".git\",\n      \"firebase-debug.log\",\n      \"firebase-debug.*.log\",\n      \"functions\"\n    ]\n  }\n}\n","json","",[198],{"type":44,"tag":174,"props":199,"children":200},{"__ignoreMap":196},[201,213,242,285,323,349,371,392,413,434,452,461,470],{"type":44,"tag":202,"props":203,"children":206},"span",{"class":204,"line":205},"line",1,[207],{"type":44,"tag":202,"props":208,"children":210},{"style":209},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[211],{"type":50,"value":212},"{\n",{"type":44,"tag":202,"props":214,"children":216},{"class":204,"line":215},2,[217,222,227,232,237],{"type":44,"tag":202,"props":218,"children":219},{"style":209},[220],{"type":50,"value":221},"  \"",{"type":44,"tag":202,"props":223,"children":225},{"style":224},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[226],{"type":50,"value":187},{"type":44,"tag":202,"props":228,"children":229},{"style":209},[230],{"type":50,"value":231},"\"",{"type":44,"tag":202,"props":233,"children":234},{"style":209},[235],{"type":50,"value":236},":",{"type":44,"tag":202,"props":238,"children":239},{"style":209},[240],{"type":50,"value":241}," {\n",{"type":44,"tag":202,"props":243,"children":245},{"class":204,"line":244},3,[246,251,257,261,265,270,276,280],{"type":44,"tag":202,"props":247,"children":248},{"style":209},[249],{"type":50,"value":250},"    \"",{"type":44,"tag":202,"props":252,"children":254},{"style":253},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[255],{"type":50,"value":256},"backendId",{"type":44,"tag":202,"props":258,"children":259},{"style":209},[260],{"type":50,"value":231},{"type":44,"tag":202,"props":262,"children":263},{"style":209},[264],{"type":50,"value":236},{"type":44,"tag":202,"props":266,"children":267},{"style":209},[268],{"type":50,"value":269}," \"",{"type":44,"tag":202,"props":271,"children":273},{"style":272},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[274],{"type":50,"value":275},"my-app-id",{"type":44,"tag":202,"props":277,"children":278},{"style":209},[279],{"type":50,"value":231},{"type":44,"tag":202,"props":281,"children":282},{"style":209},[283],{"type":50,"value":284},",\n",{"type":44,"tag":202,"props":286,"children":288},{"class":204,"line":287},4,[289,293,298,302,306,310,315,319],{"type":44,"tag":202,"props":290,"children":291},{"style":209},[292],{"type":50,"value":250},{"type":44,"tag":202,"props":294,"children":295},{"style":253},[296],{"type":50,"value":297},"rootDir",{"type":44,"tag":202,"props":299,"children":300},{"style":209},[301],{"type":50,"value":231},{"type":44,"tag":202,"props":303,"children":304},{"style":209},[305],{"type":50,"value":236},{"type":44,"tag":202,"props":307,"children":308},{"style":209},[309],{"type":50,"value":269},{"type":44,"tag":202,"props":311,"children":312},{"style":272},[313],{"type":50,"value":314},"\u002F",{"type":44,"tag":202,"props":316,"children":317},{"style":209},[318],{"type":50,"value":231},{"type":44,"tag":202,"props":320,"children":321},{"style":209},[322],{"type":50,"value":284},{"type":44,"tag":202,"props":324,"children":326},{"class":204,"line":325},5,[327,331,336,340,344],{"type":44,"tag":202,"props":328,"children":329},{"style":209},[330],{"type":50,"value":250},{"type":44,"tag":202,"props":332,"children":333},{"style":253},[334],{"type":50,"value":335},"ignore",{"type":44,"tag":202,"props":337,"children":338},{"style":209},[339],{"type":50,"value":231},{"type":44,"tag":202,"props":341,"children":342},{"style":209},[343],{"type":50,"value":236},{"type":44,"tag":202,"props":345,"children":346},{"style":209},[347],{"type":50,"value":348}," [\n",{"type":44,"tag":202,"props":350,"children":352},{"class":204,"line":351},6,[353,358,363,367],{"type":44,"tag":202,"props":354,"children":355},{"style":209},[356],{"type":50,"value":357},"      \"",{"type":44,"tag":202,"props":359,"children":360},{"style":272},[361],{"type":50,"value":362},"node_modules",{"type":44,"tag":202,"props":364,"children":365},{"style":209},[366],{"type":50,"value":231},{"type":44,"tag":202,"props":368,"children":369},{"style":209},[370],{"type":50,"value":284},{"type":44,"tag":202,"props":372,"children":374},{"class":204,"line":373},7,[375,379,384,388],{"type":44,"tag":202,"props":376,"children":377},{"style":209},[378],{"type":50,"value":357},{"type":44,"tag":202,"props":380,"children":381},{"style":272},[382],{"type":50,"value":383},".git",{"type":44,"tag":202,"props":385,"children":386},{"style":209},[387],{"type":50,"value":231},{"type":44,"tag":202,"props":389,"children":390},{"style":209},[391],{"type":50,"value":284},{"type":44,"tag":202,"props":393,"children":395},{"class":204,"line":394},8,[396,400,405,409],{"type":44,"tag":202,"props":397,"children":398},{"style":209},[399],{"type":50,"value":357},{"type":44,"tag":202,"props":401,"children":402},{"style":272},[403],{"type":50,"value":404},"firebase-debug.log",{"type":44,"tag":202,"props":406,"children":407},{"style":209},[408],{"type":50,"value":231},{"type":44,"tag":202,"props":410,"children":411},{"style":209},[412],{"type":50,"value":284},{"type":44,"tag":202,"props":414,"children":416},{"class":204,"line":415},9,[417,421,426,430],{"type":44,"tag":202,"props":418,"children":419},{"style":209},[420],{"type":50,"value":357},{"type":44,"tag":202,"props":422,"children":423},{"style":272},[424],{"type":50,"value":425},"firebase-debug.*.log",{"type":44,"tag":202,"props":427,"children":428},{"style":209},[429],{"type":50,"value":231},{"type":44,"tag":202,"props":431,"children":432},{"style":209},[433],{"type":50,"value":284},{"type":44,"tag":202,"props":435,"children":437},{"class":204,"line":436},10,[438,442,447],{"type":44,"tag":202,"props":439,"children":440},{"style":209},[441],{"type":50,"value":357},{"type":44,"tag":202,"props":443,"children":444},{"style":272},[445],{"type":50,"value":446},"functions",{"type":44,"tag":202,"props":448,"children":449},{"style":209},[450],{"type":50,"value":451},"\"\n",{"type":44,"tag":202,"props":453,"children":455},{"class":204,"line":454},11,[456],{"type":44,"tag":202,"props":457,"children":458},{"style":209},[459],{"type":50,"value":460},"    ]\n",{"type":44,"tag":202,"props":462,"children":464},{"class":204,"line":463},12,[465],{"type":44,"tag":202,"props":466,"children":467},{"style":209},[468],{"type":50,"value":469},"  }\n",{"type":44,"tag":202,"props":471,"children":473},{"class":204,"line":472},13,[474],{"type":44,"tag":202,"props":475,"children":476},{"style":209},[477],{"type":50,"value":478},"}\n",{"type":44,"tag":105,"props":480,"children":481},{},[482,484,490,492,498],{"type":50,"value":483},"Create or edit ",{"type":44,"tag":174,"props":485,"children":487},{"className":486},[],[488],{"type":50,"value":489},"apphosting.yaml",{"type":50,"value":491},"- see\n",{"type":44,"tag":77,"props":493,"children":495},{"href":494},"references\u002Fconfiguration.md",[496],{"type":50,"value":497},"Configuration",{"type":50,"value":499}," for more information on how to\ndo so.",{"type":44,"tag":105,"props":501,"children":502},{},[503,505,511],{"type":50,"value":504},"If the app needs safe access to sensitive keys, use\n",{"type":44,"tag":174,"props":506,"children":508},{"className":507},[],[509],{"type":50,"value":510},"npx -y firebase-tools@latest apphosting:secrets",{"type":50,"value":512}," commands to set and grant\naccess to secrets.",{"type":44,"tag":105,"props":514,"children":515},{},[516,518,524],{"type":50,"value":517},"Run ",{"type":44,"tag":174,"props":519,"children":521},{"className":520},[],[522],{"type":50,"value":523},"npx -y firebase-tools@latest deploy",{"type":50,"value":525}," when you are ready to deploy.",{"type":44,"tag":153,"props":527,"children":529},{"id":528},"automated-deployment-via-github-cicd",[530],{"type":50,"value":531},"Automated deployment via GitHub (CI\u002FCD)",{"type":44,"tag":60,"props":533,"children":534},{},[535,537,543],{"type":50,"value":536},"Alternatively, set up a backend connected to a GitHub repository for automated\ndeployments \"git push\" deployments. This is only recommended for more advanced\nusers, and is not required to use App Hosting. See\n",{"type":44,"tag":77,"props":538,"children":540},{"href":539},"references\u002Fcli_commands.md",[541],{"type":50,"value":542},"CLI Commands",{"type":50,"value":544}," for more information on how to set\nthis up using CLI commands.",{"type":44,"tag":53,"props":546,"children":548},{"id":547},"emulation",[549],{"type":50,"value":550},"Emulation",{"type":44,"tag":60,"props":552,"children":553},{},[554,556,561],{"type":50,"value":555},"See ",{"type":44,"tag":77,"props":557,"children":559},{"href":558},"references\u002Femulation.md",[560],{"type":50,"value":550},{"type":50,"value":562}," for more information on how to test\nyour app locally using the Firebase Local Emulator Suite.",{"type":44,"tag":564,"props":565,"children":566},"style",{},[567],{"type":50,"value":568},"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":570,"total":463},[571,587,604,612,627,643,663,679,692,705,722,738],{"slug":572,"name":572,"fn":573,"description":574,"org":575,"tags":576,"stars":27,"repoUrl":28,"updatedAt":586},"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},[577,580,581,584],{"name":578,"slug":579,"type":15},"Cloud Functions","cloud-functions",{"name":26,"slug":8,"type":15},{"name":582,"slug":583,"type":15},"Migration","migration",{"name":585,"slug":585,"type":15},"npm","2026-07-31T06:23:32.436718",{"slug":588,"name":588,"fn":589,"description":590,"org":591,"tags":592,"stars":27,"repoUrl":28,"updatedAt":603},"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},[593,596,597,600],{"name":594,"slug":595,"type":15},"Backend","backend",{"name":26,"slug":8,"type":15},{"name":598,"slug":599,"type":15},"Gemini","gemini",{"name":601,"slug":602,"type":15},"LLM","llm","2026-07-31T05:53:23.557174",{"slug":4,"name":4,"fn":5,"description":6,"org":605,"tags":606,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[607,608,609,610,611],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":26,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15},{"slug":613,"name":613,"fn":614,"description":615,"org":616,"tags":617,"stars":27,"repoUrl":28,"updatedAt":626},"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},[618,621,622,623],{"name":619,"slug":620,"type":15},"Auth","auth",{"name":594,"slug":595,"type":15},{"name":26,"slug":8,"type":15},{"name":624,"slug":625,"type":15},"Security","security","2026-07-31T05:53:20.79137",{"slug":628,"name":628,"fn":629,"description":630,"org":631,"tags":632,"stars":27,"repoUrl":28,"updatedAt":642},"firebase-basics","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},[633,636,637,640,641],{"name":634,"slug":635,"type":15},"Authentication","authentication",{"name":594,"slug":595,"type":15},{"name":638,"slug":639,"type":15},"Database","database",{"name":20,"slug":21,"type":15},{"name":26,"slug":8,"type":15},"2026-07-31T05:53:21.570684",{"slug":644,"name":644,"fn":645,"description":646,"org":647,"tags":648,"stars":27,"repoUrl":28,"updatedAt":662},"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},[649,652,653,656,659],{"name":650,"slug":651,"type":15},"Android","android",{"name":26,"slug":8,"type":15},{"name":654,"slug":655,"type":15},"iOS","ios",{"name":657,"slug":658,"type":15},"Mobile","mobile",{"name":660,"slug":661,"type":15},"Observability","observability","2026-05-01T05:54:14.072678",{"slug":664,"name":664,"fn":665,"description":666,"org":667,"tags":668,"stars":27,"repoUrl":28,"updatedAt":678},"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},[669,670,671,672,675],{"name":594,"slug":595,"type":15},{"name":638,"slug":639,"type":15},{"name":26,"slug":8,"type":15},{"name":673,"slug":674,"type":15},"GraphQL","graphql",{"name":676,"slug":677,"type":15},"PostgreSQL","postgresql","2026-04-06T18:12:07.681031",{"slug":680,"name":680,"fn":681,"description":682,"org":683,"tags":684,"stars":27,"repoUrl":28,"updatedAt":691},"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},[685,686,687,688],{"name":594,"slug":595,"type":15},{"name":638,"slug":639,"type":15},{"name":26,"slug":8,"type":15},{"name":689,"slug":690,"type":15},"NoSQL","nosql","2026-07-31T05:53:17.562137",{"slug":693,"name":693,"fn":694,"description":695,"org":696,"tags":697,"stars":27,"repoUrl":28,"updatedAt":704},"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},[698,699,700,701],{"name":20,"slug":21,"type":15},{"name":26,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":702,"slug":703,"type":15},"Web Development","web-development","2026-07-31T05:53:22.565034",{"slug":706,"name":706,"fn":707,"description":708,"org":709,"tags":710,"stars":27,"repoUrl":28,"updatedAt":721},"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},[711,713,716,717,718],{"name":497,"slug":712,"type":15},"configuration",{"name":714,"slug":715,"type":15},"Feature Flags","feature-flags",{"name":26,"slug":8,"type":15},{"name":657,"slug":658,"type":15},{"name":719,"slug":720,"type":15},"SDK","sdk","2026-07-31T05:53:18.552749",{"slug":723,"name":723,"fn":724,"description":725,"org":726,"tags":727,"stars":27,"repoUrl":28,"updatedAt":737},"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},[728,731,734,735,736],{"name":729,"slug":730,"type":15},"Audit","audit",{"name":732,"slug":733,"type":15},"Compliance","compliance",{"name":638,"slug":639,"type":15},{"name":26,"slug":8,"type":15},{"name":624,"slug":625,"type":15},"2026-07-31T05:53:16.588011",{"slug":739,"name":739,"fn":740,"description":741,"org":742,"tags":743,"stars":27,"repoUrl":28,"updatedAt":752},"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},[744,745,746,749],{"name":654,"slug":655,"type":15},{"name":657,"slug":658,"type":15},{"name":747,"slug":748,"type":15},"Swift","swift",{"name":750,"slug":751,"type":15},"Xcode","xcode","2026-05-01T05:54:12.834251",{"items":754,"total":463},[755,762,769,777,784,792,800],{"slug":572,"name":572,"fn":573,"description":574,"org":756,"tags":757,"stars":27,"repoUrl":28,"updatedAt":586},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[758,759,760,761],{"name":578,"slug":579,"type":15},{"name":26,"slug":8,"type":15},{"name":582,"slug":583,"type":15},{"name":585,"slug":585,"type":15},{"slug":588,"name":588,"fn":589,"description":590,"org":763,"tags":764,"stars":27,"repoUrl":28,"updatedAt":603},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[765,766,767,768],{"name":594,"slug":595,"type":15},{"name":26,"slug":8,"type":15},{"name":598,"slug":599,"type":15},{"name":601,"slug":602,"type":15},{"slug":4,"name":4,"fn":5,"description":6,"org":770,"tags":771,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[772,773,774,775,776],{"name":13,"slug":14,"type":15},{"name":20,"slug":21,"type":15},{"name":26,"slug":8,"type":15},{"name":23,"slug":24,"type":15},{"name":17,"slug":18,"type":15},{"slug":613,"name":613,"fn":614,"description":615,"org":778,"tags":779,"stars":27,"repoUrl":28,"updatedAt":626},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[780,781,782,783],{"name":619,"slug":620,"type":15},{"name":594,"slug":595,"type":15},{"name":26,"slug":8,"type":15},{"name":624,"slug":625,"type":15},{"slug":628,"name":628,"fn":629,"description":630,"org":785,"tags":786,"stars":27,"repoUrl":28,"updatedAt":642},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[787,788,789,790,791],{"name":634,"slug":635,"type":15},{"name":594,"slug":595,"type":15},{"name":638,"slug":639,"type":15},{"name":20,"slug":21,"type":15},{"name":26,"slug":8,"type":15},{"slug":644,"name":644,"fn":645,"description":646,"org":793,"tags":794,"stars":27,"repoUrl":28,"updatedAt":662},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[795,796,797,798,799],{"name":650,"slug":651,"type":15},{"name":26,"slug":8,"type":15},{"name":654,"slug":655,"type":15},{"name":657,"slug":658,"type":15},{"name":660,"slug":661,"type":15},{"slug":664,"name":664,"fn":665,"description":666,"org":801,"tags":802,"stars":27,"repoUrl":28,"updatedAt":678},{"slug":8,"name":9,"logoUrl":10,"githubOrg":8},[803,804,805,806,807],{"name":594,"slug":595,"type":15},{"name":638,"slug":639,"type":15},{"name":26,"slug":8,"type":15},{"name":673,"slug":674,"type":15},{"name":676,"slug":677,"type":15}]