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

{
  "context": "Tests whether the agent applies factory minimalism (only attributes needed for the test) and mocks at the correct boundary: the external service (SendgridClient) is doubled, while internal ActiveRecord operations (Campaign.find, UserSegment.find) are NOT mocked with doubles.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "Factory attributes minimal",
      "description": "Each FactoryBot factory definition contains 3 or fewer attribute declarations — factories are lean, not exhaustive",
      "max_score": 12
    },
    {
      "name": "SendgridClient mocked",
      "description": "The spec doubles or stubs SendgridClient (e.g. allow(SendgridClient).to receive(:deliver) or instance_double) — it is not called for real",
      "max_score": 15
    },
    {
      "name": "No real HTTP/email calls",
      "description": "The spec does NOT make real calls to SendgridClient or any external service — all external calls are intercepted",
      "max_score": 12
    },
    {
      "name": "ActiveRecord finders NOT mocked",
      "description": "Campaign.find and UserSegment.find are NOT stubbed with allow(...).to receive(:find) — the spec uses real (or factory-created) records for ActiveRecord lookups",
      "max_score": 12
    },
    {
      "name": "Factory file exists",
      "description": "spec/factories/campaigns.rb is present with at least one factory definition",
      "max_score": 5
    },
    {
      "name": "SendgridClient failure case tested",
      "description": "The spec contains at least one example where SendgridClient.deliver returns a failure result and the service response is verified",
      "max_score": 12
    },
    {
      "name": "RecordNotFound case tested",
      "description": "The spec contains at least one example covering the missing campaign or missing segment scenario",
      "max_score": 10
    },
    {
      "name": "let used for factory setup",
      "description": "Factory-backed test data is set up with let (lazy) rather than let! where the record doesn't need to exist before other setup runs",
      "max_score": 8
    },
    {
      "name": "External mock at class method level",
      "description": "The SendgridClient stub is set on the class method (allow(SendgridClient).to receive(:deliver)) rather than on an instance double of the class",
      "max_score": 7
    },
    {
      "name": "Factory attributes match service usage",
      "description": "The factory-defined attributes correspond to fields actually accessed by the service (campaign.subject, campaign.body, user.email) — no irrelevant default attributes",
      "max_score": 7
    }
  ]
}

README.md

tile.json