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

{
  "context": "Tests whether the agent applies the ticket-planning skill correctly: classifying each ticket with all required attributes, applying correct area title prefixes (BE |, FE |, Mobile |) with a space after the pipe, using the standard five-section ticket structure in the right order, keeping sections business-facing without cross-repeating content, and sequencing foundation/api tickets before client tickets.",
  "type": "weighted_checklist",
  "checklist": [
    {
      "name": "All 8 classification attributes present",
      "description": "Every ticket in tickets.md lists all eight classification attributes: area, type, dependency_level, execution_order, coordination_need, external_dependency, urgency, target_bucket",
      "max_score": 10
    },
    {
      "name": "area values from allowed set",
      "description": "Every ticket's 'area' value is one of: backend, web, mobile, cross-platform, external — no other values used",
      "max_score": 6
    },
    {
      "name": "execution_order values from allowed set",
      "description": "Every ticket's 'execution_order' value is one of: foundation, api, client, follow-up",
      "max_score": 6
    },
    {
      "name": "BE | prefix on backend tickets",
      "description": "All backend-area tickets have titles starting with 'BE | ' (with a space after the pipe) — at least one such ticket exists",
      "max_score": 8
    },
    {
      "name": "FE | prefix on frontend tickets",
      "description": "All web-area tickets have titles starting with 'FE | ' (with a space after the pipe) — at least one such ticket exists",
      "max_score": 8
    },
    {
      "name": "No prefix on non-area tickets",
      "description": "Any ticket classified as cross-platform or external does NOT have a BE |, FE |, or Mobile | prefix unless the content clearly belongs to one of those areas",
      "max_score": 5
    },
    {
      "name": "Five sections present in each ticket",
      "description": "Every ticket body contains all five sections: Summary, Background, Acceptance Criteria, Dependencies, Technical Notes — in that order",
      "max_score": 12
    },
    {
      "name": "Summary states outcome only",
      "description": "The Summary section in each ticket is a single statement of the desired outcome — it does NOT restate the Background or repeat Acceptance Criteria verbatim",
      "max_score": 8
    },
    {
      "name": "Technical Notes scope correct",
      "description": "Technical Notes sections contain only implementation details relevant to sequencing or scoping — they do NOT repeat Acceptance Criteria items verbatim",
      "max_score": 7
    },
    {
      "name": "Foundation/API before client sequencing",
      "description": "sequencing_notes.md explains that backend/API tickets (foundation or api execution_order) should be started before web or mobile client tickets",
      "max_score": 10
    },
    {
      "name": "Draft-only output",
      "description": "tickets.md contains only markdown ticket drafts — there is no mention of creating issues in an external system, no issue keys, and no API calls described",
      "max_score": 8
    },
    {
      "name": "target_bucket values from allowed set",
      "description": "Every ticket's 'target_bucket' value is one of: ready-to-refine, next-dev-sprint, later",
      "max_score": 6
    },
    {
      "name": "type values from allowed set",
      "description": "Every ticket's 'type' value is either Story or Task",
      "max_score": 6
    }
  ]
}

README.md

tile.json