PostgreSQL migration linter rules comparison: MigrationPilot 83 rules vs Squawk 40 rules
83 rules vs 40

MigrationPilot vs SquawkMore Rules, Auto-Fix, Same CLI Workflow

Both MigrationPilot and Squawk are PostgreSQL migration linters. MigrationPilot ships 83 safety rules; Squawk has 40 as of v2.62.0 (Aug 2026). MigrationPilot also adds lock analysis, risk scoring, 12 auto-fixes, and a VS Code extension. Same workflow, more coverage.

Feature Comparison

CapabilitySquawkMigrationPilot
Total safety rules40 (v2.62.0, Aug 2026)83 (all free)
Auto-fixNo12 rules (--fix)
Lock type analysisNoPer-statement (SHARE through ACCESS EXCLUSIVE)
Risk scoringNoRED / YELLOW / GREEN (0-100)
GitHub ActionYesYes + inline annotations + Job Summary
VS Code extensionNoYes (diagnostics, hover, quick-fix)
Execution planNoYes (visual timeline with lock types)
SARIF outputNoYes (GitHub Code Scanning)
MCP ServerNoYes (4 tools for AI integration)
Schema drift detectionNoYes
Historical trendsNoYes (JSONL + trends command)
Config presetsNo5 built-in (recommended, strict, ci, startup, enterprise)
Framework detectionNo14 frameworks auto-detected
Watch modeNoYes (file watcher + pre-commit hooks)
Production contextNoTable sizes, query frequency
Rollback DDL generationNoYes
RLS safety rulesNoYes (MP057, MP079)
JSONB index analysisNoYes (MP056)
Replication safetyNoYes (MP055, MP060, MP064)
Partition rulesNoYes (MP046, MP049, MP072)
pgvector index adviceNoYes (MP050)
LanguageRustTypeScript (Node.js)
Parserpg-query-rslibpg-query (WASM)
LicenseApache-2.0 / MITMIT
PriceFreeFree (all 83 rules)

Rule-by-Rule Coverage

These 25 Squawk rules map directly onto a MigrationPilot rule. Seven of the equivalents are auto-fixable.

Squawk RuleMigrationPilotAuto-Fix
require-concurrent-index-creationMP001 require-concurrent-indexYes
require-concurrent-index-deletionMP009 require-drop-index-concurrentlyYes
adding-not-nullable-fieldMP002 require-check-not-null
adding-field-with-defaultMP003 volatile-default-rewrite
adding-foreign-key-constraintMP005 require-not-valid-fk
ban-drop-columnMP017 no-drop-column
ban-drop-tableMP026 ban-drop-table
ban-drop-databaseMP034 ban-drop-database
ban-drop-not-nullMP029 ban-drop-not-null
changing-column-typeMP007 no-column-type-change
renaming-columnMP010 no-rename-column
renaming-tableMP028 no-rename-table
disallowed-unique-constraintMP027 disallowed-unique-constraint
prefer-text-fieldMP037 prefer-text-over-varcharYes
prefer-bigint-over-intMP038 prefer-bigint-over-int
prefer-bigint-over-smallintMP038 prefer-bigint-over-int
prefer-identityMP039 prefer-identity-over-serial
prefer-timestamptzMP040 prefer-timestamptzYes
ban-char-fieldMP041 ban-char-fieldYes
adding-serial-primary-key-fieldMP015 no-add-column-serial
setting-not-nullable-fieldMP018 no-force-set-not-null
constraint-missing-not-validMP030 require-not-valid-checkYes
ban-truncate-cascadeMP036 ban-truncate-cascade
require-timeoutMP004 require-lock-timeoutYes
ban-concurrent-index-creation-in-transactionMP025 ban-concurrent-in-transaction

Key Differentiators

Twice the Rules

MigrationPilot has 83 safety rules; Squawk has 40 as of v2.62.0 (Aug 2026). Coverage includes RLS, JSONB, logical replication, partitioning, pgvector, TOAST compression, and more.

Auto-Fix

12 rules can be automatically fixed with --fix. Missing CONCURRENTLY, lock_timeout, statement_timeout, NOT VALID, IF NOT EXISTS, VARCHAR-to-TEXT, TIMESTAMP-to-TIMESTAMPTZ, and more. Squawk only reports; MigrationPilot can fix.

Lock Type Analysis

Every DDL statement output includes the PostgreSQL lock it acquires (SHARE, SHARE UPDATE EXCLUSIVE, ACCESS EXCLUSIVE) and whether it blocks reads, writes, or both. Squawk does not analyze locks.

Risk Scoring

RED / YELLOW / GREEN risk scores (0-100) based on lock severity, statement type, and table impact. Pro adds production context with actual table sizes and query frequency.

VS Code Extension

Real-time diagnostics, hover tooltips with lock info, and quick-fix actions directly in your editor. Squawk does not have an editor extension.

MCP Server

MigrationPilot ships an MCP server (4 tools), so Claude, Cursor, and other AI assistants can analyze a migration before they hand it to you. Squawk has no MCP integration. Both tools are permissively licensed — MigrationPilot is MIT, Squawk is Apache-2.0 / MIT — so neither carries copyleft obligations.

When to Use Each Tool

Squawk may be a better fit if...

  • You prefer a Rust binary with zero runtime dependencies
  • You only need the 40 rules it covers
  • It is already wired into your CI and covers what you check for
  • You want the fastest possible binary execution time

MigrationPilot is a better fit if...

  • You want the most comprehensive PostgreSQL rule set (83 rules)
  • You need auto-fix to automatically remediate issues
  • You want lock analysis and risk scoring per statement
  • You need a VS Code extension for real-time feedback
  • You need RLS, JSONB, replication, or partitioning rules
  • You want production context analysis with actual table sizes
  • You want an MCP server so AI assistants can check migrations too

Switch in 60 Seconds

1

Replace the CLI

# Remove Squawk
# npm uninstall squawk-cli  (or cargo uninstall squawk)

# Use MigrationPilot
npx migrationpilot analyze migrations/
2

Update your CI

# Replace your Squawk GitHub Action:
- uses: mickelsamuel/migrationpilot@v1
  with:
    path: migrations/
    fail-on: critical
3

Enable auto-fix

# Preview fixes without modifying files
npx migrationpilot analyze migrations/ --fix --dry-run

# Apply fixes in-place
npx migrationpilot analyze migrations/ --fix

83 rules to Squawk's 40. Auto-fix included.

83 safety rules. 12 auto-fixes. Lock analysis. Risk scoring. VS Code extension. GitHub Action with inline annotations. Same CLI workflow, more comprehensive coverage.