schemachange

Deploying and managing Snowflake database objects using version control with schemachange. Use this skill when you need to manage database migrations for objects not handled by dbt, implement CI/CD pipelines for schema changes, or coordinate deployments across multiple environments.

$ Instalar

git clone https://github.com/sfc-gh-dflippo/snowflake-dbt-demo /tmp/snowflake-dbt-demo && cp -r /tmp/snowflake-dbt-demo/.claude/skills/schemachange ~/.claude/skills/snowflake-dbt-demo

// tip: Run this command in your terminal to install the skill


name: schemachange description: Deploying and managing Snowflake database objects using version control with schemachange. Use this skill when you need to manage database migrations for objects not handled by dbt, implement CI/CD pipelines for schema changes, or coordinate deployments across multiple environments.

Schemachange

Deploy and manage Snowflake database changes using version control and CI/CD pipelines with schemachange's migration-based approach.

Quick Start

Script Types:

  • V__ (Versioned) - One-time structural changes (run exactly once)
  • R__ (Repeatable) - Objects that can be safely recreated (runs when new/modified)
  • A__ (Always) - Scripts that run every deployment (must be idempotent)

Script Naming

Versioned Scripts (V__)

V1.0.0__initial_setup.sql
V1.1.0__create_base_tables.sql
V2.0.0__restructure_schema.sql

Use for: CREATE TABLE, ALTER TABLE, CREATE SCHEMA

Repeatable Scripts (R__)

R__Stage_01_create_views.sql
R__Stage_02_alter_procedures.sql
R__Stage_03_utility_functions.sql

Use for: CREATE OR ALTER VIEW, CREATE OR ALTER PROCEDURE, CREATE OR REPLACE STREAM

Always Scripts (A__)

A__refresh_permissions.sql
A__update_config_values.sql

Use for: Jobs that must run every deployment (idempotent only)

Key Concepts

Execution Order

  1. Versioned scripts (V__) in numeric order
  2. Repeatable scripts (R__) in alphabetic order (use naming to control)
  3. Always scripts (A__) in alphabetic order

CREATE OR ALTER vs CREATE OR REPLACE

  • CREATE OR ALTER - Preserves data, tags, policies, grants (preferred)
  • CREATE OR REPLACE - Drops and recreates (loses metadata)

See CREATE_OR_ALTER_REFERENCE.md for supported objects.

Configuration

# schemachange-config.yml
root-folder: migrations
create-change-history-table: true
connection-name: default
change-history-table: MY_DB.SCHEMACHANGE.CHANGE_HISTORY

Deployment

# Dry run
schemachange deploy --config-folder . --dry-run

# Deploy
schemachange deploy --config-folder .

# With variables
schemachange deploy --vars '{"env":"prod","schema":"data"}'

Resources

  • schemachange-config.yml - Complete configuration template
  • SCRIPT_PATTERNS.md - Examples for V**, R**, A__ scripts (coming soon)
  • CREATE_OR_ALTER_REFERENCE.md - Supported object types (coming soon)
  • CI_CD_EXAMPLES.md - GitHub Actions and Azure DevOps patterns (coming soon)