Packaging & Publishing Skill
Project scaffolding and PyPI releases - an Agent Skill for Python 3.14 and uv 0.6+.
Search across all documentation pages
Project scaffolding and PyPI releases - an Agent Skill for Python 3.14 and uv 0.6+.
Creates publishable library layout: src/<package>/, pyproject.toml (PEP 621), README.md, LICENSE, CHANGELOG.md, GitHub Actions release.yml, TestPyPI dry-run steps, and version bump policy.
| Input | Why |
|---|---|
| Package name | PyPI name availability |
| License | MIT, Apache-2.0, proprietary |
| Python floor | requires-python (3.14 vs 3.13) |
| Optional extras | dev, gpu dependency groups |
| Publish target | PyPI, private index, Artifactory |
src/<name>/__init__.py with __version__[project.scripts] if CLI entrypoint neededuv build / python -m build verification blocktwine check dist/* in CIsrc/ not repo root on sys.path.hatchling or setuptools explicitly.vX.Y.Z triggers publish - not every main commit.uv sync --all-extras
uv run ruff check .
uv run pytest -q
uv build
uv run twine check dist/*
# CI: publish on tag after trusted publisher auth[project]
name = "acme-utils"
version = "0.1.0"
requires-python = ">=3.14"
dependencies = []
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel]
packages = ["src/acme_utils"]uv publish when available in pinned uv; otherwise twine upload - skill documents both.
One pyproject.toml per package or workspace uv config - document chosen layout in README.
Stack versions: This page was written for Python 3.14.0 (stable 3.14, maintenance 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, and uv 0.6+.
Reviewed by Chris St. John·Last updated Jul 19, 2026