Claude Skills Guide

Claude Code with PlanetScale Database Workflow Guide

PlanetScale is a MySQL-compatible serverless database platform that offers powerful features like branching, schema changes, and horizontal scaling. When combined with Claude Code, you get an intelligent pair programming experience for database development. This guide walks you through setting up and optimizing your workflow.

Why Combine Claude Code with PlanetScale?

PlanetScale’s unique architecture provides database branching similar to git—but for your schema. This makes it perfect for development workflows where you need to experiment safely. Claude Code can help you:

The combination creates a powerful workflow where Claude handles the code generation while PlanetScale handles the database infrastructure.

Setting Up Your PlanetScale Connection

Before diving into workflows, you need to configure Claude Code to work with your PlanetScale database. The recommended approach uses environment variables for secure credential management.

Prerequisites

Ensure you have the following installed:

Configuring Environment Variables

Create a .env file in your project root:

# .env file (add to .gitignore)
DATABASE_URL="mysql://username:password@aws.connect.psdb.cloud/database-name?sslaccept=strict"

Never commit credentials to version control. Use a .gitignore pattern:

# .gitignore
.env
.env.local
*.local

Database Branching Workflow

PlanetScale’s standout feature is database branching. Each branch operates as an isolated development environment—perfect for trying new features without affecting production.

Creating a Development Branch

Use the PlanetScale CLI to create a branch for your current task:

pscale branch create my-app feature-user-auth
pscale connect my-app feature-user-auth --port 3310

This creates an isolated environment where you can safely experiment. When working with Claude Code, describe your intended schema and let it generate the appropriate migrations.

Claude-Assisted Schema Design

When designing a new feature schema, describe your requirements to Claude:

“I need a users table with email, password_hash, created_at, and updated_at fields. The email should be unique.”

Claude can generate the appropriate SQL or ORM schema:

CREATE TABLE users (
  id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
  email VARCHAR(255) NOT NULL UNIQUE,
  password_hash VARCHAR(255) NOT NULL,
  created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
  updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
);

For ORM-based projects, Claude can also generate Prisma or Drizzle schemas:

// Prisma schema example
model User {
  id           Int      @id @default(autoincrement())
  email        String   @unique
  passwordHash String
  createdAt    DateTime @default(now())
  updatedAt    DateTime @updatedAt
}

Migration Management Strategies

Effective migration management is crucial for team collaboration. Here are practical strategies when working with Claude Code.

Writing Safe Migrations

Always generate rollback-capable migrations. When Claude writes migrations, include both forward and backward operations:

-- Migration: add_user_preferences
-- Forward
ALTER TABLE users ADD COLUMN preferences JSON;

-- Backward (for rollback)
-- ALTER TABLE users DROP COLUMN preferences;

Reviewing Migration Impact

Before applying migrations to production, ask Claude to analyze potential impacts:

“Review this migration and identify any blocking operations for PlanetScale.”

Claude will check for unsupported operations like:

Connecting Your Application

Using the MySQL Protocol

PlanetScale exposes a MySQL-compatible interface. Connect using standard libraries:

// Using mysql2 in Node.js
import mysql from 'mysql2/promise';

const connection = await mysql.createConnection({
  uri: process.env.DATABASE_URL,
  ssl: {
    rejectUnauthorized: true
  }
});

const [rows] = await connection.execute(
  'SELECT * FROM users WHERE email = ?',
  [userEmail]
);

Handling Connection Pooling

For serverless environments, configure connection pooling appropriately:

import mysql from 'mysql2/promise';
import pool from 'mysql2/promise';

const pool = pool.createPool({
  uri: process.env.DATABASE_URL,
  waitForConnections: true,
  connectionLimit: 10,
  queueLimit: 0
});

Query Optimization with Claude

Claude can help optimize slow queries. Share your query and execution plan:

“This query takes 3 seconds. Analyze and optimize.”

Claude will examine the query structure and suggest improvements like adding appropriate indexes or restructuring the query.

Deployment Workflow

When you’re ready to deploy schema changes:

  1. Create a deploy request in PlanetScale dashboard
  2. Review the changes with your team
  3. Schedule the deployment during low-traffic periods
  4. Monitor application logs for any issues

Claude can generate checklist scripts for deployment:

#!/bin/bash
# deploy-checklist.sh

echo "=== Pre-deployment Checklist ==="
echo "1. Backup created? (PlanetScale handles this)"
echo "2. Migration reviewed by team?"
echo "3. Downtime window communicated?"
echo "4. Rollback plan documented?"

read -p "Continue with deploy? (y/n) " -n 1 -r
if [[ $REPLY =~ ^[Yy]$ ]]; then
  pscale deploy deploy-request create production
fi

Best Practices Summary

Combining Claude Code with PlanetScale gives you intelligent assistance throughout the database development lifecycle. From initial schema design to deployment and optimization, Claude helps accelerate your workflow while PlanetScale provides the infrastructure confidence you need.

Built by theluckystrike — More at zovo.one