db-migrate

द्वारा sentry

ड्रिज़ल किट का उपयोग करके डेटाबेस माइग्रेशन बनाएं। तालिकाओं, कॉलमों या इंडेक्स को जोड़ने/संशोधित करते समय उपयोग करें। सुनिश्चित करता है कि schema.ts और माइग्रेशन सिंक में रहें।

npx skills add https://github.com/getsentry/abacus --skill db-migrate

Database Migration Skill

Create schema changes with proper migrations.

CRITICAL: Never Write Migrations By Hand

ALWAYS use drizzle-kit generate to create migrations. NEVER write SQL migration files manually.

Why this matters:

  • Drizzle tracks schema state via snapshot files in drizzle/meta/
  • Hand-written migrations don't update snapshots
  • This causes drizzle-kit generate to fail with confusing prompts about tables being "created or renamed"
  • It breaks the entire migration system for future changes

If you're tempted to write SQL by hand (e.g., for data migrations), create a separate script in scripts/ instead.

Before Starting

  1. Read current schema: src/lib/schema.ts
  2. Read recent migrations: drizzle/*.sql (last 2-3)
  3. Understand current state before making changes

Workflow

Step 1: Modify Schema First

Edit src/lib/schema.ts with your changes:

  • Add new tables with pgTable()
  • Add columns to existing tables
  • Add/modify indexes

Step 2: Generate Migration

Run Drizzle Kit to generate migration SQL:

pnpm drizzle-kit generate

This creates a new file in drizzle/ like 0011_descriptive_name.sql.

Step 3: Review Generated Migration

Read the generated migration and verify:

  • SQL looks correct
  • No destructive changes (DROP without intent)
  • Index names follow convention
  • Column types match schema.ts

Step 4: Test Locally (Optional - Be Careful!)

WARNING: Only test migrations locally if POSTGRES_URL points to a LOCAL database. If it points to production, skip this step - migrations will run automatically on Vercel deploy.

To check your database URL:

echo $POSTGRES_URL  # Should be localhost or local container

If local database is configured:

pnpm build  # Runs migrations automatically
pnpm cli stats  # Verify queries work

Step 5: Verify in PR

  • Migration SQL looks correct (review diff)
  • schema.ts and migration are in same commit
  • No IF NOT EXISTS clauses (signals potential drift)

Common Patterns

Adding a Column

// schema.ts
export const myTable = pgTable('my_table', {
  // existing columns...
  newColumn: varchar('new_column', { length: 255 }),
});

Adding an Index

export const myTable = pgTable('my_table', {
  // columns...
}, (table) => [
  index('idx_my_table_column').on(table.column),
]);

Adding a Table

export const newTable = pgTable('new_table', {
  id: serial('id').primaryKey(),
  // columns...
}, (table) => [
  // indexes...
]);

Anti-Patterns (NEVER Do This)

  • Writing migration SQL by hand - This breaks drizzle's snapshot tracking and causes future generate commands to fail. ALWAYS use drizzle-kit generate.
  • Using IF NOT EXISTS or IF EXISTS - These clauses signal you're writing SQL by hand. Generated migrations never include them.
  • Editing schema.ts without running drizzle-kit generate
  • Modifying existing migrations after they've been applied to prod
  • Adding data migrations to schema migration files (use separate scripts)

Checklist

Before committing:

  • schema.ts changes match generated migration
  • Migration tested locally with pnpm build (only if local DB configured)
  • No IF NOT EXISTS clauses (clean migration)
  • Both schema.ts and migration in same commit

sentry की और Skills

generate-frontend-forms
sentry
Sentry के नए फॉर्म सिस्टम का उपयोग करके फॉर्म बनाने के लिए मार्गदर्शिका। फॉर्म, फॉर्म फ़ील्ड, सत्यापन या ऑटो-सेव कार्यक्षमता लागू करते समय उपयोग करें।
official
sentry-snapshots-cocoa
sentry
Apple/Cocoa प्रोजेक्ट्स के लिए पूर्ण Sentry Snapshots सेटअप। जब "setup SnapshotPreviews", "setup Apple snapshot testing", "upload Apple snapshots to…" के लिए कहा जाए तो उपयोग करें।
official
architecture-review
sentry
स्टाफ-स्तरीय कोडबेस स्वास्थ्य समीक्षा। मोनोलिथिक मॉड्यूल, मूक विफलताएं, प्रकार सुरक्षा अंतराल, परीक्षण कवरेज छिद्र और एलएलएम-मित्रता मुद्दों का पता लगाता है।
official
linear-type-labeler
sentry
लीनियर इश्यूज को वर्गीकृत करता है और प्रत्येक इश्यू के शीर्षक और विवरण की सामग्री के आधार पर सेंट्री वर्कस्पेस की लेबल वर्गीकरण से एक टाइप लेबल लागू करता है।
official
sentry-flutter-sdk
sentry
Flutter और Dart के लिए पूर्ण Sentry SDK सेटअप। जब "Flutter में Sentry जोड़ें", "sentry_flutter इंस्टॉल करें", "Dart में Sentry सेटअप करें" या त्रुटि कॉन्फ़िगर करने के लिए कहा जाए तो इसका उपयोग करें…
official
sentry-svelte-sdk
sentry
Svelte और SvelteKit के लिए पूर्ण Sentry SDK सेटअप। जब "Svelte में Sentry जोड़ें", "SvelteKit में Sentry जोड़ें", "@sentry/sveltekit इंस्टॉल करें" या कॉन्फ़िगर करने के लिए कहा जाए तो उपयोग करें…
official
vercel-react-best-practices
sentry
React और Next.js प्रदर्शन अनुकूलन दिशानिर्देश Vercel Engineering से। इस कौशल का उपयोग React/Next.js को लिखने, समीक्षा करने या रीफैक्टर करते समय किया जाना चाहिए…
official
sentry-tanstack-start-sdk
sentry
TanStack Start React के लिए पूर्ण Sentry SDK सेटअप। जब "TanStack Start में Sentry जोड़ें", "@sentry/tanstackstart-react इंस्टॉल करें", या त्रुटि कॉन्फ़िगर करने के लिए कहा जाए तो उपयोग करें…
official