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

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