Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Chooses managed backend platforms such as Supabase, Convex, and Firebase. Use when comparing database, auth, realtime, and backend-service tradeoffs.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
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; the backend is self-hostable under FSL-Apache-2.0 (fair source, with a competing-service restriction and later Apache conversion) |
| 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 |
| Branchable Postgres with separately chosen app services | PlanetScale Postgres or Neon database-only | PlanetScale is a database host; Neon also offers backend primitives. Load the comparison to decide which components you actually adopt |
| 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 |
| 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 Postgres schema with an exit path tested for extension, role, and managed-feature compatibility on the destination (RDS, Neon, PlanetScale, self-hosted). Pick Firebase/Firestore when the product is mobile-first, needs offline caching and client synchronization, 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:
An exit diagram is not proof of portability. Keep stable application-owned IDs across auth and data, inventory platform-specific SDK calls, and record what cannot be exported automatically and who owns the manual step. Use external restore infrastructure only when it is within the authorized task and the proof is proportionate to the decision.
Choosing a platform from a feature checklist without first validating its permission model, trust boundaries, and operator responsibilities.
Assuming an exit path is cheap because the underlying database looks portable, while ignoring auth, storage, realtime, function, and client-SDK coupling.
Stretching a managed platform into compliance-heavy or domain-heavy workflows that need custom service boundaries.
Picking self-hosting as the “safer” answer without budgeting for upgrades, secrets handling, backups, monitoring, and operational ownership.
Letting frontend convenience determine the backend boundary before deciding which writes must stay server-owned.
Sizing total cost of ownership on the advertised plan price alone while ignoring egress, compute add-ons, and overage rates that materially change the real bill at scale.
Using service-role or admin credentials in clients to bypass permission design.
Treating the platform commitment as permanent without explicit revisit triggers.
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;.app_metadata (server-set), never user_metadata (user-editable). Use a custom access-token hook only if you need a top-level claim.SELECT policy that wraps the JWT read in a sub-select (evaluated once per statement) and casts to the column type: USING (tenant_id = ((select auth.jwt()) -> 'app_metadata' ->> 'tenant_id')::uuid) — ::uuid only if tenant_id is uuid. Index tenant_id; unindexed policy predicates can cause expensive scans; inspect the actual EXPLAIN plan.INSERT, UPDATE, DELETE policies; leave deliberately inaccessible tables default-deny; add policies only for intended operations and set grants independently.ctx.scheduler.runAfter inside mutations for deferred work; do not spawn actions ad-hoc from the client.resource.data.userId; on create use request.resource.data.userId. On update prevent changing the owner field.sb_publishable_...) + RLS, or Firebase apiKey + rules — these are intentionally public-facing but constrained by policy.sb_secret_...) or admin credentials only in backend functions, never in client bundles.anon / service_role keys by the end of 2026: migrate to publishable/secret keys, then disable the legacy keys in the dashboard (Settings > API Keys).References
Related Skills
When prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.
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.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Configures and hardens Claude Code and Codex MCP servers. Use when connecting databases, APIs, SaaS, building servers, or serving a clearance-filtered knowledge base.
日本語の概要は準備中です。原文の説明を表示しています。
Owns instruction files: AGENTS.md, CLAUDE.md, personal and repo rules. Use when writing, pruning, auditing them, sharing rules across Claude and Codex, or fixing ignored rules.
日本語の概要は準備中です。原文の説明を表示しています。
Creates and audits agent skills: SKILL.md, references, scripts, runtime metadata. Use when writing, validating, or security-reviewing a skill, or fixing truncated skill listings.
日本語の概要は準備中です。原文の説明を表示しています。
Adds per-skill learnings loops for dated patterns, mistakes, and domain facts. Use when wiring skill memory, consolidation, or drift audits.
日本語の概要は準備中です。原文の説明を表示しています。
Chooses subagent, team, workflow, or debate and launches it on Claude Code or Codex. Use when delegating, running agent review boards, or installing shared agents.
日本語の概要は準備中です。原文の説明を表示しています。