migrate-module
π―Skillfrom dudusoar/vrp-toolkit
Migrates Python research modules from SDR_stochastic to vrp-toolkit, refactoring code into generic, reusable implementations across problem, algorithm, and data layers.
Installation
npx skills add https://github.com/dudusoar/vrp-toolkit --skill migrate-moduleSkill Details
Migrate Python modules from SDR_stochastic research code to vrp-toolkit architecture. Use when migrating files from the old codebase structure to the new three-layer architecture (Problem/Algorithm/Data layers), refactoring paper-specific code into generic implementations, or converting research notebooks into educational tutorials.
Overview
# Migrate Module
Automate the migration of research code modules from the SDR_stochastic project into the reusable vrp-toolkit architecture.
Migration Resources
For complete migration guide, see:
- [MIGRATION_GUIDE.md](references/MIGRATION_GUIDE.md) - Comprehensive technical guide
- Source code locations
- Complete file mapping (9 files)
- Migration phases (Phase 1-3)
- Refactoring guidelines and patterns
- Common issues and solutions
Quick references:
- [migration_map.md](references/migration_map.md) - File mappings only
- [architecture.md](references/architecture.md) - Three-layer architecture
Migration Workflow
Step 1: Identify and Plan
- Determine the module to migrate
- Check [migration_map.md](references/migration_map.md) for file mappings
- Identify source file in /SDR_stochastic/new version/
- Note the destination path and refactoring requirements
- Read and analyze the source code
- Read the entire source file
- Identify dependencies and imports
- Note any paper-specific hardcoded values
- Understand the module's purpose and interface
Step 2: Refactor for Generalization
- Extract hardcoded values
- Identify magic numbers, file paths, dataset names
- Convert to function parameters or config objects
- Common patterns: battery capacity, time windows, location names
Example transformation:
```python
# Before
def solve():
capacity = 100 # Hardcoded
# After
def solve(capacity: float = 100):
```
- Decouple architecture layers
- Separate problem definitions from algorithms
- Extract algorithm-specific code to appropriate layer
- Follow interfaces in [architecture.md](references/architecture.md)
- Generalize data structures
- Replace paper-specific types with generic abstractions
- Ensure compatibility with Instance, Solution, Solver interfaces
Step 3: Implement in New Location
- Create or update the destination file
- Place code in the correct layer (Problem/Algorithm/Data)
- Follow vrp-toolkit directory structure
- Use appropriate naming conventions (see architecture guide)
- Add documentation
- Add docstrings to public functions/classes
- Use Google or NumPy docstring style
- Include parameters, return values, and examples
```python
def solve_pdptw(instance: PDPTWInstance, config: ALNSConfig) -> Solution:
"""Solve PDPTW using ALNS algorithm.
Args:
instance: Problem instance to solve
config: Algorithm configuration parameters
Returns:
Solution object containing routes and objective value
"""
```
- Update imports
- Change import paths to new package structure
- Use relative imports within vrp_toolkit
- Update any external dependencies
Step 4: Create Test Case
Create a simple test to verify functionality:
```python
def test_basic_functionality():
"""Basic smoke test for migrated module"""
# Create minimal instance
instance = create_test_instance()
# Run migrated function
result = migrated_function(instance)
# Verify basic properties
assert result is not None
assert result.is_feasible()
```
Step 5: Verify Migration
- Check imports resolve correctly
- Try importing the new module
- Verify no circular dependencies
- Run the test case
- Ensure basic functionality works
- Compare behavior with original code if needed
- Verify architectural compliance
- Check layer separation (no Problem code in Algorithm layer, etc.)
- Ensure following the Solver/Instance/Solution interfaces
Special Cases
Migrating Jupyter Notebooks
When migrating .ipynb files to tutorials:
- Clean up for educational clarity
- Add markdown explanations between code cells
- Remove debugging/experimental code
- Structure: Problem β Setup β Solve β Visualize β Interpret
- Ensure reproducibility
- Keep examples runnable in <30 seconds
- Use small test instances
- Include all necessary imports
- Follow tutorial naming convention
- Format: 0X_descriptive_name.ipynb
- Update README with tutorial description
Merging Multiple Files
When multiple source files map to one destination (e.g., order_info.py + demands.py β generators.py):
- Identify common functionality
- Create unified interface
- Preserve all unique features from each source
- Organize as separate classes or functions within the same module
Key References
- File mappings: See [migration_map.md](references/migration_map.md)
- Architecture patterns: See [architecture.md](references/architecture.md)
- Project guidelines: See
CLAUDE.mdin project root
Design Principles
- β Minimal viable clarity over perfection
- β Generalize from specific to reusable
- β Decouple layers cleanly
- β No over-engineering before 2+ use cases
- β No documentation before code works
More from this repository10
Extracts and integrates real-world street networks from OpenStreetMap for Vehicle Routing Problem (VRP) modeling and analysis.
Maintains a comprehensive, up-to-date architecture map documenting system modules, data flows, entry points, and dependencies in ARCHITECTURE_MAP.md.
create-playground skill from dudusoar/vrp-toolkit
Synchronizes TASK_BOARD.md by reading project logs and updating task statuses to reflect actual progress.
Quickly manages Python virtual environments, packages, and dependencies using uv, providing fast and modern project setup commands.
update-migration-log skill from dudusoar/vrp-toolkit
Systematically maps Streamlit playground UI to vrp-toolkit backend APIs, providing interface references and contract test integration for efficient module connections.
Logs and tracks development issues, debugging processes, and solutions in a structured DEBUG_LOG.md file for systematic problem resolution and knowledge retention.
Manages and maintains VRP Toolkit skills through compliance checks, documentation sync, and change tracking.
Provides comprehensive documentation for data structures in the VRP toolkit, covering problem, algorithm, data, and runtime layers for quick reference.