Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/aiskillstore-firebase-development-project-setup/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-09 | ✗→✓ | ▲ Improved | 34% | 0% |
| case-01 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 24% | 0% |
| case-07 | ✗→✓ | ▲ Improved | 19% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 50% | 0% |
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:
Do not use for:
firebase-development:add-featurefirebase-development:debugUse AskUserQuestion to gather these four decisions upfront:
Reference: docs/examples/multi-hosting-setup.md
Reference: docs/examples/api-key-authentication.md
Reference: docs/examples/express-function-architecture.md
Reference: docs/examples/firestore-rules-patterns.md
Create checklist with these 14 steps:
bashfirebase --version # Install via npm install -g firebase-tools if missing firebase login
bashmkdir my-firebase-project && cd my-firebase-project git init && git branch -m main
Create .gitignore with: node_modules/, .env, .env.local, .firebase/, lib/, dist/
bashfirebase init
Select: Firestore, Functions, Hosting, Emulators. Choose TypeScript for functions.
Use AskUserQuestion for the four decisions above.
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
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
Create functions/src/index.ts with ABOUTME comments. Include health check endpoint for Express pattern.
Reference: docs/examples/express-function-architecture.md
Based on security model decision. Always include:
isAuthenticated(), isOwner())Reference: docs/examples/firestore-rules-patterns.md
Create vitest.config.ts and vitest.emulator.config.ts. Set up __tests__/ and __tests__/emulator/ directories.
Create biome.json with recommended rules. Run npm run lint:fix.
Create .env.example template. Copy to .env and fill in values.
For hosting: create hosting/.env.local with NEXT_PUBLIC_USE_EMULATORS=true.
bashgit add . && git commit -m "feat: initial Firebase project setup"
bashfirebase emulators:start open http://127.0.0.1:4000
Verify all services start. Test health endpoint if using Express.
Create functions/src/__tests__/setup.test.ts with basic verification. Run npm test.
Before marking complete:
npm run buildnpm testnpm run lint.env files created and gitignoredExpress 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.jsAfter setup complete:
firebase-development:add-featurefirebase-development:validatefirebase-development:debugdocs/examples/multi-hosting-setup.mddocs/examples/api-key-authentication.mddocs/examples/express-function-architecture.mddocs/examples/firestore-rules-patterns.mddocs/examples/emulator-workflow.md| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-09 | fail→pass | 12,757 | 5,361 | -58% | 1 | 1 | 0% | 1,853 | 2,485 | +34% | 0 | 0 | — |
case-01 | fail→pass | 18,525 | 5,614 | -70% | 1 | 1 | 0% | 3,392 | 2,530 | -25% | 0 | 0 | — |
case-02 | fail→fail | 13,192 | 5,796 | -56% | 1 | 1 | 0% | 2,557 | 2,492 | -3% | 0 | 0 | — |
case-03 | fail→fail | 9,689 | 8,448 | -13% | 1 | 1 | 0% | 1,258 | 2,224 | +77% | 0 | 0 | — |
case-04 | fail→pass | 15,976 | 10,278 | -36% | 1 | 1 | 0% | 2,696 | 3,354 | +24% | 0 | 0 | — |
case-05 | pass→pass | 10,656 | 6,788 | -36% | 1 | 1 | 0% | 1,786 | 2,785 | +56% | 0 | 0 | — |
case-06 | pass→pass | 14,553 | 8,684 | -40% | 1 | 1 | 0% | 2,682 | 3,274 | +22% | 0 | 0 | — |
case-07 | fail→pass | 12,426 | 6,346 | -49% | 1 | 1 | 0% | 2,299 | 2,742 | +19% | 0 | 0 | — |
case-08 | fail→pass | 15,305 | 14,248 | -7% | 1 | 1 | 0% | 2,891 | 4,336 | +50% | 0 | 0 | — |
case-10 | fail→pass | 12,430 | 6,085 | -51% | 1 | 1 | 0% | 1,758 | 2,707 | +54% | 0 | 0 | — |
case-11 | pass→pass | 11,453 | 23,134 | +102% | 1 | 1 | 0% | 1,900 | 2,766 | +46% | 0 | 0 | — |
case-12 | fail→pass | 16,154 | 8,502 | -47% | 1 | 1 | 0% | 2,707 | 2,964 | +9% | 0 | 0 | — |
case-13 | fail→pass | 25,246 | 9,413 | -63% | 1 | 1 | 0% | 2,570 | 3,217 | +25% | 0 | 0 | — |
case-14 | fail→pass | 14,036 | 2,739 | -80% | 1 | 1 | 0% | 2,194 | 2,004 | -9% | 0 | 0 | — |
case-15 | fail→pass | 12,100 | 2,321 | -81% | 1 | 1 | 0% | 2,102 | 1,930 | -8% | 0 | 0 | — |
case-16 | fail→pass | 18,195 | 8,996 | -51% | 1 | 1 | 0% | 2,930 | 2,955 | +1% | 0 | 0 | — |
case-17 | fail→pass | 15,501 | 5,760 | -63% | 1 | 1 | 0% | 2,421 | 2,565 | +6% | 0 | 0 | — |
case-22 | fail→pass | 5,384 | 1,865 | -65% | 1 | 1 | 0% | 967 | 1,785 | +85% | 0 | 0 | — |
case-18 | fail→pass | 8,612 | 2,352 | -73% | 1 | 1 | 0% | 1,336 | 1,855 | +39% | 0 | 0 | — |
case-19 | pass→pass | 15,995 | 10,631 | -34% | 1 | 1 | 0% | 2,618 | 3,459 | +32% | 0 | 0 | — |
case-20 | pass→pass | 10,378 | 2,741 | -74% | 1 | 1 | 0% | 1,690 | 1,863 | +10% | 0 | 0 | — |
case-21 | pass→pass | 11,572 | 5,217 | -55% | 1 | 1 | 0% | 2,101 | 2,529 | +20% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +64 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.