Best for
- "Should I use Supabase or Convex?"
- "Is Firebase still the better choice for this app?"
- "What is the best managed backend for a startup MVP?"
vasilyu1983/AI-Agents-public/frameworks/shared-skills/skills/software-baas-platforms/SKILL.md
Chooses managed backend platforms such as Supabase, Convex, and Firebase. Use when comparing database, auth, realtime, and backend-service tradeoffs.
Decision brief
Use this skill to choose between managed app-backend platforms when the real decision is not just "which database," but which product backend bundle should own auth, data, realtime, storage, server-side functions, and early operational tradeoffs.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Declared | Source record | Install path and trigger |
| Claude Code | Declared | Source record | Install path and trigger |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-baas-platforms"Inspect the Agent Skill "software-baas-platforms" from https://github.com/vasilyu1983/AI-Agents-public/blob/53f6cb73ea53a2646e3e7d4665062ad66f3683ac/frameworks/shared-skills/skills/software-baas-platforms/SKILL.md at commit 53f6cb73ea53a2646e3e7d4665062ad66f3683ac. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Identify the dominant constraint: SQL portability, reactive UX, mobile/offline sync, self-hosting, or speed to first product. 2. Decide whether the platform should own auth, storage, and server-side logic or only the database. 3. Choose the simplest platform that matches the…
Review the “Quick Reference” section in the pinned source before continuing.
Review the “ASCII Flow” section in the pinned source before continuing.
If the team cannot clearly explain who is allowed to read and write each record, do not pick the platform yet.
Critical production patterns documented from real incidents. See references/platform-comparison.md for full details.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 91/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 82 | Source | Repository attention, not individual Skill quality |
| Compatibility | 2 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Use this skill to choose between managed app-backend platforms when the real decision is not just "which database," but which product backend bundle should own auth, data, realtime, storage, server-side functions, and early operational tradeoffs.
This skill covers:
| Need | Default path | Notes |
|---|---|---|
| Postgres-first product backend with RLS, auth, storage, and realtime | Supabase | Best fit when SQL portability and browser-safe Postgres workflows matter |
| TypeScript-first reactive backend with durable workflows | Convex | Best fit when live subscriptions and function-centric app logic matter more than SQL |
| Mobile/offline-first app with mature client SDKs | Firebase / Firestore | Strong default when device sync and mobile SDK ergonomics dominate |
| Self-hosted full backend bundle with auth, DB, storage, and functions | Appwrite | Good fit when self-hosting is a first-order requirement |
| Small single-binary app backend or internal tool | PocketBase | Good fit for prototypes and lightweight deployments, not the default for high-criticality systems; still pre-1.0 — verify current version and breaking-change posture before betting production on it |
| Pure Postgres host without a bundled auth/storage/realtime layer | Neon or PlanetScale Postgres | Use when you want serverless Postgres (branching, scale-to-zero) but plan to build auth/storage/realtime yourself or already own them elsewhere; not a like-for-like Supabase substitute |
| Complex compliance, bespoke domain logic, or multi-service boundaries | ../software-backend/SKILL.md + ../software-database-design/SKILL.md | Use custom services when you need stronger control than a BaaS can provide |
| Picking the compute host (Vercel, Fly.io, Railway, Render, Cloudflare Workers, Deno Deploy) | ../software-paas-hosting/SKILL.md | Sibling skill for the compute layer; this skill is data/auth-layer only |
BaaS platform decision
-> Identify app shape, data model, auth, realtime, and ops needs
-> Compare managed platform defaults against lock-in and scale risks
-> Decide system-of-record boundary and exit path
-> Design auth, data ownership, migrations, and runbooks
-> Verify current vendor limits, pricing, and product changes
-> Recommend platform, rejected options, and proof plan
| Platform | Primary Signal | Security Starting Point |
|---|---|---|
| Supabase | Postgres as source of truth; SQL, RLS, Realtime, Auth, Storage, Edge Functions in one stack | Schema design + RLS policy quality |
| Convex | TypeScript-heavy interactive product; queries, mutations, actions, subscriptions, durable workflows | Function boundaries, auth propagation, server-owned writes |
| Firebase / Firestore | Offline-first; mature mobile/web SDKs; client-driven sync more important than SQL portability | Rules quality, offline conflict expectations, client trust boundaries |
| Appwrite | Self-hosting first; project-level permissions; integrated auth/DB/functions/storage | Hosting model, admin surface exposure, secrets isolation |
| PocketBase | Extremely small deployment; operational simplicity over ecosystem depth, HA, or long-term guarantees | Admin surface exposure; not for high-criticality systems |
| Custom backend | Complex compliance, highly specific domain services, independent scaling across services | Use ../software-backend/SKILL.md + threat model |
If the team cannot clearly explain who is allowed to read and write each record, do not pick the platform yet.
Supabase vs. Firebase, as an actual decision (not a preference): pick Supabase/Postgres+RLS when the team already thinks in SQL, needs ad-hoc joins/reporting, or wants a schema that is trivially portable to any Postgres host (RDS, Neon, PlanetScale, self-hosted). Pick Firebase/Firestore when the product is mobile-first, needs best-in-class offline sync and conflict resolution out of the box, and the data shape is naturally document-like with shallow queries. The tie-breaker is usually query complexity: complex relational queries and reporting favor Supabase; simple per-document reads/writes at high device-offline tolerance favor Firebase. Do not decide this on team familiarity alone — RLS policy bugs and permissive Firestore rules are both common breach vectors, so budget real review time either way.
Critical production patterns documented from real incidents. See references/platform-comparison.md for full details.
.in() filters are safe.Use this skill when the user asks:
Before committing to a BaaS platform, verify:
Recipes keyed to platform-selection or integration moments. Each lists the shortest path to a correct, safe implementation.
tenant_id column (FK to tenants) to every data table; never rely on application-layer filtering alone.ALTER TABLE foo ENABLE ROW LEVEL SECURITY;.SELECT policy: USING (tenant_id = auth.jwt() ->> 'tenant_id') — verify the JWT claim exists for every auth path.INSERT, UPDATE, DELETE policies; never leave a table with RLS enabled but no policy (blocks all access).ctx.scheduler.runAfter inside mutations for deferred work; do not spawn actions ad-hoc from the client.request.auth.uid == resource.data.userId.allow read, write: if false; as the default catch-all at the top of every collection group not explicitly covered.pg_dump; migrate auth users with the Supabase admin API; replicate storage objects to S3-compatible storage.anon key + RLS, or Firebase apiKey + rules — these are intentionally public-facing but constrained by policy.References
Related Skills
data/sources.json for the platform's official docs.Before applying this skill on a non-trivial task, read learnings.consolidated.md in this directory (and learnings.md if present).
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.
Frequently asked questions
Use this skill to choose between managed app-backend platforms when the real decision is not just "which database," but which product backend bundle should own auth, data, realtime, storage, server-side functions, and early operational tradeoffs.
The source record exposes this install command: npx skills add https://github.com/vasilyu1983/AI-Agents-public --skill "frameworks/shared-skills/skills/software-baas-platforms". Inspect the command and pinned source before running it.
The pinned source record declares support for: codex, claude code.
Alternatives
vasilyu1983/AI-Agents-public
Configures Claude Code hooks and Codex hooks.json/notify callbacks. Use when adding guardrails, preflight, audit trails, worktree automation, or budget enforcement.
vasilyu1983/AI-Agents-public
Guides iOS testing with XCTest, XCUITest, Swift Testing, simctl, and xcresult. Use when choosing destinations, controlling flakes, or parsing test artifacts for native apps.
vasilyu1983/AI-Agents-public
Guides multi-GPU pre-training: DDP, FSDP2, ZeRO, tensor/pipeline/expert parallelism, fp8/Muon. Use when scaling a run, training MoE, or reproducing GPT-2 on rented GPUs.
vasilyu1983/AI-Agents-public
Scans public GitHub repos for agent skills, dev practices, and code patterns. Use when enriching skills, setting team policy, or researching a build domain.