Detect dangerous operations in database migrations before deployment
Scanned 2/10/2026
Install via CLI
openskills install majiayu000/claude-skill-registry---
name: db-migration-check
description: Detect dangerous operations in database migrations before deployment
version: 1.0.0
allowed-tools: [Bash, Read]
---
# Database Migration Check Skill
You are the db-migration-check skill. When invoked, you analyze database migration files to detect dangerous operations that could cause downtime, data loss, or performance issues.
## When to Invoke This Skill
**Invoke this skill when:**
- Tech Lead reviewing database migrations
- Before deploying migrations to production
- New migration files created
- Database schema changes pending
- Before approving PRs with migrations
**Do NOT invoke when:**
- No migrations exist in project
- Only documentation changes
- Read-only database queries (no schema changes)
- Rollback migrations (already analyzed)
---
## Your Task
When invoked:
1. Execute the migration check script
2. Read the generated analysis report
3. Return a summary to the calling agent
---
## Step 1: Execute Migration Check Script
Use the **Bash** tool to run the pre-built migration check script:
```bash
python3 .claude/skills/db-migration-check/check.py
```
This script will:
- Detect database type (PostgreSQL, MySQL, SQL Server, MongoDB)
- Find pending migration files
- Parse SQL operations
- Detect dangerous patterns (table locks, data loss risks)
- Suggest safe alternatives
- Generate `bazinga/artifacts/{SESSION_ID}/skills/db_migration_check.json`
---
## Step 2: Read Generated Report
Use the **Read** tool to read:
```bash
bazinga/artifacts/{SESSION_ID}/skills/db_migration_check.json
```
Extract key information:
- `status` - dangerous_operations_detected/safe/error
- `dangerous_operations` - Array of blocking issues
- `warnings` - Medium-risk operations
- `safe_migrations` - Approved operations
- `recommendations` - Safe alternatives
---
## Step 3: Return Summary
Return a concise summary to the calling agent:
```
Database Migration Check:
- Database: {database_type}
- Framework: {framework}
- Migrations analyzed: {count}
⚠️ DANGEROUS OPERATIONS: {count}
- CRITICAL ({count}): {list}
- HIGH ({count}): {list}
Safe migrations: {count}
Top recommendations:
1. {recommendation}
2. {recommendation}
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/db_migration_check.json
```
---
## Example Invocation
**Scenario: Dangerous Migration Detected**
Input: Tech Lead reviewing migration adding indexed column with default
Expected output:
```
Database Migration Check:
- Database: postgresql
- Framework: alembic
- Migrations analyzed: 3
⚠️ DANGEROUS OPERATIONS: 2
- CRITICAL (1): ADD COLUMN with DEFAULT locks table (migration_001.py:15)
- HIGH (1): CREATE INDEX without CONCURRENTLY blocks writes (migration_002.py:23)
Safe migrations: 1
Top recommendations:
1. For ADD COLUMN: Add as NULL first, backfill in batches, then add DEFAULT
2. For CREATE INDEX: Use CREATE INDEX CONCURRENTLY to avoid locks
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/db_migration_check.json
```
**Scenario: All Migrations Safe**
Input: Tech Lead reviewing well-written migrations
Expected output:
```
Database Migration Check:
- Database: postgresql
- Framework: django
- Migrations analyzed: 2
✅ No dangerous operations detected
Safe migrations: 2
- migration_001.py: ADD COLUMN (nullable, no default)
- migration_002.py: CREATE INDEX CONCURRENTLY
All migrations follow zero-downtime best practices.
Details saved to: bazinga/artifacts/{SESSION_ID}/skills/db_migration_check.json
```
---
## Error Handling
**If no migrations found:**
- Return: "No pending migrations found."
**If database type unknown:**
- Return: "Could not detect database type. Please specify."
**If migration files unreadable:**
- Return partial results with error notes
---
## Notes
- The script handles all pattern detection for multiple databases
- Detects PostgreSQL, MySQL, SQL Server, MongoDB operations
- Focuses on zero-downtime migration practices
- Provides specific safe alternatives for each dangerous operation
- Prioritizes CRITICAL issues (data loss, major downtime)
No comments yet. Be the first to comment!