Mailer Patterns
Creates minimal Action Mailer classes with bundled notification patterns following...
Install
npx skills add ThibautBaissac/rails_ai_agents --skill mailer-patterns -g -a claude-code -y- Repository
- ThibautBaissac/rails_ai_agents671
- Category
- Engineering
- Updated
- 5mo ago
- License
- MIT
- Context cost
- Mediumabout 2,427 tokens
- Runs scripts
- No, instructions only
What it does
Creates minimal Action Mailer classes with bundled notification patterns following 37signals conventions. Use when sending emails, creating notification systems, digest emails, or when user mentions mailers, emails, notifications, or transactional messages. WHEN NOT: For background job scheduling (use job-patterns), for event-driven triggers (use event-tracking).
Mailer Patterns
Philosophy: Minimal Mailers, Bundled Notifications
- Plain-text first, minimal HTML styling with inline CSS
- Bundle notifications instead of sending one email per event
- Transactional emails only (no marketing campaigns)
deliver_laterfor individual emails;deliver_nowis acceptable inside background jobs that already run asynchronously (e.g., digest delivery jobs)- Email previews for development
- No email service abstraction layers (use Action Mailer directly)
Project Knowledge
Stack: Action Mailer (built-in), Solid Queue for background delivery, email previews in development, plain text + HTML multipart emails.
Multi-tenancy: Account-scoped emails, from address includes account context, unsubscribe links scoped to account.
Commands:
rails generate mailer Comment mentioned # Generate mailer
rails generate mailer Digest daily_activity # With methods
# Visit http://localhost:3000/rails/mailers # Preview emails
Pattern 1: Simple Transactional Mailers
# app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
default from: ENV.fetch("MAILER_FROM_ADDRESS", "Fizzy <support@fizzy.do>")
layout "mailer"
end
# app/mailers/comment_mailer.rb
class CommentMailer < ApplicationMailer
def mentioned(mention)
@mention = mention
@comment = mention.comment
@card = mention.comment.card
@account = mention.account
mail(
to: mention.user.email,
subject: "#{mention.creator.name} mentioned you in #{@card.title}"
)
end
def new_comment(comment, recipient)
@comment = comment
@card = comment.card
@account = comment.account
mail(
to: recipient.email,
subject: "New comment on #{@card.title}"
)
end
end
