Atlas's Postgres lint analyzers are Pro-only now

Switch from Atlas to MigrationPilot

MigrationPilot covers 13 of the 17 PostgreSQL checks Atlas documents, and adds 99 more. Free and open source: Atlas's PostgreSQL analyzers need a Pro plan, and MigrationPilot never had a paid tier for its linting.

npx migrationpilot analyze migrations/
View on GitHub

Rule-by-Rule Mapping

Atlas documents 17 PostgreSQL checks, all but PG110 behind Atlas Pro. MigrationPilot matches 13 of them. The 4 it does not are listed too.

Atlas RuleMigrationPilot RuleAuto-Fix
PG101 Creating an index non-concurrentlyMP001 require-concurrent-index-creationYes
PG102 Dropping an index non-concurrentlyMP009 require-drop-index-concurrentlyYes
PG103 CONCURRENTLY without txmode noneMP025 ban-concurrent-in-transactionYes
PG104 ADD PRIMARY KEY takes ACCESS EXCLUSIVENo direct equivalent
PG105 ADD UNIQUE takes ACCESS EXCLUSIVEMP027 disallowed-unique-constraint
PG110 Non-optimal column alignmentMP061 suboptimal-column-order
PG301 Column type change rewrites the tableMP007 no-column-type-change
PG302 Adding a column with a volatile defaultMP003 volatile-default-table-rewrite
PG303 Making a nullable column NOT NULLMP002 require-check-not-null-pattern
PG304 PRIMARY KEY on nullable columns forces a scanNo direct equivalent
PG305 CHECK constraint without NOT VALIDMP030 require-not-valid-checkYes
PG306 Foreign key without NOT VALIDMP005 require-not-valid-foreign-keyYes
PG307 Changing LOGGED / UNLOGGEDMP047 ban-set-logged-unlogged
PG308 Trigger on an existing table blocks writesMP090 warn-trigger-on-hot-table
PG309 STORED generated column rewrites the tableMP062 ban-add-generated-stored-column
PG310 Identity column rewrites the tableNo direct equivalent
PG311 Access method change rewrites the tableNo direct equivalent

Feature Comparison

FeatureAtlas (Free)Atlas (Pro)MigrationPilot
Migration lintingPG110 only16 PG checks112 rules (all free)
Auto-fix20 rules
GitHub ActionLimitedYesFree
PR inline annotationsYesFree
SARIF outputFree
Lock type analysisFree
MCP Server (AI tools)Free
Execution planFree
Schema drift detectionYesFree
Air-gapped modeFree
Config presetsatlas.hclatlas.hcl5 YAML presets
Price$0Custom$0 (all 112 rules free)

Migrate in 2 Minutes

1

Remove Atlas lint config

Delete the lint block from your atlas.hcl file. Keep Atlas for schema management if you want — MigrationPilot only handles linting.

2

Add MigrationPilot to CI

# .github/workflows/migration-lint.yml
name: Lint Migrations
on: pull_request
jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: mickelsamuel/migrationpilot@v1
        with:
          path: migrations/
3

Optional: Configure rules

# .migrationpilotrc.yml
extends: recommended
pgVersion: 16
exclude:
  - MP008  # Allow multi-DDL transactions

Free migration linting shouldn't require a paid plan

112 safety rules. 20 auto-fixes. GitHub Action with inline annotations. Open source, no signup, no paid tier for linting.