# 🔄 Migration Assistant Skill
---
name: migration-assistant
description: Assist with migrating frameworks, libraries, and language versions with automated refactoring
---
## 🎯 Purpose
ช่วย migrate ระหว่าง frameworks, libraries, และ versions อย่างปลอดภัย พร้อม automated refactoring
## 📋 When to Use
- อัพเกรด framework version
- เปลี่ยน libraries (e.g., Redux → Zustand)
- เปลี่ยนภาษา (e.g., JavaScript → TypeScript)
- Migrate architecture patterns
- Update API versions
## 🔧 Common Migrations
### Framework Migrations
#### React Class → Hooks
```jsx
// Before: Class Component
class Counter extends React.Component {
state = { count: 0 };
increment = () => {
this.setState({ count: this.state.count + 1 });
};
render() {
return (
);
}
}
// After: Function Component with Hooks
function Counter() {
const [count, setCount] = useState(0);
const increment = () => {
setCount(count + 1);
};
return (
);
}
```
#### Next.js Pages → App Router
```jsx
// Before: pages/about.tsx
export default function About() {
return
About
;
}
export async function getServerSideProps() {
const data = await fetch('...');
return { props: { data } };
}
// After: app/about/page.tsx
async function getData() {
const res = await fetch('...');
return res.json();
}
export default async function About() {
const data = await getData();
return About
;
}
```
### Library Migrations
#### Redux → Zustand
```typescript
// Before: Redux Slice
const counterSlice = createSlice({
name: 'counter',
initialState: { value: 0 },
reducers: {
increment: (state) => { state.value += 1; },
decrement: (state) => { state.value -= 1; },
},
});
// After: Zustand Store
const useCounterStore = create((set) => ({
value: 0,
increment: () => set((state) => ({ value: state.value + 1 })),
decrement: () => set((state) => ({ value: state.value - 1 })),
}));
```
#### Moment → date-fns
```typescript
// Before: Moment.js
import moment from 'moment';
moment().format('YYYY-MM-DD');
moment().add(1, 'days');
moment('2024-01-15').isAfter('2024-01-01');
// After: date-fns
import { format, addDays, isAfter, parseISO } from 'date-fns';
format(new Date(), 'yyyy-MM-dd');
addDays(new Date(), 1);
isAfter(parseISO('2024-01-15'), parseISO('2024-01-01'));
```
### Language Migrations
#### JavaScript → TypeScript
```javascript
// Before: JavaScript
function greet(name) {
return `Hello, ${name}!`;
}
const user = {
name: 'John',
age: 30
};
// After: TypeScript
interface User {
name: string;
age: number;
}
function greet(name: string): string {
return `Hello, ${name}!`;
}
const user: User = {
name: 'John',
age: 30
};
```
## 📝 Migration Process
```
1. ANALYZE current state
- Current version/library
- Usage patterns
- Breaking changes list
2. PLAN migration
- Create migration checklist
- Identify high-risk areas
- Plan rollback strategy
3. SETUP coexistence (if needed)
- Install new version alongside
- Create adapters/wrappers
- Gradual migration path
4. MIGRATE incrementally
- Start with low-risk files
- Migrate one pattern at a time
- Test after each change
5. VERIFY
- Run all tests
- Manual testing
- Performance comparison
6. CLEANUP
- Remove old dependencies
- Remove adapters
- Update documentation
```
## 📋 Migration Checklist Template
```markdown
## Migration: {From} → {To}
### Pre-Migration
- [ ] Read changelog and breaking changes
- [ ] Create branch for migration
- [ ] Document current state
- [ ] Ensure tests are passing
### During Migration
- [ ] Install new version/library
- [ ] Update imports
- [ ] Fix breaking changes
- [ ] Update configuration files
- [ ] Run tests after each change
### Post-Migration
- [ ] All tests passing
- [ ] Manual QA complete
- [ ] Performance verified
- [ ] Documentation updated
- [ ] Old dependencies removed
```
## ⚠️ Common Migration Pitfalls
| Pitfall | Prevention |
|---------|------------|
| Big bang migration | Migrate incrementally |
| No rollback plan | Create backup branch |
| Skipping tests | Run tests frequently |
| Ignoring warnings | Address all deprecations |
| Rushing | Take time, be thorough |
## 🔍 Migration Commands
```bash
# Check for breaking changes
npm info package-name changelog
# Codemods (automated refactoring)
npx jscodeshift -t transform.js ./src
# TypeScript migration
npx typescript --init
npx ts-migrate
# React upgrade
npx react-codemod
```
## ✅ Verification Checklist
- [ ] All imports updated
- [ ] No deprecation warnings
- [ ] All tests passing
- [ ] No runtime errors
- [ ] Performance acceptable
- [ ] Documentation updated
## 🔗 Related Skills
- `legacy-modernization` - Modernize old code
- `refactoring` - Improve code structure
- `testing` - Ensure migration safety