Curated library of AI agent skills for Ruby on Rails development. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and workflow automation.
98
99%
Does it follow best practices?
Impact
98%
1.38xAverage score across 26 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent wraps multi-step database operations in a transaction, uses SQL sanitization for dynamic queries, keeps module namespaces aligned with directory structure, and includes a README for the module.",
"type": "weighted_checklist",
"checklist": [
{
"name": "Transaction present",
"description": "The service wraps its multi-step database operations inside `ActiveRecord::Base.transaction` (or equivalent) — not just a single operation",
"max_score": 14
},
{
"name": "Transaction scope correct",
"description": "Only the multi-step operations that must be atomic are inside the transaction — NOT the entire `call` method body",
"max_score": 10
},
{
"name": "SQL sanitization used",
"description": "Any dynamic raw SQL query uses `ActiveRecord::Base.sanitize_sql` (or a parameterized query with `?` placeholders) rather than string interpolation",
"max_score": 14
},
{
"name": "No SQL string interpolation",
"description": "Does NOT construct raw SQL with `\"... #{variable}\"` string interpolation",
"max_score": 10
},
{
"name": "Module namespace",
"description": "The service class is wrapped in a module whose name matches the subdirectory under `app/services/`",
"max_score": 10
},
{
"name": "File path correct",
"description": "Service file is at `app/services/<module>/<service>.rb` — not flat in `app/services/`",
"max_score": 8
},
{
"name": "README present",
"description": "A `README.md` file is created alongside or documenting the service module",
"max_score": 10
},
{
"name": "Frozen string literal",
"description": "Service file begins with `# frozen_string_literal: true`",
"max_score": 8
},
{
"name": "Response format",
"description": "Return value uses `{ success: true/false, response: { ... } }` structure",
"max_score": 8
},
{
"name": "Error constants",
"description": "At least one error message or default value is defined as a Ruby constant rather than an inline string literal",
"max_score": 8
}
]
}api-rest-collection
create-prd
ddd-boundaries-review
ddd-rails-modeling
ddd-ubiquitous-language
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
generate-tasks
mcp_server
rails-architecture-review
rails-background-jobs
rails-bug-triage
rails-code-conventions
rails-code-review
rails-engine-compatibility
rails-engine-docs
rails-engine-extraction
rails-engine-installers
rails-engine-release
rails-engine-reviewer
rails-engine-testing
rails-graphql-best-practices
rails-migration-safety
rails-review-response
rails-security-review
rails-skills-orchestrator
rails-stack-conventions
rails-tdd-slices
refactor-safely
rspec-best-practices
rspec-service-testing
ruby-service-objects
strategy-factory-null-calculator
ticket-planning
yard-documentation