Step reference
Every step the tool runs. Core steps are asked before rails new runs; add-on steps run afterwards, ordered by their dependencies (needs). Use opinionated_rails list and opinionated_rails info STEP_ID to see the same information in your terminal.
| Step | Tier | Needs | What it does |
|---|---|---|---|
app_name |
core | none | Set the application name |
app_type |
core | none | Choose API-only or full-stack |
database |
core | none | Choose the database |
frontend |
core | none | Choose the frontend stack |
testing |
core | none | Choose the test framework |
auth |
addon | none | Configure authentication |
ci |
addon | rubocop, testing |
Configure CI |
docker_kamal |
addon | database, frontend, solid_stack |
Configure Docker and Kamal |
docs |
addon | none | Generate project documentation |
factory_or_fixtures |
addon | testing |
Configure factories or fixtures |
faker |
addon | none | Add Faker |
js_lint |
addon | frontend |
Configure JavaScript linting |
mailer |
addon | secrets_handling |
Configure mailers |
pagination |
addon | none | Configure pagination |
pr_issue_templates |
addon | none | Generate GitHub templates |
rubocop |
addon | none | Configure RuboCop |
secrets_handling |
addon | none | Configure secrets handling |
services |
addon | none | Add an application service architecture |
solid_stack |
addon | none | Configure Solid Trifecta |
spa_controller |
addon | frontend |
Add a SPA catch-all controller |
staging_env |
addon | solid_stack, mailer, docker_kamal |
Add staging environment |
tailwind |
addon | frontend |
Configure Tailwind CSS |
vcr |
addon | testing |
Configure VCR |
app_name
Records the Rails application name used for the generated app.
- Tier: core
- Needs: none
- Prompt: App name (free text, valid Ruby constant once camelized, no leading digit)
app_type
Decides whether the app is API-only or a full-stack Rails app.
- Tier: core
- Needs: none
- Prompt: App type: API-only or Full-stack (default: Full-stack)
database
Prompts for the database adapter (SQLite, PostgreSQL, MySQL).
- Tier: core
- Needs: none
- Prompt: Database adapter: SQLite, PostgreSQL, or MySQL (default: SQLite)
frontend
Prompts for Stimulus+Hotwire, React, or no frontend for API-only apps.
- Tier: core
- Needs: none
- Prompt: Frontend: Stimulus+Hotwire (1) or React (2), default Stimulus; React also asks for a bundler
testing
Prompts for RSpec or Minitest as the test framework.
- Tier: core
- Needs: none
- Prompt: Test framework: RSpec or Minitest (default: Minitest)
auth
Prompts for a user model name and chooses Rails 8 built-in, Devise, or none.
- Tier: addon
- Needs: none
- Prompt: User model name (default: User), then Rails 8 built-in / Devise / None (default: None)
ci
Generates a GitHub Actions workflow for tests, RuboCop, security scans and JS lint.
- Tier: addon
- Needs:
rubocop,testing - Prompt: Enable CI workflow? (default: yes)
docker_kamal
Generates a Dockerfile and optional Kamal deployment files.
- Tier: addon
- Needs:
database,frontend,solid_stack - Prompt: Enable Kamal deployment? (default: no) — Docker itself is always generated
docs
Creates AGENT.md and STYLE.md files.
- Tier: addon
- Needs: none
- Prompt: none (always runs)
factory_or_fixtures
Adds FactoryBot for RSpec or keeps Minitest fixtures.
- Tier: addon
- Needs:
testing - Prompt: FactoryBot or Fixtures for RSpec (default: FactoryBot)
faker
Adds the Faker gem for generating fake data.
- Tier: addon
- Needs: none
- Prompt: none (always runs)
js_lint
Installs ESLint and writes an ESLint 9 flat config (eslint.config.js) for the chosen frontend stack.
- Tier: addon
- Needs:
frontend - Prompt: Enable JS linting? (default: yes)
mailer
Sets up Letter Opener in development and Postmark in production.
- Tier: addon
- Needs:
secrets_handling - Prompt: Enable mailer setup (Letter Opener dev / Postmark production)? (default: yes)
pagination
Installs geared_pagination or pagy for paginated collections.
- Tier: addon
- Needs: none
- Prompt: Pagination: geared_pagination or pagy (default: pagy)
pr_issue_templates
Adds default pull request and issue templates.
- Tier: addon
- Needs: none
- Prompt: none (always runs)
rubocop
Installs and configures RuboCop with Omakase defaults or a custom setup.
- Tier: addon
- Needs: none
- Prompt: RuboCop style: Omakase or Custom (default: Omakase)
secrets_handling
Chooses Rails encrypted credentials or dotenv for managing secrets.
- Tier: addon
- Needs: none
- Prompt: Secrets handling: Rails credentials or dotenv (default: Rails credentials)
services
Installs an ApplicationService base class and an in-house Result object.
- Tier: addon
- Needs: none
- Prompt: Add an application service architecture? (default: no)
solid_stack
Sets up Solid Queue, Solid Cache, and Solid Cable for background jobs, caching, and Action Cable.
- Tier: addon
- Needs: none
- Prompt: Background jobs/cache/cable: Solid Trifecta or Redis+Sidekiq (default: Solid)
spa_controller
Generates the always-present spa_controller.rb#root action.
- Tier: addon
- Needs:
frontend - Prompt: none (always runs)
staging_env
Creates a staging Rails environment file and configuration.
- Tier: addon
- Needs:
solid_stack,mailer,docker_kamal - Prompt: Add a staging environment? (default: no)
tailwind
Installs Tailwind v3 with a path appropriate for the chosen frontend.
- Tier: addon
- Needs:
frontend - Prompt: none (always runs)
vcr
Installs VCR for recording and replaying HTTP interactions in tests.
- Tier: addon
- Needs:
testing - Prompt: Enable VCR for HTTP interaction recording? (default: no)