Rails-conventions rails-conventions
Rails 8.x application architecture, implementation, and review guidance for production codebases. Use when building or reviewing Ruby on Rails 8 features across models, controllers, routes, Hotwire, jobs, APIs, performance, security, and testing. Trigger for requests mentioning Rails 8, Active Record, Active Job, GoodJob, Solid Queue, Turbo/Stimulus, REST resources, migrations, code quality, naming, and production readiness.
git clone https://github.com/ethos-link/rails-conventions
git clone --depth=1 https://github.com/ethos-link/rails-conventions ~/.claude/skills/ethos-link-rails-conventions-rails-conventions
SKILL.mdRails Convention Engineer
Follow this workflow and load only the references needed for the task.
Execution Workflow
- Inspect the codebase before proposing changes.
- Match existing conventions unless the user requests a migration.
- Use Rails conventions and plain Ruby first.
- Prefer small, reversible changes with tests.
- Report tradeoffs explicitly when choosing architecture.
Mandatory Codebase Scan
Always read these files first when available:
Gemfileconfig/application.rbconfig/routes.rb
(at least current target env)config/environments/*.rb
(2-5 representative models)app/models/
(2-5 representative controllers)app/controllers/
ortest/spec/- process/deploy entrypoints (
,Procfile*
,bin/jobs
, CI config)config/deploy*.yml
Record and follow observed patterns:
- test framework
- authentication/authorization style
- frontend stack (Hotwire, React, hybrid)
- queue backend and runtime topology
- API conventions and serialization style
Background Job Backend Policy
Never assume Solid Queue just because the app is Rails 8.
Detect backend in this order:
config.active_job.queue_adapter
gems (Gemfile
,good_job
, others)solid_queue- worker runtime commands and deployment wiring
Apply these rules:
- If
is active, keepgood_job
conventions.good_job - If
is active, keepsolid_queue
conventions.solid_queue - If both gems exist, treat the configured adapter as authoritative.
- Do not migrate queue backend implicitly as part of unrelated tasks.
- Write backend-agnostic
code unless backend features are explicitly requested.ApplicationJob
Reference Routing
Load references based on the task:
- Code style, formatting, naming conventions, and fail-fast policy:
STYLE.md - Baseline Rails 8 defaults and upgrade constraints:
references/01-baseline-rails-8.md - Naming, layering, and code organization:
references/02-naming-and-structure.md - Active Record, migrations, and data modeling:
references/03-models-and-data.md - Controllers, params, and request flow:
references/04-controllers-and-params.md - REST resources and routes:
references/05-routes-rest-and-resources.md - Hotwire, Turbo, and Stimulus patterns:
references/06-hotwire-turbo-stimulus.md - Job architecture and adapter detection:
references/07-background-jobs-overview.md - GoodJob-specific patterns:
references/07a-background-jobs-good_job.md - Solid Queue-specific patterns:
references/07b-background-jobs-solid_queue.md - Performance and caching strategy:
references/08-performance-caching-and-db.md - Security review checklist:
references/09-security-checklist.md - Test strategy and quality gates:
references/10-testing-strategy.md - API-only and mixed-mode API patterns:
references/11-api-mode-and-serialization.md - 37signals-inspired style profile:
references/12-37signals-inspired-profile.md - Code quality thresholds and detection patterns:
references/13-code-quality-gates.md
Authentication Patterns
Prefer Rails 8.1 built-in authentication. When implementing custom auth:
- Use password-based authentication with bcrypt via
.has_secure_password - Use magic link codes (not full magic link URLs) for account confirmation and email verification.
- Follow 37signals naming:
(global email-based),Identity
(per-account membership),User
.Session - Rate limit authentication endpoints aggressively.
- Store sessions via signed cookies with
andhttponly
.same_site: :lax
Output Contract
For implementation tasks, produce:
- Required schema changes with migrations.
- Model/controller/view/job code following local conventions.
- Tests matching local framework.
- Brief risk notes (security, performance, rollout concerns).
For review tasks, prioritize:
- Correctness and behavioral regressions.
- Security and data integrity.
- Performance and operability.
- Test gaps.