
auto-release-manager
Automate version updates and releases for any project type (Node.js, Python, Rust, Unity, Unreal, et
Auto Release Manager
Automate the entire release workflow for any project type with intelligent project detection and cross-platform support.
Purpose
This skill streamlines version management across different project types by:
- Automatically detecting project type (Node.js, Python, Rust, Unity, Unreal, etc.)
- Updating version files in appropriate formats (JSON, TOML, YAML, Unity assets)
- Generating CHANGELOG from git commit history
- Handling git operations (commit, tag, push) with OS compatibility
- Supporting game engine specific workflows (Unity version.json ← → ProjectSettings.asset sync)
When to Use
Use this skill when:
- Releasing a new version of any project
- User requests "update version", "create release", "bump version"
- Need to handle versions across multiple files (e.g., Unity's dual-file approach)
- Want automated CHANGELOG generation from commits
- Working with game engine projects (Unity, Unreal)
Example user requests:
- "Bump patch version and create release"
- "Update to v2.1.0"
- "Create Unity release with version 1.5.0"
- "Generate CHANGELOG and commit"
Workflow
Step 1: Detect Project Type
Start by running the project detection script to identify the project type and version files:
python -X utf8 scripts/detect_project.py .
The script returns JSON with:
{
"project_type": "unity",
"version_files": [
"version.json",
"ProjectSettings/ProjectSettings.asset"
],
"detected_version": "1.2.3"
}
Supported project types:
nodejs- Node.js (package.json)python- Python (pyproject.toml, setup.py)rust- Rust (Cargo.toml)go- Go (VERSION file)unity- Unity (version.json + ProjectSettings.asset)unreal- Unreal Engine (.uproject)claude-plugin- Claude Code Plugin (plugin.json)generic- Generic project (VERSION file)
Step 2: Determine New Version
Calculate the new version based on update type:
Semantic Versioning (MAJOR.MINOR.PATCH):
- PATCH (x.x.X): Bug fixes
- MINOR (x.X.0): New features (backward compatible)
- MAJOR (X.0.0): Breaking changes
Examples:
- 1.2.3 → 1.2.4 (patch)
- 1.2.3 → 1.3.0 (minor)
- 1.2.3 → 2.0.0 (major)
If user specifies version directly (e.g., "v2.1.0"), use that version.
Step 3: Update Version Files
Use the universal version updater to update all detected files:
python -X utf8 scripts/update_version.py <file1> <file2> ... <new_version>
Example for Node.js:
python -X utf8 scripts/update_version.py package.json 1.3.0
Example for Unity (multiple files):
python -X utf8 scripts/update_version.py version.json ProjectSettings/ProjectSettings.asset 1.3.0
Unity-specific: After updating version.json, sync to ProjectSettings.asset:
python -X utf8 scripts/sync_unity_version.py
This ensures version.json is the single source of truth.
Step 4: Generate CHANGELOG (Optional)
If user wants CHANGELOG updates or it's part of the workflow:
python -X utf8 scripts/changelog_generator.py <new_version> [since_tag] [changelog_path]
Examples:
# Generate from last tag to HEAD
python -X utf8 scripts/changelog_generator.py 1.3.0 v1.2.3
# Generate from all commits
python -X utf8 scripts/changelog_generator.py 1.3.0
# Custom CHANGELOG path
python -X utf8 scripts/changelog_generator.py 1.3.0 v1.2.3 CHANGELOG.ko.md
The script parses Conventional Commits and groups by type:
feat:→ Addedfix:→ Fixedrefactor:→ Changeddocs:→ Documentation
Step 5: Git Operations
Ask user which git operations to perform using AskUserQuestion tool:
Tool constraints:
- Header: "Git 작업" (6 characters ✅)
- Options: 3 options (within 2-4 range ✅)
- multiSelect: false
Options:
-
"커밋만" (label: 2 words ✅)
- Description: "버전 업데이트를 커밋만 합니다. 태그와 푸시는 나중에 직접 처리하겠습니다."
- Action: Commit only
-
"커밋+태그" (label: 2 words ✅)
- Description: "커밋과 태그를 생성합니다. 푸시는 나중에 직접 하겠습니다."
- Action: Commit + Create tag
-
"전체" (label: 1 word ✅)
- Description: "커밋, 태그 생성, 푸시까지 모든 작업을 자동으로 처리합니다. (권장)"
- Action: Commit + Tag + Push
Based on user selection:
Commit:
python -X utf8 scripts/git_operations.py commit "chore: bump version to <VERSION>
Version updates:
- Updated <files> to <VERSION>
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>"
Create Tag:
python -X utf8 scripts/git_operations.py tag v<VERSION> "Release v<VERSION>"
Push (branch + tags):
python -X utf8 scripts/git_operations.py push
python -X utf8 scripts/git_operations.py push-tags
Step 6: GitHub Release (Optional)
If user wants GitHub release, use gh CLI:
gh release create v<VERSION> \
--title "v<VERSION> - <Title>" \
--notes "<Release notes from CHANGELOG>"
Project-Specific Workflows
Unity Workflow
Unity projects require special handling due to dual-file approach:
- Detect Unity project (ProjectSettings.asset exists)
- Update version.json first (source of truth)
- Sync to ProjectSettings.asset using sync_unity_version.py
- Commit both files together
- Tag and push
Reference: references/unity-guide.md for detailed Unity workflow.
Unreal Workflow
Unreal projects use .uproject JSON file:
- Detect .uproject file
- Update Version field in .uproject
- Optionally sync to Config/DefaultGame.ini
- Commit, tag, push
Reference: references/unreal-guide.md for detailed Unreal workflow.
Node.js / Python / Rust Workflow
Standard workflow for web/backend projects:
- Detect project type via package file
- Update version field in package file
- Generate CHANGELOG from commits
- Commit, tag, push
Error Handling
Handle common errors:
Project not detected:
- Check if running in correct directory
- Look for .git directory
- Suggest creating VERSION file for generic projects
Version file not found:
- Suggest creating file from template (assets/)
- For Unity: Create version.json from template
Git errors:
- Check if git repository exists
- Verify remote is configured
- Handle authentication issues
Script errors:
- Ensure Python 3.11+ is installed
- Check file permissions
- Verify file encodings (UTF-8)
Bundled Resources
Scripts
All scripts are in scripts/ directory and work cross-platform (Windows, macOS, Linux):
- detect_project.py: Auto-detect project type
- update_version.py: Universal version updater
- sync_unity_version.py: Unity version synchronization
- git_operations.py: Git workflow automation
- changelog_generator.py: CHANGELOG generation
References
Detailed guides in references/ directory:
- project-types.md: All supported project types and version file locations
- unity-guide.md: Unity-specific version management
- unreal-guide.md: Unreal Engine version management
Load these as needed for detailed information.
Assets
Templates in assets/ directory:
- version.json.template: Template for Unity/game projects
- CHANGELOG.md.template: Template for new CHANGELOG files
Use these when creating new version files.
Best Practices
- Always commit version files together (e.g., Unity's version.json + ProjectSettings.asset)
- Use semantic versioning consistently
- Write meaningful commit messages following Conventional Commits
- Tag releases with
vprefix (e.g., v1.2.3) - Keep CHANGELOG updated for user-facing changes
- For Unity: version.json is source of truth, always sync to ProjectSettings.asset
Notes
- Scripts use Python 3.11+ with only stdlib dependencies
- All file operations use UTF-8 encoding
- Path handling uses pathlib for cross-platform compatibility
- Git operations use subprocess for reliability
- Unity YAML parsing uses regex for robustness