CtrlK
BlogDocsLog inGet started
Tessl Logo

igmarin/rails-agent-skills

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

1.38x
Quality

99%

Does it follow best practices?

Impact

98%

1.38x

Average score across 26 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-4/

{
  "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