askill
vanilla-rails-naming

vanilla-rails-namingSafety 100Repository

Use when naming classes, methods, routes in vanilla Rails codebases - enforces concern adjectives (-able/-ible only), no bangs for state, resource naming cascade, and commit message format

2 stars
1.2k downloads
Updated 2/14/2026

Package Files

Loading files...
SKILL.md

Vanilla Rails Naming

37signals naming conventions from production Basecamp codebases.

The Naming Cascade

Every state change flows through this cascade:

LayerPatternExample
ConcernAdjective (-able/-ible)Card::Closeable
State modelNounClosure
ControllerPlural nounClosuresController
RouteSingular resourceresource :closure
MethodPlain verb (no !)card.close
Async enqueue*_laternotify_watchers_later
Sync execute*_now or plainnotify_watchers_now

If the cascade doesn't flow, the naming is wrong.

Concern Names: -able/-ible ONLY

# Wrong
Card::Closing        # verb
Card::PinManager     # Manager/Handler/Service
Card::Closed         # past participle

# Right
Card::Closeable
Card::Pinnable
Card::Assignable

If concern name doesn't end in -able/-ible, STOP and rename immediately. No -ing, -er, -ish, Logic, Management, Handler, Service.

State Methods: No Bangs

Plain verbs for state changes. ! only when non-bang counterpart exists.

# Wrong                    # Right
card.close!                card.close
card.pin!                  card.pin_by(user)
card.archive!              card.archive

Async: _later/_now

_later always at the end of compound verbs:

notify_watchers_later      # enqueues job
notify_watchers_now        # actual logic (called by job)
pin_and_notify_later       # compound verb

File Locations

app/models/card/closeable.rb           # Model-specific concern
app/models/concerns/eventable.rb       # Shared concern
app/models/closure.rb                  # State record
app/controllers/cards/closures_controller.rb

Commit Messages

Present tense, lowercase, no type prefixes:

add pin feature to cards
extract closeable concern
fix closure validation

Not: feat:, fix:, [FEATURE], past tense, title case.

Red Flags

Red flagFix
Concern not -able/-ibleRename immediately
State method with !Remove bang
post :close in routesresource :closure
Async without _laterAdd suffix
ClosureController (singular)ClosuresController (plural)
Commit with feat: prefixPresent tense, no prefix

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

78/100Analyzed 2/20/2026

Solid technical reference for Rails naming conventions with excellent examples and tables. Covers the naming cascade, concern naming rules, state methods, async patterns, and commit formats. Loses points for lacking explicit trigger section and being tied to specific project conventions. Safety is perfect since it's just naming guidance. Good clarity and structure make it useful for teams adopting 37signals patterns.

100
85
65
75
70

Metadata

Licenseunknown
Version-
Updated2/14/2026
PublisherZempTime

Tags

No tags yet.