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

{
  "context": "Tests whether the agent implements Rails API versioning correctly: choosing URL path versioning, using controller inheritance to override only changed actions, wiring the Deprecatable concern to emit Sunset and Deprecation headers on V1, and providing a backward compatibility spec. Also checks sunset timeline guidance.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "URL path versioning used",
      "description": "config/routes.rb uses namespace-based URL path versioning (e.g. namespace :v1, namespace :v2) rather than body or query-parameter versioning",
      "max_score": 8
    },
    {
      "name": "Both V1 and V2 namespaces present",
      "description": "config/routes.rb defines both a v1 and a v2 namespace containing users resources — neither is absent",
      "max_score": 7
    },
    {
      "name": "V2 controller inherits from V1",
      "description": "The V2 UsersController class definition explicitly inherits from V1::UsersController (not from ApplicationController or ActionController::API directly)",
      "max_score": 12
    },
    {
      "name": "V2 overrides only changed actions",
      "description": "V2::UsersController defines at most one or two overridden actions; it does NOT redefine every action from V1",
      "max_score": 8
    },
    {
      "name": "Deprecation concern exists",
      "description": "A Ruby module or concern exists (under app/controllers/concerns/ or similar) that encapsulates the deprecation header logic — not just inline code in the controller",
      "max_score": 8
    },
    {
      "name": "Deprecation header emitted",
      "description": "The Deprecatable concern sets a 'Deprecation' response header (e.g. response.set_header('Deprecation', 'true') or equivalent)",
      "max_score": 10
    },
    {
      "name": "Sunset header emitted",
      "description": "The Deprecatable concern sets a 'Sunset' response header containing a date value",
      "max_score": 10
    },
    {
      "name": "V1 controller includes Deprecatable",
      "description": "V1::UsersController includes the Deprecatable concern (or equivalent module), not V2::UsersController",
      "max_score": 8
    },
    {
      "name": "Backward compatibility spec present",
      "description": "At least one RSpec request spec file exists (in spec/requests/ or similar) that tests a V1 endpoint response — verifying the old contract still holds",
      "max_score": 10
    },
    {
      "name": "Sunset timeline documented",
      "description": "versioning_notes.md mentions a sunset timeline or minimum notice period of at least 6 months (exact wording varies)",
      "max_score": 10
    },
    {
      "name": "V1 endpoints not removed",
      "description": "V1 routes are still present in config/routes.rb — they are not deleted or commented out",
      "max_score": 9
    }
  ]
}

README.md

tile.json