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.
SkillScore95Maintained
Automatic
◆Coding pack
Last verified 8/19/2026
What it changes
Passed 21 of 22 test cases with the skill, and 7 of 22 without it.
Without skill32%
With skill95%
Checks it passed that the model alone missed
The testing strategy uses Minitest rather than RSpec.
The standard eager loading scope is named `preloaded`.
The architecture avoids installing Redis for queue management.
and 18 more in the full report
14 fixed7 passed either way1 still failing0 broke
Pass-rate lift
+64 pp
Tokens
+52%
Agent turns
0%
Response time
-33%
Model gemini-3.6-flashMeasured 8/19/2026v121 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 14 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 14
Prompt
In a Rails controller, I have a callback line `before_action :set_item, only: [:show, :edit, :update]`. How should symbol array literals be formatted in controller callbacks?
What was checked, without and with the skill
Checked
Without skill
With skill
The symbol array is formatted as `%i[ show edit update ]` with spaces inside the brackets.
Missed
Passed
case-13 · gemini-3.6-flash · 8/19/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md180 lines7 files
<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>
Controllers - REST mapping, concerns, Turbo responses, API patterns
Models - Concerns, state records, callbacks, scopes, POROs