migrate-to-uv

Migrate Python projects from Poetry, pipx, or pip to uv packaging.

15|1|Updated Jan 3, 2026
One-click install
npx skills add https://github.com/fprochazka/claude-code-plugins --skill migrate-to-uv-fprochazka
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: migrate-to-uv
Source: https://github.com/fprochazka/claude-code-plugins/tree/main/plugins/migrate-to-uv/skills/migrate-to-uv
Command: npx skills add https://github.com/fprochazka/claude-code-plugins --skill migrate-to-uv-fprochazka

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Moving a Python project from Poetry, pipx, or pip/requirements.txt to uv involves tedious manual conversion of pyproject.toml metadata, version specifiers, dependency groups, build backends, and lockfiles, with many edge cases that break builds if missed. ## Core Features & Use Cases - Automated and Manual Migration Paths: Runs uvx migrate-to-uv for standard projects or guides step-by-step manual conversion of Poetry sections to PEP 621 format. - Pre-Migration Blocker Assessment: Detects C/C++/Rust extensions, private package indexes, monorepo layouts, and tox configuration before starting, warning about incompatible build backends. - Workspace and Tool Conversion: Converts Poetry monorepos to uv workspaces with a unified lockfile, replaces pipx with uv tool, and updates CI/CD and Docker configurations. - Use Case: You inherit a Poetry-based service with dev dependency groups and a private index. The skill converts pyproject.toml to PEP 621, maps the private index to [[tool.uv.index]] with environment-variable authentication, generates uv.lock, and updates your GitHub Actions workflow. ## Quick Start Migrate this Poetry project to uv, converting pyproject.toml to PEP 621 format and generating a uv.lock file.

Frequently Asked Questions about migrate-to-uv

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I migrate a Python project from Poetry to uv?▼

Run `uvx migrate-to-uv` in the project root to automatically convert [tool.poetry] sections to PEP 621 [project] format, then run `uv sync` and `uv run pytest` to verify. Complex projects may need manual conversion of build backends and sources.

How to convert Poetry version specifiers to uv format?▼

Poetry caret specifiers like ^1.2.3 become >=1.2.3,<2.0.0, and tilde specifiers like ~1.2.3 become >=1.2.3,<1.3.0 in PEP 440 format. The python = "^3.10" constraint converts to requires-python = ">=3.10,<4.0".

Does uv_build support C or Rust extensions?▼

No, uv_build does not support compiling C/C++/Rust extensions. Projects with ext_modules, cython, or PyO3 must use setuptools, scikit-build-core, or maturin as the build backend instead.

Can uv replace pipx for installing CLI tools?▼

Yes, `uv tool install pkg` replaces `pipx install pkg`, and `uvx pkg` replaces `pipx run pkg`. For editable local installs that update after git pull, use `uv tool install -e .`.

How do I handle private package indexes when migrating to uv?▼

Convert [[tool.poetry.source]] sections to [[tool.uv.index]] entries with the same name and URL. Authentication uses environment variables like UV_INDEX_<NAME>_USERNAME and UV_INDEX_<NAME>_PASSWORD instead of Poetry's http-basic config.

What are the limitations of automated Poetry to uv migration?▼

The migrate-to-uv tool does not change the build backend, so you must manually replace poetry-core with hatchling or another backend. It also does not convert authentication configuration for private indexes, which requires separate environment variable setup.