v0.3.0
What's Changed
simple-modern-uv v0.3.0 is a significant update focused on first-class AI agent
support. The template now ships an installable agent skill and agent instruction
files, so you (or your coding agent) can create, modernize, or update a Python project
from a single prompt. It also adds license and publishing options as proper template
questions and refreshes the toolchain.
Existing projects upgrade cleanly: a default copier update is a no-op, because every
new question keeps the template's previous behavior as its default.
New Features
Agent skill: use the template from any AI coding agent.
A new Agent Skill (skills/simple-modern-uv/) lets an agent
drive the whole template. Install it into Claude Code, Codex, Cursor, Gemini CLI, and
50+ other agents with one command, then just describe what you want:
npx skills add jlevy/simple-modern-uvThe skill covers three workflows from one prompt:
- New project — scaffold from scratch.
- Upgrade an existing project — convert a Poetry, setuptools/pip, or PDM project to
uv, ruff, BasedPyright, and GitHub Actions. - Update a templated project — pull the latest template changes.
It asks only the decisions that matter (package name, description, license, whether you
publish to PyPI) and applies the conventions silently. Reference guides for migration,
customization, and troubleshooting ship alongside it.
License is now a template question. The new package_license answer offers MIT
(default), Apache-2.0, BSD-3-Clause, AGPL-3.0-or-later, Proprietary, or None
(decide later). It writes the correct LICENSE file and pyproject.toml license
field together; None writes neither.
Publishing is now a template question. The new publish_to_pypi answer (default
yes) controls the publish path. Answer no for a private package or an app: the publish
workflow and publishing docs are omitted and a Private :: Do Not Upload classifier is
added so PyPI rejects an accidental upload.
Change either later without hand-editing files, e.g.
uvx copier@9.15.1 update --data package_license=Apache-2.0 — so future updates stay
consistent.
Agent instruction files in generated projects. Every project now includes an
AGENTS.md (build/test commands and conventions, read natively by
Codex, Cursor, Copilot, Gemini CLI, and others) plus a CLAUDE.md that imports it for
Claude Code, so both stay in sync with no symlinks.
Improvements
- Updated uv to
0.11.17in the generated CI and publish workflows. - Added
[tool.uv] required-version = ">=0.9"so projects fail fast on uv versions
too old for relative-durationUV_EXCLUDE_NEWER. - Bumped dev-dependency floors:
ruff>=0.15.15,basedpyright>=1.39.6. - Pinned
actions/checkoutto the immutablev6.0.2tag (matching the existing
astral-sh/setup-uvpin) for supply-chain hardening. - Agent-first README with an Agent Quick Start section, and a note that the template
also upgrades existing projects. - The template repo now has its own CI that renders the template (across license
and publish variants), runs the full lint/test/build cycle on the render, checks that
a project rendered from the previous release updates cleanly, and validates the skill. - New reference docs: a uv changes timeline
and a refreshed type-checker comparison
(BasedPyright remains the default).
Upgrading
- From any earlier version:
copier updatein a clean working tree. With defaults
it changes nothing about your license or publishing; it brings in the tool-version
bumps,AGENTS.md/CLAUDE.md, and[tool.uv] required-version. - If you previously hand-edited the license or deleted
publish.yml: pass the
matching answer so the update preserves your intent, e.g.
copier update --data publish_to_pypi=false. See the skill's
customize guide. - New-project setup note: run
uv syncafter your first commit. Dynamic
versioning reads git, so syncing before any commit leaves the editable install at
version0.0.0. The README and skill now reflect this order.
Deprecations
uvtemplateis retired. This template no longer uses or recommends the old
interactiveuvx uvtemplatehelper; the agent skill and plaincopierfully replace
it. Projects created withuvtemplatekeep working and keep updating via
copier updatenormally.
Validation: this repo's CI passed all six checks on the release commit be2f938
(template renders across license and publish variants with the full lint/test/build
cycle, an update-path test from v0.2.27, and skill validation), plus a local render
verification on the same commit.
During review, a project rendered from this branch passed the full Python 3.11–3.14
CI matrix (jlevy/test-smu-1).
The downstream simple-modern-uv-template
repo will be updated to this tag next, per updating.md.
Full Changelog: v0.2.27...v0.3.0