{"id":"21917672-56d3-4b84-bc88-378518fcaf39","shortId":"eK8Ywe","kind":"skill","title":"neon-postgres","tagline":"Expert patterns for Neon serverless Postgres, branching, connection","description":"# Neon Postgres\n\nExpert patterns for Neon serverless Postgres, branching, connection pooling, and Prisma/Drizzle integration\n\n## Patterns\n\n### Prisma with Neon Connection\n\nConfigure Prisma for Neon with connection pooling.\n\nUse two connection strings:\n- DATABASE_URL: Pooled connection for Prisma Client\n- DIRECT_URL: Direct connection for Prisma Migrate\n\nThe pooled connection uses PgBouncer for up to 10K connections.\nDirect connection required for migrations (DDL operations).\n\n### Code_example\n\n# .env\n# Pooled connection for application queries\nDATABASE_URL=\"postgres://user:password@ep-xxx-pooler.us-east-2.aws.neon.tech/neondb?sslmode=require\"\n# Direct connection for migrations\nDIRECT_URL=\"postgres://user:password@ep-xxx.us-east-2.aws.neon.tech/neondb?sslmode=require\"\n\n// prisma/schema.prisma\ngenerator client {\n  provider = \"prisma-client-js\"\n}\n\ndatasource db {\n  provider  = \"postgresql\"\n  url       = env(\"DATABASE_URL\")\n  directUrl = env(\"DIRECT_URL\")\n}\n\nmodel User {\n  id        String   @id @default(cuid())\n  email     String   @unique\n  name      String?\n  createdAt DateTime @default(now())\n  updatedAt DateTime @updatedAt\n}\n\n// lib/prisma.ts\nimport { PrismaClient } from '@prisma/client';\n\nconst globalForPrisma = globalThis as unknown as {\n  prisma: PrismaClient | undefined;\n};\n\nexport const prisma = globalForPrisma.prisma ?? new PrismaClient({\n  log: process.env.NODE_ENV === 'development'\n    ? ['query', 'error', 'warn']\n    : ['error'],\n});\n\nif (process.env.NODE_ENV !== 'production') {\n  globalForPrisma.prisma = prisma;\n}\n\n// Run migrations\n// Uses DIRECT_URL automatically\nnpx prisma migrate dev\nnpx prisma migrate deploy\n\n### Anti_patterns\n\n- Pattern: Using pooled connection for migrations | Why: DDL operations fail through PgBouncer | Fix: Set directUrl in schema.prisma\n- Pattern: Not using connection pooling | Why: Serverless functions exhaust connection limits | Fix: Use -pooler endpoint in DATABASE_URL\n\n### References\n\n- https://neon.com/docs/guides/prisma\n- https://www.prisma.io/docs/orm/overview/databases/neon\n\n### Drizzle with Neon Serverless Driver\n\nUse Drizzle ORM with Neon's serverless HTTP driver for\nedge/serverless environments.\n\nTwo driver options:\n- neon-http: Single queries over HTTP (fastest for one-off queries)\n- neon-serverless: WebSocket for transactions and sessions\n\n### Code_example\n\n# Install dependencies\nnpm install drizzle-orm @neondatabase/serverless\nnpm install -D drizzle-kit\n\n// lib/db/schema.ts\nimport { pgTable, serial, text, timestamp } from 'drizzle-orm/pg-core';\n\nexport const users = pgTable('users', {\n  id: serial('id').primaryKey(),\n  email: text('email').notNull().unique(),\n  name: text('name'),\n  createdAt: timestamp('created_at').defaultNow().notNull(),\n  updatedAt: timestamp('updated_at').defaultNow().notNull(),\n});\n\n// lib/db/index.ts (for serverless - HTTP driver)\nimport { neon } from '@neondatabase/serverless';\nimport { drizzle } from 'drizzle-orm/neon-http';\nimport * as schema from './schema';\n\nconst sql = neon(process.env.DATABASE_URL!);\nexport const db = drizzle(sql, { schema });\n\n// Usage in API route\nimport { db } from '@/lib/db';\nimport { users } from '@/lib/db/schema';\n\nexport async function GET() {\n  const allUsers = await db.select().from(users);\n  return Response.json(allUsers);\n}\n\n// lib/db/index.ts (for WebSocket - transactions)\nimport { Pool } from '@neondatabase/serverless';\nimport { drizzle } from 'drizzle-orm/neon-serverless';\nimport * as schema from './schema';\n\nconst pool = new Pool({ connectionString: process.env.DATABASE_URL });\nexport const db = drizzle(pool, { schema });\n\n// With transactions\nawait db.transaction(async (tx) => {\n  await tx.insert(users).values({ email: 'test@example.com' });\n  await tx.update(users).set({ name: 'Updated' });\n});\n\n// drizzle.config.ts\nimport { defineConfig } from 'drizzle-kit';\n\nexport default defineConfig({\n  schema: './lib/db/schema.ts',\n  out: './drizzle',\n  dialect: 'postgresql',\n  dbCredentials: {\n    url: process.env.DATABASE_URL!,\n  },\n});\n\n// Run migrations\nnpx drizzle-kit generate\nnpx drizzle-kit migrate\n\n### Anti_patterns\n\n- Pattern: Using pg driver in serverless | Why: TCP connections don't work in all edge environments | Fix: Use @neondatabase/serverless driver\n- Pattern: HTTP driver for transactions | Why: HTTP driver doesn't support transactions | Fix: Use WebSocket driver (Pool) for transactions\n\n### References\n\n- https://neon.com/docs/guides/drizzle\n- https://orm.drizzle.team/docs/connect-neon\n\n### Connection Pooling with PgBouncer\n\nNeon provides built-in connection pooling via PgBouncer.\n\nKey limits:\n- Up to 10,000 concurrent connections to pooler\n- Connections still consume underlying Postgres connections\n- 7 connections reserved for Neon superuser\n\nUse pooled endpoint for application, direct for migrations.\n\n### Code_example\n\n# Connection string formats\n\n# Pooled connection (for application)\n# Note: -pooler in hostname\npostgres://user:pass@ep-cool-name-pooler.us-east-2.aws.neon.tech/neondb\n\n# Direct connection (for migrations)\n# Note: No -pooler\npostgres://user:pass@ep-cool-name.us-east-2.aws.neon.tech/neondb\n\n// Prisma with pooling\n// prisma/schema.prisma\ndatasource db {\n  provider  = \"postgresql\"\n  url       = env(\"DATABASE_URL\")      // Pooled\n  directUrl = env(\"DIRECT_URL\")        // Direct\n}\n\n// Connection pool settings for high-traffic\n// lib/prisma.ts\nimport { PrismaClient } from '@prisma/client';\n\nexport const prisma = new PrismaClient({\n  datasources: {\n    db: {\n      url: process.env.DATABASE_URL,\n    },\n  },\n  // Connection pool settings\n  // Adjust based on compute size\n});\n\n// For Drizzle with connection pool\nimport { Pool } from '@neondatabase/serverless';\n\nconst pool = new Pool({\n  connectionString: process.env.DATABASE_URL,\n  max: 10,  // Max connections in local pool\n  idleTimeoutMillis: 30000,\n  connectionTimeoutMillis: 10000,\n});\n\n// Compute size connection limits\n// 0.25 CU: 112 connections (105 available after reserved)\n// 0.5 CU: 225 connections\n// 1 CU: 450 connections\n// 2 CU: 901 connections\n// 4 CU: 1802 connections\n// 8 CU: 3604 connections\n\n### Anti_patterns\n\n- Pattern: Opening new connection per request | Why: Exhausts connection limits quickly | Fix: Use connection pooling, reuse connections\n- Pattern: High max pool size in serverless | Why: Many function instances = many pools = many connections | Fix: Keep local pool size low (5-10), rely on PgBouncer\n\n### References\n\n- https://neon.com/docs/connect/connection-pooling\n\n### Database Branching for Development\n\nCreate instant copies of your database for development,\ntesting, and preview environments.\n\nBranches share underlying storage (copy-on-write),\nmaking them instant and cost-effective.\n\n### Code_example\n\n# Create branch via Neon CLI\nneon branches create --name feature/new-feature --parent main\n\n# Create branch from specific point in time\nneon branches create --name debug/yesterday \\\n  --parent main \\\n  --timestamp \"2024-01-15T10:00:00Z\"\n\n# List branches\nneon branches list\n\n# Get connection string for branch\nneon connection-string feature/new-feature\n\n# Delete branch when done\nneon branches delete feature/new-feature\n\n// In CI/CD (GitHub Actions)\n// .github/workflows/preview.yml\nname: Preview Environment\non:\n  pull_request:\n    types: [opened, synchronize]\n\njobs:\n  create-branch:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: neondatabase/create-branch-action@v5\n        id: create-branch\n        with:\n          project_id: ${{ secrets.NEON_PROJECT_ID }}\n          branch_name: preview/pr-${{ github.event.pull_request.number }}\n          api_key: ${{ secrets.NEON_API_KEY }}\n          username: ${{ secrets.NEON_ROLE_NAME }}\n\n      - name: Run migrations\n        env:\n          DATABASE_URL: ${{ steps.create-branch.outputs.db_url_with_pooler }}\n        run: npx prisma migrate deploy\n\n      - name: Deploy to Vercel\n        env:\n          DATABASE_URL: ${{ steps.create-branch.outputs.db_url_with_pooler }}\n        run: vercel deploy --prebuilt\n\n// Cleanup on PR close\non:\n  pull_request:\n    types: [closed]\n\njobs:\n  delete-branch:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: neondatabase/delete-branch-action@v3\n        with:\n          project_id: ${{ secrets.NEON_PROJECT_ID }}\n          branch: preview/pr-${{ github.event.pull_request.number }}\n          api_key: ${{ secrets.NEON_API_KEY }}\n\n### Anti_patterns\n\n- Pattern: Sharing production database for development | Why: Risk of data corruption, no isolation | Fix: Create development branches from production\n- Pattern: Not cleaning up old branches | Why: Accumulates storage and clutter | Fix: Auto-delete branches on PR close\n\n### References\n\n- https://neon.com/blog/branching-with-preview-environments\n- https://github.com/neondatabase/create-branch-action\n\n### Vercel Preview Environment Integration\n\nAutomatically create database branches for Vercel preview\ndeployments. Each PR gets its own isolated database.\n\nTwo integration options:\n- Vercel-Managed: Billing in Vercel, auto-setup\n- Neon-Managed: Billing in Neon, more control\n\n### Code_example\n\n# Vercel-Managed Integration\n# 1. Go to Vercel Dashboard > Storage > Create Database\n# 2. Select Neon Postgres\n# 3. Enable \"Create a branch for each preview deployment\"\n# 4. Environment variables automatically injected\n\n# Neon-Managed Integration\n# 1. Install from Neon Dashboard > Integrations > Vercel\n# 2. Select Vercel project to connect\n# 3. Enable \"Create a branch for each preview deployment\"\n# 4. Optionally enable auto-delete on branch delete\n\n// vercel.json - Add migration to build\n{\n  \"buildCommand\": \"prisma migrate deploy && next build\",\n  \"framework\": \"nextjs\"\n}\n\n// Or in package.json\n{\n  \"scripts\": {\n    \"vercel-build\": \"prisma generate && prisma migrate deploy && next build\"\n  }\n}\n\n// Environment variables injected by integration\n// DATABASE_URL - Pooled connection for preview branch\n// DATABASE_URL_UNPOOLED - Direct connection for migrations\n// PGHOST, PGUSER, PGDATABASE, PGPASSWORD - Individual vars\n\n// Prisma schema for Vercel integration\ndatasource db {\n  provider  = \"postgresql\"\n  url       = env(\"DATABASE_URL\")\n  directUrl = env(\"DATABASE_URL_UNPOOLED\")  // Vercel variable\n}\n\n// For Drizzle in Next.js on Vercel\nimport { neon } from '@neondatabase/serverless';\nimport { drizzle } from 'drizzle-orm/neon-http';\n\n// Use pooled URL for queries\nconst sql = neon(process.env.DATABASE_URL!);\nexport const db = drizzle(sql);\n\n### Anti_patterns\n\n- Pattern: Same database for all previews | Why: Previews interfere with each other | Fix: Enable branch-per-preview in integration\n- Pattern: Not running migrations on preview | Why: Schema mismatch between code and database | Fix: Add migrate command to build step\n\n### References\n\n- https://neon.com/docs/guides/vercel-managed-integration\n- https://neon.com/docs/guides/neon-managed-vercel-integration\n\n### Autoscaling and Cold Start Management\n\nNeon autoscales compute resources and scales to zero.\n\nCold start latency: 500ms - few seconds when waking from idle.\nProduction recommendation: Disable scale-to-zero, set minimum compute.\n\n### Code_example\n\n# Neon Console settings for production\n# Project Settings > Compute > Default compute size\n# - Set minimum to 0.5 CU or higher\n# - Disable \"Suspend compute after inactivity\"\n\n// Handle cold starts in application\n// lib/db-with-retry.ts\nimport { prisma } from './prisma';\n\nconst MAX_RETRIES = 3;\nconst RETRY_DELAY = 1000;\n\nexport async function queryWithRetry<T>(\n  query: () => Promise<T>\n): Promise<T> {\n  let lastError: Error | undefined;\n\n  for (let attempt = 1; attempt <= MAX_RETRIES; attempt++) {\n    try {\n      return await query();\n    } catch (error) {\n      lastError = error as Error;\n\n      // Retry on connection errors (cold start)\n      if (error.code === 'P1001' || error.code === 'P1002') {\n        console.log(`Retry attempt ${attempt}/${MAX_RETRIES}`);\n        await new Promise(r => setTimeout(r, RETRY_DELAY * attempt));\n        continue;\n      }\n\n      throw error;\n    }\n  }\n\n  throw lastError;\n}\n\n// Usage\nconst users = await queryWithRetry(() =>\n  prisma.user.findMany()\n);\n\n// Reduce cold start latency with SSL direct negotiation\n# PostgreSQL 17+ connection string\npostgres://user:pass@ep-xxx-pooler.aws.neon.tech/db?sslmode=require&sslnegotiation=direct\n\n// Keep-alive for long-running apps\n// lib/db-keepalive.ts\nimport { prisma } from './prisma';\n\n// Ping database every 4 minutes to prevent suspend\nconst KEEPALIVE_INTERVAL = 4 * 60 * 1000;\n\nif (process.env.NEON_KEEPALIVE === 'true') {\n  setInterval(async () => {\n    try {\n      await prisma.$queryRaw`SELECT 1`;\n    } catch (error) {\n      console.error('Keepalive failed:', error);\n    }\n  }, KEEPALIVE_INTERVAL);\n}\n\n// Compute sizing recommendations\n// Development: 0.25 CU, scale-to-zero enabled\n// Staging: 0.5 CU, scale-to-zero enabled\n// Production: 1+ CU, scale-to-zero DISABLED\n// High-traffic: 2-4 CU minimum, autoscaling enabled\n\n### Anti_patterns\n\n- Pattern: Scale-to-zero in production | Why: Cold starts add 500ms+ latency to first request | Fix: Disable scale-to-zero for production branch\n- Pattern: No retry logic for cold starts | Why: First connection after idle may timeout | Fix: Add retry with exponential backoff\n\n### References\n\n- https://neon.com/blog/scaling-serverless-postgres\n- https://neon.com/docs/connect/connection-latency\n\n## Sharp Edges\n\n### Cold Start Latency After Scale-to-Zero\n\nSeverity: HIGH\n\n### Using Pooled Connection for Migrations\n\nSeverity: HIGH\n\n### Connection Pool Exhaustion in Serverless\n\nSeverity: HIGH\n\n### PgBouncer Feature Limitations\n\nSeverity: MEDIUM\n\n### Branch Storage Accumulation\n\nSeverity: MEDIUM\n\n### Reserved Connections Reduce Available Pool\n\nSeverity: LOW\n\n### HTTP Driver Doesn't Support Transactions\n\nSeverity: MEDIUM\n\n### Deleting Parent Branch Affects Children\n\nSeverity: HIGH\n\n### Schema Drift Between Branches\n\nSeverity: MEDIUM\n\n## Validation Checks\n\n### Direct Database URL in Client Code\n\nSeverity: ERROR\n\nDirect database URLs should never be exposed to client\n\nMessage: Direct URL exposed to client. Only pooled URLs for server-side use.\n\n### Hardcoded Database Connection String\n\nSeverity: ERROR\n\nConnection strings should use environment variables\n\nMessage: Hardcoded connection string. Use environment variables.\n\n### Missing SSL Mode in Connection String\n\nSeverity: WARNING\n\nNeon requires SSL connections\n\nMessage: Missing sslmode=require. Add to connection string.\n\n### Prisma Missing directUrl for Migrations\n\nSeverity: ERROR\n\nPrisma needs directUrl for migrations through PgBouncer\n\nMessage: Using pooled URL without directUrl. Migrations will fail.\n\n### Prisma directUrl Points to Pooler\n\nSeverity: ERROR\n\ndirectUrl should be non-pooled connection\n\nMessage: directUrl points to pooler. Use non-pooled endpoint for migrations.\n\n### High Pool Size in Serverless Function\n\nSeverity: WARNING\n\nHigh pool sizes exhaust connections with many function instances\n\nMessage: Pool size too high for serverless. Use max: 5-10.\n\n### Creating New Client Per Request\n\nSeverity: WARNING\n\nCreating new clients per request wastes connections\n\nMessage: Creating client per request. Use connection pool or neon() driver.\n\n### Branch Creation Without Cleanup Strategy\n\nSeverity: WARNING\n\nBranches should have cleanup automation\n\nMessage: Creating branch without cleanup. Add delete-branch-action to PR close.\n\n### Scale-to-Zero Enabled on Production\n\nSeverity: WARNING\n\nScale-to-zero adds latency in production\n\nMessage: Scale-to-zero on production. Disable for low-latency.\n\n### HTTP Driver Used for Transactions\n\nSeverity: ERROR\n\nneon() HTTP driver doesn't support transactions\n\nMessage: HTTP driver with transaction. Use Pool from @neondatabase/serverless.\n\n## Collaboration\n\n### Delegation Triggers\n\n- user needs authentication -> clerk-auth (User table with clerkId column)\n- user needs caching -> redis-specialist (Query caching, session storage)\n- user needs search -> algolia-search (Full-text search beyond Postgres capabilities)\n- user needs analytics -> segment-cdp (Track database events, user actions)\n- user needs deployment -> vercel-deployment (Environment variables, preview databases)\n\n## When to Use\n- User mentions or implies: neon database\n- User mentions or implies: serverless postgres\n- User mentions or implies: database branching\n- User mentions or implies: neon postgres\n- User mentions or implies: postgres serverless\n- User mentions or implies: connection pooling\n- User mentions or implies: preview environments\n- User mentions or implies: database per preview\n\n## Limitations\n- Use this skill only when the task clearly matches the scope described above.\n- Do not treat the output as a substitute for environment-specific validation, testing, or expert review.\n- Stop and ask for clarification if required inputs, permissions, safety boundaries, or success criteria are missing.","tags":["neon","postgres","antigravity","awesome","skills","sickn33","agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows"],"capabilities":["skill","source-sickn33","skill-neon-postgres","topic-agent-skills","topic-agentic-skills","topic-ai-agent-skills","topic-ai-agents","topic-ai-coding","topic-ai-workflows","topic-antigravity","topic-antigravity-skills","topic-claude-code","topic-claude-code-skills","topic-codex-cli","topic-codex-skills"],"categories":["antigravity-awesome-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/sickn33/antigravity-awesome-skills/neon-postgres","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add sickn33/antigravity-awesome-skills","source_repo":"https://github.com/sickn33/antigravity-awesome-skills","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 34666 github stars · SKILL.md body (16,850 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-04-23T06:51:37.383Z","embedding":null,"createdAt":"2026-04-18T21:41:17.471Z","updatedAt":"2026-04-23T06:51:37.383Z","lastSeenAt":"2026-04-23T06:51:37.383Z","tsv":"'-01':801 '-10':732,1763 '-15':802 '-4':1492 '/blog/branching-with-preview-environments':990 '/blog/scaling-serverless-postgres':1547 '/db':1409 '/docs/connect-neon':514 '/docs/connect/connection-latency':1550 '/docs/connect/connection-pooling':739 '/docs/guides/drizzle':511 '/docs/guides/neon-managed-vercel-integration':1252 '/docs/guides/prisma':226 '/docs/guides/vercel-managed-integration':1249 '/docs/orm/overview/databases/neon':229 '/drizzle':448 '/lib/db':366 '/lib/db/schema':370 '/lib/db/schema.ts':446 '/neon-http':342,1188 '/neon-serverless':398 '/neondatabase/create-branch-action':993 '/neondb':85,96,573,583 '/pg-core':297 '/prisma':1320,1426 '/schema':347,403 '0.25':663,1465 '0.5':671,1302,1473 '00':804 '000':533 '00z':805 '1':675,1039,1069,1343,1452,1481 '10':532,649 '1000':1328,1440 '10000':658 '105':667 '10k':64 '112':665 '17':1404 '1802':685 '2':679,1047,1076,1491 '2024':800 '225':673 '3':1051,1082,1324 '30000':656 '3604':689 '4':683,1060,1091,1430,1438 '450':677 '5':731,1762 '500ms':1269,1510 '60':1439 '7':544 '8':687 '901':681 'accumul':975,1584 'action':832,1810,1913 'add':1101,1240,1509,1539,1683,1806,1827 'adjust':627 'affect':1605 'algolia':1894 'algolia-search':1893 'aliv':1416 'allus':376,383 'analyt':1905 'anti':186,467,691,947,1204,1497 'api':361,871,874,942,945 'app':1421 'applic':79,554,566,1315 'ask':2009 'async':372,421,1330,1446 'attempt':1342,1344,1347,1371,1372,1383 'auth':1874 'authent':1871 'auto':981,1023,1095 'auto-delet':980,1094 'auto-setup':1022 'autom':1800 'automat':177,998,1063 'autosc':1253,1495 'autoscal':1259 'avail':668,1590 'await':377,419,423,429,1350,1375,1392,1448 'backoff':1543 'base':628 'beyond':1900 'bill':1019,1028 'boundari':2017 'branch':10,20,741,756,774,779,786,793,807,809,815,822,826,846,860,867,922,939,965,973,983,1001,1055,1086,1098,1138,1221,1523,1582,1604,1612,1789,1796,1803,1809,1944 'branch-per-preview':1220 'build':1104,1110,1119,1126,1244 'buildcommand':1105 'built':522 'built-in':521 'cach':1882,1887 'capabl':1902 'catch':1352,1453 'cdp':1908 'check':1616 'children':1606 'ci/cd':830 'clarif':2011 'clean':970 'cleanup':910,1792,1799,1805 'clear':1984 'clerk':1873 'clerk-auth':1872 'clerkid':1878 'cli':777 'client':48,101,105,1621,1633,1639,1766,1773,1780 'close':913,918,986,1813 'clutter':978 'code':73,271,558,771,1033,1236,1286,1622 'cold':1255,1266,1312,1362,1396,1507,1529,1553 'collabor':1866 'column':1879 'command':1242 'comput':630,659,1260,1285,1295,1297,1308,1461 'concurr':534 'configur':31 'connect':11,21,30,36,40,45,52,58,65,67,77,89,191,208,214,477,515,524,535,538,543,545,560,564,575,602,624,635,651,661,666,674,678,682,686,690,696,701,706,709,724,812,818,1081,1135,1143,1360,1405,1533,1565,1570,1588,1650,1654,1662,1671,1678,1685,1723,1748,1777,1784,1961 'connection-str':817 'connectionstr':408,645 'connectiontimeoutmilli':657 'consol':1289 'console.error':1455 'console.log':1369 'const':143,153,299,348,354,375,404,412,615,641,1194,1200,1321,1325,1390,1435 'consum':540 'continu':1384 'control':1032 'copi':746,761 'copy-on-writ':760 'corrupt':959 'cost':769 'cost-effect':768 'creat':317,744,773,780,785,794,845,859,963,999,1045,1053,1084,1764,1771,1779,1802 'create-branch':844,858 'createdat':131,315 'creation':1790 'criteria':2020 'cu':664,672,676,680,684,688,1303,1466,1474,1482,1493 'cuid':125 'd':283 'dashboard':1043,1073 'data':958 'databas':42,81,113,221,594,740,749,884,900,952,1000,1012,1046,1132,1139,1163,1167,1208,1238,1428,1618,1626,1649,1910,1923,1932,1943,1973 'datasourc':107,588,619,1157 'datetim':132,136 'db':108,355,364,413,589,620,1158,1201 'db.select':378 'db.transaction':420 'dbcredenti':451 'ddl':71,195 'debug/yesterday':796 'default':124,133,443,1296 'defaultnow':319,325 'defineconfig':437,444 'delay':1327,1382 'deleg':1867 'delet':821,827,921,982,1096,1099,1602,1808 'delete-branch':920 'delete-branch-act':1807 'depend':274 'deploy':185,894,896,908,1005,1059,1090,1108,1124,1916,1919 'describ':1988 'dev':181 'develop':161,743,751,954,964,1464 'dialect':449 'direct':49,51,66,88,92,117,175,555,574,599,601,1142,1401,1413,1617,1625,1635 'directurl':115,202,597,1165,1689,1696,1706,1711,1717,1725 'disabl':1278,1306,1487,1516,1838 'doesn':497,1596,1853 'done':824 'drift':1610 'driver':234,243,248,331,472,488,491,496,504,1595,1788,1844,1852,1859 'drizzl':230,236,278,285,295,337,340,356,393,396,414,440,459,464,633,1173,1183,1186,1202 'drizzle-kit':284,439,458,463 'drizzle-orm':277,294,339,395,1185 'drizzle.config.ts':435 'edg':483,1552 'edge/serverless':245 'effect':770 'email':126,307,309,427 'enabl':1052,1083,1093,1219,1471,1479,1496,1818 'endpoint':219,552,1733 'env':75,112,116,160,168,593,598,883,899,1162,1166 'environ':246,484,755,836,996,1061,1127,1658,1665,1920,1968,2000 'environment-specif':1999 'error':163,165,1338,1353,1355,1357,1361,1386,1454,1458,1624,1653,1693,1716,1849 'error.code':1365,1367 'event':1911 'everi':1429 'exampl':74,272,559,772,1034,1287 'exhaust':213,700,1572,1747 'expert':4,14,2005 'exponenti':1542 'export':152,298,353,371,411,442,614,1199,1329 'expos':1631,1637 'fail':197,1457,1709 'fastest':257 'featur':1578 'feature/new-feature':782,820,828 'first':1513,1532 'fix':200,216,485,501,704,725,962,979,1218,1239,1515,1538 'format':562 'framework':1111 'full':1897 'full-text':1896 'function':212,373,719,1331,1741,1751 'generat':100,461,1121 'get':374,811,1008 'github':831 'github.com':992 'github.com/neondatabase/create-branch-action':991 'github.event.pull_request.number':870,941 'github/workflows/preview.yml':833 'globalforprisma':144 'globalforprisma.prisma':155,170 'globalthi':145 'go':1040 'handl':1311 'hardcod':1648,1661 'high':607,711,1489,1562,1569,1576,1608,1736,1744,1757 'high-traff':606,1488 'higher':1305 'hostnam':570 'http':242,252,256,330,490,495,1594,1843,1851,1858 'id':121,123,303,305,857,863,866,935,938 'idl':1275,1535 'idletimeoutmilli':655 'impli':1930,1936,1942,1948,1954,1960,1966,1972 'import':139,288,332,336,343,363,367,388,392,399,436,610,637,1178,1182,1317,1423 'inact':1310 'individu':1150 'inject':1064,1129 'input':2014 'instal':273,276,282,1070 'instanc':720,1752 'instant':745,766 'integr':25,997,1014,1038,1068,1074,1131,1156,1225 'interfer':1214 'interv':1437,1460 'isol':961,1011 'job':843,919 'js':106 'keep':726,1415 'keep-al':1414 'keepal':1436,1443,1456,1459 'key':528,872,875,943,946 'kit':286,441,460,465 'lasterror':1337,1354,1388 'latenc':1268,1398,1511,1555,1828,1842 'latest':852,928 'let':1336,1341 'lib/db-keepalive.ts':1422 'lib/db-with-retry.ts':1316 'lib/db/index.ts':327,384 'lib/db/schema.ts':287 'lib/prisma.ts':138,609 'limit':215,529,662,702,1579,1976 'list':806,810 'local':653,727 'log':158 'logic':1527 'long':1419 'long-run':1418 'low':730,1593,1841 'low-lat':1840 'main':784,798 'make':764 'manag':1018,1027,1037,1067,1257 'mani':718,721,723,1750 'match':1985 'max':648,650,712,1322,1345,1373,1761 'may':1536 'medium':1581,1586,1601,1614 'mention':1928,1934,1940,1946,1952,1958,1964,1970 'messag':1634,1660,1679,1701,1724,1753,1778,1801,1831,1857 'migrat':55,70,91,173,180,184,193,456,466,557,577,882,893,1102,1107,1123,1145,1229,1241,1567,1691,1698,1707,1735 'minimum':1284,1300,1494 'minut':1431 'mismatch':1234 'miss':1667,1680,1688,2022 'mode':1669 'model':119 'name':129,312,314,433,781,795,834,868,879,880,895 'need':1695,1870,1881,1891,1904,1915 'negoti':1402 'neon':2,7,12,17,29,34,232,239,251,264,333,350,519,548,776,778,792,808,816,825,1026,1030,1049,1066,1072,1179,1196,1258,1288,1675,1787,1850,1931,1949 'neon-http':250 'neon-manag':1025,1065 'neon-postgr':1 'neon-serverless':263 'neon.com':225,510,738,989,1248,1251,1546,1549 'neon.com/blog/branching-with-preview-environments':988 'neon.com/blog/scaling-serverless-postgres':1545 'neon.com/docs/connect/connection-latency':1548 'neon.com/docs/connect/connection-pooling':737 'neon.com/docs/guides/drizzle':509 'neon.com/docs/guides/neon-managed-vercel-integration':1250 'neon.com/docs/guides/prisma':224 'neon.com/docs/guides/vercel-managed-integration':1247 'neondatabase/create-branch-action':855 'neondatabase/delete-branch-action':931 'neondatabase/serverless':280,335,391,487,640,1181,1865 'never':1629 'new':156,406,617,643,695,1376,1765,1772 'next':1109,1125 'next.js':1175 'nextj':1112 'non':1721,1731 'non-pool':1720,1730 'note':567,578 'notnul':310,320,326 'npm':275,281 'npx':178,182,457,462,891 'old':972 'one':260 'one-off':259 'open':694,841 'oper':72,196 'option':249,1015,1092 'orm':237,279,296,341,397,1187 'orm.drizzle.team':513 'orm.drizzle.team/docs/connect-neon':512 'output':1994 'p1001':1366 'p1002':1368 'package.json':1115 'parent':783,797,1603 'pass@ep-cool-name-pooler.us-east-2.aws.neon.tech':572 'pass@ep-cool-name.us-east-2.aws.neon.tech':582 'pass@ep-xxx-pooler.aws.neon.tech':1408 'password@ep-xxx-pooler.us-east-2.aws.neon.tech':84 'password@ep-xxx.us-east-2.aws.neon.tech':95 'pattern':5,15,26,187,188,205,468,469,489,692,693,710,948,949,968,1205,1206,1226,1498,1499,1524 'per':697,1222,1767,1774,1781,1974 'permiss':2015 'pg':471 'pgbouncer':60,199,518,527,735,1577,1700 'pgdatabas':1148 'pghost':1146 'pgpassword':1149 'pgtabl':289,301 'pguser':1147 'ping':1427 'point':789,1712,1726 'pool':22,37,44,57,76,190,209,389,405,407,415,505,516,525,551,563,586,596,603,625,636,638,642,644,654,707,713,722,728,1134,1190,1564,1571,1591,1641,1703,1722,1732,1737,1745,1754,1785,1863,1962 'pooler':218,537,568,580,889,905,1714,1728 'postgr':3,9,13,19,542,1050,1901,1938,1950,1955 'postgresql':110,450,591,1160,1403 'pr':912,985,1007,1812 'prebuilt':909 'prevent':1433 'preview':754,835,995,1004,1058,1089,1137,1211,1213,1223,1231,1922,1967,1975 'preview/pr-':869,940 'primarykey':306 'prisma':27,32,47,54,104,149,154,171,179,183,584,616,892,1106,1120,1122,1152,1318,1424,1449,1687,1694,1710 'prisma-client-j':103 'prisma.user.findmany':1394 'prisma/client':142,613 'prisma/drizzle':24 'prisma/schema.prisma':99,587 'prismacli':140,150,157,611,618 'process.env.database':351,409,453,622,646,1197 'process.env.neon':1442 'process.env.node':159,167 'product':169,951,967,1276,1292,1480,1505,1522,1820,1830,1837 'project':862,865,934,937,1079,1293 'promis':1334,1335,1377 'provid':102,109,520,590,1159 'pull':838,915 'queri':80,162,254,262,1193,1333,1351,1886 'queryraw':1450 'querywithretri':1332,1393 'quick':703 'r':1378,1380 'recommend':1277,1463 'redi':1884 'redis-specialist':1883 'reduc':1395,1589 'refer':223,508,736,987,1246,1544 'reli':733 'request':698,839,916,1514,1768,1775,1782 'requir':68,87,98,1411,1676,1682,2013 'reserv':546,670,1587 'resourc':1261 'response.json':382 'retri':1323,1326,1346,1358,1370,1374,1381,1526,1540 'return':381,1349 'reus':708 'review':2006 'risk':956 'role':878 'rout':362 'run':172,455,848,881,890,906,924,1228,1420 'runs-on':847,923 'safeti':2016 'scale':1263,1280,1468,1476,1484,1501,1518,1558,1815,1824,1833 'scale-to-zero':1279,1467,1475,1483,1500,1517,1557,1814,1823,1832 'schema':345,358,401,416,445,1153,1233,1609 'schema.prisma':204 'scope':1987 'script':1116 'search':1892,1895,1899 'second':1271 'secrets.neon':864,873,877,936,944 'segment':1907 'segment-cdp':1906 'select':1048,1077,1451 'serial':290,304 'server':1645 'server-sid':1644 'serverless':8,18,211,233,241,265,329,474,716,1574,1740,1759,1937,1956 'session':270,1888 'set':201,432,604,626,1283,1290,1294,1299 'setinterv':1445 'settimeout':1379 'setup':1024 'sever':1561,1568,1575,1580,1585,1592,1600,1607,1613,1623,1652,1673,1692,1715,1742,1769,1794,1821,1848 'share':757,950 'sharp':1551 'side':1646 'singl':253 'size':631,660,714,729,1298,1462,1738,1746,1755 'skill':1979 'skill-neon-postgres' 'source-sickn33' 'specialist':1885 'specif':788,2001 'sql':349,357,1195,1203 'ssl':1400,1668,1677 'sslmode':86,97,1410,1681 'sslnegoti':1412 'stage':1472 'start':1256,1267,1313,1363,1397,1508,1530,1554 'step':853,929,1245 'steps.create-branch.outputs.db':886,902 'still':539 'stop':2007 'storag':759,976,1044,1583,1889 'strategi':1793 'string':41,122,127,130,561,813,819,1406,1651,1655,1663,1672,1686 'substitut':1997 'success':2019 'superus':549 'support':499,1598,1855 'suspend':1307,1434 'synchron':842 't10':803 'tabl':1876 'task':1983 'tcp':476 'test':752,2003 'test@example.com':428 'text':291,308,313,1898 'throw':1385,1387 'time':791 'timeout':1537 'timestamp':292,316,322,799 'topic-agent-skills' 'topic-agentic-skills' 'topic-ai-agent-skills' 'topic-ai-agents' 'topic-ai-coding' 'topic-ai-workflows' 'topic-antigravity' 'topic-antigravity-skills' 'topic-claude-code' 'topic-claude-code-skills' 'topic-codex-cli' 'topic-codex-skills' 'track':1909 'traffic':608,1490 'transact':268,387,418,493,500,507,1599,1847,1856,1861 'treat':1992 'tri':1348,1447 'trigger':1868 'true':1444 'two':39,247,1013 'tx':422 'tx.insert':424 'tx.update':430 'type':840,917 'ubuntu':851,927 'ubuntu-latest':850,926 'undefin':151,1339 'under':541,758 'uniqu':128,311 'unknown':147 'unpool':1141,1169 'updat':323,434 'updatedat':135,137,321 'url':43,50,82,93,111,114,118,176,222,352,410,452,454,592,595,600,621,623,647,885,887,901,903,1133,1140,1161,1164,1168,1191,1198,1619,1627,1636,1642,1704 'usag':359,1389 'use':38,59,174,189,207,217,235,470,486,502,550,705,854,930,1189,1563,1647,1657,1664,1702,1729,1760,1783,1845,1862,1926,1977 'user':83,94,120,300,302,368,380,425,431,571,581,1391,1407,1869,1875,1880,1890,1903,1912,1914,1927,1933,1939,1945,1951,1957,1963,1969 'usernam':876 'v3':932 'v5':856 'valid':1615,2002 'valu':426 'var':1151 'variabl':1062,1128,1171,1659,1666,1921 'vercel':898,907,994,1003,1017,1021,1036,1042,1075,1078,1118,1155,1170,1177,1918 'vercel-build':1117 'vercel-deploy':1917 'vercel-manag':1016,1035 'vercel.json':1100 'via':526,775 'wake':1273 'warn':164,1674,1743,1770,1795,1822 'wast':1776 'websocket':266,386,503 'without':1705,1791,1804 'work':480 'write':763 'www.prisma.io':228 'www.prisma.io/docs/orm/overview/databases/neon':227 'zero':1265,1282,1470,1478,1486,1503,1520,1560,1817,1826,1835","prices":[{"id":"3de8c12f-b208-4f93-9695-0643656fb819","listingId":"21917672-56d3-4b84-bc88-378518fcaf39","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"sickn33","category":"antigravity-awesome-skills","install_from":"skills.sh"},"createdAt":"2026-04-18T21:41:17.471Z"}],"sources":[{"listingId":"21917672-56d3-4b84-bc88-378518fcaf39","source":"github","sourceId":"sickn33/antigravity-awesome-skills/neon-postgres","sourceUrl":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/neon-postgres","isPrimary":false,"firstSeenAt":"2026-04-18T21:41:17.471Z","lastSeenAt":"2026-04-23T06:51:37.383Z"}],"details":{"listingId":"21917672-56d3-4b84-bc88-378518fcaf39","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"sickn33","slug":"neon-postgres","github":{"repo":"sickn33/antigravity-awesome-skills","stars":34666,"topics":["agent-skills","agentic-skills","ai-agent-skills","ai-agents","ai-coding","ai-workflows","antigravity","antigravity-skills","claude-code","claude-code-skills","codex-cli","codex-skills","cursor","cursor-skills","developer-tools","gemini-cli","gemini-skills","kiro","mcp","skill-library"],"license":"mit","html_url":"https://github.com/sickn33/antigravity-awesome-skills","pushed_at":"2026-04-23T06:41:03Z","description":"Installable GitHub library of 1,400+ agentic skills for Claude Code, Cursor, Codex CLI, Gemini CLI, Antigravity, and more. Includes installer CLI, bundles, workflows, and official/community skill collections.","skill_md_sha":"a3e3f53f68f1d2a4695990c303a0f53872b53238","skill_md_path":"skills/neon-postgres/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/sickn33/antigravity-awesome-skills/tree/main/skills/neon-postgres"},"layout":"multi","source":"github","category":"antigravity-awesome-skills","frontmatter":{"name":"neon-postgres","description":"Expert patterns for Neon serverless Postgres, branching, connection"},"skills_sh_url":"https://skills.sh/sickn33/antigravity-awesome-skills/neon-postgres"},"updatedAt":"2026-04-23T06:51:37.383Z"}}