This skill uses semantic versioning with git tags and a CHANGELOG.md.
Three places carry the version. They move together, or the release is broken:
- the git tag,
vX.Y.Z versionin.claude-plugin/plugin.jsonrefin this plugin's entry inombulabs/claude-skills.claude-plugin/marketplace.json
The skill has no API, so the contract is how it is invoked and what it generates.
| Bump | Meaning | Examples |
|---|---|---|
| MAJOR | Breaking change to how the skill is invoked or structured: file layout, SKILL.md workflow step semantics, configs/*.yml schema |
moving files into rails-load-defaults/ (0.5.0) |
| MINOR | New Rails version support, new capability, new tier or template | Rails 8.0 and 8.1 configs (1.1.0) |
| PATCH | Config accuracy fixes, corrected defaults or risk tiers, docs, wording | the old_default literal fixes (1.1.0) |
A config accuracy fix is a PATCH even though it changes what lands in a user's
config/application.rb. It corrects the skill's output toward what Rails actually
does; it does not change how the skill is used.
-
Land the changes on
main. -
Pick the bump from the table above.
-
Move the
## [Unreleased]entries inCHANGELOG.mdunder a new## [X.Y.Z] - YYYY-MM-DDheading, and add the compare link at the bottom. -
Bump
versionin.claude-plugin/plugin.jsonto exactlyX.Y.Z, nov. -
Commit as
chore(release): vX.Y.Z. -
Tag and push:
git tag -a vX.Y.Z -m "vX.Y.Z" git push origin main --tags -
Create the release, using the changelog section as the notes:
gh release create vX.Y.Z --title "vX.Y.Z" --notes "..."
-
Open a PR against
ombulabs/claude-skillsupdating this plugin'ssource.reftovX.Y.Z.
plugin.json's version is what Claude Code uses to decide whether an install is
stale. From the marketplace
docs:
Setting
versionpins the plugin for every source type [...] If you declare"version": "1.0.0"inplugin.jsonand push new commits without changing that string, existing users of those sources keep the cached copy, because Claude Code sees the same version.
This repo shipped in exactly that state from April to August 2026: the manifest
said 1.0.0 the whole time while the marketplace SHA moved, so existing installs
never saw the Rails 8.x work. Skipping the bump silently ships nothing.
Related gotcha from the same docs: do not also set version in the marketplace
entry. plugin.json always wins, without a warning, so a version in both places
means the marketplace one is a decoy.
In a scratch directory:
/plugin marketplace update
/plugin install rails-load-defaults@ombulabs-ai
Confirm the installed version matches the tag and that whatever the release added is present on disk. An install still reporting the previous version means the cache did not invalidate, which almost always means step 4 was missed.