80 rules vs Squawk's 31

MigrationPilot vs Squawk

MigrationPilot covers every Squawk rule plus 49 more — including RLS safety, JSONB indexing, logical replication, and 12 auto-fixes. Same CLI workflow, more coverage.

npx migrationpilot analyze migrations/
View on GitHub

Feature Comparison

FeatureSquawkMigrationPilot
Total rules3180
Auto-fixNo12 rules
GitHub ActionYesYes + inline annotations + Job Summary
Lock type analysisNoYes (per-statement)
Risk scoringNoRED/YELLOW/GREEN
Execution planNoYes (visual timeline)
SARIF outputNoYes (GitHub Code Scanning)
MCP Server (AI)NoYes (4 tools)
Schema drift detectionNoYes
Historical trendsNoYes
Config presetsNo5 built-in (recommended, strict, ci, startup, enterprise)
Framework detectionNo14 frameworks
PL/pgSQL function lintingNo (issue #411)Planned
RLS safetyNoYes (MP057)
JSONB index analysisNoYes (MP056)
Replication safetyNoYes (MP055, MP060)
LanguageRustTypeScript (Node.js)
LicenseGPL-3.0MIT

Rule-by-Rule Coverage

Every Squawk rule has a direct MigrationPilot equivalent.

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-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

Migrate 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 CI

# Replace squawk GitHub Action:
- uses: mickelsamuel/migrationpilot@v1
  with:
    path: migrations/
3

Optional: Enable auto-fix

# Auto-fix 12 common issues
npx migrationpilot analyze migrations/ --fix --dry-run

Twice the rules. Auto-fix. Same CLI workflow.

80 safety rules. 12 auto-fixes. Lock analysis. Risk scoring. GitHub Action with inline annotations. MIT licensed.