Skip to main content

🏭 Automate repository maintenance, releases, and CI/CD workflows

Project description

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

Why repomatic

  • 18 third-party GitHub Actions replaced by internal CLI commands and SHA-256-verified binary downloads, keeping the supply chain attack surface minimal
  • 8 Python linters and formatters (pylint, black, isort, pyupgrade, pydocstyle, pycln, docformatter, blacken-docs) consolidated into ruff
  • 5 packaging and install tools (poetry, build, twine, check-wheel-contents, pip-audit) consolidated into uv
  • All uses: references pinned to full commit SHAs via Renovate, with stabilization windows before adopting new versions
  • SLSA provenance attestations on every release artifact (wheels and compiled binaries)
  • VirusTotal scanning of compiled binaries to seed AV vendor databases and reduce false positives
  • Trusted Publishing for PyPI uploads: no long-lived tokens stored as secrets
  • Immutable releases enforced via GitHub's tag protection and release locking
  • Workflow security linting with zizmor on every push to catch dangerous triggers and excessive permissions
  • Credential scanning with gitleaks to prevent secret leakage
  • Single pyproject.toml configuration: no extra dotfiles, no JSON configs, no YAML presets to maintain
  • 15+ code quality tools (ruff, mypy, biome, typos, mdformat, shfmt, yamllint, actionlint, lychee, oxipng, jpegoptim, pyproject-fmt, labelmaker, gitleaks, zizmor) managed through one repomatic run <tool> interface with automatic installation and platform-specific binary caching

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

repomatic-6.14.0.tar.gz (347.8 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

repomatic-6.14.0-py3-none-any.whl (417.1 kB view details)

Uploaded Python 3

File details

Details for the file repomatic-6.14.0.tar.gz.

File metadata

  • Download URL: repomatic-6.14.0.tar.gz
  • Upload date:
  • Size: 347.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for repomatic-6.14.0.tar.gz
Algorithm Hash digest
SHA256 8fe45471543a546ae0961338650242f9a048c2f6e35ee9bcffcfedfbb9593a1a
MD5 0e6067d609598ca4450e2671553f56e8
BLAKE2b-256 4a1c8fa9b599371dc20912a1d3b352b130b7072d3d17559412f84b8e66bb17ac

See more details on using hashes here.

File details

Details for the file repomatic-6.14.0-py3-none-any.whl.

File metadata

  • Download URL: repomatic-6.14.0-py3-none-any.whl
  • Upload date:
  • Size: 417.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.7 {"installer":{"name":"uv","version":"0.11.7","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for repomatic-6.14.0-py3-none-any.whl
Algorithm Hash digest
SHA256 efbaadf09c03d3a1d4cfd7958489e51a5531973a71c157d56b00917a6d006bb8
MD5 ce7e7e566ad607d6bda3cc58ee37afb0
BLAKE2b-256 191ab0a9f0bb1c19ad8f1b67e1e57b9e8d08d0a204c184ec64e70a24126655a2

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page