firebase-development-project-setup
This skill should be used when initializing a new Firebase project with proven architecture. Triggers on "new firebase project", "initialize firebase", "firebase init", "set up firebase", "create firebase app", "start firebase project". Guides through CLI setup, architecture choices, and emulator configuration.
Best use case
firebase-development-project-setup is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
This skill should be used when initializing a new Firebase project with proven architecture. Triggers on "new firebase project", "initialize firebase", "firebase init", "set up firebase", "create firebase app", "start firebase project". Guides through CLI setup, architecture choices, and emulator configuration.
Teams using firebase-development-project-setup should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/project-setup/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How firebase-development-project-setup Compares
| Feature / Agent | firebase-development-project-setup | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
This skill should be used when initializing a new Firebase project with proven architecture. Triggers on "new firebase project", "initialize firebase", "firebase init", "set up firebase", "create firebase app", "start firebase project". Guides through CLI setup, architecture choices, and emulator configuration.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Firebase Project Setup
## Overview
This sub-skill guides initializing a new Firebase project with proven architecture patterns. It handles Firebase CLI setup, architecture decisions, emulator configuration, and initial project structure.
**Key principles:**
- Use TypeScript for all functions
- Configure emulators from the start
- Choose architecture patterns early (hosting, auth, functions, security)
- Set up testing infrastructure immediately
## When This Sub-Skill Applies
- Starting a brand new Firebase project
- Setting up Firebase for the first time in a repository
- User says: "new firebase project", "initialize firebase", "firebase init", "set up firebase"
**Do not use for:**
- Adding features to existing projects → `firebase-development:add-feature`
- Debugging existing setup → `firebase-development:debug`
## Architecture Decisions
Use AskUserQuestion to gather these four decisions upfront:
### 1. Hosting Configuration
- **Single Site** - One hosting site, simple project
- **Multiple Sites (site:)** - Multiple independent URLs
- **Multiple with Builds (target:)** - Multiple sites with predeploy hooks
**Reference:** `docs/examples/multi-hosting-setup.md`
### 2. Authentication Approach
- **API Keys** - MCP tools, server-to-server, programmatic access
- **Firebase Auth** - User-facing app with login UI
- **Both** - Firebase Auth for web + API keys for tools
**Reference:** `docs/examples/api-key-authentication.md`
### 3. Functions Architecture
- **Express API** - Many related endpoints, need middleware, RESTful routing
- **Domain Grouped** - Feature-rich app with distinct areas (posts, admin)
- **Individual Files** - Independent functions, maximum modularity
**Reference:** `docs/examples/express-function-architecture.md`
### 4. Security Model
- **Server-Write-Only** (Preferred) - Cloud Functions handle all writes
- **Client-Write** - High-volume writes, need fastest UX, complex rules
**Reference:** `docs/examples/firestore-rules-patterns.md`
## TodoWrite Workflow
Create checklist with these 14 steps:
### Step 1: Verify Firebase CLI
```bash
firebase --version # Install via npm install -g firebase-tools if missing
firebase login
```
### Step 2: Create Project Directory
```bash
mkdir my-firebase-project && cd my-firebase-project
git init && git branch -m main
```
Create `.gitignore` with: `node_modules/`, `.env`, `.env.local`, `.firebase/`, `lib/`, `dist/`
### Step 3: Run Firebase Init
```bash
firebase init
```
Select: Firestore, Functions, Hosting, Emulators. Choose TypeScript for functions.
### Step 4: Gather Architecture Decisions
Use AskUserQuestion for the four decisions above.
### Step 5: Configure firebase.json
Set up based on hosting decision. Critical emulator settings:
```json
{
"emulators": {
"singleProjectMode": true,
"ui": { "enabled": true, "port": 4000 }
}
}
```
**Reference:** `docs/examples/multi-hosting-setup.md`
### Step 6: Set Up Functions Structure
Based on architecture choice:
**Express:** Create `middleware/`, `tools/`, `services/`, `shared/`
**Domain-Grouped:** Create `shared/types/`, `shared/validators/`
**Individual:** Create `functions/`
Install dependencies: `express`, `cors`, `firebase-admin`, `firebase-functions`, `vitest`, `biome`
### Step 7: Create Initial Functions Code
Create `functions/src/index.ts` with ABOUTME comments. Include health check endpoint for Express pattern.
**Reference:** `docs/examples/express-function-architecture.md`
### Step 8: Configure Firestore Rules
Based on security model decision. Always include:
- Helper functions (`isAuthenticated()`, `isOwner()`)
- Default deny rule at bottom
**Reference:** `docs/examples/firestore-rules-patterns.md`
### Step 9: Set Up Testing
Create `vitest.config.ts` and `vitest.emulator.config.ts`. Set up `__tests__/` and `__tests__/emulator/` directories.
### Step 10: Configure Biome
Create `biome.json` with recommended rules. Run `npm run lint:fix`.
### Step 11: Set Up Environment Variables
Create `.env.example` template. Copy to `.env` and fill in values.
For hosting: create `hosting/.env.local` with `NEXT_PUBLIC_USE_EMULATORS=true`.
### Step 12: Initial Git Commit
```bash
git add . && git commit -m "feat: initial Firebase project setup"
```
### Step 13: Start Emulators
```bash
firebase emulators:start
open http://127.0.0.1:4000
```
Verify all services start. Test health endpoint if using Express.
### Step 14: Create Initial Tests
Create `functions/src/__tests__/setup.test.ts` with basic verification. Run `npm test`.
## Verification Checklist
Before marking complete:
- [ ] Firebase CLI installed and logged in
- [ ] TypeScript functions compile: `npm run build`
- [ ] All tests pass: `npm test`
- [ ] Linting passes: `npm run lint`
- [ ] Emulators start without errors
- [ ] Emulator UI accessible at http://127.0.0.1:4000
- [ ] Git initialized with commits
- [ ] `.env` files created and gitignored
- [ ] ABOUTME comments on all files
- [ ] Architecture decisions documented
## Project Structures
**Express API:**
```
functions/src/
├── index.ts
├── middleware/apiKeyGuard.ts
├── tools/
├── services/
└── __tests__/
```
**Domain-Grouped:**
```
functions/src/
├── index.ts
├── posts.ts
├── users.ts
├── shared/types/
└── __tests__/
```
**Individual Files:**
```
functions/
├── functions/upload.ts
├── functions/process.ts
└── index.js
```
## Next Steps
After setup complete:
1. Add first feature → `firebase-development:add-feature`
2. Review setup → `firebase-development:validate`
3. Debug issues → `firebase-development:debug`
## Pattern References
- **Hosting:** `docs/examples/multi-hosting-setup.md`
- **Auth:** `docs/examples/api-key-authentication.md`
- **Functions:** `docs/examples/express-function-architecture.md`
- **Rules:** `docs/examples/firestore-rules-patterns.md`
- **Emulators:** `docs/examples/emulator-workflow.md`Related Skills
websocket-handler-setup
Websocket Handler Setup - Auto-activating skill for Backend Development. Triggers on: websocket handler setup, websocket handler setup Part of the Backend Development skill category.
vpc-network-setup
Vpc Network Setup - Auto-activating skill for GCP Skills. Triggers on: vpc network setup, vpc network setup Part of the GCP Skills skill category.
tensorflow-serving-setup
Tensorflow Serving Setup - Auto-activating skill for ML Deployment. Triggers on: tensorflow serving setup, tensorflow serving setup Part of the ML Deployment skill category.
managing-autonomous-development
Enables Claude to manage Sugar's autonomous development workflows. It allows Claude to create tasks, view the status of the system, review pending tasks, and start autonomous execution mode. Use this skill when the user asks to create a new development task using `/sugar-task`, check the system status with `/sugar-status`, review pending tasks via `/sugar-review`, or initiate autonomous development using `/sugar-run`. It provides a comprehensive interface for interacting with the Sugar autonomous development system.
sqs-queue-setup
Sqs Queue Setup - Auto-activating skill for AWS Skills. Triggers on: sqs queue setup, sqs queue setup Part of the AWS Skills skill category.
spy-setup-helper
Spy Setup Helper - Auto-activating skill for Test Automation. Triggers on: spy setup helper, spy setup helper Part of the Test Automation skill category.
spike-test-setup
Spike Test Setup - Auto-activating skill for Performance Testing. Triggers on: spike test setup, spike test setup Part of the Performance Testing skill category.
sla-monitor-setup
Sla Monitor Setup - Auto-activating skill for Enterprise Workflows. Triggers on: sla monitor setup, sla monitor setup Part of the Enterprise Workflows skill category.
server-sent-events-setup
Server Sent Events Setup - Auto-activating skill for API Integration. Triggers on: server sent events setup, server sent events setup Part of the API Integration skill category.
react-context-setup
React Context Setup - Auto-activating skill for Frontend Development. Triggers on: react context setup, react context setup Part of the Frontend Development skill category.
rds-instance-setup
Rds Instance Setup - Auto-activating skill for AWS Skills. Triggers on: rds instance setup, rds instance setup Part of the AWS Skills skill category.
rabbitmq-queue-setup
Rabbitmq Queue Setup - Auto-activating skill for Backend Development. Triggers on: rabbitmq queue setup, rabbitmq queue setup Part of the Backend Development skill category.