Agent skill
releasing-versions
Interactive release workflow for OSS Sustain Guard with version updates, PyPI publishing, and GitHub release notes. Use when ready to release a new version to production.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/development/releasing-versions
SKILL.md
Release Process - Quick Start
Quick guide to release a new version. For detailed info, see workflow-details.md.
Quick Release Checklist
# 1. Verify local setup
make test && make lint && make doc-build
# 2. Analyze changes & update version
# - Run: git log --oneline to see actual changes
# - Edit pyproject.toml: change version
# - Run: uv sync
# - Edit CHANGELOG.md: add new section based on actual changes
# 3. Commit and tag
git add pyproject.toml uv.lock CHANGELOG.md
git commit -m "chore: release version X.Y.Z"
git tag vX.Y.Z
git push origin vX.Y.Z
# 4. Watch pipeline
# → Go to: https://github.com/onukura/oss-sustain-guard/actions
# → Wait for all jobs to succeed
# 5. Prepare English release notes
# → Claude will generate English release notes based on CHANGELOG
# → Copy to GitHub Releases description
The 5 Steps
1️⃣ Prepare & Test
Make sure everything is ready:
git fetch upstream
make test # All tests pass?
make lint # Code clean?
make doc-build # Docs build?
2️⃣ Decide Version
Use Semantic Versioning:
- MAJOR (1.0.0): Breaking changes
- MINOR (0.15.0): New features
- PATCH (0.14.1): Bug fixes
3️⃣ Update Files
Step 1: Analyze actual changes
View what changed since last version:
git log --oneline --since="2 weeks ago"
# Or compare with last tag:
git log --oneline v0.14.0..HEAD
pyproject.toml - Change version:
version = "0.15.0"
Then sync lock file:
uv sync
CHANGELOG.md - Add at top based on actual changes:
## v0.15.0 - 2026-01-20
### Added
- New metric for repository visibility
- Support for Dart package resolver
### Fixed
- Bug in cache invalidation logic
- Memory leak in GraphQL client
### Improved
- Performance optimization in dependency analysis
- Better error messages for network timeouts
Important: Write CHANGELOG entries based on the actual
git logoutput from your recent commits, not generic templates.
4️⃣ Commit & Tag
git add pyproject.toml uv.lock CHANGELOG.md
git commit -m "chore: release version 0.15.0"
git tag v0.15.0
git push origin v0.15.0
5️⃣ Watch & Verify
The publish workflow starts automatically:
GitHub Actions → build → publish-to-pypi → github-release
Check:
- All jobs pass in Actions
- New version on PyPI
- Release appears on GitHub Releases
- Can install:
pip install oss-sustain-guard==0.15.0
6️⃣ Generate & Publish English Release Notes ⭐ REQUIRED
After verifying the release on PyPI and GitHub, Claude will:
- Read your CHANGELOG.md to understand actual changes
- Generate professional English release notes with:
- Executive summary of the release
- Feature highlights with descriptions
- Bug fixes and improvements
- Migration notes (if breaking changes)
- Contributor appreciation
- Provide formatted text ready to copy/paste to GitHub Releases
You will:
- Copy the generated English release notes to GitHub Releases description
- Update any version-specific links or instructions if needed
This ensures your release has comprehensive documentation for all users.
What Happens Automatically
✅ Build Python package ✅ Upload to PyPI (Trusted Publishing) ✅ Sign artifacts with Sigstore ✅ Create GitHub Release ✅ Claude generates English release notes (based on CHANGELOG.md)
GitHub Release Notes Template
🎯 After PyPI release completes, you'll receive:
- English release notes based on your CHANGELOG.md
- Ready-to-copy formatting for GitHub Releases
- Professional structure with sections for features, fixes, improvements
Claude will automatically generate and present these - no need to ask!
Need More Details?
See bundled references:
- workflow-details.md - Detailed technical info
- release-examples.md - Step-by-step examples & troubleshooting
Common Questions
Q: How do I write good CHANGELOG entries?
A: Review your actual commits with git log --oneline and group them by type (Added, Fixed, Improved). Use clear, user-focused language.
Q: What if tests fail? A: Fix the issue and commit before running the release commands.
Q: How to undo a release?
A: Delete the tag (git tag -d vX.Y.Z && git push origin :vX.Y.Z) before PyPI publishes.
Q: Tag created but pipeline didn't start?
A: Verify tag format is vX.Y.Z (must start with 'v'). See troubleshooting docs.
Q: Do I need to ask Claude for release notes? A: No! Claude will automatically generate English release notes after you verify the PyPI release. Just ask "Create release notes" when ready.
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?