| name | release |
| description | Instructions for releasing and publishing the VAK project to crates.io and PyPI. |
Release Project
This skill provides instructions for publishing new releases of the VAK project.
Current Status: Production Ready (v1.0.0) - Ready for publishing.
Prerequisites
cargo-release (optional: cargo install cargo-release)
maturin (pip install maturin)
git
- Access to crates.io (token) and PyPI (token)
- All CI checks passing
- Security scans clean (
cargo audit, cargo deny check)
Pre-Release Checklist
Before releasing, verify:
Version Management
The project uses workspace-level versioning in Cargo.toml:
[workspace.package]
version = "0.1.0"
All workspace members inherit this version:
- Main crate (
vak)
- WASM skills (calculator, crypto-hasher, json-validator, text-analyzer, regex-matcher)
Instructions
1. Prepare Release
git status
cargo test --workspace
cargo audit --deny warnings
cargo deny check
cargo fmt --all -- --check
cargo clippy --all-targets --all-features -- -D warnings
2. Update Version
Update version in Cargo.toml:
[workspace.package]
version = "0.2.0"
3. Update CHANGELOG
Create/update CHANGELOG.md:
# Changelog
## [0.2.0] - 2026-02-10
### Added
- Feature X
- Feature Y
### Changed
- Breaking change Z
### Fixed
- Bug fix A
### Security
- Security fix B
4. Commit and Tag
git add Cargo.toml CHANGELOG.md
git commit -m "chore: release v0.2.0"
git tag v0.2.0
git push origin main --tags
5. Publish to Crates.io
cargo publish --dry-run
cargo publish
Note: WASM skills are workspace members but may not be published separately.
6. Publish Python Bindings to PyPI
maturin build --release --features python
maturin publish --dry-run
maturin publish
7. Create GitHub Release
- Go to GitHub Releases page
- Create new release from tag
v0.2.0
- Copy CHANGELOG entry as release notes
- Attach artifacts:
- WASM skill binaries (
.wasm files)
- Python wheels (
.whl files)
- Source tarball
Automated Release (CI)
The project includes GitHub Action workflows that can automate releases:
Trigger Release
git tag v0.2.0
git push origin v0.2.0
This triggers:
- Full CI test suite
- Security scans
- Build artifacts
- (Future) Automatic publishing
Versioning Guidelines
Semantic Versioning (SemVer)
- MAJOR (1.0.0): Breaking API changes
- MINOR (0.2.0): New features, backward compatible
- PATCH (0.1.1): Bug fixes, backward compatible
Pre-release Versions
- Alpha:
0.1.0-alpha.1
- Beta:
0.1.0-beta.1
- Release Candidate:
0.1.0-rc.1
Release Artifacts
| Artifact | Location | Description |
|---|
| Rust crate | crates.io | Main VAK library |
| Python wheel | PyPI | Python bindings (vak-python) |
| WASM skills | GitHub Release | Pre-compiled WASM modules |
| Documentation | docs.rs | API documentation |
Rollback Procedure
If a release has issues:
cargo yank --vers 0.2.0
pip index versions vak-python
git checkout v0.1.0
git checkout -b hotfix/0.1.1
git tag v0.1.1
Guidelines
- Semantic Versioning: Follow SemVer strictly.
- Changelog: Update
CHANGELOG.md before releasing.
- CI Checks: Ensure all CI checks pass before tagging.
- Dry Run: Always perform a dry run before publishing.
- Wait for Crates.io: If publishing multiple crates, wait for dependencies to propagate (~5 minutes).
- Security First: Never release with known security vulnerabilities.
- Documentation: Ensure docs.rs can build documentation.
Infrastructure TODOs