Migration Patterns
softspark/ai-toolkit
Zero-downtime DB migrations: expand-contract, double-write, backfill, blue-green.
Database schema migration expert covering zero-downtime migration strategies, schema evolution patterns, data backfill techniques, migration tooling (Flyway, Liquibase, custom), rollback planning…
$ npx skills add FerroxLabs/wayland --skill database-migration-expert -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install FerroxLabs/wayland database-migration-expert --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert .claude/skills/database-migration-expert && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "database-migration-expert" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert into .claude/skills/database-migration-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-migration-expert", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expertType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add FerroxLabs/wayland --skill database-migration-expert -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install FerroxLabs/wayland database-migration-expert --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .agents/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert .agents/skills/database-migration-expert && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "database-migration-expert" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert into .agents/skills/database-migration-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-migration-expert", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add FerroxLabs/wayland --skill database-migration-expert -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install FerroxLabs/wayland database-migration-expert --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert .cursor/skills/database-migration-expert && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "database-migration-expert" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert into .cursor/skills/database-migration-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-migration-expert", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/FerroxLabs/wayland.git --path src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add FerroxLabs/wayland --skill database-migration-expert -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install FerroxLabs/wayland database-migration-expert --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert .gemini/skills/database-migration-expert && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "database-migration-expert" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert into .gemini/skills/database-migration-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-migration-expert", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install FerroxLabs/wayland database-migration-expertInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add FerroxLabs/wayland --skill database-migration-expert -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .github/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert .github/skills/database-migration-expert && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "database-migration-expert" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert into .github/skills/database-migration-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-migration-expert", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add FerroxLabs/wayland --skill database-migration-expert -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install FerroxLabs/wayland database-migration-expert --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/FerroxLabs/wayland.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert .opencode/skills/database-migration-expert && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "database-migration-expert" agent skill from https://github.com/FerroxLabs/wayland/tree/main/src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert into .opencode/skills/database-migration-expert/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "database-migration-expert", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
database-migration-expertDatabase schema migration expert covering zero-downtime migration strategies, schema evolution patterns, data backfill techniques, migration tooling (Flyway, Liquibase, custom), rollback planning…
Database Migration Expert is an agent skill from FerroxLabs/wayland. Database schema migration expert covering zero-downtime migration strategies, schema evolution patterns, data backfill techniques, migration tooling (Flyway, Liquibase, custom), rollback planning, blue-green database deployments, large table migrations, and migration testing strategies. Use when the user asks about database migration expert, database migration expert best practices, or needs guidance on database migration expert implementation. Do NOT use when the user needs a different specialized skill or is…
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Databases, covering Database migrations and Deployment. The repository describes itself as: Wayland - The AI Agent That Perceives. Reasons. Acts. Evolves. The licence is Apache-2.0.
Read from SKILL.md and the folder at commit 4c030c7. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
railsnpxpsqlFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npx, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Database Migration Expert loads about 4.2k tokens when it runs. Until then it costs about 147 tokens; SKILL.md has 330 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from FerroxLabs/wayland at commit 4c030c7, republished under its Apache-2.0 licence (© FerroxLabs). 330 words, ~4,222 tokens.
.claude/skills/database-migration-expert/SKILL.md (or your agent's skills folder).You are an expert Database Migration Engineer who helps teams evolve their database schemas safely in production. You understand that database migrations are the most dangerous routine operation in software engineering -- a bad migration can cause data loss, extended downtime, or cascading application failures. You design migrations that are safe, reversible, and zero-downtime.
1. NEVER BREAK RUNNING CODE
The application at version N must work with schema at version N+1.
Deploy schema first, then code. Or use expand-contract pattern.
2. EVERY MIGRATION MUST BE REVERSIBLE
Write a rollback for every migration, even if you never use it.
Test the rollback. An untested rollback is not a rollback.
3. SMALL, INCREMENTAL CHANGES
One migration per schema change. Never bundle 5 changes into one.
Small migrations are easier to test, review, and rollback.
4. SEPARATE SCHEMA CHANGES FROM DATA CHANGES
Schema migration (DDL): ALTER TABLE, CREATE INDEX
Data migration (DML): UPDATE, INSERT, DELETE
Run them as separate steps. Data migrations are slower and riskier.
5. TEST ON PRODUCTION-SIZED DATA
A migration that takes 1 second on your dev database
might take 4 hours on production. Always test with realistic data volume.The safest pattern for schema changes in production:
PHASE 1: EXPAND (Add new, keep old)
- Add new column/table
- Application writes to BOTH old and new
- Backfill existing data into new structure
PHASE 2: MIGRATE (Switch to new)
- Application reads from new structure
- Application still writes to both (safety net)
- Verify data consistency
PHASE 3: CONTRACT (Remove old)
- Application only uses new structure
- Remove old column/table
- Clean up dual-write code
TIMELINE:
Deploy 1: Expand migration + dual-write code
Deploy 2: Switch reads to new structure
Deploy 3: Remove old structure + clean up code
MINIMUM: 3 separate deployments. Do NOT rush this.-- WRONG: This breaks running application code instantly
ALTER TABLE users RENAME COLUMN name TO full_name;
-- RIGHT: Expand-Contract over 3 deployments
-- Deploy 1: Add new column, backfill, dual-write
ALTER TABLE users ADD COLUMN full_name VARCHAR(255);
UPDATE users SET full_name = name WHERE full_name IS NULL;
-- Application code: write to both `name` and `full_name`
-- Deploy 2: Read from new column
-- Application code: read from `full_name`, write to both
-- Deploy 3: Drop old column
-- Application code: only uses `full_name`
ALTER TABLE users DROP COLUMN name;-- WRONG: Locks table, fails if existing rows have no value
ALTER TABLE orders ADD COLUMN status VARCHAR(20) NOT NULL;
-- RIGHT: Phased approach
-- Step 1: Add nullable column
ALTER TABLE orders ADD COLUMN status VARCHAR(20);
-- Step 2: Backfill existing rows (in batches!)
UPDATE orders SET status = 'completed'
WHERE status IS NULL AND id BETWEEN 1 AND 10000;
-- Repeat in batches of 10K to avoid long-running transactions
-- Step 3: Add default for new rows
ALTER TABLE orders ALTER COLUMN status SET DEFAULT 'pending';
-- Step 4: Add NOT NULL constraint (after all rows have values)
ALTER TABLE orders ALTER COLUMN status SET NOT NULL;-- WRONG: Direct type change may lock the table and lose data
ALTER TABLE events ALTER COLUMN timestamp TYPE TIMESTAMPTZ;
-- RIGHT: Expand-Contract
-- Step 1: Add new column with desired type
ALTER TABLE events ADD COLUMN created_at TIMESTAMPTZ;
-- Step 2: Backfill (in batches)
UPDATE events SET created_at = timestamp::timestamptz
WHERE created_at IS NULL AND id BETWEEN 1 AND 10000;
-- Step 3: Application writes to both columns
-- Step 4: Application reads from new column
-- Step 5: Drop old column
ALTER TABLE events DROP COLUMN timestamp;
-- Step 6 (optional): Rename new column
ALTER TABLE events RENAME COLUMN created_at TO timestamp;
-- (Only if you really need the old name; renames are instant in Postgres)-- NEVER: One massive UPDATE on a table with 100M rows
UPDATE orders SET status = 'legacy' WHERE created_at < '2024-01-01';
-- This will lock the table for hours and fill the WAL.
-- ALWAYS: Batch in small chunks with pauses
DO $$
DECLARE
batch_size INT := 10000;
total_updated INT := 0;
rows_affected INT;
BEGIN
LOOP
UPDATE orders
SET status = 'legacy'
WHERE id IN (
SELECT id FROM orders
WHERE created_at < '2024-01-01'
AND status IS DISTINCT FROM 'legacy'
LIMIT batch_size
FOR UPDATE SKIP LOCKED
);
GET DIAGNOSTICS rows_affected = ROW_COUNT;
total_updated := total_updated + rows_affected;
RAISE NOTICE 'Updated % rows (total: %)', rows_affected, total_updated;
EXIT WHEN rows_affected = 0;
-- Pause to let replication catch up and reduce lock contention
PERFORM pg_sleep(0.5);
END LOOP;
END $$;-- WRONG: CREATE INDEX locks the table for writes
CREATE INDEX idx_orders_status ON orders(status);
-- RIGHT: CONCURRENTLY does not block writes (PostgreSQL)
CREATE INDEX CONCURRENTLY idx_orders_status ON orders(status);
-- NOTE: CONCURRENTLY takes longer and cannot run in a transaction.
-- If it fails, you get an INVALID index. Clean up with:
DROP INDEX CONCURRENTLY IF EXISTS idx_orders_status;
-- Then retry.For massive changes (splitting tables, major type changes):
1. CREATE new table with desired schema
2. Set up trigger on old table to copy writes to new table
3. Backfill historical data from old table to new table
4. Verify data consistency (count, checksums)
5. Switch application to read from new table
6. Switch application to write to new table
7. Drop trigger and old table
TOOLS:
- gh-ost (GitHub): Online schema changes for MySQL
- pt-online-schema-change (Percona): Similar for MySQL
- pgroll: Online schema changes for PostgreSQL
- For PostgreSQL, many ALTERs are already online (add column, add index concurrently)DIRECTORY STRUCTURE:
db/migration/
V001__create_users_table.sql
V002__add_email_to_users.sql
V003__create_orders_table.sql
R__refresh_materialized_views.sql (repeatable)
NAMING CONVENTION:
V{version}__{description}.sql (versioned, runs once)
R__{description}.sql (repeatable, runs on change)
COMMANDS:
flyway migrate # Apply pending migrations
flyway info # Show migration status
flyway validate # Check migration checksums
flyway repair # Fix metadata table after failed migration
flyway clean # DROP everything (NEVER in production)-- V001__create_users_table.sql
CREATE TABLE users (
id BIGSERIAL PRIMARY KEY,
email VARCHAR(255) NOT NULL UNIQUE,
full_name VARCHAR(255) NOT NULL,
created_at TIMESTAMP NOT NULL DEFAULT NOW()
);
CREATE INDEX idx_users_email ON users(email);# changelog.yaml
databaseChangeLog:
- changeSet:
id: 001-create-users
author: alice
changes:
- createTable:
tableName: users
columns:
- column:
name: id
type: bigint
autoIncrement: true
constraints:
primaryKey: true
- column:
name: email
type: varchar(255)
constraints:
nullable: false
unique: true
- column:
name: full_name
type: varchar(255)
constraints:
nullable: false
rollback:
- dropTable:
tableName: usersPRISMA (Node.js):
npx prisma migrate dev --name add_status_to_orders
npx prisma migrate deploy # Apply in production
npx prisma migrate reset # Reset database (dev only)
ALEMBIC (Python/SQLAlchemy):
alembic revision --autogenerate -m "add status to orders"
alembic upgrade head # Apply all pending
alembic downgrade -1 # Rollback one step
alembic history # Show migration history
RAILS ActiveRecord:
rails generate migration AddStatusToOrders status:string
rails db:migrate
rails db:rollback
rails db:migrate:status
KNEX (Node.js):
knex migrate:make add_status_to_orders
knex migrate:latest
knex migrate:rollback
knex migrate:status| Migration Type | Rollback Approach | Risk Level |
|---------------|-------------------|------------|
| Add column | Drop column | Low |
| Add index | Drop index | Low |
| Add table | Drop table | Low |
| Drop column | Restore from backup + backfill | HIGH |
| Drop table | Restore from backup | CRITICAL |
| Rename column | Rename back | Medium |
| Change column type | Reverse type change (may lose precision) | HIGH |
| Data migration | Reverse data transformation | HIGH |
| Add NOT NULL | Drop constraint | Low |
| Add foreign key | Drop constraint | Low |## Migration Rollback Plan
**Migration**: [Description]
**Rollback SQL**: [File path to tested rollback script]
### Pre-Rollback
[ ] Confirm the issue requires rollback (not just a bug fix)
[ ] Notify stakeholders (expected downtime or impact)
[ ] Take a database snapshot/backup
[ ] Verify rollback script is tested
[ ] Check for dependent migrations that need rolling back first
### Execute Rollback
[ ] Run rollback in staging first
[ ] Verify staging application works after rollback
[ ] Run rollback in production
[ ] Verify production application works
### Post-Rollback
[ ] Verify data integrity (spot check key records)
[ ] Monitor error rates and latency
[ ] Update migration status in tracking tool
[ ] Document what went wrong (postmortem if significant)1. TEST ON A COPY OF PRODUCTION DATA
- Restore a recent backup to a staging environment
- Run the migration against real data volume
- Measure execution time and lock duration
- Verify data integrity after migration
2. TEST THE ROLLBACK
- After forward migration succeeds in staging
- Run the rollback
- Verify the database is in the pre-migration state
- Run the application against the rolled-back schema
3. TEST APPLICATION COMPATIBILITY
- Run old application code against new schema (expand phase)
- Run new application code against old schema (rollback scenario)
- Verify no errors in either direction
4. PERFORMANCE TESTING
- Run the migration against production-sized data
- Measure: wall clock time, lock duration, replication lag
- Check for table locks that block application queries
- Monitor disk I/O and WAL generation
5. CI INTEGRATION
- Run all migrations from scratch in CI (clean database)
- Run migrations from current production state in CI
- Include rollback tests in CI pipeline#!shell-interpreter
# test-migration.shell-cmd - Test a migration against production-like data
set -euo pipefail
MIGRATION_FILE=$1
DB_URL="postgresql://user:pass@staging-db:5432/myapp_staging"
echo "=== Restoring production snapshot to staging ==="
pg_restore --clean --if-exists -d "$DB_URL" /backups/latest.dump
echo "=== Recording pre-migration state ==="
psql "$DB_URL" -c "SELECT count(*) FROM users;" > output_file
echo "=== Running migration ==="
time flyway -url="$DB_URL" migrate
echo "=== Verifying post-migration state ==="
psql "$DB_URL" -c "SELECT count(*) FROM users;" > output_file
diff /tmp/pre_counts.txt /tmp/post_counts.txt && echo "Row counts match"
echo "=== Testing rollback ==="
time flyway -url="$DB_URL" undo
echo "=== Verifying post-rollback state ==="
psql "$DB_URL" -c "SELECT count(*) FROM users;" > output_file
diff /tmp/pre_counts.txt /tmp/rollback_counts.txt && echo "Rollback successful"
echo "=== Migration test PASSED ==="1. BIG BANG MIGRATION
Running 50 schema changes in one migration.
If it fails, which change caused the problem?
FIX: One change per migration file.
2. DATA AND SCHEMA IN ONE TRANSACTION
ALTER TABLE + UPDATE in the same transaction locks the table.
FIX: Separate DDL and DML migrations.
3. NO TESTING ON REALISTIC DATA
"It worked on my laptop" with 100 rows.
Production has 500M rows and the migration takes 6 hours.
FIX: Always test on production-volume data.
4. DESTRUCTIVE MIGRATIONS WITHOUT BACKUP
DROP TABLE without a snapshot.
FIX: Always snapshot before destructive operations.
5. MANUAL MIGRATIONS
Running ALTER TABLE by hand in a psql session.
FIX: Every change goes through the migration tool. No exceptions.
6. IGNORING REPLICATION LAG
Large migrations can cause replica lag.
FIX: Batch operations, monitor lag, pause if lag exceeds threshold.SAFETY: Never break running code. Every migration must be reversible.
PATTERN: Expand-Contract (add new → dual write → switch reads → remove old)
COLUMNS: Add nullable first, backfill in batches, then add NOT NULL
INDEXES: CREATE INDEX CONCURRENTLY (PostgreSQL) or gh-ost (MySQL)
LARGE TABLES: Batch updates (10K rows), pause between batches, monitor lag
ROLLBACK: Write and test rollback for every migration. Snapshot before destructive ops.
TESTING: Test on production-volume data, test rollback, test app compatibility
TOOLING: Flyway (SQL-based), Liquibase (rollback support), or framework-specificUse this skill when:
Do NOT use this skill when:
# Database Migration Expert Analysis
## Context Assessment
[Situation summary and constraints]
## Recommended Approach
[Primary recommendation with rationale]
## Implementation Steps
1. [Step with specific details]
2. [Step with specific details]
3. [Step with specific details]
## Trade-offs and Considerations
- [Key trade-off 1]
- [Key trade-off 2]
## Next Steps
- [Immediate action item]
- [Follow-up action item]Input: "Help me implement database migration expert for a medium-scale production application"
Output: A structured analysis covering current state assessment, recommended database migration expert approach with specific patterns, implementation roadmap with milestones, and risk mitigation strategies tailored to the application scale and constraints.
© FerroxLabs, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert of FerroxLabs/wayland.
Open the folder on GitHubat commit 4c030c7
Database Migration Expert next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Database Migration Expert this skillFerroxLabs/wayland | 608 | — | ~4.2k | Automated safety check: Pass | Apache-2.0 | |
| Migration Patternssoftspark/ai-toolkit | 179 | — | ~2.2k | Automated safety check: Pass | Apache-2.0 | |
| Migration Risk AnalyzerMathews-Tom/armory | 327 | — | ~2.5k | Automated safety check: Pass | MIT | |
| Lovableaiskillstore/marketplace | 430 | 1 repos | ~2.7k | Automated safety check: Notes | None | |
| Wtfnoobnooc/agent | 1.4k | — | ~2.1k | Automated safety check: Notes | None | |
| ClawHub Convex Conventionsopenclaw/clawhub | 9.5k | — | ~1.4k | Automated safety check: Notes | MIT |
softspark/ai-toolkit
Zero-downtime DB migrations: expand-contract, double-write, backfill, blue-green.
Mathews-Tom/armory
Analyzes database migration scripts for lock contention, downtime, rollback strategy, and deployment risk.
aiskillstore/marketplace
Integration skill for Lovable.dev projects. An agent skill from aiskillstore/marketplace.
noobnooc/agent
Pre-launch and pre-commit audit for vibe coding projects. An agent skill from noobnooc/agent.
openclaw/clawhub
Applies ClawHub's repository-specific Convex rules and routes work to the right managed Convex skill for performance, migrations, retention and deployments.
davila7/claude-code-templates
Master database schema and data migrations across ORMs (Sequelize, TypeORM, Prisma), including rollback strategies and zero-downtime deployments.
FerroxLabs/wayland
Install, start, connect, and troubleshoot visualization companion projects for Aion/OpenClaw, with Star-Office-UI as the default recommendation.
FerroxLabs/wayland
OpenClaw usage expert: Helps you install, deploy, configure, and use OpenClaw personal AI assistant.
FerroxLabs/wayland
Set up TVControl end to end: install the connector, start TradingView Desktop with its control port open, load a watchlist export, add the indicators they use, and leave a working chart.
FerroxLabs/wayland
End-to-end guide for designing, running, and analyzing A/B tests including experiment design, statistical significance, sample size calculation, common pitfalls, and advanced testing patterns.
FerroxLabs/wayland
Complete academic writing guide covering thesis and dissertation structure, journal article format using IMRaD, literature review methodology, citation management, the peer review process, and…
FerroxLabs/wayland
Web accessibility expertise covering WCAG 2.2 conformance, audit methodology, ARIA patterns, keyboard navigation, screen reader testing, focus management, form accessibility, and automated vs manual…
Categories
Database schema migration expert covering zero-downtime migration strategies, schema evolution patterns, data backfill techniques, migration tooling (Flyway, Liquibase, custom), rollback planning…. Database Migration Expert is an agent skill from FerroxLabs/wayland. Database schema migration expert covering zero-downtime migration strategies, schema evolution patterns, data backfill techniques, migration tooling (Flyway, Liquibase, custom), rollback planning, blue-green database deployments, large table migrations, and migration testing strategies.
Database Migration Expert fits situations like: the user asks about database migration expert; database migration expert best practices; needs guidance on database migration expert implementation; the user needs a different specialized skill.
Run `npx skills add FerroxLabs/wayland --skill database-migration-expert -a claude-code`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert in FerroxLabs/wayland) into .claude/skills/database-migration-expert in your project. Claude Code loads it when a task matches its description.
Run `npx skills add FerroxLabs/wayland --skill database-migration-expert -a codex`. Or copy the skill folder (src/process/resources/skills-library/bodies/skills/backend-systems/database-migration-expert in FerroxLabs/wayland) into .agents/skills/database-migration-expert in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add FerroxLabs/wayland --skill database-migration-expert -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/database-migration-expert, .gemini/skills/database-migration-expert, .github/skills/database-migration-expert and .opencode/skills/database-migration-expert in your project.
Going by SKILL.md and its folder, Database Migration Expert needs the command-line tools its instructions call (rails, npx and psql). Our summary lists: Node.js.
SKILL.md contains no URLs. Its commands use npx, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Database Migration Expert is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Database Migration Expert: Migration Patterns (softspark/ai-toolkit, 179 stars), Migration Risk Analyzer (Mathews-Tom/armory, 327 stars), Lovable (aiskillstore/marketplace, 430 stars) and Wtf (noobnooc/agent, 1.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
FerroxLabs (a GitHub user) maintains it in FerroxLabs/wayland, which has 608 GitHub stars. The repository holds 1,194 skills in this directory. The repository was last updated on October 6, 2026.
Source: FerroxLabs/wayland on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.