replit-migration-deep-dive by jeremylongshore
Coding
945 Stars
114 Forks
Updated Jan 11, 2026, 10:30 PM
Why Use This
This skill provides specialized capabilities for jeremylongshore's codebase.
Use Cases
- Developing new features in the jeremylongshore repository
- Refactoring existing code to follow jeremylongshore standards
- Understanding and working with jeremylongshore's codebase structure
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Repository claude-code-plugins-plus-skills
Skill Version
main
Community
945 114
Updated At Jan 11, 2026, 10:30 PM
Skill Stats
SKILL.md 244 Lines
Total Files 1
Total Size 0 B
License MIT
--- name: replit-migration-deep-dive description: | Execute Replit major re-architecture and migration strategies with strangler fig pattern. Use when migrating to or from Replit, performing major version upgrades, or re-platforming existing integrations to Replit. Trigger with phrases like "migrate replit", "replit migration", "switch to replit", "replit replatform", "replit upgrade major". allowed-tools: Read, Write, Edit, Bash(npm:*), Bash(node:*), Bash(kubectl:*) version: 1.0.0 license: MIT author: Jeremy Longshore <[email protected]> --- # Replit Migration Deep Dive ## Overview Comprehensive guide for migrating to or from Replit, or major version upgrades. ## Prerequisites - Current system documentation - Replit SDK installed - Feature flag infrastructure - Rollback strategy tested ## Migration Types | Type | Complexity | Duration | Risk | |------|-----------|----------|------| | Fresh install | Low | Days | Low | | From competitor | Medium | Weeks | Medium | | Major version | Medium | Weeks | Medium | | Full replatform | High | Months | High | ## Pre-Migration Assessment ### Step 1: Current State Analysis ```bash # Document current implementation find . -name "*.ts" -o -name "*.py" | xargs grep -l "replit" > replit-files.txt # Count integration points wc -l replit-files.txt # Identify dependencies npm list | grep replit pip freeze | grep replit ``` ### Step 2: Data Inventory ```typescript interface MigrationInventory { dataTypes: string[]; recordCounts: Record<string, number>; dependencies: string[]; integrationPoints: string[]; customizations: string[]; } async function assessReplitMigration(): Promise<MigrationInventory> { return { dataTypes: await getDataTypes(), recordCounts: await getRecordCounts(), dependencies: await analyzeDependencies(), integrationPoints: await findIntegrationPoints(), customizations: await documentCustomizations(), }; } ``` ## Migration Strategy: Strangler Fig Pattern ``` Phase 1: Parallel Run ┌─────────────┐ ┌─────────────┐ │ Old │ │ New │ │ System │ ──▶ │ Replit │ │ (100%) │ │ (0%) │ └─────────────┘ └─────────────┘ Phase 2: Gradual Shift ┌─────────────┐ ┌─────────────┐ │ Old │ │ New │ │ (50%) │ ──▶ │ (50%) │ └─────────────┘ └─────────────┘ Phase 3: Complete ┌─────────────┐ ┌─────────────┐ │ Old │ │ New │ │ (0%) │ ──▶ │ (100%) │ └─────────────┘ └─────────────┘ ``` ## Implementation Plan ### Phase 1: Setup (Week 1-2) ```bash # Install Replit SDK npm install @replit/sdk # Configure credentials cp .env.example .env.replit # Edit with new credentials # Verify connectivity node -e "require('@replit/sdk').ping()" ``` ### Phase 2: Adapter Layer (Week 3-4) ```typescript // src/adapters/replit.ts interface ServiceAdapter { create(data: CreateInput): Promise<Resource>; read(id: string): Promise<Resource>; update(id: string, data: UpdateInput): Promise<Resource>; delete(id: string): Promise<void>; } class ReplitAdapter implements ServiceAdapter { async create(data: CreateInput): Promise<Resource> { const replitData = this.transform(data); return replitClient.create(replitData); } private transform(data: CreateInput): ReplitInput { // Map from old format to Replit format } } ``` ### Phase 3: Data Migration (Week 5-6) ```typescript async function migrateReplitData(): Promise<MigrationResult> { const batchSize = 100; let processed = 0; let errors: MigrationError[] = []; for await (const batch of oldSystem.iterateBatches(batchSize)) { try { const transformed = batch.map(transform); await replitClient.batchCreate(transformed); processed += batch.length; } catch (error) { errors.push({ batch, error }); } // Progress update console.log(`Migrated ${processed} records`); } return { processed, errors }; } ``` ### Phase 4: Traffic Shift (Week 7-8) ```typescript // Feature flag controlled traffic split function getServiceAdapter(): ServiceAdapter { const replitPercentage = getFeatureFlag('replit_migration_percentage'); if (Math.random() * 100 < replitPercentage) { return new ReplitAdapter(); } return new LegacyAdapter(); } ``` ## Rollback Plan ```bash # Immediate rollback kubectl set env deployment/app REPLIT_ENABLED=false kubectl rollout restart deployment/app # Data rollback (if needed) ./scripts/restore-from-backup.sh --date YYYY-MM-DD # Verify rollback curl https://app.yourcompany.com/health | jq '.services.replit' ``` ## Post-Migration Validation ```typescript async function validateReplitMigration(): Promise<ValidationReport> { const checks = [ { name: 'Data count match', fn: checkDataCounts }, { name: 'API functionality', fn: checkApiFunctionality }, { name: 'Performance baseline', fn: checkPerformance }, { name: 'Error rates', fn: checkErrorRates }, ]; const results = await Promise.all( checks.map(async c => ({ name: c.name, result: await c.fn() })) ); return { checks: results, passed: results.every(r => r.result.success) }; } ``` ## Instructions ### Step 1: Assess Current State Document existing implementation and data inventory. ### Step 2: Build Adapter Layer Create abstraction layer for gradual migration. ### Step 3: Migrate Data Run batch data migration with error handling. ### Step 4: Shift Traffic Gradually route traffic to new Replit integration. ## Output - Migration assessment complete - Adapter layer implemented - Data migrated successfully - Traffic fully shifted to Replit ## Error Handling | Issue | Cause | Solution | |-------|-------|----------| | Data mismatch | Transform errors | Validate transform logic | | Performance drop | No caching | Add caching layer | | Rollback triggered | Errors spiked | Reduce traffic percentage | | Validation failed | Missing data | Check batch processing | ## Examples ### Quick Migration Status ```typescript const status = await validateReplitMigration(); console.log(`Migration ${status.passed ? 'PASSED' : 'FAILED'}`); status.checks.forEach(c => console.log(` ${c.name}: ${c.result.success}`)); ``` ## Resources - [Strangler Fig Pattern](https://martinfowler.com/bliki/StranglerFigApplication.html) - [Replit Migration Guide](https://docs.replit.com/migration) ## Flagship+ Skills For advanced troubleshooting, see `replit-advanced-troubleshooting`.
Name Size