Initial commit
This commit is contained in:
340
skills/version-bumper/SKILL.md
Normal file
340
skills/version-bumper/SKILL.md
Normal file
@@ -0,0 +1,340 @@
|
||||
---
|
||||
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
|
||||
26
skills/version-bumper/assets/README.md
Normal file
26
skills/version-bumper/assets/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Skill Assets
|
||||
|
||||
This directory contains static assets used by this skill.
|
||||
|
||||
## Purpose
|
||||
|
||||
Assets can include:
|
||||
- Configuration files (JSON, YAML)
|
||||
- Data files
|
||||
- Templates
|
||||
- Schemas
|
||||
- Test fixtures
|
||||
|
||||
## Guidelines
|
||||
|
||||
- Keep assets small and focused
|
||||
- Document asset purpose and format
|
||||
- Use standard file formats
|
||||
- Include schema validation where applicable
|
||||
|
||||
## Common Asset Types
|
||||
|
||||
- **config.json** - Configuration templates
|
||||
- **schema.json** - JSON schemas
|
||||
- **template.yaml** - YAML templates
|
||||
- **test-data.json** - Test fixtures
|
||||
26
skills/version-bumper/references/README.md
Normal file
26
skills/version-bumper/references/README.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Skill References
|
||||
|
||||
This directory contains reference materials that enhance this skill's capabilities.
|
||||
|
||||
## Purpose
|
||||
|
||||
References can include:
|
||||
- Code examples
|
||||
- Style guides
|
||||
- Best practices documentation
|
||||
- Template files
|
||||
- Configuration examples
|
||||
|
||||
## Guidelines
|
||||
|
||||
- Keep references concise and actionable
|
||||
- Use markdown for documentation
|
||||
- Include clear examples
|
||||
- Link to external resources when appropriate
|
||||
|
||||
## Types of References
|
||||
|
||||
- **examples.md** - Usage examples
|
||||
- **style-guide.md** - Coding standards
|
||||
- **templates/** - Reusable templates
|
||||
- **patterns.md** - Design patterns
|
||||
24
skills/version-bumper/scripts/README.md
Normal file
24
skills/version-bumper/scripts/README.md
Normal file
@@ -0,0 +1,24 @@
|
||||
# Skill Scripts
|
||||
|
||||
This directory contains optional helper scripts that support this skill's functionality.
|
||||
|
||||
## Purpose
|
||||
|
||||
Scripts here can be:
|
||||
- Referenced by the skill for automation
|
||||
- Used as examples for users
|
||||
- Executed during skill activation
|
||||
|
||||
## Guidelines
|
||||
|
||||
- All scripts should be well-documented
|
||||
- Include usage examples in comments
|
||||
- Make scripts executable (`chmod +x`)
|
||||
- Use `#!/bin/bash` or `#!/usr/bin/env python3` shebangs
|
||||
|
||||
## Adding Scripts
|
||||
|
||||
1. Create script file (e.g., `analyze.sh`, `process.py`)
|
||||
2. Add documentation header
|
||||
3. Make executable: `chmod +x script-name.sh`
|
||||
4. Test thoroughly before committing
|
||||
Reference in New Issue
Block a user