Help us improve
Share bugs, ideas, or general feedback.
From godmode
Guides system migrations and technology transitions using strategies like Strangler Fig, Big Bang, Parallel Run, and Branch by Abstraction, with plans for JS to TS, REST to GraphQL, monolith to microservices, and zero-downtime data migration.
npx claudepluginhub arbazkhan971/godmodeHow this skill is triggered — by the user, by Claude, or both
Slash command
/godmode:migrationThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
- `/godmode:migration`, "migrate from X to Y"
Orchestrates complete migration workflows for frameworks (e.g., Vue 2→3, Express→Fastify), databases (MySQL→PostgreSQL), and architectures (REST→GraphQL, monolith→microservices) with analysis, incremental execution, and rollback.
Orchestrates full migration workflows from current state analysis through planning, incremental implementation, and verification for technologies, platforms, and architecture patterns with rollback planning.
Plans incremental legacy system migrations using strangler fig pattern, parallel run strategies, CDC/ETL data techniques, feature parity tracking, rollback plans, and zero-downtime deployments.
Share bugs, ideas, or general feedback.
/godmode:migration, "migrate from X to Y"Source: <language, framework, architecture, data stores>
Target: <target stack and architecture>
Code size: <files, LOC, modules>
Test coverage: <percentage>
Team size: <N developers>
Type: Language | Framework | Architecture | Data | API
IF codebase > 50K LOC: use Strangler Fig (not Big Bang)
IF data-critical: use Parallel Run
IF internal component swap: use Branch by Abstraction
BIG BANG: rewrite all, switch over
WHEN: <10K LOC, acceptable downtime
Risk: HIGH — all-or-nothing
STRANGLER FIG: replace piece by piece via facade
WHEN: large codebase, zero-downtime required
Risk: LOW — each piece reversible
PARALLEL RUN: old+new simultaneously, compare
WHEN: data integrity critical
Risk: MEDIUM — double infra cost
BRANCH BY ABSTRACTION: abstraction layer, swap impl
WHEN: internal component, same API contract
Risk: LOW — abstraction isolates change
IF team < 3: avoid Big Bang (too risky with small team). IF match_rate < 99.0%: do NOT cutover. IF match_rate >= 99.9%: ramp 5% -> 25% -> 50% -> 100%.
JS -> TS: Phase 1: tsconfig with allowJs:true, strict:false Phase 2: Rename .js->.ts one file at a time (leaves first) Phase 3: Enable strict mode incrementally
REST -> GraphQL: Phase 1: GraphQL alongside REST (resolvers call services) Phase 2: Migrate clients one feature at a time Phase 3: Deprecate REST endpoints
Monolith -> Microservices: Phase 0: Identify bounded contexts, add module boundaries Phase 1: Extract easiest module as first service Phase 2: Feature flag, shadow traffic, ramp
Phase 1 — Dual-write: write BOTH stores, old=source
Phase 2 — Backfill: batch historical data, rate-limited
Track: migrated/total, verify integrity per batch
Phase 3 — Cutover: read from new, stop old writes
Phase 4 — Cleanup: remove old after 2-week stability
# Verify data integrity
psql -c "SELECT count(*) FROM old_table"
psql -c "SELECT count(*) FROM new_table"
# Row counts must match within 0.01%
Route traffic to BOTH systems.
Compare outputs automatically.
Target: > 99.9% match rate before cutover.
IF mismatch > 1%: categorize, fix top 3, re-run.
Triggers: error rate > 1.1x baseline for 5 min,
p99 latency > threshold for 5 min,
data inconsistency detected.
Steps: switch traffic back, stop dual-writes,
reconcile data, notify stakeholders, post-mortem.
FOR each component (fewest dependencies first):
1. EXTRACT + BUILD new implementation
2. WRITE/migrate tests
3. DEPLOY behind feature flag, shadow traffic
4. PARALLEL RUN: target > 99.9% match
5. IF match < 99.0%: fix and re-run
6. IF match >= 99.9%: ramp 5%->25%->50%->100%
7. REMOVE old after 2-week stability
# Run and verify migrations
npm run migrate:status
python manage.py showmigrations
npx prisma migrate status
Append .godmode/migration-results.tsv:
timestamp source target strategy status match_rate
KEEP if: match > 99.9%, rollback tested,
flags control cutover.
DISCARD if: match < 99%, no rollback,
deployment-switched. Revert if error > 1.1x.
STOP when FIRST of:
- Match rate > 99.9% + rollback tested
- Data integrity verified + old system kept 2 weeks
- User requests stop
On failure: git reset --hard HEAD~1. Never pause.
| Failure | Action |
|---|---|
| Match < 99% | Categorize mismatches, fix top 3, re-run |
| Feature breaks | Flip flag back, add test before retry |
| Data integrity | Verify checksums, row counts, samples |