Release Engine
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"; end in lib/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.
- Publish:
gem push *.gem.
Extended Resources
Load release assets conditionally and say which one informed the output:
- Read
assets/release_checklist.md when producing the release verification checklist or quality gates.
- Read
assets/release_notes_template.md when drafting GitHub release notes, a long-form announcement, or public release copy.
- Read
assets/examples.md only 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.
- assets/release_checklist.md
- assets/release_notes_template.md
- assets/examples.md
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 *.gem plus contents verification (tar tf pkg/*.gem or gem contents).
- Asset usage — state which of
assets/release_checklist.md, assets/release_notes_template.md, assets/examples.md was 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 |
1---2name: release-engine3description: Use when preparing a versioned Rails engine release (SemVer, changelog). Trigger words: release engine, version bump, publish gem, changelog.4license: MIT5---67# Release Engine89Use this skill when the task is to ship a Rails engine as a gem or prepare a new version.1011## Quick Reference1213| Bump | When to use | Action |14|------|-------------|--------|15| **Patch** | Bug fixes and internal changes without public behavior breakage | Update version constant, document under Fixed |16| **Minor** | Backward-compatible features and new extension points | Update version constant, document under Added/Changed |17| **Major** | Breaking changes to API, setup, routes, migrations, config, or supported framework versions | Update version constant, document under Changed/Deprecated; write explicit upgrade notes |1819## HARD-GATE2021```text22DO NOT release without updating CHANGELOG and version file.23```2425## Core Process26271. Confirm scope and compatibility impact — is this patch, minor, or major?282. Run full test suite: `bundle exec rspec`. Fix all failures before proceeding.293. Set the version bump — update the version constant once: `module MyEngine; VERSION = "1.2.0"; end` in `lib/my_engine/version.rb`.304. Update changelog and upgrade notes.315. Verify gemspec metadata and dependencies match tested Rails/Ruby versions.326. Dry-run the gem build: `gem build *.gemspec && gem push --dry-run *.gem`. Verify contents.337. Confirm installation docs and README match the release — update if needed.348. Publish: `gem push *.gem`.3536## Extended Resources3738Load release assets conditionally and say which one informed the output:3940- Read `assets/release_checklist.md` when producing the release verification checklist or quality gates.41- Read `assets/release_notes_template.md` when drafting GitHub release notes, a long-form announcement, or public release copy.42- Read `assets/examples.md` only when the user needs concrete release examples.4344**Changelog Guidelines**45- Document user-visible changes, not commits; group by Added/Changed/Fixed/Deprecated.46- For deprecations, document removal plan and replacement; keep deprecated code for at least one minor cycle.47- If the engine requires host changes during upgrade, document them explicitly even if the version bump is minor.4849**Examples**50```markdown51## [1.2.0] - 2024-03-1552### Added53- `widget_count` config option to limit dashboard widgets (default: 10).54### Changed55- Minimum Rails version is now 7.0.56```5758- [assets/release_checklist.md](assets/release_checklist.md)59- [assets/release_notes_template.md](assets/release_notes_template.md)60- [assets/examples.md](assets/examples.md)6162## Output Style63641. **Version bump** — patch/minor/major with explicit reasoning.652. **Version constant** — updated `lib/[engine_name]/version.rb`.663. **CHANGELOG entries** — under Added/Changed/Fixed/Deprecated headers.674. **Upgrade notes** — host app steps (config, migrations, dependencies).685. **Gemspec + test status** — metadata, files, dependency ranges confirmed; pass/fail result of `bundle exec rspec`.696. **Dry-run output** — exact command `gem build *.gemspec && gem push --dry-run *.gem` plus contents verification (`tar tf pkg/*.gem` or `gem contents`).707. **Asset usage** — state which of `assets/release_checklist.md`, `assets/release_notes_template.md`, `assets/examples.md` was loaded, or explicitly say none was needed.718. **GitHub release notes** — concise draft with summary, highlights, upgrade notes, and verification status.729. **Release blockers** — open issues, or explicitly "No blockers".7374## Integration7576| Skill | When to chain |77|-------|---------------|78| document-engine | Updating README, setup instructions, or API docs for the release |79| upgrade-engine | Verifying Rails/Ruby version support or deprecation impact |80| test-engine | Ensuring tests pass before release and match documented behavior |