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-fix——20 rules
GitHub ActionLimitedYesFree
PR inline annotations—YesFree
SARIF output——Free
Lock type analysis——Free
MCP Server (AI tools)——Free
Execution plan——Free
Schema drift detection—YesFree
Air-gapped mode——Free
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.