跳到正文
cccskills
免费在 GitHub 公开

framework-migration-assistant

Automatically migrate Python web applications between frameworks (Flask → FastAPI, Django → FastAPI). Use when you need to migrate an existing web application to a modern framework while preserving functionality. The skill analyzes the codebase, updates routes, handlers, configuration, dependency injection patterns, and tests. Creates git commits for each migration phase and generates a comprehensive summary of all changes. Supports automatic dependency updates, code transformations, and test adaptations.

中文简介正在准备中。当前显示原文说明。

查看安装方法

包含的文件(11)

  • SKILL.md7.5 KB
  • assets/example_fastapi_app.py4.0 KB
  • assets/example_flask_app.py2.6 KB
  • references/framework_comparison.md7.7 KB
  • references/migration_guide.md7.4 KB
  • references/migration_patterns.md10.9 KB
  • scripts/migrate_config.py5.1 KB
  • scripts/migrate_dependencies.py4.6 KB
  • scripts/migrate_routes.py5.7 KB
  • scripts/migrate_tests.py4.9 KB
  • scripts/migrate.py12.6 KB

SKILL.md(原文)

安装前可以查看交给 AI 代理的指令内容。

Framework Migration Assistant

Overview

This skill automatically migrates Python web applications between frameworks, transforming code, configuration, and tests while preserving existing functionality. It handles route migration, request/response patterns, dependency injection, configuration updates, and test adaptations, committing changes incrementally with detailed summaries.

Quick Start

Basic Usage

# Navigate to your repository
cd /path/to/your/repo

# Run migration
python scripts/migrate.py . --from flask --to fastapi

The migration process will:

  1. Create a migration branch
  2. Analyze your codebase
  3. Update dependencies
  4. Migrate routes and handlers
  5. Update configuration
  6. Adapt tests
  7. Generate a summary report

Example: Flask to FastAPI

# Migrate Flask app to FastAPI
python scripts/migrate.py /path/to/flask-app --from flask --to fastapi

# Output:
# ✓ Created migration branch: migrate-flask-to-fastapi
# ✓ Analyzing codebase...
# ✓ Found 15 route files
# ✓ Found 23 test files
# ✓ Migrating dependencies...
# ✓ Migrating routes...
# ✓ Migrating configuration...
# ✓ Migrating tests...
# ✓ Migration completed successfully!

Supported Migration Paths

Flask → FastAPI

What gets migrated:

  • Route decorators: @app.route() → @app.get(), @app.post(), etc.
  • Request handling: request.args → query parameters, request.json → Pydantic models
  • Response handling: jsonify() → direct return
  • Configuration: Flask config → Pydantic Settings
  • Tests: Flask test client → FastAPI TestClient
  • Dependencies: Flask packages → FastAPI equivalents

Example transformation:

Before (Flask):

@app.route('/users/<int:user_id>', methods=['GET'])
def get_user(user_id):
    user = db.get_user(user_id)
    return jsonify(user)

After (FastAPI):

@app.get('/users/{user_id}')
async def get_user(user_id: int) -> UserSchema:
    user = await db.get_user(user_id)
    return user

Django → FastAPI

What gets migrated:

  • URL patterns → FastAPI routes
  • Django views → FastAPI path operations
  • Django ORM references → SQLAlchemy patterns
  • Settings module → Pydantic Settings
  • Django test cases → FastAPI tests

Migration Process

Phase 1: Preparation

The migration tool automatically:

  • Validates the repository is a git repo
  • Detects the source framework (if not specified)
  • Creates a migration branch
  • Analyzes the codebase structure

Phase 2: Dependency Migration

Updates package dependencies:

  • requirements.txt
  • pyproject.toml
  • Replaces framework-specific packages
  • Adds required FastAPI dependencies

Example changes:

flask>=2.0.0          → fastapi>=0.104.0
werkzeug>=2.0.0       → uvicorn[standard]>=0.24.0
flask-cors>=3.0.0     → fastapi-cors>=0.0.6

Phase 3: Route Migration

Transforms route definitions and handlers:

  • Updates route decorators
  • Converts HTTP method specifications
  • Transforms path parameters
  • Updates request/response handling
  • Adds async/await where needed
  • Adds type hints for validation

Phase 4: Configuration Migration

Updates configuration files:

  • Migrates Flask config to Pydantic Settings
  • Updates environment variable handling
  • Converts middleware setup
  • Updates CORS configuration
  • Creates new config files if needed

Phase 5: Test Migration

Adapts test files:

  • Updates test client initialization
  • Converts test assertions
  • Updates request methods
  • Adapts fixtures and mocks
  • Adds async test support

Phase 6: Summary Generation

Creates a comprehensive report:

  • Total changes made
  • Files modified by category
  • Migration plan executed
  • Next steps for manual review
  • Saved as MIGRATION_SUMMARY.json

Using the Migration Scripts

Main Migration Script

python scripts/migrate.py <repo_path> --from <source> --to <target>

# Options:
#   repo_path: Path to the repository
#   --from: Source framework (flask, django, or auto)
#   --to: Target framework (fastapi)

Individual Migration Modules

You can also run individual migration steps:

from migrate_dependencies import DependencyMigrator
from migrate_routes import RouteMigrator
from migrate_config import ConfigMigrator
from migrate_tests import TestMigrator

# Run specific migration
migrator = RouteMigrator(repo_path, 'flask', 'fastapi')
migrator.migrate()

Post-Migration Steps

After migration completes:

  1. Review the changes

    git log --oneline
    git diff main..migrate-flask-to-fastapi
    
  2. Install new dependencies

    pip install -r requirements.txt
    
  3. Run tests

    pytest
    
  4. Manual review needed for:

    • Complex authentication logic
    • Custom middleware
    • Database connection strings
    • Third-party integrations
    • Advanced error handling
  5. Test the application

    uvicorn main:app --reload
    
  6. Merge when ready

    git checkout main
    git merge migrate-flask-to-fastapi
    

Reference Documentation

  • references/framework_comparison.md - Detailed comparison of Flask, Django, and FastAPI including architecture, routing, request handling, and performance
  • references/migration_guide.md - Comprehensive migration guide with step-by-step instructions, common patterns, troubleshooting, and post-migration checklist
  • references/migration_patterns.md - Common migration patterns for routes, requests, responses, authentication, database operations, and testing

Example Applications

Example applications are provided in assets/:

  • example_flask_app.py - Flask application before migration
  • example_fastapi_app.py - Same application after migration to FastAPI

Compare these files to understand the transformations applied.

Migration Summary

After migration, review MIGRATION_SUMMARY.json:

{
  "source_framework": "flask",
  "target_framework": "fastapi",
  "total_changes": 47,
  "changes_by_type": {
    "dependency": 5,
    "route": 15,
    "config": 4,
    "test": 23
  },
  "files_modified": [...],
  "next_steps": [...]
}

Tips

  • Always commit or backup your code before migration
  • Review each migration commit individually
  • Test thoroughly after migration
  • Update documentation to reflect framework changes
  • Consider performance improvements with async/await
  • Use the generated API documentation (FastAPI auto-generates OpenAPI docs)
  • Consult reference documentation for complex patterns
  • Run tests frequently during manual adjustments

Troubleshooting

Issue: Import errors after migration

  • Solution: Run pip install -r requirements.txt

Issue: Tests fail with async errors

  • Solution: Add @pytest.mark.asyncio and install pytest-asyncio

Issue: Database connections fail

  • Solution: Update connection strings for async SQLAlchemy

Issue: CORS errors

  • Solution: Configure CORS middleware in FastAPI

See references/migration_guide.md for detailed troubleshooting.

评价

还没有评价。欢迎分享你的使用感受。

评论

无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。

还没有评论。来写第一条吧。

提交后会立即公开。请勿填写邮箱、电话等个人信息。URL 最多 2 个。

0 / 1000 字

此表单受 reCAPTCHA 保护,适用 Google 的隐私权政策和服务条款。

同一仓库的技能

Applies abstract interpretation using different abstract domains (intervals, octagons, polyhedra, sign, congruence) to statically analyze program variables and infer invariants, value ranges, and relationships. Use when analyzing program properties, inferring loop invariants, detecting potential errors, or understanding variable relationships through static analysis.

中文简介正在准备中。当前显示原文说明。

ArabelaTso/Skills-4-SE2562026年8月21日 更新

Uses abstract interpretation to automatically infer loop invariants, function preconditions, and postconditions for formal verification. Generates invariants that capture program behavior and support correctness proofs in Dafny, Isabelle, Coq, and other verification systems. Use when adding formal specifications to code, generating verification conditions, inferring contracts for functions, or discovering loop invariants for proofs.

中文简介正在准备中。当前显示原文说明。

ArabelaTso/Skills-4-SE2562026年8月21日 更新

Performs abstract interpretation over source code to infer possible program states, variable ranges, and data properties without executing the program. Reports potential runtime errors including out-of-bounds accesses, null dereferences, type inconsistencies, division by zero, and integer overflows. Use when analyzing code for potential runtime errors, performing static analysis, checking safety properties, or verifying program behavior without execution.

中文简介正在准备中。当前显示原文说明。

ArabelaTso/Skills-4-SE2562026年8月21日 更新

Performs abstract interpretation to produce summarized execution traces and high-level program behavior representations. Highlights key control flow paths, variable relationships, loop invariants, function summaries, and potential runtime states using abstract domains (intervals, signs, nullness, etc.). Use when analyzing program behavior, understanding execution paths, computing loop invariants, tracking variable ranges, detecting potential runtime errors, or generating program summaries without concrete execution.

中文简介正在准备中。当前显示原文说明。

ArabelaTso/Skills-4-SE2562026年8月21日 更新

Create ACSL (ANSI/ISO C Specification Language) formal annotations for C/C++ programs. Use this skill when working with formal verification, adding function contracts (requires/ensures), loop invariants, assertions, memory safety annotations, or any ACSL specifications. Supports Frama-C verification and generates comprehensive formal specifications for C/C++ code.

中文简介正在准备中。当前显示原文说明。

ArabelaTso/Skills-4-SE2562026年8月21日 更新

CLI-based browser automation with persistent page state using ref-based element interaction. Use when users ask to navigate websites, interact with web pages, fill forms, take screenshots, test web applications, or extract information from web pages.

中文简介正在准备中。当前显示原文说明。

ArabelaTso/Skills-4-SE2562026年8月21日 更新

查看 ArabelaTso 的全部技能

报告此技能的问题