Initial commit
This commit is contained in:
120
commands/release.md
Normal file
120
commands/release.md
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
tags: ["versioning", "release", "deployment", "git", "tagging"]
|
||||
description: "Release new version following semantic versioning guidelines"
|
||||
aliases: ["version", "tag-release"]
|
||||
allowed-tools: ["Read", "Edit", "Bash", "Grep", "AskUserQuestion"]
|
||||
model: claude-sonnet-4-5
|
||||
references_guidelines:
|
||||
- docs/development/conventions/versioning-and-releases.md # Version bump rules, file update list, semver strategy
|
||||
---
|
||||
|
||||
# /release Command
|
||||
|
||||
**WHAT**: Automate version releases with CHANGELOG updates, version file synchronization, and annotated git tags.
|
||||
|
||||
**WHY**: Ensure consistent version management across all project files following semantic versioning and project-specific guidelines.
|
||||
|
||||
**HOW**: Read versioning convention, analyze changes, suggest version bump, update files, create git tag.
|
||||
|
||||
## Usage
|
||||
|
||||
```bash
|
||||
/release # Interactive: analyze changes and suggest version
|
||||
/release 0.13.0 # Release specific version
|
||||
/release patch # Release patch version (bug fixes only)
|
||||
/release minor # Release minor version (new features)
|
||||
/release major # Release major version (breaking changes)
|
||||
```
|
||||
|
||||
## Workflow
|
||||
|
||||
1. **Read Convention** - Load version bump rules from `docs/development/conventions/versioning-and-releases.md`
|
||||
2. **Validate Preconditions**
|
||||
- Git working directory must be clean
|
||||
- CHANGELOG.md [Unreleased] section must have content
|
||||
- Must be on appropriate branch (defined in convention)
|
||||
3. **Analyze Changes** - Parse CHANGELOG [Unreleased] to determine appropriate version bump
|
||||
4. **Get Confirmation** - Show suggested version with rationale, ask user to proceed
|
||||
5. **Update Files** - Synchronize version across all project files (list from convention)
|
||||
6. **Create Git Tag** - Annotated tag with release notes from CHANGELOG
|
||||
7. **Display Summary** - Show updated files, created tag, and next steps
|
||||
|
||||
## What Gets Updated
|
||||
|
||||
The command reads `versioning-and-releases.md` to determine:
|
||||
- Which files contain version numbers
|
||||
- Version bump rules (pre-1.0.0 vs post-1.0.0)
|
||||
- Git tag format and content
|
||||
- Branch requirements for releases
|
||||
|
||||
**Common version files:**
|
||||
- CHANGELOG.md (transform [Unreleased] → [version] - date)
|
||||
- package.json, pyproject.toml, Cargo.toml (language-specific)
|
||||
- CLAUDE.md frontmatter (version, last_updated)
|
||||
- Plugin metadata files (for plugin projects)
|
||||
|
||||
## Example Output
|
||||
|
||||
```
|
||||
Release Analysis
|
||||
================
|
||||
Current version: 0.30.0
|
||||
|
||||
Changes in [Unreleased]:
|
||||
- Added: 2 new features
|
||||
- Changed: 1 breaking change
|
||||
- Fixed: 1 bug fix
|
||||
|
||||
Suggested version: 0.31.0 (MINOR)
|
||||
Reason: Breaking changes increment MINOR in pre-1.0.0
|
||||
|
||||
Proceed with v0.31.0? (yes/no/custom): yes
|
||||
|
||||
Updating files...
|
||||
✓ CHANGELOG.md
|
||||
✓ .claude-plugin/marketplace.json
|
||||
✓ plugins/ai-toolkit/.claude-plugin/plugin.json
|
||||
✓ CLAUDE.md
|
||||
|
||||
Creating git tag...
|
||||
✓ Created annotated tag v0.31.0
|
||||
|
||||
Next steps:
|
||||
git push origin main --tags
|
||||
```
|
||||
|
||||
## Error Prevention
|
||||
|
||||
**Blocks release if:**
|
||||
- Uncommitted changes exist → Suggests `/commit` first
|
||||
- CHANGELOG.md [Unreleased] is empty → Suggests `/changelog` first
|
||||
- Version already exists → Suggests next available versions
|
||||
- Wrong branch for release type → Warns and asks for confirmation
|
||||
|
||||
## Integration
|
||||
|
||||
**Typical workflow:**
|
||||
```bash
|
||||
/implement TASK-001 --full # Complete implementation
|
||||
/quality # Verify quality
|
||||
/changelog # Document changes
|
||||
/commit # Commit changes
|
||||
/release # Create release
|
||||
git push origin main --tags # Push to remote
|
||||
```
|
||||
|
||||
**With CI/CD:**
|
||||
Pushing the tag triggers automated deployment (if configured).
|
||||
|
||||
## Related Commands
|
||||
|
||||
- `/changelog` - Document changes before release
|
||||
- `/commit` - Commit changes before release
|
||||
- `/project-status` - Review overall project state
|
||||
|
||||
## Configuration
|
||||
|
||||
All release rules, version bump logic, and file lists are defined in:
|
||||
`docs/development/conventions/versioning-and-releases.md`
|
||||
|
||||
Edit that file to customize your project's versioning strategy.
|
||||
Reference in New Issue
Block a user