Skip to content

v0.3.0

Choose a tag to compare

@jlevy jlevy released this 12 Jun 00:54
be2f938

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-uv

The 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.17 in the generated CI and publish workflows.
  • Added [tool.uv] required-version = ">=0.9" so projects fail fast on uv versions
    too old for relative-duration UV_EXCLUDE_NEWER.
  • Bumped dev-dependency floors: ruff>=0.15.15, basedpyright>=1.39.6.
  • Pinned actions/checkout to the immutable v6.0.2 tag (matching the existing
    astral-sh/setup-uv pin) 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 update in 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 sync after your first commit. Dynamic
    versioning reads git, so syncing before any commit leaves the editable install at
    version 0.0.0. The README and skill now reflect this order.

Deprecations

  • uvtemplate is retired. This template no longer uses or recommends the old
    interactive uvx uvtemplate helper; the agent skill and plain copier fully replace
    it. Projects created with uvtemplate keep working and keep updating via
    copier update normally.

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