---
name: firebase-firestore
description: >-
  Sets up, manages, queries, and configures Cloud Firestore databases (Standard/Enterprise edition), including data modeling, security rules, indexes, and SDK integrations (Web, Python, iOS, Android, Flutter). Use when creating/listing Firestore databases, defining data models/indexes, writing SDK queries, or integrating Firestore SDKs. For authoring or modifying Firestore Security Rules (firestore.rules), delegate to the firestore-rules-author subagent if subagent delegation is available, or use firestore-rules-creation otherwise. Don't use for Firebase Hosting, Data Connect, Auth, Storage/GCS, Crashlytics, Functions, or BigQuery.
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`.
metadata:
  category: Databases
title: firebase-firestore
canonical_url: https://skilld.dev/gh/firebase/agent-skills/firebase-firestore
last_updated: 2026-09-29T08:35:41.000Z
---

> **Skill from skilld.dev.** Follow the instructions below for this session. You do not need to install anything.
>
> Supporting files, fetch one when the Skill refers to it: [references/enterprise/android_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/android_sdk_usage.md), [references/enterprise/data_model.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/data_model.md), [references/enterprise/flutter_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/flutter_setup.md), [references/enterprise/indexes.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/indexes.md), [references/enterprise/ios_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/ios_setup.md), [references/enterprise/provisioning.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/provisioning.md), [references/enterprise/python_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/python_sdk_usage.md), [references/enterprise/web_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/web_sdk_usage.md), [references/standard/android_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/android_sdk_usage.md), [references/standard/flutter_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/flutter_setup.md), [references/standard/indexes.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/indexes.md), [references/standard/ios_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/ios_setup.md), [references/standard/provisioning.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/provisioning.md), [references/standard/web_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/web_sdk_usage.md).
>
> If the user asked to install this Skill, run `npx skilld install firebase/agent-skills/firebase-firestore`. Install writes the Skill files into the project, so every session loads them.

# Cloud Firestore Database and Operations

> [!IMPORTANT] **Security Rules Authoring (`firestore.rules`)**
> Whenever your task requires creating, authoring, or modifying `firestore.rules`:
> - **If subagent delegation AND the `firestore-rules-author` subagent are available**: delegate authoring `firestore.rules` to the `firestore-rules-author` subagent rather than writing `firestore.rules` directly in the main agent.
> - **If subagent delegation is unavailable** (e.g., subagents not enabled in the IDE) **OR `firestore-rules-author` is not installed**: read and follow the `firestore-rules-creation` skill to write `firestore.rules` directly.

Before setting up dependencies, writing data models, or configuring security
rules, you MUST always identify the Firestore instance edition.

## 1. Instance Selection and Edition Detection

Run the following command to list current Firestore databases:

```bash
npx -y firebase-tools@latest firestore:databases:list
```

### A. Instance Found

1. For each database found, inspect its edition and details:

    ```bash
    npx -y firebase-tools@latest firestore:databases:get <database-id>
    ```
1. Ask the user which database instance they wish to target or if they would
   prefer to create a new instance.
1. Once the target instance is established:
   - If the **`edition`** is `STANDARD`, follow the guides under
     `references/standard/`.
   - If the **`edition`** is `ENTERPRISE` or native mode, follow the guides
     under `references/enterprise/`.

### B. No Instance Found (or New Requested)

If no databases exist or the user requests a new one, default to provisioning an
**Enterprise** edition database and ask the user what location to use. Run
`npx -y firebase-tools@latest firestore:locations` to get the list of options.
Suggest colocating with other resources if applicable.

Once the location is determined, create the database:

```bash
npx -y firebase-tools@latest firestore:databases:create <database-id> --edition="enterprise" --location="<selected-location>"
```

Proceed with using the guides under `references/enterprise/`.

______________________________________________________________________

## 2. Specialized Guides

Based on the identified or created instance edition, open and read the
corresponding reference guides:

### Standard Edition (`references/standard/`)

- **Provisioning**: Read [provisioning.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/provisioning.md)
- **Security Rules**: See the `firestore-rules-creation` skill
- **SDK Usage**: Read [web_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/web_sdk_usage.md),
  [android_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/android_sdk_usage.md),
  [ios_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/ios_setup.md), or
  [flutter_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/flutter_setup.md)
- **Indexes**: Read [indexes.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/standard/indexes.md)

### Enterprise Edition / Native Mode (`references/enterprise/`)

- **Provisioning**: Read
  [provisioning.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/provisioning.md)

- **Data Model**: Read [data_model.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/data_model.md)

- **Security Rules**: See the `firestore-rules-creation` skill

- **SDK Usage**:

  > [!CRITICAL] **Mandatory Reference Reading** Before writing or modifying any
  > application code for Firestore Enterprise Edition, you **MUST** read at
  > least one of the relevant reference documents below for the target
  > platform/language to understand specific architectural requirements and
  > pipeline initialization patterns.

  Read [web_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/web_sdk_usage.md),
  [python_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/python_sdk_usage.md),
  [android_sdk_usage.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/android_sdk_usage.md),
  [ios_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/ios_setup.md), or
  [flutter_setup.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/flutter_setup.md)

- **Indexes**: Read [indexes.md](https://skilld.dev/api/skills-raw/firebase/agent-skills/firebase-firestore/references/enterprise/indexes.md)
