Claude-skill-registry backend_safeguard

Supabase schema validation, RLS enforcement, and API security best practices.

install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/backend-safeguard" ~/.claude/skills/majiayu000-claude-skill-registry-backend-safeguard-653732 && rm -rf "$T"
manifest: skills/data/backend-safeguard/SKILL.md
source content

Backend Safeguard Protocol (Supabase + Vercel API)

1. Database Schema & Migration Safety

  • Migrations:
    • NEVER edit a previous migration. Always create a new one.
    • Migration files must be numbered/timestamped sequentially.
    • Destructive changes (DROP COLUMN) require explicit user confirmation.
  • Supabase Specifics:
    • Use
      pg_jsonschema
      (if available) or
      CHECK
      constraints for complex JSON data.
    • Indexes: Ensure Foreign Keys have indices if used in JOINs frequentyl.

2. RLS (Row Level Security) "Ironclad" Rules

  • Enablement:
    ALTER TABLE "table_name" ENABLE ROW LEVEL SECURITY;
    is MANDATORY.
  • Policies:
    • Must have separate policies for SELECT, INSERT, UPDATE, DELETE (unless absolutely identical).
    • auth.uid()
      MUST be checked for user-specific data.
    • service_role
      usage in client is FORBIDDEN.

3. API Design & Security

  • Input Validation (Zod):
    • ALL API routes must parse body/query with
      Zod
      .
    • strict()
      mode recommended to strip unknown fields.
  • Error Handling:
    • Return standardized error structure:
      { error: string, code: string, details?: any }
      .
    • NEVER leak Stack Traces to production response.
    • Use 4xx for client errors, 5xx for server errors.
  • Rate Limiting:
    • Ensure sensitive endpoints (auth, email) have rate limiting (Upstash/KV).

4. Code Structure (Vercel Functions)

  • Separation of Concerns:
    • api/xxx.ts
      -> Controller (Parse Req, Check Auth)
    • src/services/xxx.ts
      -> Business Logic
    • src/data/xxx.ts
      -> Database Logic (Supabase calls)
  • Secrets:
    • Check for
      process.env.XXX
      . NEVER hardcode strings.

5. Audit Checklist

  • Is RLS enabled on all touched tables?
  • Is
    Zod
    validation wrapping the request?
  • Is logging present for state changes?
  • Are we leaking sensitive user data in the response?