Skip to content
Back to skills

Code Migrator

ASecurity

Migrate legacy code to modern frameworks, languages, and patterns with automated refactoring and testing

  • 37 stars
  • 0 votes
  • 2 copies
  • 88 views
  • Added December 19, 2025
developmentjavascripttypescriptpythongojavarubyphpbashreactvue

Works with

  • cli
  • api

Security analysis

A92/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro scans all 2 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add GLINCKER/claude-code-marketplace --skill code-migrator --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Code Migrator?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Code Migrator
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/glincker-code-migrator/badge)](https://www.skillsdirectory.com/skills/glincker-code-migrator)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: code-migrator
description: Migrate legacy code to modern frameworks, languages, and patterns with automated refactoring and testing
allowed-tools: ["Read", "Write", "Edit", "Glob", "Grep", "Bash", "Task"]
version: 1.0.0
author: GLINCKER Team
license: Apache-2.0
keywords: [migration, modernization, refactoring, legacy-code, framework-upgrade, language-translation]
---

# Code Migrator

**⚡ UNIQUE FEATURE**: Automated legacy code modernization with AI-powered migration paths, dependency resolution, test generation, and risk analysis. Migrate between languages, frameworks, or architectural patterns with confidence.

## What This Skill Does

Intelligently migrates codebases with minimal manual intervention:

### Language Migrations
- **Python 2 → Python 3**: Syntax, imports, unicode handling
- **JavaScript → TypeScript**: Type inference and definitions
- **Java 8 → Java 17+**: Modern language features
- **Angular.js → React/Vue**: Complete framework migration
- **PHP 5 → PHP 8**: Modernize deprecated features
- **Ruby 2 → Ruby 3**: Update syntax and gems

### Framework Upgrades
- **React Class → Hooks**: Convert class components
- **Vue 2 → Vue 3**: Composition API migration
- **Django 2 → Django 4**: Settings and ORM updates
- **Rails 5 → Rails 7**: Modern Rails patterns
- **Express 4 → Express 5**: Route handlers, middleware

### Architectural Migrations
- **Monolith → Microservices**: Service extraction
- **REST → GraphQL**: API transformation
- **Callback Hell → Async/Await**: Promise modernization
- **MVC → Component-Based**: Architecture refactoring

## Why This Is Revolutionary

First migration skill with:
- **AI-powered analysis**: Understands code context and intent
- **Risk assessment**: Identifies high-risk changes
- **Incremental migration**: Migrate module by module
- **Automated testing**: Generates tests to verify migration
- **Rollback support**: Safe migration with undo capability
- **Dependency resolution**: Automatically updates imports and packages
- **Pattern recognition**: Identifies and modernizes anti-patterns

## Instructions

### Phase 1: Migration Discovery & Analysis

1. **Identify Migration Type**:
   ```
   Ask user:
   - What are you migrating FROM?
   - What are you migrating TO?
   - Full codebase or specific modules?
   - Any constraints or requirements?
   ```

2. **Analyze Current State**:
   ```bash
   # Discover project structure
   Use Glob to find all source files
   Use Grep to identify:
   - Framework versions
   - Import patterns
   - Deprecated APIs
   - Code smells
   ```

3. **Generate Migration Plan**:
   ```markdown
   # Migration Plan: Python 2 → Python 3

   ## Scope
   - Files to migrate: 247
   - Estimated effort: 2-3 days
   - Risk level: Medium

   ## Changes Required

   ### High Priority (Breaking Changes)
   1. Print statements → print() function (187 occurrences)
   2. Unicode strings (u'') → default strings (423 occurrences)
   3. Dict.iteritems() → Dict.items() (89 occurrences)

   ### Medium Priority (Deprecated APIs)
   1. urllib → urllib.request (34 occurrences)
   2. ConfigParser → configparser (12 occurrences)

   ### Low Priority (Best Practices)
   1. Old-style classes → new-style classes
   2. % formatting → f-strings

   ## Dependencies to Update
   - Django 1.11 → Django 4.2
   - requests 2.9 → requests 2.31
   - pytest 3.0 → pytest 7.4

   ## Migration Strategy
   - Phase 1: Update dependencies (safe, reversible)
   - Phase 2: Automated syntax fixes (safe)
   - Phase 3: Manual code review (requires attention)
   - Phase 4: Test and validate

   ## Risk Assessment
   - **Critical**: Database migrations (manual review needed)
   - **High**: Third-party API calls (may have changed)
   - **Medium**: String encoding (test thoroughly)
   - **Low**: Print statements (auto-fixable)
   ```

### Phase 2: Automated Migration

1. **Create Migration Branch**:
   ```bash
   git checkout -b migrate-to-python3
   ```

2. **Backup Current State**:
   ```bash
   # Create backup
   git tag pre-migration-backup
   ```

3. **Execute Migration** (module by module):

   **For each file/module**:

   a. **Read current code**:
   ```python
   Use Read to load file contents
   ```

   b. **Apply transformations**:
   ```python
   # Example: Python 2 → 3 print statements
   # Before
   print "Hello, World!"

   # After
   print("Hello, World!")

   # Example: Unicode strings
   # Before
   u"Hello, 世界"

   # After
   "Hello, 世界"

   # Example: Dict iteration
   # Before
   for key, value in my_dict.iteritems():

   # After
   for key, value in my_dict.items():
   ```

   c. **Update imports**:
   ```python
   # Before
   import urllib
   import ConfigParser

   # After
   import urllib.request
   import configparser
   ```

   d. **Modernize patterns**:
   ```python
   # Before: Old-style formatting
   "Hello, %s!" % name

   # After: f-strings
   f"Hello, {name}!"

   # Before: Manual file handling
   f = open('file.txt')
   content = f.read()
   f.close()

   # After: Context manager
   with open('file.txt') as f:
       content = f.read()
   ```

4. **Use Edit tool** to apply changes:
   ```
   For each transformation:
   - Use Edit with old_string/new_string
   - Preserve formatting and style
   - Add comments where behavior changes
   ```

### Phase 3: Dependency Migration

1. **Update package manager files**:

   ```python
   # requirements.txt migration
   # Before
   Django==1.11.29
   requests==2.9.1

   # After
   Django==4.2.0
   requests==2.31.0
   ```

   ```json
   // package.json migration
   // Before
   {
     "dependencies": {
       "react": "^16.8.0"
     }
   }

   // After
   {
     "dependencies": {
       "react": "^18.2.0"
     }
   }
   ```

2. **Install new dependencies**:
   ```bash
   pip install -r requirements.txt
   # or
   npm install
   ```

### Phase 4: Test Generation & Validation

1. **Generate Migration Tests**:
   ```python
   # Use Task to launch test-generator agent
   Task: "Generate tests that verify migration correctness"

   For each migrated function:
   - Create test with Python 2/3 compatible inputs
   - Verify output is identical
   - Test edge cases
   ```

2. **Run Existing Tests**:
   ```bash
   # Run original test suite
   pytest tests/

   # Report:
   - Tests passing: 247/250
   - Tests failing: 3
   - New errors: 0
   ```

3. **Run Migration Validation**:
   ```bash
   # Custom validation checks
   - Import validation
   - Syntax check (python -m py_compile)
   - Linting (flake8, pylint)
   - Type checking (mypy for Python, tsc for TypeScript)
   ```

### Phase 5: Manual Review Queue

For high-risk changes:

```markdown
## Manual Review Required

### File: api/payments.py (Lines 45-67)
**Risk**: HIGH
**Reason**: External API call with changed response format

```python
# Original (Python 2)
response = urllib.urlopen(url)
data = json.loads(response.read())

# Migrated (Python 3)
response = urllib.request.urlopen(url)
data = json.loads(response.read().decode('utf-8'))
```

**Action needed**: Verify API still returns same data structure

### File: database/models.py (Lines 102-115)
**Risk**: CRITICAL
**Reason**: Database model migration

**Action needed**: Create and review Django migration files
```

### Phase 6: Documentation & Rollback Plan

1. **Generate Migration Report**:
   ```markdown
   # Migration Report: Python 2 → Python 3

   **Date**: 2025-01-13
   **Duration**: 3.2 hours
   **Status**: ✅ Complete (3 items need manual review)

   ## Statistics
   - Files modified: 247
   - Lines changed: 1,834
   - Dependencies updated: 12
   - Tests updated: 45
   - New tests added: 18

   ## Breaking Changes
   1. Unicode handling in API responses
   2. Dictionary iteration in processors
   3. Print output in CLI tools

   ## Rollback Instructions
   ```bash
   git checkout pre-migration-backup
   ```

   ## Next Steps
   1. Review 3 flagged items in review-queue.md
   2. Run integration tests
   3. Deploy to staging
   4. Monitor for issues
   ```

2. **Create Migration Documentation**:
   - What changed and why
   - How to use new patterns
   - Common gotchas
   - Troubleshooting guide

## Example Migrations

### Example 1: React Class → Hooks

**User**: "Migrate this component to hooks"

**Input**:
```javascript
class UserProfile extends React.Component {
  constructor(props) {
    super(props);
    this.state = { user: null, loading: true };
  }

  componentDidMount() {
    fetchUser(this.props.userId)
      .then(user => this.setState({ user, loading: false }));
  }

  render() {
    const { user, loading } = this.state;
    if (loading) return <div>Loading...</div>;
    return <div>{user.name}</div>;
  }
}
```

**Output**:
```javascript
import { useState, useEffect } from 'react';

function UserProfile({ userId }) {
  const [user, setUser] = useState(null);
  const [loading, setLoading] = useState(true);

  useEffect(() => {
    fetchUser(userId)
      .then(user => {
        setUser(user);
        setLoading(false);
      });
  }, [userId]);

  if (loading) return <div>Loading...</div>;
  return <div>{user.name}</div>;
}
```

### Example 2: Callback Hell → Async/Await

**Before**:
```javascript
function processUser(userId, callback) {
  getUser(userId, (err, user) => {
    if (err) return callback(err);
    getOrders(user.id, (err, orders) => {
      if (err) return callback(err);
      calculateTotal(orders, (err, total) => {
        if (err) return callback(err);
        callback(null, { user, total });
      });
    });
  });
}
```

**After**:
```javascript
async function processUser(userId) {
  const user = await getUser(userId);
  const orders = await getOrders(user.id);
  const total = await calculateTotal(orders);
  return { user, total };
}
```

## Configuration

`.code-migrator-config.yml`:

```yaml
migration:
  backup_enabled: true
  incremental: true
  generate_tests: true
  risk_threshold: medium  # Require manual review for high/critical

patterns:
  # Custom pattern replacements
  - from: "old_api_call"
    to: "new_api_call"
    risk: high

exclusions:
  # Files to skip
  - "vendor/*"
  - "node_modules/*"
  - "*.min.js"

validation:
  run_tests: true
  run_linters: true
  type_check: true
```

## Supported Migrations

### Languages
- Python 2 → 3
- JavaScript ES5 → ES6+ → TypeScript
- Java 8 → 11 → 17
- PHP 5 → 7 → 8
- Ruby 2 → 3
- Go 1.x → 1.21+

### Frameworks
- React (any version upgrade)
- Vue 2 → 3
- Angular any → any
- Django 1.x → 4.x
- Rails 5 → 7
- Express 4 → 5

### Patterns
- Callbacks → Promises → Async/Await
- Class components → Functional + Hooks
- Options API → Composition API
- MVC → MVVM
- REST → GraphQL

## Tool Requirements

- **Read**: Load source files
- **Write**: Create new files and reports
- **Edit**: Transform code in-place
- **Glob**: Find all files to migrate
- **Grep**: Search for patterns
- **Bash**: Run tests, install dependencies
- **Task**: Generate tests, analyze risks

## Best Practices

1. **Start small**: Migrate one module at a time
2. **Test continuously**: Run tests after each module
3. **Commit frequently**: Easy rollback if needed
4. **Review high-risk**: Never auto-migrate critical code
5. **Update docs**: Keep documentation in sync
6. **Monitor production**: Watch for issues post-migration

## Limitations

- Cannot migrate business logic (requires human understanding)
- Complex macros/metaprogramming may need manual work
- Performance characteristics may change
- Some migrations require iterative refinement

## Related Skills

- [unit-test-generator](../../testing/unit-test-generator/SKILL.md) - Generate migration tests
- [refactor-master](../refactor-master/SKILL.md) - Further code improvements
- [pr-reviewer](../../devops/pr-reviewer/SKILL.md) - Review migrated code

## Changelog

### Version 1.0.0 (2025-01-13)
- Initial release
- Support for 6 languages
- 10+ framework migrations
- Risk assessment
- Automated testing
- Rollback support

## Contributing

Help add migration paths:
- New language pairs
- Framework upgrades
- Pattern transformations
- Risk detection rules

## License

Apache License 2.0 - See [LICENSE](../../../LICENSE)

## Author

**GLINCKER Team**
- GitHub: [@GLINCKER](https://github.com/GLINCKER)
- Repository: [claude-code-marketplace](https://github.com/GLINCKER/claude-code-marketplace)

---

**🌟 The most comprehensive code migration skill available - save weeks of manual work!**

Files in this skill

  • SKILL.md12.2 KB
  • plugin.json300 B

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.