This marketplace uses Semantic Versioning with manual releases. Versions are determined exclusively by git tags, not by version numbers in code files.
Each plugin follows Semantic Versioning 2.0.0:
MAJOR.MINOR.PATCH
- MAJOR (e.g., 2.0.0): Breaking changes, removed features
- MINOR (e.g., 1.1.0): New features, new agents/skills (backward compatible)
- PATCH (e.g., 1.0.1): Bug fixes, documentation, configuration tweaks
The canonical version is recorded in git tags, not in code files. File versions are always synchronized via the release workflow.
Tag format: PLUGIN@vMAJOR.MINOR.PATCH
Examples:
python-dev@v1.0.0— canonical tag for python-dev version 1.0.0python-dev@v1.0— floating alias (latest 1.0.x)python-dev@v1— floating alias (latest 1.x.x)python-dev@latest— floating alias (latest version overall)
In your repository, navigate to: Actions → Release Plugin
Fill in the inputs:
- Plugin: Choose
rdiorpython-dev - Bump: Choose
patch,minor, ormajor
- Scans existing git tags for that plugin
- Computes the new version
- Updates
plugins/PLUGIN/.claude-plugin/plugin.json - Updates
.claude-plugin/marketplace.json - Creates a commit with message:
chore: release PLUGIN vX.Y.Z - Pushes the commit to main
- Creates the canonical tag (e.g.,
python-dev@v1.0.1) - Creates and force-pushes alias tags
The release is complete. Users can install the new version immediately.
Query existing versions via git tags:
# List all tags
git tag -l
# List tags for specific plugin
git tag -l "python-dev@*"
git tag -l "rdi@*"
# Show latest version
git describe --tags --abbrev=0 --match "python-dev@*"Current:
rdi@v1.0.0python-dev@v1.0.0
Scenario: Found a typo in ruff.toml
Steps:
- Fix the typo in
plugins/python-dev/ruff.toml - Commit and push:
git commit -m "fix: ruff rule typo" && git push - Go to GitHub Actions → Release Plugin
- Select: Plugin =
python-dev, Bump =patch - Click "Run workflow"
- ✅ Done! Version is now
1.0.1with tagspython-dev@v1.0.1,python-dev@v1.0,python-dev@latest, etc.
Scenario: Added new agent to python-dev
Steps:
- Add agent file
plugins/python-dev/agents/new-agent.md - Commit and push:
git commit -m "feat: add new-agent" && git push - Go to GitHub Actions → Release Plugin
- Select: Plugin =
python-dev, Bump =minor - Click "Run workflow"
- ✅ Done! Version is now
1.1.0
Scenario: Restructured agent interface
Steps:
- Restructure
plugins/rdi/agents/* - Update agent format documentation
- Commit and push
- Go to GitHub Actions → Release Plugin
- Select: Plugin =
rdi, Bump =major - Click "Run workflow"
- ✅ Done! Version is now
2.0.0(breaking change)
A: No. Never manually change versions in plugin.json or marketplace.json. The release workflow handles this automatically.
A: That's fine! Commits to main don't automatically release. Only trigger the release workflow when you're ready to bump the version and create a tag.
A: No, release one plugin at a time via the release workflow. Each plugin has independent versioning.
A: The workflow scans all existing tags matching PLUGIN@v*.*.* and bumps the highest one. If something goes wrong, delete the incorrect tag with git push origin --delete PLUGIN@vX.Y.Z and re-run the workflow.
A: 1. Delete the bad tag: git push origin --delete PLUGIN@vX.Y.Z
2. Optionally delete alias tags too
3. Reset the version files to the previous version
4. Commit the reset
5. Re-run release workflow if needed
- Canonical tag: The precise version tag (e.g.,
python-dev@v1.0.1) - Alias tag: Floating pointer that moves with each release (e.g.,
python-dev@latest) - Semver: Semantic Versioning (X.Y.Z format)
- Self-hosted runner: GitHub Actions runner on your infrastructure
.github/workflows/release.yml— The release workflow.github/workflows/version-validation.yml— Consistency validationscripts/compute_plugin_version.py— Version computation script