Design Firestore schemas, security rules, Cloud Functions, and data layer architecture
npx claudepluginhub cure-consulting-group/productengineeringskillsThis skill uses the workspace's default tool permissions.
Generates production-grade Firebase architecture. Every output is security-first, offline-aware, and Clean Architecture compliant (Firebase never leaks into domain layer).
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
Generates production-grade Firebase architecture. Every output is security-first, offline-aware, and Clean Architecture compliant (Firebase never leaks into domain layer).
Before starting, gather project context silently:
PORTFOLIO.md if it exists in the project root or parent directories for product/team contextcat package.json 2>/dev/null || cat build.gradle.kts 2>/dev/null || cat Podfile 2>/dev/null to detect stackgit log --oneline -5 2>/dev/null for recent changesls src/ app/ lib/ functions/ 2>/dev/null to understand project structurePresentation Layer → ViewModel / StateFlow
Domain Layer → UseCases + Repository INTERFACES only (no Firebase imports)
Data Layer → FirestoreDataSource, FirebaseAuthDataSource, DTO models
↓
Firebase SDK (Firestore, Auth, Functions, Storage)
Hard rules:
FirebaseFirestore or DocumentReference in domain or presentation layersFlow via callbackFlowResult<T> / sealed class)| Request | Primary Output | Action |
|---|---|---|
| Data modeling / schema | Collection design + security rules | Design schema |
| Security rules | Rules file + test spec | Write rules |
| Cloud Function | TypeScript function scaffold | Scaffold function |
| Auth flow | Auth architecture + rules | Design auth |
| Android integration | Repository + DataSource + DTO scaffold | Scaffold data layer |
| Full feature | All of the above | Generate everything |
Before generating, confirm:
users/{uid} ← Firebase Auth UID always
users/{uid}/subscriptions/{id} ← Auto-generated Firestore ID
products/{slug} ← Human-readable slug when queried by known key
events/{YYYY-MM-DD}_{id} ← Date-prefixed for time-series queries
createdAt: Timestamp and updatedAt: TimestampFieldValue.serverTimestamp() on write — never client-side DatecreatedAt and updatedAt on any collection with list/sort queriesFor schema designs, always output:
You MUST generate actual Firebase files using Write:
firestore.rules — deny-by-default with per-collection rules, field validation, auth checksfirestore.indexes.json — composite indexes for all planned queriesfunctions/src/models/{collection}.ts — typed interfaces matching schemadata/model/{Collection}.kt — Firestore-compatible data classesModels/{Collection}.swift — Codable structsfunctions/src/triggers/{collection}.ts — onCreate/onUpdate/onDelete handlersstorage.rules — file type and size validationfirebase.json — hosting, functions, firestore, storage configBefore generating, Read existing firestore.rules and firebase.json if they exist. Extend rather than replace.
Use Grep to find all Firestore references in client code: collection(|doc(|getFirestore to ensure all collections have rules.
firebase_sdk_android: firebase-bom:33.x
firestore_android: ktx, offline persistence enabled
auth: Firebase Auth (email, Google Sign-In)
functions: TypeScript, Node 20, Cloud Functions v2
emulator: firestore:8080, auth:9099, functions:5001, storage:9199
rules_testing: @firebase/rules-unit-testing + Jest
android_coroutines: kotlinx-coroutines-play-services for Task → suspend