Skip to content

Release Process

lauren-mcp uses hatch-vcs for version management. Tags on main drive the full release pipeline via GitHub Actions.


Step-by-step

  1. Review the diff — make sure main is ahead of the last tag by exactly the intended changes:
git log v0.1.0..HEAD --oneline
  1. Update docs — verify that all new public symbols appear in llms-full.txt:
nox -s llms_check
  1. Update README.md — check that the feature list and installation table are current.

  2. Update CHANGELOG.md — move all items from [Unreleased] to a new versioned section:

## [0.2.0] - 2025-07-01

### Added
- ...

## [Unreleased]
  1. Commit the release prep:
git add CHANGELOG.md README.md llms-full.txt
git commit -m "chore(release): prepare v0.2.0"
  1. Tag the commit:
git tag -a v0.2.0 -m "Release v0.2.0"
  1. Push tag and commit:
git push origin main --follow-tags
  1. GitHub Actions takes over — the release.yml workflow:
  2. Runs llms_check, build, build_check
  3. Uploads the wheel and sdist as artifacts
  4. Publishes to TestPyPI automatically
  5. Publishes to PyPI after the pypi environment approval
  6. Creates a GitHub Release with the built artifacts attached

  7. Verify — install from PyPI in a fresh venv and smoke-test:

uv run --with lauren-mcp==0.2.0 python -c "import lauren_mcp; print(lauren_mcp.__version__)"

Hotfix releases

For critical bug fixes on an already-released version:

  1. Branch from the release tag: git checkout -b fix/critical-bug v0.1.0
  2. Apply the fix and add tests.
  3. Cherry-pick to main and dev if needed.
  4. Tag as a patch release: v0.1.1
  5. Follow the same push-and-tag flow above.