80 rules vs 31

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

Both MigrationPilot and Squawk are PostgreSQL migration linters. MigrationPilot covers every Squawk rule plus 49 more, adds lock analysis, risk scoring, 12 auto-fixes, and a VS Code extension. Same workflow, more coverage.

Feature Comparison

CapabilitySquawkMigrationPilot
Total safety rules3180 (77 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 (Pro)
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)
LicenseGPL-3.0MIT
PriceFreeFree (77 rules) / $19/mo Pro

Rule-by-Rule Coverage

Every Squawk rule has a direct MigrationPilot equivalent. Seven of them 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

2.5x More Rules

MigrationPilot has 80 safety rules compared to Squawk's 31. 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.

MIT License

MigrationPilot uses the MIT license, which is more permissive than Squawk's GPL-3.0. MIT allows use in proprietary projects without 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 31 core rules it covers
  • You need GPL-3.0 copyleft licensing
  • You want the fastest possible binary execution time

MigrationPilot is a better fit if...

  • You want the most comprehensive PostgreSQL rule set (80 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 (Pro)
  • You need MIT licensing for proprietary projects

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

All of Squawk's rules. Plus 49 more. Auto-fix included.

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