pgpm-cli

SKILL.md

pgpm CLI Reference

Complete reference for the pgpm (PostgreSQL Package Manager) command-line interface. pgpm provides deterministic, plan-driven database migrations with dependency management.

When to Apply

Use this skill when:

  • Deploying database changes
  • Managing database migrations
  • Installing or upgrading pgpm modules
  • Testing pgpm packages in CI/CD
  • Setting up local PostgreSQL development

Quick Start

# Install pgpm globally
npm install -g pgpm

# Ensure PostgreSQL is running and env vars are loaded
# See pgpm-docker and pgpm-env skills for setup

# Create workspace and module
pgpm init workspace
cd my-app
pgpm init
cd packages/your-module

# Deploy to database
pgpm deploy --createdb --database mydb

Core Commands

Database Operations

pgpm deploy — Deploy database changes and migrations

# Deploy to current database (from PGDATABASE)
pgpm deploy

# Create database if missing
pgpm deploy --createdb

# Deploy to specific database
pgpm deploy --database mydb

# Deploy specific package to a tag
pgpm deploy --package mypackage --to @v1.0.0

# Fast deployment (no transactions)
pgpm deploy --fast --no-tx

pgpm verify — Verify database state matches expected migrations

pgpm verify
pgpm verify --package mypackage

pgpm revert — Safely revert database changes

pgpm revert
pgpm revert --to @v1.0.0

Migration Management

pgpm migrate — Comprehensive migration management

# Initialize migration tracking
pgpm migrate init

# Check migration status
pgpm migrate status

# List all changes
pgpm migrate list

# Show change dependencies
pgpm migrate deps

Module Management

pgpm install — Install pgpm modules as dependencies

# Install single package
pgpm install @pgpm/faker

# Install multiple packages
pgpm install @pgpm/base32 @pgpm/faker

pgpm upgrade-modules — Upgrade installed modules to latest versions

# Interactive selection
pgpm upgrade-modules

# Upgrade all without prompting
pgpm upgrade-modules --all

# Preview without changes
pgpm upgrade-modules --dry-run

# Upgrade specific modules
pgpm upgrade-modules --modules @pgpm/base32,@pgpm/faker

# Upgrade across entire workspace
pgpm upgrade-modules --workspace --all

pgpm extension — Interactively manage module dependencies

pgpm extension

Workspace Initialization

pgpm init — Initialize new module or workspace

# Create new workspace
pgpm init workspace

# Create new module (inside workspace)
pgpm init

# Use full template path (recommended)
pgpm init --template pnpm/module
pgpm init -t pgpm/workspace

# Create workspace + module in one command
pgpm init -w
pgpm init --template pnpm/module -w

# Use custom template repository
pgpm init --repo https://github.com/org/templates.git --template my-template

Change Management

pgpm add — Add a new database change

pgpm add my_change

This creates three files in sql/:

  • deploy/my_change.sql — Deploy script
  • revert/my_change.sql — Revert script
  • verify/my_change.sql — Verify script

pgpm remove — Remove a database change

pgpm remove my_change

pgpm rename — Rename a database change

pgpm rename old_name new_name

Tagging and Versioning

pgpm tag — Version your changes with tags

# Tag latest change
pgpm tag v1.0.0

# Tag with comment
pgpm tag v1.0.0 --comment "Initial release"

# Tag specific change
pgpm tag v1.1.0 --package mypackage --changeName my-change

Packaging and Distribution

pgpm plan — Generate deployment plans

pgpm plan

pgpm package — Package module for distribution

pgpm package
pgpm package --no-plan

Testing

pgpm test-packages — Run integration tests on all modules in workspace

# Deploy only
pgpm test-packages

# Full deploy/verify/revert/deploy cycle
pgpm test-packages --full-cycle

# Continue after failures
pgpm test-packages --continue-on-fail

# Exclude specific modules
pgpm test-packages --exclude legacy-module

# Combine options
pgpm test-packages --full-cycle --continue-on-fail --exclude broken-module

Docker and Environment

pgpm docker — Manage local PostgreSQL container

pgpm docker start
pgpm docker stop

pgpm env — Print PostgreSQL environment variables

# Standard PostgreSQL
eval "$(pgpm env)"

# Supabase local development
eval "$(pgpm env --supabase)"

Admin Users

pgpm admin-users — Manage database admin users

# Bootstrap admin users from pgpm.json roles config
pgpm admin-users bootstrap

# Add specific user
pgpm admin-users add myuser

# Remove user
pgpm admin-users remove myuser

Utilities

pgpm dump — Dump database to SQL file

# Dump to timestamped file
pgpm dump --database mydb

# Dump to specific file
pgpm dump --database mydb --out ./backup.sql

# Dump with pruning (for test fixtures)
pgpm dump --database mydb --database-id <uuid>

pgpm kill — Clean up database connections

# Kill connections and drop databases
pgpm kill

# Only kill connections
pgpm kill --no-drop

pgpm clear — Clear database state

pgpm clear

pgpm export — Export migrations from existing databases

pgpm export

pgpm analyze — Analyze database structure

pgpm analyze

Cache and Updates

pgpm cache clean — Clear cached template repos

pgpm cache clean

pgpm update — Install latest pgpm version

pgpm update

Environment Variables

pgpm uses standard PostgreSQL environment variables:

Variable Description
PGHOST Database host
PGPORT Database port
PGDATABASE Database name
PGUSER Database user
PGPASSWORD Database password

Quick setup with eval "$(pgpm env)" or manual export.

Global Options

Most commands support:

Option Description
--help, -h Show help
--version, -v Show version
--cwd <dir> Set working directory

Common Workflows

Starting a New Project

pgpm init workspace
cd my-app
pgpm init
cd packages/new-module
pgpm add some_change
# Edit sql/deploy/some_change.sql
pgpm deploy --createdb

Installing and Using a Module

cd packages/your-module
pgpm install @pgpm/faker
pgpm deploy --createdb --database mydb
psql -d mydb -c "SELECT faker.city('MI');"

CI/CD Testing

# Bootstrap admin users
pgpm admin-users bootstrap

# Test all packages
pgpm test-packages --full-cycle --continue-on-fail

References

  • Related skill: pgpm-workspace for workspace structure
  • Related skill: pgpm-changes for authoring changes
  • Related skill: pgpm-dependencies for module dependencies
  • Related skill: github-workflows-pgpm for CI/CD workflows
Weekly Installs
7
First Seen
Feb 27, 2026
Installed on
windsurf7
mcpjam6
claude-code6
junie6
kilo6
zencoder6