Neon Branching — Database Branching for Development
You are an expert in Neon's database branching, the feature that creates instant copy-on-write branches of your Postgres database. You help developers set up preview environments with real data, run CI tests against production schemas, test migrations safely, and implement database-per-PR workflows — creating database branches as fast as git branches with zero data copying using Neon's copy-on-write storage.
Best use case
Neon Branching — Database Branching for Development is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
You are an expert in Neon's database branching, the feature that creates instant copy-on-write branches of your Postgres database. You help developers set up preview environments with real data, run CI tests against production schemas, test migrations safely, and implement database-per-PR workflows — creating database branches as fast as git branches with zero data copying using Neon's copy-on-write storage.
Teams using Neon Branching — Database Branching for Development should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/neon-branching/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How Neon Branching — Database Branching for Development Compares
| Feature / Agent | Neon Branching — Database Branching for Development | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
You are an expert in Neon's database branching, the feature that creates instant copy-on-write branches of your Postgres database. You help developers set up preview environments with real data, run CI tests against production schemas, test migrations safely, and implement database-per-PR workflows — creating database branches as fast as git branches with zero data copying using Neon's copy-on-write storage.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
Cursor vs Codex for AI Workflows
Compare Cursor and Codex for AI coding workflows, repository assistance, debugging, refactoring, and reusable developer skills.
SKILL.md Source
# Neon Branching — Database Branching for Development
You are an expert in Neon's database branching, the feature that creates instant copy-on-write branches of your Postgres database. You help developers set up preview environments with real data, run CI tests against production schemas, test migrations safely, and implement database-per-PR workflows — creating database branches as fast as git branches with zero data copying using Neon's copy-on-write storage.
## Core Capabilities
### Branch Management
```bash
# Create branch from main (instant — copy-on-write, no data copy)
neonctl branches create --name preview/pr-42 --parent main
# Branch from specific point in time
neonctl branches create --name debug/incident-2026-03 \
--parent main \
--parent-timestamp "2026-03-10T14:30:00Z"
# Get connection string
neonctl connection-string preview/pr-42
# postgres://user:pass@ep-xyz.us-east-2.aws.neon.tech/mydb?sslmode=require
# List branches
neonctl branches list
# main (default, 2.3 GB)
# preview/pr-42 (from main, 0 bytes overhead)
# staging (from main, 12 MB diff)
# Delete when done
neonctl branches delete preview/pr-42
```
### CI/CD Integration
```yaml
# .github/workflows/preview.yml
name: Preview Environment
on: pull_request
jobs:
preview:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Create Neon branch
id: neon
uses: neondatabase/create-branch-action@v5
with:
project_id: ${{ secrets.NEON_PROJECT_ID }}
branch_name: preview/pr-${{ github.event.number }}
api_key: ${{ secrets.NEON_API_KEY }}
- name: Run migrations
env:
DATABASE_URL: ${{ steps.neon.outputs.db_url }}
run: npx drizzle-kit push
- name: Run tests
env:
DATABASE_URL: ${{ steps.neon.outputs.db_url }}
run: npm test
- name: Deploy preview
env:
DATABASE_URL: ${{ steps.neon.outputs.db_url }}
run: vercel deploy --env DATABASE_URL=$DATABASE_URL
- name: Comment PR
uses: actions/github-script@v7
with:
script: |
github.rest.issues.createComment({
owner: context.repo.owner,
repo: context.repo.repo,
issue_number: context.issue.number,
body: `🚀 Preview deployed!\n- App: ${previewUrl}\n- DB Branch: preview/pr-${context.issue.number}`
});
```
### API Usage
```typescript
import { createApiClient } from "@neondatabase/api-client";
const neon = createApiClient({ apiKey: process.env.NEON_API_KEY! });
// Create branch programmatically
async function createPreviewBranch(prNumber: number) {
const { data: branch } = await neon.createProjectBranch(projectId, {
branch: {
name: `preview/pr-${prNumber}`,
parent_id: mainBranchId,
},
endpoints: [{ type: "read_write" }],
});
// Get connection string
const { data: connectionUri } = await neon.getConnectionUri({
projectId,
branchId: branch.branch.id,
role_name: "neondb_owner",
});
return connectionUri.uri;
}
// Auto-cleanup: delete branches for merged/closed PRs
async function cleanupBranches() {
const { data } = await neon.listProjectBranches(projectId);
for (const branch of data.branches) {
if (branch.name.startsWith("preview/pr-")) {
const prNumber = branch.name.split("-").pop();
const prState = await getPRState(prNumber);
if (prState === "closed" || prState === "merged") {
await neon.deleteProjectBranch(projectId, branch.id);
}
}
}
}
```
## Installation
```bash
npm install -g neonctl
neonctl auth # Authenticate
# API client
npm install @neondatabase/api-client
```
## Best Practices
1. **Branch per PR** — Create database branch for each PR; test with real schema and data; delete on merge
2. **Instant creation** — Branches are copy-on-write; 2 TB database branches in <1 second, zero storage cost until writes
3. **Time travel** — Branch from a specific timestamp for debugging; inspect production state at incident time
4. **Migration testing** — Run migrations on branch before applying to main; catch errors safely
5. **CI integration** — Use GitHub Actions to auto-create/delete branches; fully automated preview environments
6. **Auto-cleanup** — Delete branches when PRs close; prevent branch sprawl and unnecessary compute costs
7. **Staging branch** — Keep a persistent staging branch; reset from main periodically
8. **Connection pooling** — Use Neon's built-in connection pooler for serverless (append `-pooler` to host)Related Skills
ros2-development
Comprehensive best practices, design patterns, and common pitfalls for ROS2 (Robot Operating System 2) development. Use this skill when building ROS2 nodes, packages, launch files, components, or debugging ROS2 systems. Trigger whenever the user mentions ROS2, colcon, rclpy, rclcpp, DDS, QoS, lifecycle nodes, managed nodes, ROS2 launch, ROS2 parameters, ROS2 actions, nav2, MoveIt2, micro-ROS, or any ROS2-era robotics middleware. Also trigger for ROS2 workspace setup, DDS tuning, intra-process communication, ROS2 security, or deploying ROS2 in production. Also trigger for colcon build issues, ament_cmake, ament_python, CMakeLists.txt for ROS2, package.xml dependencies, rosdep, workspace overlays, custom message generation, or ROS2 build troubleshooting. Covers Humble, Iron, Jazzy, and Rolling distributions.
ros1-development
Best practices, design patterns, and common pitfalls for ROS1 (Robot Operating System 1) development. Use this skill when building ROS1 nodes, packages, launch files, or debugging ROS1 systems. Trigger whenever the user mentions ROS1, catkin, rospy, roscpp, roslaunch, roscore, rostopic, tf, actionlib, message types, services, or any ROS1-era robotics middleware. Also trigger for migrating ROS1 code to ROS2, maintaining legacy ROS1 systems, or building ROS1-ROS2 bridges. Covers catkin workspaces, nodelets, dynamic reconfigure, pluginlib, and the full ROS1 ecosystem.
docker-ros2-development
Best practices for Docker-based ROS2 development including multi-stage Dockerfiles, docker-compose for multi-container robotic systems, DDS discovery across containers, GPU passthrough for perception, and dev-vs-deploy container patterns. Use this skill when containerizing ROS2 workspaces, setting up docker-compose for robot software stacks, debugging DDS communication between containers, configuring NVIDIA Container Toolkit for GPU workloads, forwarding X11/Wayland for rviz2 and GUI tools, or managing USB device passthrough for cameras and serial devices. Trigger whenever the user mentions Docker with ROS2, docker-compose for robots, Dockerfile for colcon workspaces, container networking for DDS, GPU containers for perception, devcontainer for ROS2, multi-stage builds for ROS2, or deploying ROS2 in containers. Also trigger for CI/CD with Docker-based ROS2 builds, CycloneDDS or FastDDS configuration in containers, shared memory in Docker, or X11 forwarding for rviz2. Covers Humble, Iron, Jazzy, and Rolling distributions across Ubuntu 22.04 and 24.04 base images.
apify-actor-development
Develop, debug, and deploy Apify Actors - serverless cloud programs for web scraping, automation, and data processing. Use when creating new Actors, modifying existing ones, or troubleshooting Actor code.
docker-development
Docker and container development agent skill and plugin for Dockerfile optimization, docker-compose orchestration, multi-stage builds, and container security hardening. Use when: user wants to optimize a Dockerfile, create or improve docker-compose configurations, implement multi-stage builds, audit container security, reduce image size, or follow container best practices. Covers build performance, layer caching, secret management, and production-ready container patterns.
database-designer
Use when the user asks to design database schemas, plan data migrations, optimize queries, choose between SQL and NoSQL, or model data relationships.
vue-development-guides
A collection of best practices and tips for developing applications using Vue.js. This skill MUST be apply when developing, refactoring or reviewing Vue.js or Nuxt projects.
database-schema-design
Design and optimize database schemas for SQL and NoSQL databases. Use when creating new databases, designing tables, defining relationships, indexing strategies, or database migrations. Handles PostgreSQL, MySQL, MongoDB, normalization, and performance optimization.
wordpress-woocommerce-development
WooCommerce store development workflow covering store setup, payment integration, shipping configuration, and customization.
wordpress-theme-development
WordPress theme development workflow covering theme architecture, template hierarchy, custom post types, block editor support, and responsive design.
wordpress-plugin-development
WordPress plugin development workflow covering plugin architecture, hooks, admin interfaces, REST API, and security best practices.
voice-ai-engine-development
Build real-time conversational AI voice engines using async worker pipelines, streaming transcription, LLM agents, and TTS synthesis with interrupt handling and multi-provider support