341 lines
7.2 KiB
Markdown
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
|