uv workflows for Python — dependencies, virtualenvs, PEP 723 scripts, Python version management, CI, and Docker. Use when working on Python packaging/deps/tooling, writing GitHub Actions for Python projects, or building Docker images for Python apps.
Scanned 9/12/2026
Install to Claude Code
npx -y skills add harperreed/dotfiles --skill uv --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Uv?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/harperreed-dotfiles)More formats (shields.io, HTML) on the badges page.
---
name: uv
description: uv workflows for Python — dependencies, virtualenvs, PEP 723 scripts, Python version management, CI, and Docker. Use when working on Python packaging/deps/tooling, writing GitHub Actions for Python projects, or building Docker images for Python apps.
---
# uv Field Manual
Assumption: `uv` is installed and on PATH (`uv --version` to confirm; if missing, halt and report).
Version pins below were current 2026-07-05 — verify before relying on them.
## Daily workflows
### Project ("cargo-style") flow
```bash
uv init myproj # create pyproject.toml + .venv
cd myproj
uv add ruff pytest httpx # fast resolver + lock update
uv run pytest -q # run tests in project venv
uv lock # refresh uv.lock (if needed)
uv sync --locked # reproducible install (CI-safe)
```
### Script flow (PEP 723)
```bash
uv run hello.py # zero-dep script, auto-env
uv add --script hello.py rich # embeds dep metadata in the script
uv run --with rich hello.py # transient deps, no state
```
### CLI tools (pipx replacement)
```bash
uvx ruff check . # ephemeral run
uv tool install ruff # user-wide persistent install
uv tool list # audit installed CLIs
uv tool update --all # keep them fresh
```
### Python version management
```bash
uv python install 3.12 3.13
uv python pin 3.13 # writes .python-version
uv run --python 3.12 script.py
```
### Legacy pip interface
```bash
uv venv .venv
source .venv/bin/activate
uv pip install -r requirements.txt
uv pip sync -r requirements.txt # deterministic install
```
## Performance knobs
| Env Var | Purpose | Typical value |
| ------------------------- | ----------------------- | ------------- |
| `UV_CONCURRENT_DOWNLOADS` | saturate fat pipes | `16` or `32` |
| `UV_CONCURRENT_INSTALLS` | parallel wheel installs | CPU cores |
| `UV_OFFLINE` | cache-only mode | `1` |
| `UV_INDEX_URL` | internal mirror | `https://…` |
| `UV_PYTHON` | pin interpreter in CI | `3.13` |
```bash
uv cache dir && uv cache size # show path + size
uv cache clean # wipe wheels & sources
```
## CI: GitHub Actions
```yaml
name: tests
on: [push]
jobs:
pytest:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: astral-sh/setup-uv@v8.2.0 # immutable releases since v8.0.0 — moving tags like @v8 do NOT exist; pin the full version
- run: uv python install # obeys .python-version
- run: uv sync --locked
- run: uv run pytest -q
```
## Docker (multistage — the one true recipe)
```dockerfile
# Build stage
FROM ghcr.io/astral-sh/uv:python3.13-bookworm-slim AS builder
WORKDIR /app
# Deps first for layer caching; code after
COPY pyproject.toml uv.lock ./
RUN uv sync --frozen --no-cache --no-dev
# Runtime stage
FROM debian:bookworm-slim
COPY --from=ghcr.io/astral-sh/uv:latest /uv /bin/uv
RUN useradd --create-home --shell /bin/bash app
WORKDIR /app
COPY --from=builder /app/.venv /app/.venv
COPY --chown=app:app . .
USER app
ENV PATH="/app/.venv/bin:$PATH"
CMD ["uv", "run", "python", "-m", "myapp"]
```
Tips: copy `pyproject.toml` + `uv.lock` before app code (layer caching); `--frozen` honors the lockfile exactly; `--no-cache` keeps the image lean; `--no-dev` skips dev deps; set `PATH` so the venv is active.
## Migration matrix
| Legacy | Replacement |
| -------------------- | ---------------------- |
| `python -m venv` | `uv venv` |
| `pip install` | `uv pip install` |
| `pip-tools compile` | `uv lock` |
| `pipx run` | `uvx` |
| `poetry add` | `uv add` |
| `pyenv install` | `uv python install` |
## Troubleshooting
| Symptom | Resolution |
| ------------------------ | ------------------------------------------------------ |
| `Python X.Y not found` | `uv python install X.Y` or set `UV_PYTHON` |
| C-extension build errors | `unset UV_NO_BUILD_ISOLATION` |
| Need a fresh env | `uv cache clean && rm -rf .venv && uv sync` |
| Still stuck | `RUST_LOG=debug uv ...` |
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!