This skill should be used when writing Ruby and Rails code in DHH's distinctive 37signals style. It applies when writing Ruby code, Rails applications, creating models, controllers, or any Ruby file. Triggers on Ruby/Rails code generation, refactoring requests, code review, or when the user mentions DHH, 37signals, Basecamp, HEY, or Campfire style. Embodies REST purity, fat models, thin controllers, Current attributes, Hotwire patterns, and the "clarity over cleverness" philosophy.
View on GitHubEveryInc/compound-engineering-plugin
compound-engineering
plugins/compound-engineering/skills/dhh-rails-style/SKILL.md
January 22, 2026
Select agents to install to:
npx add-skill https://github.com/EveryInc/compound-engineering-plugin/blob/main/plugins/compound-engineering/skills/dhh-rails-style/SKILL.md -a claude-code --skill dhh-rails-styleInstallation paths:
.claude/skills/dhh-rails-style/<objective> Apply 37signals/DHH Rails conventions to Ruby and Rails code. This skill provides comprehensive domain expertise extracted from analyzing production 37signals codebases (Fizzy/Campfire) and DHH's code review patterns. </objective> <essential_principles> ## Core Philosophy "The best code is the code you don't write. The second best is the code that's obviously correct." **Vanilla Rails is plenty:** - Rich domain models over service objects - CRUD controllers over custom actions - Concerns for horizontal code sharing - Records as state instead of boolean columns - Database-backed everything (no Redis) - Build solutions before reaching for gems **What they deliberately avoid:** - devise (custom ~150-line auth instead) - pundit/cancancan (simple role checks in models) - sidekiq (Solid Queue uses database) - redis (database for everything) - view_component (partials work fine) - GraphQL (REST with Turbo sufficient) - factory_bot (fixtures are simpler) - rspec (Minitest ships with Rails) - Tailwind (native CSS with layers) **Development Philosophy:** - Ship, Validate, Refine - prototype-quality code to production to learn - Fix root causes, not symptoms - Write-time operations over read-time computations - Database constraints over ActiveRecord validations </essential_principles> <intake> What are you working on? 1. **Controllers** - REST mapping, concerns, Turbo responses, API patterns 2. **Models** - Concerns, state records, callbacks, scopes, POROs 3. **Views & Frontend** - Turbo, Stimulus, CSS, partials 4. **Architecture** - Routing, multi-tenancy, authentication, jobs, caching 5. **Testing** - Minitest, fixtures, integration tests 6. **Gems & Dependencies** - What to use vs avoid 7. **Code Review** - Review code against DHH style 8. **General Guidance** - Philosophy and conventions **Specify a number or describe your task.** </intake> <routing> | Response | Reference to Read | |----------|-------------------| | 1, controller | [controllers.md](.