flyway-consolidate
Flyway Migration Consolidation
Analyze incremental Flyway migrations and generate consolidated, domain-grouped CREATE TABLE migrations for pre-production projects where the database can be reset from scratch.
When to Use
| Scenario | Apply? |
|---|---|
| Pre-production project with migration sprawl | Yes |
| Database can be reset from scratch | Yes |
| Many incremental ALTER TABLE migrations | Yes |
| Want domain-based organization before release | Yes |
| Production database exists | No |
| Migration history must be preserved | No |
Consolidation Workflow
- Discover — Find all
V*__*.sqlfiles using Glob - Analyze — Read each migration, identify CREATE/ALTER/INSERT operations and affected tables
- Infer final schema — Apply all changes in order to determine the intended final state
- Group by domain — Organize tables into logical business domains
- Resolve dependencies — Topological sort by FK relationships
- Generate — Produce clean CREATE TABLE migrations when user confirms
See WORKFLOW.md for detailed step-by-step process.
Output Structure
Produce these deliverables in order:
1. Analysis Report
- Total migration count and breakdown by type (CREATE, ALTER, INSERT)
- Per-migration summary: what it does, which tables it affects
- Final table count and column inventory
2. Domain Grouping
- Tables organized by inferred business domain
- Migration-to-domain mapping showing which originals feed into each group
3. Proposed Structure
- New migration file list (e.g., V1–V6) with table assignments
- Dependency order rationale
- Reduction metrics (file count, estimated line savings)
4. Consolidated SQL (on request)
- Clean CREATE TABLE statements with final-form columns and constraints
- Separate migration for idempotent seed data
- Optional separate migration for performance indexes
Domain Grouping Heuristics
| Signal | Assignment |
|---|---|
Table prefix (user_*, order_*) |
Prefix-based domain |
| Foreign key cluster | Related tables share domain |
Join tables (user_roles) |
Domain of primary entity |
Audit tables (*_audit, *_history) |
Same domain as parent |
| Config/settings tables | Infrastructure domain |
| Explicit schema namespaces | Schema name as domain |
Present ambiguous cases to the user for decision.
Critical Constraints
- Preserve the final schema exactly — no tables, columns, constraints, or relationships lost
- Idempotent seed data — use
ON CONFLICT DO NOTHINGor equivalent for INSERT statements - Dependency order — referenced tables created before foreign keys that point to them
- Prefer CREATE over ALTER — final-form table definitions, not incremental changes
- History rewriting allowed — pre-production only, database will be reset
- Document assumptions — call out any ambiguities in the original migrations explicitly
Tools
- Glob
**/V*__*.sqland**/R*__*.sqlto find versioned and repeatable migrations - Read each migration file to parse SQL content
- Grep
CREATE TABLE,ALTER TABLE,FOREIGN KEY,INSERT INTOto search across migrations
Examples
See EXAMPLES.md for complete before/after consolidation scenarios and TROUBLESHOOTING.md for common issues:
- Column evolution chains collapsed into single CREATE TABLE
- Multi-domain consolidation (40 migrations to 6)
- FK dependency resolution across domains
- Seed data made idempotent
Reminders
- Always present the analysis report and proposed structure before generating SQL
- Wait for user confirmation of domain groupings before generating consolidated files
- Handle circular FK dependencies by deferring constraint creation with ALTER TABLE
- Self-referential FKs: create table first, add FK in same migration via ALTER
- Compare final column/constraint inventory against originals as a verification step
More from joaquimscosta/arkhe-claude-plugins
skill-validator
Validate skills against Anthropic best practices for frontmatter, structure, content, file organization, hooks, MCP, and security (62 rules in 8 categories). Use when creating new skills, updating existing skills, before publishing skills, reviewing skill quality, or when user mentions "validate skill", "check skill", "skill best practices", "skill review", or "lint skill".
30domain-driven-design
Expert guidance for Domain-Driven Design architecture and implementation. Use when designing complex business systems, defining bounded contexts, structuring domain models, choosing between modular monolith vs microservices, implementing aggregates/entities/value objects, or when users mention "DDD", "domain-driven design", "bounded context", "aggregate", "domain model", "ubiquitous language", "event storming", "context mapping", "domain events", "anemic domain model", strategic design, tactical patterns, or domain modeling. Helps make architectural decisions, identify subdomains, design aggregates, and avoid common DDD pitfalls.
26code-explanation
Explains complex code through clear narratives, visual diagrams, and step-by-step breakdowns. Use when user asks to explain code, understand algorithms, analyze design patterns, wants code walkthroughs, or mentions "explain this code", "how does this work", "code breakdown", or "understand this function".
22generating-changelog
Analyzes git commit history and generates professional changelogs with semantic versioning, conventional commit support, and multiple output formats (Keep a Changelog, Conventional, GitHub). Use when editing CHANGELOG.md, CHANGELOG.txt, or HISTORY.md files, preparing release notes, creating releases, bumping versions, updating changelog, documenting changes, writing release notes, tracking changes, version bump, tag release, or when user mentions "changelog", "release notes", "version history", "release", "semantic versioning", or "conventional commits".
21workflow-orchestration
>
19generating-stitch-screens
>
19