Curated library of 39 AI agent skills for Ruby on Rails development. Organized by category: planning, testing, code-quality, ddd, engines, infrastructure, api, patterns, context, orchestration, and workflows. Includes 5 callable workflow skills (rails-tdd-loop, rails-review-flow, rails-setup-flow, rails-quality-flow, rails-engines-flow) for complete development cycles. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and TDD automation.
95
98%
Does it follow best practices?
Impact
95%
1.20xAverage score across 35 eval scenarios
Passed
No known issues
Kestrel Software is onboarding three new backend engineers next sprint. One of the first modules they will need to touch is the subscription discount calculator, which determines how much discount a customer receives based on their subscription tier, contract length, and promotional eligibility. The module was written under deadline pressure and has no comments at all. Several engineers have already introduced bugs in this module by misunderstanding its intent — once by removing a guard clause that seemed redundant (it wasn't), and once by changing the order of tier checks (which broke the annual promo logic).
Your task is to add comments throughout the module that will prevent future misunderstandings. The goal is not to explain the mechanics of what each line does — experienced engineers can read Ruby. The goal is to capture the intent, constraints, and gotchas that led to each decision, so that anyone modifying this module in the future understands what they must preserve and why.
Do not refactor or change any existing logic. Only add comments.
Produce a single output file:
app/services/discount_calculator.rb — the same class with comments addedThe following files are provided as inputs. Extract them before beginning.
=============== FILE: app/services/discount_calculator.rb ===============
class DiscountCalculator TIER_RATES = { starter: 0.00, professional: 0.10, enterprise: 0.20 }.freeze
ANNUAL_BONUS = 0.05
PROMO_CODES = { "LAUNCH2024" => 0.15, "PARTNER50" => 0.50 }.freeze
MAX_DISCOUNT = 0.60
def self.call(subscription:, promo_code: nil) new(subscription: subscription, promo_code: promo_code).call end
def initialize(subscription:, promo_code: nil) @subscription = subscription @promo_code = promo_code end
def call return 0.0 unless @subscription.active?
base = TIER_RATES.fetch(@subscription.tier, 0.0)
base += ANNUAL_BONUS if @subscription.annual?
promo = PROMO_CODES[@promo_code] || 0.0
if promo > base
total = promo
else
total = base + promo
end
[total, MAX_DISCOUNT].minend end
docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
mcp_server
skills
api
api-rest-collection
rails-graphql-best-practices
code-quality
rails-architecture-review
rails-code-conventions
rails-code-review
rails-review-response
rails-security-review
rails-stack-conventions
assets
snippets
refactor-safely
context
rails-context-engineering
rails-project-onboarding
ddd
ddd-boundaries-review
ddd-rails-modeling
ddd-ubiquitous-language
engines
rails-engine-compatibility
rails-engine-docs
rails-engine-extraction
rails-engine-installers
rails-engine-release
rails-engine-reviewer
rails-engine-testing
infrastructure
rails-api-versioning
rails-background-jobs
rails-database-seeding
rails-frontend-hotwire
rails-migration-safety
rails-performance-optimization
orchestration
rails-skills-orchestrator
patterns
ruby-service-objects
strategy-factory-null-calculator
yard-documentation
planning
create-prd
generate-tasks
ticket-planning
testing
rails-bug-triage
rails-tdd-slices
rspec-best-practices
rspec-service-testing