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)

Back to top

Released under the MIT License.