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

{
  "context": "Tests whether the agent respects service object boundary rules: keeping the orchestrator's call method concise by extracting sub-services, ensuring services return data (not HTTP responses), and avoiding cross-domain model modifications.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Orchestrator call length",
      "description": "The main orchestrator service's `call` (or `def call`) instance method body is 20 lines or fewer (comments and blank lines excluded)",
      "max_score": 14
    },
    {
      "name": "Sub-services extracted",
      "description": "At least two distinct sub-service classes or helper classes are created to handle steps that the orchestrator delegates to",
      "max_score": 12
    },
    {
      "name": "Orchestrator delegates, not implements",
      "description": "The orchestrator's `call` method calls other service objects or methods rather than containing the full implementation logic inline",
      "max_score": 10
    },
    {
      "name": "No HTTP response returned",
      "description": "No service class renders or returns an HTTP response object (no `render`, `redirect_to`, `ActionDispatch::Response`, or `head` calls inside any service)",
      "max_score": 12
    },
    {
      "name": "Data-only return",
      "description": "All services return plain Ruby hashes or data objects, not controller/HTTP concerns",
      "max_score": 8
    },
    {
      "name": "Single responsibility",
      "description": "Each service class addresses one domain concern and does NOT modify models clearly outside its declared scope",
      "max_score": 10
    },
    {
      "name": "Frozen string literal",
      "description": "Every service file begins with `# frozen_string_literal: true`",
      "max_score": 8
    },
    {
      "name": "File structure",
      "description": "All service files are placed under `app/services/<module>/` with namespaced module declarations",
      "max_score": 8
    },
    {
      "name": "Response format",
      "description": "Return values across all services use `{ success: true/false, response: { ... } }` structure",
      "max_score": 10
    },
    {
      "name": "Error handling",
      "description": "At least one service has a rescue block that returns an error hash rather than leaking exceptions",
      "max_score": 8
    }
  ]
}

README.md

tile.json