repomatic

Last release Python versions Downloads Unittests status Coverage status

A Python CLI and pyproject.toml configuration that let you release Python packages multiple times a day with only 2-clicks. Designed for uv-based Python projects, but usable for other projects too. The CLI operates through reusable GitHub Actions workflows as its CI delivery mechanism.

Maintainer-in-the-loop: nothing is done behind your back. A PR or issue is created every time a change is proposed or action is needed.

What it automates

  • Version bumping, git tagging, and GitHub release creation

  • Changelog management

  • Python package building and PyPI publishing with supply chain attestations

  • Cross-platform binary compilation (Linux / macOS / Windows, x86_64 / arm64)

  • Formatting autofix for Python, Markdown, JSON, Shell, and typos

  • Linting: Python types with mypy, YAML, GitHub Actions, workflow security, URLs, secrets, and Awesome lists

  • Synchronization of uv.lock, .gitignore, .mailmap, and Mermaid dependency graph

  • Label management with file-based and content-based rules

  • Inactive issue locking

  • Static image optimization

  • Sphinx documentation building, deployment, and autodoc updates

  • Awesome list template synchronization

Quick start

$ cd my-project
$ uvx -- repomatic init
$ git add .
$ git commit -m "Add repomatic"
$ git push

Works for new and existing repositories. Managed files are always regenerated to the latest version; changelog.md is never overwritten. Push, and the workflows guide you through remaining setup via issues and PRs.

See repomatic init --help for available components and options.

Documentation

See the full documentation for:

Used in

Check these projects to get real-life examples of usage and inspiration:

Send a PR to add your project if you use repomatic.

Development

See claude.md for development commands, code style, testing guidelines, and design principles.