> **firebase-firestore** — chapter 8 of 12 in [firebase/agent-skills](https://skillsdocs.com/firebase/agent-skills).
>
> Book (all chapters, one file): https://skillsdocs.com/firebase/agent-skills.md
> Machine manifest: https://skillsdocs.com/firebase/agent-skills/.well-known/agent-skills/index.json
> Install the book: `npx skills add firebase/agent-skills`
> Upstream: https://github.com/firebase/agent-skills/blob/main/skills/firebase-firestore/SKILL.md @ `main`
> Raw bytes, no header: https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/SKILL.md
> Base for relative paths: https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/
> Licence: Apache-2.0 — https://spdx.org/licenses/Apache-2.0.html
>
> Bundled files (16), referenced from this skill's directory:
>   - `references/enterprise/android_sdk_usage.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/android_sdk_usage.md
>   - `references/enterprise/data_model.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/data_model.md
>   - `references/enterprise/flutter_setup.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/flutter_setup.md
>   - `references/enterprise/indexes.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/indexes.md
>   - `references/enterprise/ios_setup.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/ios_setup.md
>   - `references/enterprise/provisioning.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/provisioning.md
>   - `references/enterprise/python_sdk_usage.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/python_sdk_usage.md
>   - `references/enterprise/security_rules.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/security_rules.md
>   - `references/enterprise/web_sdk_usage.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/enterprise/web_sdk_usage.md
>   - `references/standard/android_sdk_usage.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/standard/android_sdk_usage.md
>   - `references/standard/flutter_setup.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/standard/flutter_setup.md
>   - `references/standard/indexes.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/standard/indexes.md
>   - `references/standard/ios_setup.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/standard/ios_setup.md
>   - `references/standard/provisioning.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/standard/provisioning.md
>   - `references/standard/security_rules.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/standard/security_rules.md
>   - `references/standard/web_sdk_usage.md` — https://raw.githubusercontent.com/firebase/agent-skills/main/skills/firebase-firestore/references/standard/web_sdk_usage.md
>
> Content © its authors, served unmodified. Takedown: https://github.com/kyleledbetter/skillsdocs/issues/new?labels=takedown&title=Takedown+request

<!-- Verbatim upstream SKILL.md follows, YAML frontmatter included. -->

---
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. 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
---

# Cloud Firestore Database and Operations

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](references/standard/provisioning.md)
- **Security Rules**: Read
  [security_rules.md](references/standard/security_rules.md)
- **SDK Usage**: Read [web_sdk_usage.md](references/standard/web_sdk_usage.md),
  [android_sdk_usage.md](references/standard/android_sdk_usage.md),
  [ios_setup.md](references/standard/ios_setup.md), or
  [flutter_setup.md](references/standard/flutter_setup.md)
- **Indexes**: Read [indexes.md](references/standard/indexes.md)

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

- **Provisioning**: Read
  [provisioning.md](references/enterprise/provisioning.md)

- **Data Model**: Read [data_model.md](references/enterprise/data_model.md)

- **Security Rules**: Read
  [security_rules.md](references/enterprise/security_rules.md)

- **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](references/enterprise/web_sdk_usage.md),
  [python_sdk_usage.md](references/enterprise/python_sdk_usage.md),
  [android_sdk_usage.md](references/enterprise/android_sdk_usage.md),
  [ios_setup.md](references/enterprise/ios_setup.md), or
  [flutter_setup.md](references/enterprise/flutter_setup.md)

- **Indexes**: Read [indexes.md](references/enterprise/indexes.md)
