| name | ruby-cli |
| description | Build Ruby CLI tools with Thor and Zeitwerk. Use for new Ruby CLI gems, adding commands, refactoring, or 'Thor CLI', 'command-line tool in Ruby'. |
Ruby CLI Development
Build Ruby CLI tools using Thor for commands and Zeitwerk for autoloading.
Quick Navigation
Core Principles
- Use compact class declarations:
class GemName::Cli::Main < GemName::Cli::Base
- Use
extend self instead of module_function for utility modules
- Keep the Base class lean - add helpers as patterns emerge
Output Styling
For basic output, use Thor's built-in say "message", :color.
For rich terminal UI (headers, tables, spinners, confirmations), use the Gum gem:
ui.header("Section Title")
ui.success("Done!")
ui.error("Failed")
ui.table(rows, columns: [...])
ui.spin("Working...") { ... }
See references/gum.md for setup and full API.
Tips & Gotchas
- Add
# rubocop:disable Rails/Output to UI modules (stdout is intentional in CLIs)
- Gum requires
brew install gum on the host machine