{"enrichment":{"faq":[{"a":"django-migration-psql audits Django migration files against PostgreSQL safety rules, catching common mistakes like bundling index creation with model definitions, mixing indexes across tables, and mishandling partitioned table indexes. It enforces separation of concerns\u2014structural changes in one migration, performance indexes in another\u2014and provides the two-step pattern required for partitioned tables to ensure indexes apply to all existing partitions without locking production data.","q":"What does django-migration-psql help with?"},{"a":"django-migration-psql enforces splitting auto-generated migrations into separate concerns: keep structural changes (CreateModel, AddField) in one migration and performance indexes in another. For partitioned tables, use a two-step pattern: first create the index on the parent table, then apply it to existing partitions. This separation prevents locking production data and ensures indexes apply correctly across all partitions.","q":"How should I split django migrations for PostgreSQL?"},{"a":"django-migration-psql supports concurrent index creation on partitioned tables without locking production. Use the two-step pattern: create the index on the parent table in one migration with `atomic=False`, then apply it to existing partitions in a follow-up migration. This approach prevents blocking production queries while ensuring all partitions receive the index.","q":"How do I create index concurrently in django migrations?"},{"a":"django-migration-psql's review checklist validates that migrations follow PostgreSQL best practices: indexes are separated from model definitions, partitioned table indexes use the two-step pattern, data backfills use batched Celery tasks, migrations avoid unnecessary locking, and structural changes are isolated from performance tuning. It also checks for proper use of `atomic=False` and constraint handling.","q":"What does django migration review checklist include?"},{"a":"Yes. django-migration-psql supports implementing batched data backfills safely using Celery tasks within migrations. Instead of loading all data into memory at once, use RunPython with batched queries and Celery task scheduling to backfill large tables incrementally, reducing memory overhead and production impact.","q":"Can django-migration-psql help with data backfill migrations?"},{"a":"django-migration-psql enforces a two-step pattern for partitioned table indexes: first create the index on the parent table without locking production, then apply it to existing partitions in a separate migration. This ensures indexes apply to all partitions correctly and prevents the common mistake of creating indexes that miss existing partition data.","q":"How does django-migration-psql handle partitioned table indexes?"}],"shadow_tags":["schema-design","database-locking","concurrent-indexing","data-migration","partition-strategy","production-safety","transaction-management","performance-optimization","rollback-safety"],"summary_rewrite":"This skill audits Django migration files against PostgreSQL safety rules, catching common mistakes like bundling index creation with model definitions, mixing indexes across tables, and mishandling partitioned table indexes. It enforces separation of concerns\u2014structural changes in one migration, performance indexes in another\u2014and provides the two-step pattern required for partitioned tables to ensure indexes apply to all existing partitions without locking production data."},"files":[{"bytes":19429,"path":"skills/django-migration-psql/SKILL.md","sha256":"c03d7a9a4eb96a2d8517b0c0818d11cf3518bfc47d9ccd1400f4995ea9400bdd","url":"https://skillfed.io/files/prowler-cloud/prowler/django-migration-psql/6ec6bc67/SKILL.md"}],"id":"prowler-cloud/prowler/django-migration-psql","links":{"html":"https://skillfed.io/prowler-cloud/prowler/django-migration-psql","md":"https://skillfed.io/prowler-cloud/prowler/django-migration-psql.md","repo":"https://github.com/prowler-cloud/prowler"},"meta":{"agents_supported":[],"first_seen":"2026-07-28","forks":2285,"language":"Python","last_updated":"2026-07-27","license":"Apache-2.0","name":"django-migration-psql","publisher":"prowler-cloud","stars":14491},"relations":{"similar":[{"id":"xu-xiang/everything-claude-code-zh/database-migrations"},{"id":"CuriousLearner/devkit/migration-generator"},{"id":"affaan-m/ECC/database-migrations"},{"id":"PostHog/posthog/django-migrations"},{"id":"prowler-cloud/prowler/prowler-api"},{"id":"prowler-cloud/prowler/postgresql-indexing"},{"id":"affaan-m/ECC/django-verification"},{"id":"laolaoshiren/claude-code-skills-zh/db-migrator"},{"id":"vintasoftware/django-ai-plugins/django-safe-migration"},{"id":"prowler-cloud/prowler/django-drf"}]},"slug":{"owner":"prowler-cloud","repo":"prowler","skill":"django-migration-psql"},"version":"6ec6bc67"}
