Use this skill when the task is to ship a Rails engine as a gem or prepare a new version.
Quick Reference
| Bump | When to use | Action |
|---|---|---|
| Patch | Bug fixes and internal changes without public behavior breakage | Update version constant, document under Fixed |
| Minor | Backward-compatible features and new extension points | Update version constant, document under Added/Changed |
| Major | Breaking changes to API, setup, routes, migrations, config, or supported framework versions | Update version constant, document under Changed/Deprecated; write explicit upgrade notes |
HARD-GATE
DO NOT release without updating CHANGELOG and version file.
Core Process
- Confirm scope and compatibility impact — is this patch, minor, or major?
- Run full test suite:
bundle exec rspec. Fix all failures before proceeding. - Set the version bump — update the version constant once:
module MyEngine; VERSION = "1.2.0"; endinlib/my_engine/version.rb. - Update changelog and upgrade notes.
- Verify gemspec metadata and dependencies match tested Rails/Ruby versions.
- Dry-run the gem build:
gem build *.gemspec && gem push --dry-run *.gem. Verify contents. - Confirm installation docs and README match the release — update if needed.
- Ask the user to approve publishing the exact gem name and version. Preparing a release is not authorization to publish.
- Publish only after that approval:
gem push *.gem.
Extended Resources
Load release assets conditionally and say which one informed the output:
- Read
assets/release_checklist.mdwhen producing the release verification checklist or quality gates. - Read
assets/release_notes_template.mdwhen drafting GitHub release notes, a long-form announcement, or public release copy. - Read
assets/examples.mdonly when the user needs concrete release examples.
Changelog Guidelines
- Document user-visible changes, not commits; group by Added/Changed/Fixed/Deprecated.
- For deprecations, document removal plan and replacement; keep deprecated code for at least one minor cycle.
- If the engine requires host changes during upgrade, document them explicitly even if the version bump is minor.
Examples
## [1.2.0] - 2024-03-15
### Added
- `widget_count` config option to limit dashboard widgets (default: 10).
### Changed
- Minimum Rails version is now 7.0.
Output Style
- Version bump — patch/minor/major with explicit reasoning.
- Version constant — updated
lib/[engine_name]/version.rb. - CHANGELOG entries — under Added/Changed/Fixed/Deprecated headers.
- Upgrade notes — host app steps (config, migrations, dependencies).
- Gemspec + test status — metadata, files, dependency ranges confirmed; pass/fail result of
bundle exec rspec. - Dry-run output — exact command
gem build *.gemspec && gem push --dry-run *.gemplus contents verification (tar tf pkg/*.gemorgem contents). - Asset usage — state which of
assets/release_checklist.md,assets/release_notes_template.md,assets/examples.mdwas loaded, or explicitly say none was needed. - GitHub release notes — concise draft with summary, highlights, upgrade notes, and verification status.
- Release blockers — open issues, or explicitly "No blockers".
Integration
| Skill | When to chain |
|---|---|
| document-engine | Updating README, setup instructions, or API docs for the release |
| upgrade-engine | Verifying Rails/Ruby version support or deprecation impact |
| test-engine | Ensuring tests pass before release and match documented behavior |