Curated library of AI agent skills for Ruby on Rails development. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and workflow automation.
98
99%
Does it follow best practices?
Impact
98%
1.38xAverage score across 26 eval scenarios
Passed
No known issues
Layered API client structure
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%
100%
Auth token caching
62%
100%
Client::Error class
0%
100%
Client constants
0%
100%
Fetcher DI constructor
0%
100%
Fetcher constants
0%
100%
Builder attribute filtering
75%
100%
Entity ATTRIBUTES constant
25%
100%
Entity DEFAULT_QUERY constant
0%
100%
README present
100%
100%
Client error handling and credentials
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
100%
100%
JSON error wrapping
100%
100%
Timeout configured
100%
100%
Missing config raises Client::Error
0%
100%
Retry constant
100%
100%
Spec covers error path
100%
100%
Domain entity and builder patterns
Builder initializer attributes
0%
100%
Builder attribute filtering
70%
100%
Builder response parsing
57%
100%
Entity ATTRIBUTES constant
62%
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
90%
100%
Factory in correct directory
100%
100%
ShelterApi module namespace
100%
100%
No raw interpolation in queries
100%
100%
Call pattern and response format
Self.call delegation
100%
100%
Instance call method
100%
100%
Success response key
40%
100%
Success response nesting
0%
100%
Error response key
37%
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%
Error handling and input validation
Early input validation
100%
100%
Specific rescue clauses
0%
80%
StandardError rescue
100%
100%
Error logged
0%
100%
Error hash returned
41%
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%
Database safety and module structure
Transaction present
100%
100%
Transaction scope correct
60%
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
0%
100%
Error constants
0%
100%
Service decomposition and boundaries
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
30%
100%
Error handling
100%
100%
Constants, documentation, and class-only services
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
100%
100%
Frozen string literal
100%
100%
Response format
0%
100%
Module namespace matches directory
100%
100%
Constants not duplicated inline
100%
100%
TDD workflow and test-first discipline
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%
Spec type selection by behavior layer
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%
RSpec structure, naming, and file conventions
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
100%
100%
Frozen string literal
100%
100%
Subject defined
62%
100%
let_it_be NOT used
100%
100%
Factory minimalism and external boundary mocking
Factory attributes minimal
100%
100%
SendgridClient mocked
100%
100%
No real HTTP/email calls
100%
100%
ActiveRecord finders NOT mocked
100%
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%
Shared examples and time-dependent spec patterns
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%
Background job idempotency and retry strategy
Pass ID not object
0%
100%
Load record in perform
0%
100%
Idempotency check present
100%
100%
Side effect after guard
100%
100%
retry_on with attempts
100%
100%
discard_on permanent error
100%
100%
Thin perform — service delegation
62%
100%
Recurring in recurring.yml
100%
100%
Solid Queue adapter
100%
100%
Spec covers idempotency
100%
100%
Spec written for job
100%
100%
YARD documentation tags and completeness
Class-level summary
100%
100%
self.call @param
100%
100%
@option for hash keys
100%
100%
self.call @return
100%
100%
@raise for InvalidPlanError
0%
100%
@raise for PaymentGatewayError
0%
100%
supported_plans @return
100%
100%
English only
100%
100%
No logic changes
100%
100%
initialize documented
100%
100%
@example present
100%
100%
GraphQL N+1 prevention, field auth, and mutation error shape
Dataloader for association
0%
30%
Field-level guard on sensitive field
100%
100%
No type-only auth for sensitive field
100%
100%
Mutation returns errors array
100%
100%
Mutation no unhandled raise
87%
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%
Task list generation with TDD structure and post-implementation gates
Feature branch task 0.0
0%
100%
TDD write-spec sub-task
40%
100%
TDD run-spec-fail sub-task
0%
100%
TDD implement sub-task
37%
100%
TDD run-spec-pass sub-task
62%
100%
Exact file paths in sub-tasks
10%
100%
Saved in /tasks/ with correct name
100%
100%
YARD post-implementation gate
10%
100%
Documentation update task
62%
100%
Code review gate
90%
100%
Relevant Files section
0%
100%
Rails engine structure, isolation, and host contract
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
50%
100%
Host contract documented
100%
100%
lib/audit_trail.rb minimal
50%
75%
Dummy app routes mount engine
100%
100%
Model namespaced
100%
100%
Engine type justified
100%
100%
Characterization tests and step verification protocol
Stable behavior statement
100%
100%
Characterization tests before refactoring
0%
100%
Characterization tests target current code
0%
100%
Smallest safe sequence proposed
100%
100%
Test run evidence per step
53%
100%
No behavior mixed with structure
100%
100%
Temporary compatibility noted
25%
100%
No forbidden confidence claims
50%
100%
One boundary extracted per step
80%
100%
SERVICE_MAP factory dispatch and null object safety
SERVICE_MAP constant
50%
100%
Factory NullService fallback
80%
100%
NullService never raises
100%
100%
Correct file structure
60%
100%
Single entry point API
62%
100%
Concrete overrides should_calculate?
0%
100%
Concrete overrides compute_result
75%
100%
NullService spec context
100%
100%
Variant spec coverage
100%
100%
Frozen string literal
0%
100%
SERVICE_MAP key type consistency
100%
100%
Review order, severity classification, and critical pattern detection
Correct severity levels used
0%
100%
permit! flagged Critical
100%
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%
90%
Re-review explicitly required
100%
100%
html_safe / raw usage flagged
100%
100%
Severity action prescribed per level
50%
66%
PRD structure and content discipline
File saved to /tasks/
0%
0%
Introduction section
0%
100%
Goals section
100%
100%
User Stories section
100%
100%
Functional Requirements section
100%
100%
Non-Goals section
42%
100%
Design and Technical Considerations
42%
100%
Implementation Surface section
0%
100%
Success Metrics section
100%
100%
Open Questions section
100%
100%
No implementation code
100%
100%
What/why focus
62%
100%
Next steps suggestion
0%
0%
REST API collection generation
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
100%
100%
Body examples for POST/PUT
100%
100%
Syntactically valid JSON
100%
100%
URL path parameters
100%
100%
Security review methodology and severity classification
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
80%
100%
Affected file per finding
100%
100%
Mitigation per finding
100%
100%
Exploitability focus
100%
100%
Secrets and output reviewed
100%
100%
Architecture review methodology and severity classification
Entry points identified first
62%
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%
Engine gem release discipline and CHANGELOG requirements
Version constant updated
100%
100%
CHANGELOG updated
100%
100%
Upgrade notes produced
30%
100%
Semantic version bump correct
100%
100%
Version bump reasoning provided
100%
100%
Gemspec verified
100%
100%
Test suite mentioned
100%
100%
Blockers called out
100%
100%
CHANGELOG entries are specific
100%
100%
No release without CHANGELOG
100%
100%
Table of Contents