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

examples.mdskills/patterns/ruby-service-objects/assets/

ruby-service-objects examples

  1. Simple usage from controller
result = AnimalTransfers::TransferService.call(source_shelter_id: 1, target_shelter_id: 2, tag_number: 'ABC-123')
if result[:success]
  render json: result[:response], status: :ok
else
  render json: { error: result[:response][:error][:message] }, status: :unprocessable_entity
end
  1. Orchestrator — early return on sub-service failure
result = UserCreationService.call(params)
return result unless result[:success]

workspace_result = WorkspaceSetupService.call(user_id: result[:response][:user].id)
return workspace_result unless workspace_result[:success]

{ success: true, response: { user: result[:response][:user], workspace: workspace_result[:response][:workspace] } }
  1. Batch — partial success with per-item error tracking
results = items.each_with_object({ successful: [], failed: [] }) do |item, acc|
  process_item(item)
  acc[:successful] << item[:sku]
rescue StandardError => e
  Rails.logger.error("Item error: #{e.message}")
  acc[:failed] << { sku: item[:sku], error: e.message }
end
{ success: true, response: results }
  1. Validator usage from a service
def call
  error = PackageValidator.validate(@dimensions)
  return { success: false, response: { error: { message: error } } } if error

  # proceed with business logic
end
  1. Correct error shape
{ success: false, response: { error: { message: 'External API timeout' } } }

skills

README.md

tile.json