CtrlK
BlogDocsLog inGet started
Tessl Logo

igmarin/rails-agent-skills

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

1.20x
Quality

98%

Does it follow best practices?

Impact

95%

1.20x

Average score across 35 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-26/

{
  "context": "Tests whether the agent adds complete and correct YARD documentation to a Ruby service class, including class-level summaries, @param, @option tags for hash arguments, @return shapes, @raise for raised exceptions, and English-only text.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Class-level summary",
      "description": "The Billing::SubscriptionBillingService class has a one-line YARD summary comment directly above the class definition",
      "max_score": 8
    },
    {
      "name": "self.call @param",
      "description": "self.call has a @param tag documenting the params argument with its type (e.g. [Hash])",
      "max_score": 8
    },
    {
      "name": "@option for hash keys",
      "description": "self.call uses @option tags (not just @param) to enumerate the valid hash keys: at minimum :plan, :customer_id, and :action",
      "max_score": 12
    },
    {
      "name": "self.call @return",
      "description": "self.call has a @return tag documenting the return shape (Hash with :success and :response keys)",
      "max_score": 10
    },
    {
      "name": "@raise for InvalidPlanError",
      "description": "self.call or call documents @raise [Billing::InvalidPlanError] (or InvalidPlanError) as a possible exception",
      "max_score": 10
    },
    {
      "name": "@raise for PaymentGatewayError",
      "description": "self.call or call documents @raise [Billing::PaymentGatewayError] (or PaymentGatewayError) as a possible exception",
      "max_score": 8
    },
    {
      "name": "supported_plans @return",
      "description": "self.supported_plans has a @return tag documenting its return type (e.g. [Array<String>])",
      "max_score": 8
    },
    {
      "name": "English only",
      "description": "All YARD comment text (summaries, descriptions, tag descriptions) is written in English — no other language used",
      "max_score": 8
    },
    {
      "name": "No logic changes",
      "description": "The Ruby implementation logic is unchanged — only YARD comments were added (the method bodies remain identical to the input)",
      "max_score": 10
    },
    {
      "name": "initialize documented",
      "description": "The initialize method has at least a @param tag for the params argument",
      "max_score": 8
    },
    {
      "name": "@example present",
      "description": "At least one public method (self.call recommended) has a @example tag showing sample usage",
      "max_score": 10
    }
  ]
}

README.md

tile.json