Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
pproenca avatar

37signals Rails

  • 257 installs
  • 191 repo stars
  • Updated July 24, 2026
  • pproenca/dot-skills

37signals-rails: A skill for development. This provides functionality for development workflows.

Key points

  • 37signals-rails

37signals Rails by the numbers

  • 257 all-time installs (skills.sh)
  • +11 installs in the week ending Aug 4, 2026 (Skillselion tracking)
  • Ranked #1,483 of 4,347 Backend & APIs skills by installs in the Skillselion catalog
  • Data as of Aug 4, 2026 (Skillselion catalog sync)
npx skills add https://github.com/pproenca/dot-skills --skill 37signals-rails

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs257
repo stars191
Last updatedJuly 24, 2026
Repositorypproenca/dot-skills

How do I use 37signals-rails for development tasks?

Use 37signals-rails for development tasks

Who is it for?

Best when you're working on backend & apis and need structured help with 37signals-rails.

Skip if: Teams with no backend & apis needs, or anyone wanting a generic chat assistant without this specific workflow.

When should I use this skill?

When you need to use 37signals-rails for development tasks, or when 37signals-rails: a skill for development. this provides functionality for development workflows.

What you get

Structured output aligned to 37signals-rails: 37signals-rails.

Files

SKILL.mdMarkdownGitHub ↗

37signals Rails Best Practices

Comprehensive coding principles and conventions for Ruby on Rails applications, as practiced at 37signals (Basecamp, HEY, Fizzy). Contains 56 rules across 8 categories, prioritized by architectural impact. Derived from official 37signals sources: the Fizzy codebase, STYLE.md, AGENTS.md, the Rails Doctrine, DHH's "On Writing Software Well" series, and the unofficial 37signals style guide (265 Fizzy PRs).

When to Apply

Reference these guidelines when:

  • Writing new Rails controllers, models, or views
  • Deciding between gems and vanilla Rails
  • Modeling state and database schema
  • Setting up background jobs, caching, or real-time features
  • Reviewing code for 37signals-style conventions
  • Refactoring toward rich domain models
  • Choosing authentication or authorization approach
  • Adding Stimulus controllers or Turbo patterns

Rule Categories by Priority

PriorityCategoryImpactPrefix
1Architecture FundamentalsCRITICALarch-
2Controllers & RESTCRITICALctrl-
3Domain ModelingHIGHmodel-
4State ManagementHIGHstate-
5Database & InfrastructureHIGHdb-
6Views & FrontendMEDIUMview-
7Code StyleMEDIUMstyle-
8TestingMEDIUMtest-

Quick Reference

1. Architecture Fundamentals (CRITICAL)

  • `arch-rich-models` - Rich Domain Models Over Service Objects
  • `arch-vanilla-rails` - Vanilla Rails is Plenty
  • `arch-avoid-patterns` - Deliberately Avoided Patterns and Gems
  • `arch-earn-abstractions` - Earn Abstractions Through Rule of Three
  • `arch-build-before-gems` - Build It Yourself Before Reaching for Gems
  • `arch-ship-to-learn` - Start Simple — Add Complexity Only After Validation
  • `arch-domain-facades` - Domain Models as Facades Over Internal Complexity
  • `arch-single-business-layer` - Single Layer for Business Logic
  • `arch-custom-auth` - Custom Passwordless Auth Over Devise

2. Controllers & REST (CRITICAL)

  • `ctrl-crud-only` - CRUD Controllers Over Custom Actions
  • `ctrl-model-as-resources` - Model Non-CRUD Operations as Separate Resources
  • `ctrl-thin-controllers` - Thin Controllers with Rich Domain Models
  • `ctrl-params-expect` - Use params.expect() for Parameter Validation
  • `ctrl-controller-concerns` - Controller Concerns for Cross-Cutting Behavior
  • `ctrl-nested-resources` - Nested Resources with scope module

3. Domain Modeling (HIGH)

  • `model-concerns` - Concerns for Horizontal Code Sharing
  • `model-normalizes` - Use normalizes Macro for Data Cleaning
  • `model-store-accessor` - Use store_accessor for JSON Column Access
  • `model-delegated-type` - Use delegated_type for Polymorphism
  • `model-counter-caches` - Counter Caches to Prevent N+1 Count Queries
  • `model-touch-chains` - Touch Chains for Cache Invalidation
  • `model-callbacks-auxiliary` - Callbacks for Auxiliary Complexity
  • `model-event-tracking` - Polymorphic Event Model for Activity Tracking
  • `model-poro-namespacing` - Namespace POROs Under Parent Models

4. State Management (HIGH)

  • `state-records-over-booleans` - Records as State Over Boolean Columns
  • `state-timestamps` - Timestamps for State Transitions
  • `state-enums` - Enums for Categorical States
  • `state-db-constraints` - Database Constraints Over ActiveRecord Validations
  • `state-write-time` - Compute at Write Time Not Read Time

5. Database & Infrastructure (HIGH)

  • `db-backed-everything` - Database-Backed Everything
  • `db-solid-queue` - Solid Queue for Background Jobs
  • `db-solid-cable` - Solid Cable for Real-Time Pub/Sub
  • `db-solid-cache` - Solid Cache for Application Caching
  • `db-multi-tenancy` - Path-Based Multi-Tenancy with Current.account
  • `db-uuid-primary-keys` - UUIDs as Primary Keys
  • `db-no-foreign-keys` - No Foreign Key Constraints

6. Views & Frontend (MEDIUM)

  • `view-turbo-frames` - Turbo Frames for Scoped Page Fragments
  • `view-turbo-streams` - Turbo Streams for Real-Time Updates
  • `view-stimulus-targets` - Stimulus Targets Over CSS Selectors
  • `view-stimulus-design` - Stimulus Controller Design Principles
  • `view-helpers-not-partials` - Extract Logic to Helpers Not Partials
  • `view-progressive-enhancement` - Progressive Enhancement as Primary Pattern
  • `view-fragment-caching` - Fragment Caching for View Performance
  • `view-http-caching` - HTTP Caching with fresh_when and ETags

7. Code Style (MEDIUM)

  • `style-conditionals` - Expanded Conditionals Over Guard Clauses
  • `style-method-ordering` - Methods Ordered by Call Sequence
  • `style-positive-names` - Use Positive Names for Methods and Scopes
  • `style-naming-return-values` - Method Names Reflect Return Values
  • `style-visibility-modifiers` - Visibility Modifier Formatting
  • `style-bang-methods` - Bang Methods Only When Non-Bang Exists
  • `style-async-naming` - Use _later and _now Suffixes for Async Operations

8. Testing (MEDIUM)

  • `test-minitest` - Minitest Over RSpec
  • `test-fixtures` - Database Fixtures Over FactoryBot
  • `test-no-damage` - No Test-Induced Design Damage
  • `test-no-system-tests` - Integration Tests Over System Tests
  • `test-behavior` - Test Behavior Not Implementation

How to Use

Read individual reference files for detailed explanations and code examples:

  • Section definitions - Category structure and impact levels
  • Rule template - Template for adding new rules

Reference Files

FileDescription
references/_sections.mdCategory definitions and ordering
assets/templates/_template.mdTemplate for new rules
metadata.jsonVersion and reference information

Related skills

FAQ

What does 37signals-rails do?

37signals-rails: A skill for development. This provides functionality for development workflows.

When should I use 37signals-rails?

When you need to use 37signals-rails for development tasks, or when 37signals-rails: a skill for development. this provides functionality for development workflows.

What are the main capabilities?

37signals-rails.

Backend & APIsbackendintegrations

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.