dhh-rails-style

Enforce minimalist 37signals conventions in Ruby on Rails code and reviews.

1|Updated Apr 4, 2026
One-click install
npx skills add https://github.com/ybbms777/compound-engineering --skill dhh-rails-style-ybbms777
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: dhh-rails-style
Source: https://github.com/ybbms777/compound-engineering/tree/main/skills/dhh-rails-style
Command: npx skills add https://github.com/ybbms777/compound-engineering --skill dhh-rails-style-ybbms777

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Writing Ruby on Rails code that strays from 37signals' proven, minimalist conventions creates unnecessary complexity, inconsistent codebases, and extra overhead from unneeded gems and abstractions. This Skill removes that guesswork by providing clear, production-tested guidance aligned with DHH's and 37signals' real-world coding patterns.

Core Features & Use Cases

  • Idiomatic Convention Enforcement: Applies 37signals core principles including REST purity, fat models, thin controllers, state tracked via database records instead of booleans, and database-backed solutions over external services like Redis or Sidekiq.
  • Comprehensive Reference Library: Includes detailed guides for controllers, models, frontend (Turbo/Stimulus, native CSS), architecture, testing (Minitest, fixtures), and gem selection, with real examples from 37signals' production codebases like Fizzy and Campfire.
  • Use Cases: Use this Skill when writing new Rails code, refactoring existing code to match DHH style, conducting code reviews for 37signals alignment, or when working on projects that mention Basecamp, HEY, or Campfire conventions.

Quick Start

Use the dhh-rails-style skill to review your Rails controller code for REST mapping compliance and suggest improvements to align with 37signals conventions.

Frequently Asked Questions about dhh-rails-style

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I write idiomatic Rails code that follows DHH and 37signals conventions?

To write idiomatic Rails code following 37signals conventions, enforce REST purity, maintain fat models and thin controllers, and track state via database records rather than booleans. This minimalist approach eliminates unnecessary gems and external services like Redis.

What is the best way to review Ruby on Rails code for over-engineering?

The best way to review Rails code for over-engineering is to check alignment with 37signals patterns: ensure RESTful controllers, database-backed state tracking, and minimal gem usage. Code should favor built-in Rails mechanisms over external service dependencies.

How does Hotwire fit into the 37signals Rails architecture?

Hotwire fits into the 37signals Rails architecture by utilizing Turbo and Stimulus frontend patterns alongside native CSS. This approach maintains a minimalist, database-backed architecture by reducing the need for heavy JavaScript frameworks and external frontend state management.

Do I need Redis or Sidekiq for background jobs in a minimalist Rails codebase?

You do not need Redis or Sidekiq for background jobs in a minimalist Rails codebase aligned with 37signals conventions. The preferred approach uses database-backed solutions for state tracking and background processing to avoid external service dependencies.

Can I use RSpec for testing Rails code that follows Basecamp and HEY style patterns?

Basecamp and HEY style patterns favor Minitest and fixtures over RSpec for testing Rails code. Aligning with 37signals conventions means adopting Minitest workflows to maintain the minimalist, production-tested standard used in their real-world codebases.

When should I not use database-backed state tracking in Rails?

You should avoid database-backed state tracking in Rails when your application requires high-throughput, ephemeral state management that genuinely necessitates external services. However, for standard application workflows following 37signals conventions, database records are the preferred minimalist solution.