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-3/

{
  "context": "Tests whether the agent implements a Ruby service object using the correct .call class method pattern, standardized hash response format, proper file placement, and frozen_string_literal pragma — the foundational conventions for any service object.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Self.call delegation",
      "description": "The service class defines `def self.call(params)` that delegates to `new(params).call` (or equivalent)",
      "max_score": 12
    },
    {
      "name": "Instance call method",
      "description": "There is a separate instance `def call` method that performs the actual work",
      "max_score": 8
    },
    {
      "name": "Success response key",
      "description": "Success return value contains a `success:` key set to `true`",
      "max_score": 10
    },
    {
      "name": "Success response nesting",
      "description": "Success return value wraps payload inside a `response:` key (e.g. `{ success: true, response: { ... } }`)",
      "max_score": 10
    },
    {
      "name": "Error response key",
      "description": "Failure return value contains a `success:` key set to `false`",
      "max_score": 8
    },
    {
      "name": "Error response nesting",
      "description": "Failure return value wraps error details inside a `response:` key (e.g. `{ success: false, response: { error: { ... } } }`)",
      "max_score": 10
    },
    {
      "name": "File location",
      "description": "Service file is placed under `app/services/<module_name>/` directory, not directly in `app/services/`",
      "max_score": 10
    },
    {
      "name": "Frozen string literal",
      "description": "Service file begins with `# frozen_string_literal: true`",
      "max_score": 10
    },
    {
      "name": "Module namespace",
      "description": "The service class is wrapped in a module namespace that matches the directory name",
      "max_score": 10
    },
    {
      "name": "No raw exceptions returned",
      "description": "The `.call` / `call` method does NOT raise unhandled exceptions to the caller — errors are caught and returned as hashes",
      "max_score": 12
    }
  ]
}

README.md

tile.json