Curated library of 28 public AI agent skills for Ruby on Rails development. Organized by category: testing, code-quality, engines, infrastructure, api, and context. Covers code review, architecture, security, testing (RSpec), engines, Hotwire, and TDD automation. Shared Ruby skills (YARD docs, DDD, service objects) have moved to ruby-core-skills. Repository agents remain documented in GitHub but are intentionally excluded from the Tessl tile.
93
95%
Does it follow best practices?
Impact
93%
1.78xAverage score across 28 eval scenarios
Passed
No known issues
Extended examples and patterns for engine creation.
Scenario: Build an engine that provides authentication (login/logout) to host apps.
rails plugin new auth_engine --mountable --full| Aspect | Requirement |
|---|---|
| Host must provide | User model with email and password_digest attributes; mount route in host routes |
| Engine exposes | SessionsController, AuthenticationHelper, require_login before_action |
| Configuration | user_class (default: "User"), session_key (default: :user_id) |
# lib/auth_engine.rb
require "auth_engine/version"
require "auth_engine/configuration"
require "auth_engine/engine"
module AuthEngine
class << self
def configuration
@configuration ||= Configuration.new
end
def configure
yield(configuration)
end
end
end
# lib/auth_engine/configuration.rb
module AuthEngine
class Configuration
attr_accessor :user_class, :session_key
def initialize
@user_class = "User"
@session_key = :user_id
end
end
end
# lib/auth_engine/engine.rb
module AuthEngine
class Engine < ::Rails::Engine
isolate_namespace AuthEngine
initializer "auth_engine.controller_helpers" do
ActiveSupport.on_load(:action_controller) do
include AuthEngine::AuthenticationHelper
end
end
end
end# app/controllers/auth_engine/sessions_controller.rb
module AuthEngine
class SessionsController < ApplicationController
def create
user = AuthEngine.configuration.user_class.constantize.find_by(email: params[:email])
if user&.authenticate(params[:password])
session[AuthEngine.configuration.session_key] = user.id
redirect_to main_app.root_path
else
flash.now[:alert] = "Invalid credentials"
render :new
end
end
def destroy
session.delete(AuthEngine.configuration.session_key)
redirect_to main_app.root_path
end
end
end# spec/dummy/config/routes.rb
Rails.application.routes.draw do
mount AuthEngine::Engine => "/auth"
end
# spec/dummy/app/models/user.rb
class User < ApplicationRecord
has_secure_password
endScenario: Engine that provides shared background job processing capabilities.
rails plugin new job_engine --fullKey difference: No routes, no isolate_namespace, but needs Rails initialization hooks.
# lib/job_engine/engine.rb
module JobEngine
class Engine < ::Rails::Engine
# No isolate_namespace - jobs live in host app namespace
initializer "job_engine.configure_queue_adapter" do |app|
app.config.active_job.queue_adapter = :solid_queue if defined?(SolidQueue)
end
end
end| Mistake | Why It Fails | Correct Approach |
|---|---|---|
class User < ::User | Hard-coded host dependency | config.user_class = "User" then constantize |
| Auto-running migrations in initializer | Database errors on boot | Use generators for migrations, never auto-apply |
| Polluting host app routes | Namespace collision | Use isolate_namespace for mountable engines |
| No dummy app | Can't test integration | Always create dummy app with rails plugin new |
| Config as hash | No validation, hard to document | Config class with explicit attributes |
See TESTING.md for detailed testing patterns.
Quick verification:
# Inside engine directory
cd spec/dummy
bundle exec rails routes | grep engine_name # Verify routes
bundle exec rspec spec/requests # Integration tests
bundle exec rspec spec/lib/configuration_spec # Config tests
grep -r "::User\|::Account" ../lib # No hard-coded constantsagents
docs
evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
scenario-6
scenario-7
scenario-8
scenario-9
scenario-10
scenario-11
scenario-12
scenario-13
scenario-14
scenario-15
scenario-16
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
skills
api
generate-api-collection
implement-graphql
code-quality
apply-code-conventions
apply-stack-conventions
assets
snippets
code-review
refactor-code
review-architecture
security-check
context
load-context
setup-environment
engines
create-engine
create-engine-installer
document-engine
extract-engine
release-engine
review-engine
test-engine
upgrade-engine
infrastructure
implement-background-job
implement-hotwire
optimize-performance
review-migration
seed-database
version-api
testing
plan-tests
test-service
write-tests