Gempilot
A CLI toolkit for creating and managing Ruby gems with modern conventions.
Gempilot scaffolds production-ready gems with Zeitwerk autoloading, RuboCop, GitHub Actions CI, and integrated version management. It also generates classes, modules, and commands within existing gems.
Installation
gem install gempilot
Requires Ruby >= 3.4.
Quick Start
gempilot create my_gem
cd my_gem
bundle exec rake
This creates a fully configured gem with tests, linting, CI, and version management — ready to develop.
Commands
gempilot create
Scaffold a new gem.
gempilot create my_gem
gempilot create --test rspec --exe my_gem
gempilot create --test minitest --no-git my_gem
Options:
| Option | Description | Default |
|---|---|---|
| `--test | rspec` | Test framework |
--[no-]exe |
Create executable in exe/ |
prompted |
--[no-]git |
Initialize git repo | prompted |
--branch NAME |
Git branch name | master |
--summary TEXT |
One-line gem description | prompted |
--author NAME |
Author name | git config user.name |
--email EMAIL |
Author email | git config user.email |
--ruby-version VER |
Minimum Ruby version | current Ruby |
All options are prompted interactively if omitted.
gempilot new
Generate a class, module, or command in an existing gem. Run from the gem root.
gempilot new class MyGem::Services::Authentication
gempilot new module MyGem::Middleware
gempilot new command deploy
Creates the source file under lib/ and a corresponding test file. For
commands, generates a CommandKit command class in lib/<gem>/cli/commands/.
gempilot destroy
Remove a class, module, or command. Cleans up empty parent directories.
gempilot destroy class MyGem::Services::Authentication
gempilot destroy command deploy
gempilot bump
Bump the version in lib/<gem>/version.rb.
gempilot bump # patch (default)
gempilot bump minor
gempilot bump major
gempilot release
Delegates to rake release to build and push the gem.
gempilot console
Delegates to bin/console for an interactive IRB session with the gem loaded.
Generated Gem Features
Every gem scaffolded by gempilot create includes:
- Zeitwerk autoloading with
LOADERconstant andrake zeitwerk:validate - Test framework — Minitest or RSpec, with a Zeitwerk eager-load test
- RuboCop with
rubocop-claude,rubocop-performance,rubocop-rake, and framework-specific plugins (rubocop-minitestorrubocop-rspec) - GitHub Actions CI running tests and RuboCop
- Version management rake tasks (see below)
bin/consoleandbin/setupscripts- Gemspec with
git ls-filesand glob fallback, MFA required for RubyGems
Version Management Tasks
Generated gems include rake tasks for the full version lifecycle:
| Task | Description |
|---|---|
rake version:current |
Display the current version |
rake version:bump |
Increment the patch version |
rake version:commit |
Commit the version file change |
rake version:tag |
Create a git tag for the version |
rake version:untag |
Delete the version git tag |
rake version:reset |
Reset the last version bump commit |
rake version:revert |
Revert the last version bump commit |
rake version:release |
Bump, commit, and tag (combined) |
rake version:unrelease |
Untag and reset (combined) |
rake version:github:release |
Push and create a GitHub release |
rake version:github:unrelease |
Delete the GitHub release |
rake version:github:list |
List GitHub releases |
Development
git clone https://github.com/gillisd/gempilot.git
cd gempilot
bundle install
bundle exec rake
rake runs the Minitest suite, RSpec suite, and RuboCop.
License
MIT License. See LICENSE.txt.