This skill provides expert guidance on implementing Ruby on Rails applications using 37signals (Basecamp/HEY) patterns and conventions. Use when building Rails features, implementing authentication, authorization, multi-tenancy, background jobs, or Hotwire/Turbo/Stimulus following 37signals patterns.
Inherits all available tools
Additional assets for this skill
This skill inherits all available tools. When active, it can use any tool Claude has access to.
references/authentication.mdreferences/authentication/magic-link.mdreferences/authentication/password.mdreferences/authorization.mdreferences/background-jobs.mdreferences/caching.mdreferences/configuration.mdreferences/confirmation-dialogs.mdreferences/controllers.mdreferences/current-attributes.mdreferences/event-tracking.mdreferences/frontend/daisyui.mdreferences/frontend/index.mdreferences/frontend/vanilla-css.mdreferences/hotwire.mdreferences/mailers.mdreferences/models.mdreferences/multi-tenancy/database-per-tenant.mdreferences/multi-tenancy/index.mdreferences/multi-tenancy/shared-database.mdThis skill provides comprehensive guidance for building Ruby on Rails applications using 37signals/Basecamp coding patterns. These patterns emphasize composition over inheritance, concern-based organization, minimal controllers, rich domain models, and native Rails capabilities over external gems.
When working on an existing Rails application, detect which patterns are in use before loading reference files. If the current context doesn't reveal the approach, use an Explore agent to investigate.
Check for these indicators:
tailwind.config.js or @tailwind directives → Load frontend/daisyui.mdapp/assets/stylesheets/_global.css with @layer → Load frontend/vanilla-css.mdbtn, card, modal) in views → Load frontend/daisyui.mdfrontend/vanilla-css.mdExplore if unknown: Search for tailwind.config.js, @layer, or CSS file structure.
Check for these indicators:
Current.account or account_id scoping → Load multi-tenancy/shared-database.mdactiverecord-tenanted gem or Tenanted module → Load multi-tenancy/database-per-tenant.md/account-slug/... → Load multi-tenancy/shared-database.mdtenant.app.com) → Load multi-tenancy/database-per-tenant.mdmulti-tenancy/index.md for decision guideExplore if unknown: Search for Current.account, tenant, account_id in models/controllers.
Check for these indicators:
MagicLink model or magic_link routes → Load authentication/magic-link.mdhas_secure_password or password_digest → Load authentication/password.mdExplore if unknown: Search for MagicLink, has_secure_password, or session controllers.
When implementing frontend interactivity:
app/javascript/controllers/stimulus/index.md for decision tableExplore if unknown: List files in app/javascript/controllers/ to see existing patterns.
Load the appropriate reference when implementing specific patterns or domains:
references/models.md - Model patterns, concerns, associations, callbacks, scopesreferences/controllers.md - Controller patterns, concerns, filters, response handlingreferences/current-attributes.md - CurrentAttributes pattern for request-scoped contextreferences/routing.md - CRUD-everything routing philosophy, polymorphic URLsreferences/poros.md - Plain Old Ruby Objects patternsreferences/view-helpers.md - Stimulus-integrated view helpersreferences/authentication.md - Authentication overview and shared architecture
authentication/magic-link.md - Passwordless magic link (primary 37signals pattern)authentication/password.md - Traditional password authenticationreferences/authorization.md - Role-based and resource-level access controlreferences/multi-tenancy/index.md - Multi-tenancy decision guide
multi-tenancy/shared-database.md - Shared DB with tenant_id filtering (Fizzy/Basecamp)multi-tenancy/database-per-tenant.md - Separate DB per tenantreferences/hotwire.md - Turbo Frames, Turbo Streams overviewreferences/confirmation-dialogs.md - Native dialog confirmations with Turbo integrationreferences/stimulus/index.md - Stimulus controller decision table
stimulus/utility-controllers.md - copy-to-clipboard, hotkey, toggle-class, beaconstimulus/form-controllers.md - auto-submit, autoresize, local-savestimulus/ui-controllers.md - dialog, lightbox, navigable-list, local-timestimulus/interaction-controllers.md - drag-and-drop, sortable, resizereferences/frontend/index.md - CSS approach decision guide
frontend/vanilla-css.md - 37signals CSS (layers, OKLCH, design tokens)frontend/daisyui.md - DaisyUI/TailwindCSS (uses Context7 for live docs)references/background-jobs.md - Solid Queue configuration, recurring jobs, account contextreferences/caching.md - HTTP caching (ETags), fragment caching, touch invalidationreferences/configuration.md - ENV patterns, multi-database, Solid Stack setupreferences/mailers.md - Minimal mailer patterns, bundled notificationsreferences/event-tracking.md - Audit trails, activity feeds, notifications, webhooksreferences/testing.md - Testing philosophy, fixtures, system tests, and helpers| Task | Reference File |
|---|---|
| Setting up a new model with concerns | models.md |
| Validations, associations, callbacks | models.md |
| Creating controllers and concerns | controllers.md |
| Strong parameters, response formats | controllers.md |
| Request-scoped context (Current.user, etc.) | current-attributes.md |
| Routing with CRUD-everything | routing.md |
| Adding user login/logout | Detect existing method → authentication/*.md |
| Implementing permissions/roles | authorization.md |
| Multi-account/tenant support | Detect existing approach → multi-tenancy/*.md |
| Real-time UI updates (Turbo) | hotwire.md |
| Confirmation dialogs for destructive actions | confirmation-dialogs.md |
| Stimulus controllers | stimulus/index.md (decision table) |
| CSS styling | Detect existing approach → frontend/*.md |
| Background processing | background-jobs.md |
| HTTP caching, ETags | caching.md |
| Sending emails | mailers.md |
| Activity feeds, audit trails | event-tracking.md |
| Writing tests | testing.md |
| View helpers with Stimulus | view-helpers.md |
| Business logic objects | poros.md |
| ENV configuration | configuration.md |