Skip to content
Back to skills

Backend Supabase

ASecurity

Skill experta en desarrollo Backend con Supabase, Postgres y RLS.

  • 2 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 27, 2026
databasesgosqltestingdatabasebackendsecurityperformance

Security analysis

A100/100

Scanned September 27, 2026

npx -y skills add David-Li0406/meta-skill-evloving --skill backend-supabase --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Backend Supabase?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Backend Supabase
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/david-li0406-backend-supabase/badge)](https://www.skillsdirectory.com/skills/david-li0406-backend-supabase)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: Backend Supabase
description: Skill experta en desarrollo Backend con Supabase, Postgres y RLS.
---

# 🐘 Protocolo Antigravity: Skill Backend (Supabase)

> **Core Principle:** "Supabase Native". Utiliza la potencia de Postgres antes de escribir código externo.

## 1. Principios Generales
- **Supabase-Native:** RLS, Triggers, Functions y Realtime nativos preferidos sobre middleware externo.
- **Seguridad por Defecto (RLS):** NUNCA crear una tabla pública sin Row Level Security habilitado.
- **Integridad:** La base de datos es la fuente de la verdad. Usa Foreign Keys, Constraints y Tipos estrictos.
- **Escalabilidad:** Evita N+1 y consultas no indexadas desde el día 1.

## 2. Nomenclatura (Naming Conventions)
- **Tablas:** `snake_case` y **plural** (ej. `users`, `order_items`).
- **Columnas:** `snake_case` (ej. `created_at`, `is_active`).
- **Funciones (RPC):** `snake_case` (ej. `get_user_balance`).
- **IDs:**
    - PK: `id` (uuid v4).
    - FK: `singular_table_name_id` (ej. `user_id` -> `users.id`).

## 3. Seguridad y RLS
> 🚨 **Mandatorio:** `ALTER TABLE table_name ENABLE ROW LEVEL SECURITY;`

### 3.1. Políticas (Policies)
- Definir políticas explícitas para `SELECT`, `INSERT`, `UPDATE`, `DELETE`.
- Usar funciones helper seguras (ej. `auth.uid()`).
- Evitar joins complejos en políticas que se ejecutan por cada fila (impacto de performance).

### 3.2. Roles
- Entender y respetar la diferencia `anon` vs `authenticated`.
- Roles de servicio (`service_role`) solo para tareas administrativas backend-only.

## 4. Estructura de Datos
- **UUID:** Usar `gen_random_uuid()` por defecto.
- **Timestamps:** `created_at` (default `now()`), `updated_at`.
- **JSONB:** Solo para datos flexibles sin esquema fijo. Preferir columnas relacionales.

## 5. Lógica de Negocio
- **Triggers:** Para consistencia de datos (ej. actualizar `updated_at`, contadores cacheados).
- **Edge Functions:** Para lógica compleja, integraciones externas (Stripe, AI), o webhooks.
- **Database Functions:** Para operaciones atómicas transaccionales.

## 6. Performance Checklist
- [ ] ¿Tienen índices las Foreign Keys?
- [ ] ¿Están indexadas las columnas de filtrado frecuente (`WHERE`, `ORDER BY`)?
- [ ] ¿Se usa `limit()` y paginación en queries de listas?
- [ ] ¿RLS policies optimizadas (evitar select n+1 dentro de policies)?

## 7. Control de Cambios
- **Migraciones:** Todo cambio de esquema va en un archivo de migración `.sql`.
- **No UI Edits:** No editar esquema manualmente en producción desde el dashboard.

## 8. Calidad SQL
> Consulta la skill `quality-assurance` para detalles.
- **Linting:** SQL debe ser legible y formateado (`sqlfluff`).
- **Testing:** Unit tests para Edge Functions complejas y PL/pgSQL functions críticas.

---
**Recuerda:** Una base de datos bien diseñada es el cimiento de una aplicación robusta. No tomes atajos aquí.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…