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

Evaluation results

100%

2%

Order Processing Module Architecture Review

Criteria
Without context
With context

Entry points identified first

75%

100%

Domain logic layer checked

100%

100%

Models and callbacks inspected

100%

100%

High: business logic in callbacks

100%

100%

High: controller multi-step workflow

100%

100%

Boundary problems prioritised

100%

100%

Medium finding identified

100%

100%

Affected files per finding

100%

100%

Risk described per finding

100%

100%

Improvement per finding

100%

100%

Concerns and helpers checked

100%

100%

100%

22%

Invoice Payment Reminder Jobs

Criteria
Without context
With context

Pass ID not object

100%

100%

Load record in perform

100%

100%

Idempotency check present

100%

100%

Side effect after guard

100%

100%

retry_on with attempts

0%

100%

discard_on permanent error

0%

100%

Thin perform — service delegation

62%

100%

Recurring in recurring.yml

100%

100%

Solid Queue adapter

100%

100%

Spec covers idempotency

90%

100%

Spec written for job

100%

100%

100%

29%

Subscription Cancellation Service

Criteria
Without context
With context

Self.call delegation

100%

100%

Instance call method

100%

100%

Success response key

50%

100%

Success response nesting

0%

100%

Error response key

50%

100%

Error response nesting

0%

100%

File location

100%

100%

Frozen string literal

100%

100%

Module namespace

100%

100%

No raw exceptions returned

100%

100%

85%

25%

Untangle the Order Processing Controller

Criteria
Without context
With context

Stable behavior statement

100%

100%

Characterization tests before refactoring

0%

93%

Characterization tests target current code

0%

30%

Smallest safe sequence proposed

80%

100%

Test run evidence per step

46%

100%

No behavior mixed with structure

100%

75%

Temporary compatibility noted

37%

50%

No forbidden confidence claims

100%

100%

One boundary extracted per step

100%

100%

100%

10%

Payments Provider API Client

Criteria
Without context
With context

Auth includes HTTParty

0%

100%

Auth credential validation

100%

100%

No hardcoded credentials

100%

100%

Auth token caching

100%

100%

Client::Error class

100%

100%

HTTP error wrapping

80%

100%

JSON error wrapping

100%

100%

Timeout configured

100%

100%

Missing config raises Client::Error

70%

100%

Retry constant

100%

100%

Spec covers error path

100%

100%

100%

30%

Shipping Cost Calculator Service

Criteria
Without context
With context

Error message constants

100%

100%

YARD on self.call

0%

100%

YARD on other public methods

100%

100%

Class-only service used

100%

100%

No instance state in class-only service

100%

100%

README present

0%

100%

Frozen string literal

100%

100%

Response format

0%

100%

Module namespace matches directory

100%

100%

Constants not duplicated inline

100%

100%

100%

9%

Animal Transfer Service

Criteria
Without context
With context

Transaction present

100%

100%

Transaction scope correct

100%

100%

SQL sanitization used

100%

100%

No SQL string interpolation

100%

100%

Module namespace

100%

100%

File path correct

100%

100%

README present

100%

100%

Frozen string literal

100%

100%

Response format

50%

100%

Error constants

37%

100%

100%

60%

Animal Shelter Data Export

Criteria
Without context
With context

Builder initializer attributes

0%

100%

Builder attribute filtering

70%

100%

Builder response parsing

57%

100%

Entity ATTRIBUTES constant

25%

100%

Entity DEFAULT_QUERY constant

0%

100%

Entity SEARCH_QUERY constant

0%

100%

Entity self.fetcher wiring

0%

100%

sanitize_sql usage

0%

100%

FactoryBot hash factory

60%

100%

Factory in correct directory

100%

100%

ShelterApi module namespace

100%

100%

No raw interpolation in queries

55%

100%

100%

8%

Notifications Engine Release Preparation

Criteria
Without context
With context

Version constant updated

100%

100%

CHANGELOG updated

100%

100%

Upgrade notes produced

70%

100%

Semantic version bump correct

100%

100%

Version bump reasoning provided

100%

100%

Gemspec verified

50%

100%

Test suite mentioned

87%

100%

Blockers called out

100%

100%

CHANGELOG entries are specific

100%

100%

No release without CHANGELOG

100%

100%

100%

35%

Bulk Inventory Import Service

Criteria
Without context
With context

Early input validation

100%

100%

Specific rescue clauses

100%

100%

StandardError rescue

100%

100%

Error logged

0%

100%

Error hash returned

33%

100%

No exception leakage

100%

100%

Partial success response

100%

100%

Frozen string literal

100%

100%

Response format consistency

30%

100%

Backtrace logged for unexpected errors

0%

100%

100%

12%

Email Campaign Delivery Service Specs

Criteria
Without context
With context

Factory attributes minimal

100%

100%

SendgridClient mocked

100%

100%

No real HTTP/email calls

100%

100%

ActiveRecord finders NOT mocked

0%

100%

Factory file exists

100%

100%

SendgridClient failure case tested

100%

100%

RecordNotFound case tested

100%

100%

let used for factory setup

100%

100%

External mock at class method level

100%

100%

Factory attributes match service usage

100%

100%

99%

28%

Add GraphQL Order Management API

Criteria
Without context
With context

Dataloader for association

0%

90%

Field-level guard on sensitive field

70%

100%

No type-only auth for sensitive field

100%

100%

Mutation returns errors array

100%

100%

Mutation no unhandled raise

100%

100%

Introspection disabled in production

100%

100%

max_depth set

100%

100%

max_complexity set

100%

100%

Dedicated resolver class

100%

100%

Connection type for paginated list

0%

100%

schema.execute in specs

100%

100%

descriptions on fields

0%

100%

35%

-10%

Weather Data Pipeline Integration

Criteria
Without context
With context

Auth file exists

100%

100%

Client file exists

100%

100%

Fetcher file exists

100%

100%

Builder file exists

100%

100%

Domain entity file exists

100%

100%

Auth self.default

0%

0%

Auth token caching

62%

0%

Client::Error class

50%

0%

Client constants

0%

0%

Fetcher DI constructor

25%

12%

Fetcher constants

0%

0%

Builder attribute filtering

50%

50%

Entity ATTRIBUTES constant

0%

0%

Entity DEFAULT_QUERY constant

0%

0%

README present

100%

100%

99%

37%

User Account Deletion Feature

Criteria
Without context
With context

File saved to /tasks/

0%

100%

Introduction section

42%

100%

Goals section

100%

100%

User Stories section

100%

100%

Functional Requirements section

100%

100%

Non-Goals section

100%

100%

Design and Technical Considerations

0%

100%

Implementation Surface section

25%

100%

Success Metrics section

100%

100%

Open Questions section

100%

100%

No implementation code

100%

100%

What/why focus

62%

87%

Next steps suggestion

0%

100%

97%

-1%

Create an Audit Logging Rails Engine

Criteria
Without context
With context

isolate_namespace used

100%

100%

configure block pattern

100%

100%

Configuration class

100%

100%

Configurable user class

100%

100%

No hard-coded host constant

100%

100%

Migrations not auto-applied

90%

100%

Host contract documented

100%

100%

lib/audit_trail.rb minimal

87%

62%

Dummy app routes mount engine

100%

100%

Model namespaced

100%

100%

Engine type justified

100%

100%

100%

18%

Inventory API Collection

Criteria
Without context
With context

Postman v2.1 schema

100%

100%

Correct file location

0%

100%

base_url variable used

100%

100%

All endpoints present

100%

100%

HTTP methods correct

100%

100%

Headers included

40%

100%

Body examples for POST/PUT

100%

100%

Syntactically valid JSON

100%

100%

URL path parameters

100%

100%

100%

18%

Review the Promotions Feature PR

Criteria
Without context
With context

Correct severity levels used

0%

100%

permit! flagged Critical

57%

100%

N+1 query identified

100%

100%

Missing index flagged

100%

100%

Business logic in controller flagged

100%

100%

Review covers multiple areas

100%

100%

Each finding includes mitigation

100%

100%

Re-review explicitly required

100%

100%

html_safe / raw usage flagged

100%

100%

Severity action prescribed per level

66%

100%

100%

4%

User Notification Service Specs

Criteria
Without context
With context

Spec file at mirrored path

100%

100%

RSpec.describe uses module::class

100%

100%

describe for method

100%

100%

context for scenario variations

100%

100%

let used for test data

100%

100%

No let! for non-setup data

100%

100%

No 'and' in example descriptions

66%

100%

Frozen string literal

100%

100%

Subject defined

100%

100%

let_it_be NOT used

100%

100%

100%

8%

Document Search Security Audit

Criteria
Without context
With context

Auth/authz reviewed first

0%

100%

Parameter handling reviewed

100%

100%

Query safety reviewed

100%

100%

High severity: SQL injection identified

100%

100%

High severity: missing authz identified

100%

100%

Medium severity finding identified

100%

100%

Attack path per finding

100%

100%

Affected file per finding

100%

100%

Mitigation per finding

100%

100%

Exploitability focus

100%

100%

Secrets and output reviewed

100%

100%

100%

13%

User Onboarding Orchestration Service

Criteria
Without context
With context

Orchestrator call length

100%

100%

Sub-services extracted

100%

100%

Orchestrator delegates, not implements

100%

100%

No HTTP response returned

100%

100%

Data-only return

100%

100%

Single responsibility

100%

100%

Frozen string literal

0%

100%

File structure

100%

100%

Response format

50%

100%

Error handling

100%

100%

100%

25%

Shipping Cost Calculator for Parcel Pro

Criteria
Without context
With context

SERVICE_MAP constant

66%

100%

Factory NullService fallback

100%

100%

NullService never raises

100%

100%

Correct file structure

70%

100%

Single entry point API

62%

100%

Concrete overrides should_calculate?

0%

100%

Concrete overrides compute_result

87%

100%

NullService spec context

100%

100%

Variant spec coverage

100%

100%

Frozen string literal

0%

100%

SERVICE_MAP key type consistency

100%

100%

100%

18%

Subscription Expiry and Protected Endpoint Specs

Criteria
Without context
With context

shared_examples defined

100%

100%

shared_examples consumed twice or more

100%

100%

travel_to used

0%

100%

Expiry true at >30 days

100%

100%

Expiry false at <30 days

100%

100%

let_it_be NOT used

100%

100%

Shared examples in spec/support/

100%

100%

403 response asserted in shared behavior

100%

100%

Model spec path correct

100%

100%

100%

Fitness Class Booking System

Criteria
Without context
With context

type: :request used

100%

100%

type: :controller NOT used

100%

100%

Model spec file exists

100%

100%

type: :model used

100%

100%

No system or feature spec

100%

100%

Request spec in spec/requests/

100%

100%

Endpoint URL in describe

100%

100%

Endpoint success case covered

100%

100%

Endpoint failure case covered

100%

100%

Model uniqueness validation tested

100%

100%

100%

57%

Generate Implementation Tasks for User Referral Feature

Criteria
Without context
With context

Feature branch task 0.0

0%

100%

TDD write-spec sub-task

30%

100%

TDD run-spec-fail sub-task

0%

100%

TDD implement sub-task

62%

100%

TDD run-spec-pass sub-task

0%

100%

Exact file paths in sub-tasks

100%

100%

Saved in /tasks/ with correct name

100%

100%

YARD post-implementation gate

0%

100%

Documentation update task

87%

100%

Code review gate

100%

100%

Relevant Files section

0%

100%

100%

Membership Tier Upgrade Service

Criteria
Without context
With context

process_log.md exists

100%

100%

Spec content before implementation

100%

100%

Expected failure documented

100%

100%

Test design phase present

100%

100%

Implementation plan before code

100%

100%

No implementation code before spec phase

100%

100%

At least three distinct phases

100%

100%

Spec file exists

100%

100%

Implementation file exists

100%

100%

Spec uses describe/context structure

100%

100%

100%

18%

Document the Subscription Billing Service

Criteria
Without context
With context

Class-level summary

100%

100%

self.call @param

100%

100%

@option for hash keys

100%

100%

self.call @return

70%

100%

@raise for InvalidPlanError

20%

100%

@raise for PaymentGatewayError

12%

100%

supported_plans @return

100%

100%

English only

100%

100%

No logic changes

100%

100%

initialize documented

100%

100%

@example present

100%

100%

81%

5%

Document the Subscription Discount Calculator

Criteria
Without context
With context

No what-comments

93%

86%

Why-comments on business rules

100%

100%

Why-comment on design tradeoff

100%

100%

Tagged note present

0%

30%

Tagged note has actionable context

0%

30%

Comment on MAX_DISCOUNT rationale

100%

100%

Comment on promo branching logic

100%

100%

Domain concept referenced

100%

100%

Comment on inactive subscription guard

100%

80%

No code duplicated in comments

100%

100%

100%

8%

Admin User Report with Flexible Filtering and Sorting

Criteria
Without context
With context

No sort column interpolation

100%

100%

Sort column allowlist

100%

100%

Sort direction allowlist

100%

100%

Bound params or sanitize_sql_array for WHERE

100%

100%

No user input in order() string

100%

100%

Allowlist as constant or frozen structure

100%

100%

No send or eval with user column

100%

100%

Comment on raw SQL rationale

0%

100%

Safe fallback on invalid input

100%

100%

Frozen string literal

100%

100%

69%

-15%

Payment Processing Service with Observability

Criteria
Without context
With context

Static first argument

28%

35%

Hash second argument

50%

0%

Dynamic data in hash only

100%

42%

event: key present

100%

80%

Domain-specific hash fields

100%

100%

Multiple log levels

100%

100%

No interpolation in any logger call

100%

100%

At least four log statements

100%

100%

Failure path logged at error level

100%

100%

No puts or p for logging

100%

100%

99%

19%

Upgrading the Users API to V2

Criteria
Without context
With context

URL path versioning used

100%

100%

Both V1 and V2 namespaces present

100%

100%

V2 controller inherits from V1

0%

100%

V2 overrides only changed actions

0%

87%

Deprecation concern exists

100%

100%

Deprecation header emitted

100%

100%

Sunset header emitted

100%

100%

V1 controller includes Deprecatable

100%

100%

Backward compatibility spec present

100%

100%

Sunset timeline documented

100%

100%

V1 endpoints not removed

100%

100%

88%

3%

Fixing a Slow Dashboard Endpoint

Criteria
Without context
With context

Baseline documented

100%

100%

N+1 bottleneck named

100%

100%

Regression spec written

100%

100%

Regression spec asserts fixed count

62%

100%

Owner eager loaded

100%

100%

Tasks association optimized

100%

100%

EXPLAIN ANALYZE output present

100%

100%

Seq Scan / Index Scan interpreted

100%

100%

Fix precedes regression spec claim

30%

30%

Profiling tool mentioned

0%

0%

Query count improvement quantified

100%

100%

99%

69%

Sprint Planning: Google OAuth Login Feature

Criteria
Without context
With context

All 8 classification attributes present

0%

100%

area values from allowed set

0%

100%

execution_order values from allowed set

0%

100%

BE | prefix on backend tickets

0%

100%

FE | prefix on frontend tickets

0%

100%

No prefix on non-area tickets

80%

100%

Five sections present in each ticket

16%

100%

Summary states outcome only

0%

87%

Technical Notes scope correct

42%

100%

Foundation/API before client sequencing

90%

100%

Draft-only output

100%

100%

target_bucket values from allowed set

0%

100%

type values from allowed set

66%

100%

100%

Authorization Overhaul for a Multi-Tenant Project Management App

Criteria
Without context
With context

Policy class replaces inline logic

100%

100%

No presence-only checks remain

100%

100%

authorize called in controller

100%

100%

Index uses policy_scope

100%

100%

Policy class inherits ApplicationPolicy

100%

100%

Admin role permitted in policy

100%

100%

Owner role permitted in policy

100%

100%

Non-owner role denied in policy

100%

100%

Guest role tested in specs

100%

100%

permit_action matchers in policy spec

100%

100%

Request spec covers multiple roles

100%

100%

implementation_notes identifies flaw

100%

100%

100%

Internal Reporting Tool Access Control

Criteria
Without context
With context

Ability class defined

100%

100%

Guest-user guard present

100%

100%

Finance role can manage

100%

100%

Viewer role read-only

100%

100%

Guest role blocked

100%

100%

load_and_authorize_resource used

100%

100%

Index uses accessible_by

100%

100%

Finance role tested

100%

100%

Viewer role tested

100%

100%

Guest role tested

100%

100%

cancancan gem referenced

100%

100%

No inline controller logic

100%

100%

100%

Secure Document Management Authorization

Criteria
Without context
With context

Policy class defined

100%

100%

No inline controller auth

100%

100%

authorize called in controller

100%

100%

Index uses policy_scope

100%

100%

Scope method in policy

100%

100%

Admin role tested

100%

100%

Owner role tested

100%

100%

Other-user role tested

100%

100%

Guest role tested

100%

100%

permit_action matchers used

100%

100%

Request spec role matrix

100%

100%

Gemfile mentions pundit

100%

100%

Evaluated
Agent
Claude
Model
Claude Sonnet 4.6

Table of Contents