Files
2025-11-30 08:20:15 +08:00

341 lines
7.2 KiB
Markdown

---
name: version-bumper
description: |
Automatically handles semantic version updates across plugin.json and marketplace catalog when user mentions version bump, update version, or release. Ensures version consistency in claude-code-plugins repository.
allowed-tools: Read, Write, Edit, Grep, Bash
version: 1.0.0
---
# Version Bumper
## Purpose
Automatically manages semantic version updates for Claude Code plugins, ensuring consistency across plugin.json, marketplace catalog, and git tags - optimized for claude-code-plugins repository workflow.
## Trigger Keywords
- "bump version" or "update version"
- "release" or "new release"
- "major version" or "minor version" or "patch version"
- "increment version"
- "version update"
## Semantic Versioning
**Format:** MAJOR.MINOR.PATCH (e.g., 2.1.3)
**Rules:**
- **MAJOR (2.x.x)** - Breaking changes, incompatible API changes
- **MINOR (x.1.x)** - New features, backward compatible
- **PATCH (x.x.3)** - Bug fixes, backward compatible
**Examples:**
- `1.0.0``1.0.1` (bug fix)
- `1.0.0``1.1.0` (new feature)
- `1.0.0``2.0.0` (breaking change)
## Version Bump Process
When activated, I will:
1. **Identify Current Version**
```bash
# Read plugin version
current=$(jq -r '.version' .claude-plugin/plugin.json)
echo "Current version: $current"
```
2. **Determine Bump Type**
- From user request (major/minor/patch)
- Or suggest based on changes
- Or ask user which type
3. **Calculate New Version**
```bash
# Example for patch bump: 1.2.3 → 1.2.4
IFS='.' read -r major minor patch <<< "$current"
new_version="$major.$minor.$((patch + 1))"
```
4. **Update Files**
- Update `.claude-plugin/plugin.json`
- Update `.claude-plugin/marketplace.extended.json`
- Sync to `marketplace.json`
5. **Validate Consistency**
- Verify all files have same version
- Check no other plugins use this version
- Validate semver format
6. **Create Git Tag (Optional)**
```bash
git tag -a "v$new_version" -m "Release v$new_version"
```
## Update Locations
### 1. Plugin JSON
```json
// .claude-plugin/plugin.json
{
"name": "plugin-name",
"version": "1.2.4", // ← Update here
...
}
```
### 2. Marketplace Extended
```json
// .claude-plugin/marketplace.extended.json
{
"plugins": [
{
"name": "plugin-name",
"version": "1.2.4", // ← Update here
...
}
]
}
```
### 3. Sync CLI Catalog
```bash
npm run sync-marketplace
# Regenerates marketplace.json with new version
```
## Bump Types
### Patch Bump (Bug Fix)
**When to use:**
- Bug fixes
- Documentation updates
- Minor improvements
- No new features
**Example:** 1.2.3 → 1.2.4
### Minor Bump (New Feature)
**When to use:**
- New features
- New commands/agents/skills
- Backward compatible changes
- Enhanced functionality
**Example:** 1.2.3 → 1.3.0
### Major Bump (Breaking Change)
**When to use:**
- Breaking API changes
- Incompatible updates
- Major refactor
- Removed features
**Example:** 1.2.3 → 2.0.0
## Validation Checks
Before bumping:
- ✅ Current version is valid semver
- ✅ New version is higher than current
- ✅ No other plugin uses new version
- ✅ All files have same current version
- ✅ Git working directory is clean (optional)
After bumping:
- ✅ plugin.json updated
- ✅ marketplace.extended.json updated
- ✅ marketplace.json synced
- ✅ All versions consistent
- ✅ CHANGELOG.md updated (if exists)
## Changelog Management
If CHANGELOG.md exists, I update it:
```markdown
# Changelog
## [1.2.4] - 2025-10-16
### Fixed
- Bug fix description
- Another fix
## [1.2.3] - 2025-10-15
...
```
## Git Integration
### Option 1: Version Commit
```bash
# Update version files
git add .claude-plugin/plugin.json
git add .claude-plugin/marketplace.extended.json
git add .claude-plugin/marketplace.json
git add CHANGELOG.md # if exists
# Commit version bump
git commit -m "chore: Bump plugin-name to v1.2.4"
```
### Option 2: Version Tag
```bash
# Create annotated tag
git tag -a "plugin-name-v1.2.4" -m "Release plugin-name v1.2.4"
# Or for monorepo
git tag -a "v1.2.4" -m "Release v1.2.4"
# Push tag
git push origin plugin-name-v1.2.4
```
## Multi-Plugin Updates
For repository-wide version bump:
```bash
# Bump marketplace version
jq '.metadata.version = "1.0.40"' .claude-plugin/marketplace.extended.json
# Update all plugins (if needed)
for plugin in plugins/*/; do
# Update plugin.json
# Update marketplace entry
done
```
## Version Consistency Check
I verify:
```bash
# Plugin version
plugin_v=$(jq -r '.version' plugins/category/plugin-name/.claude-plugin/plugin.json)
# Marketplace version
market_v=$(jq -r '.plugins[] | select(.name == "plugin-name") | .version' .claude-plugin/marketplace.extended.json)
# Should match
if [ "$plugin_v" != "$market_v" ]; then
echo "❌ Version mismatch!"
echo "Plugin: $plugin_v"
echo "Marketplace: $market_v"
fi
```
## Release Workflow
Complete release process:
1. **Determine Bump Type**
- Review changes since last version
- Decide: patch/minor/major
2. **Update Version**
- Bump plugin.json
- Update marketplace catalog
- Sync marketplace.json
3. **Update Changelog**
- Add release notes
- List changes
- Include date
4. **Commit Changes**
```bash
git add .
git commit -m "chore: Release v1.2.4"
```
5. **Create Tag**
```bash
git tag -a "v1.2.4" -m "Release v1.2.4"
```
6. **Push**
```bash
git push origin main
git push origin v1.2.4
```
7. **Validate**
- Check GitHub release created
- Verify marketplace updated
- Test plugin installation
## Output Format
```
🔢 VERSION BUMP REPORT
Plugin: plugin-name
Old Version: 1.2.3
New Version: 1.2.4
Bump Type: PATCH
✅ UPDATES COMPLETED:
1. Updated .claude-plugin/plugin.json → v1.2.4
2. Updated marketplace.extended.json → v1.2.4
3. Synced marketplace.json → v1.2.4
4. Updated CHANGELOG.md
📊 CONSISTENCY CHECK:
✅ All files have version 1.2.4
✅ No version conflicts
✅ Semantic versioning valid
📝 CHANGELOG ENTRY:
## [1.2.4] - 2025-10-16
### Fixed
- Bug fix description
🎯 NEXT STEPS:
1. Review changes: git diff
2. Commit: git add . && git commit -m "chore: Bump to v1.2.4"
3. Tag: git tag -a "v1.2.4" -m "Release v1.2.4"
4. Push: git push origin main && git push origin v1.2.4
✨ Ready to release!
```
## Repository-Specific Features
**For claude-code-plugins repo:**
- Handles both plugin and marketplace versions
- Updates marketplace metadata version
- Manages plugin count in README
- Syncs both catalog files
- Creates proper release tags
## Examples
**User says:** "Bump the security-scanner plugin to patch version"
**I automatically:**
1. Read current version: 1.2.3
2. Calculate patch bump: 1.2.4
3. Update plugin.json
4. Update marketplace.extended.json
5. Sync marketplace.json
6. Validate consistency
7. Report success
**User says:** "Release version 2.0.0 of plugin-name"
**I automatically:**
1. Recognize major version (breaking change)
2. Update all version files
3. Update CHANGELOG.md with major release notes
4. Create git commit
5. Create git tag v2.0.0
6. Provide push commands
**User says:** "Increment version for new feature"
**I automatically:**
1. Detect this is a minor bump
2. Calculate new version (1.2.3 → 1.3.0)
3. Update all files
4. Add changelog entry
5. Report completion