Curated library of 41 public AI agent skills for Ruby on Rails development. Organized by category: planning, testing, code-quality, ddd, engines, infrastructure, api, patterns, context, and orchestration. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and TDD automation. Repository workflows remain documented in GitHub but are intentionally excluded from the Tessl tile.
95
93%
Does it follow best practices?
Impact
96%
1.77xAverage score across 41 eval scenarios
Passed
No known issues
Complete examples for managing development and test data.
# db/seeds.rb
# Admin user - idempotent with find_or_create_by!
admin = User.find_or_create_by!(email: 'admin@example.com') do |u|
u.password = ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16))
u.admin = true
u.confirmed_at = Time.now
end
# Reference data - using first_or_create for lookup tables
['pending', 'processing', 'completed', 'cancelled'].each do |status|
OrderStatus.find_or_create_by!(name: status)
end
# Bulk creation with validation
if User.count < 10
10.times do |n|
User.create_with(
password: ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16)),
confirmed_at: Time.now
).find_or_create_by!(email: "user#{n}@example.com")
end
enddb/
├── seeds.rb # Base seeds (always runs)
└── seeds/
├── development.rb # Dev-specific (100 fake users)
├── test.rb # Test-specific (minimal data)
└── staging.rb # Staging-specific# db/seeds.rb (bottom of file)
# Load environment-specific seeds
env_seed_file = Rails.root.join("db/seeds/#{Rails.env}.rb")
load env_seed_file if env_seed_file.exist?# db/seeds/development.rb
puts "Loading development seeds..."
# Load base seeds first
load Rails.root.join('db/seeds.rb')
# Create fake data
require 'faker'
50.times do
User.create!(
email: Faker::Internet.unique.email,
name: Faker::Name.name,
password: ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16)),
confirmed_at: Time.now
)
end
# Complex relationships
users = User.limit(10)
users.each do |user|
5.times do
Post.create!(
user: user,
title: Faker::Lorem.sentence,
body: Faker::Lorem.paragraphs(number: 3).join("\n\n"),
published_at: [nil, Time.now - rand(30).days].sample
)
end
end# spec/factories/users.rb
FactoryBot.define do
factory :user do
sequence(:email) { |n| "user#{n}@example.com" }
password { ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16)) }
name { 'Test User' }
confirmed_at { Time.now }
trait :admin do
admin { true }
end
trait :unconfirmed do
confirmed_at { nil }
end
end
end# spec/factories/posts.rb
FactoryBot.define do
factory :post do
sequence(:title) { |n| "Post #{n}" }
body { Faker::Lorem.paragraphs.join("\n\n") }
user
trait :published do
published_at { Time.now }
end
trait :draft do
published_at { nil }
end
# Create comments with the post
after(:create) do |post|
create_list(:comment, 3, post: post)
end
end
end# db/seeds/development.rb
# Mix of factories and manual creation
admin = FactoryBot.create(:user, :admin, email: 'admin@example.com')
regular_users = FactoryBot.create_list(:user, 10)
# Create posts for each user
regular_users.each do |user|
FactoryBot.create_list(:post, 3, :published, user: user)
FactoryBot.create_list(:post, 2, :draft, user: user)
end| Scenario | Recommendation |
|---|---|
| Static reference data (roles, statuses) | Seeds with find_or_create_by! |
| Complex relationships | FactoryBot |
| Performance-critical tests | Fixtures |
| Integration tests | Factories for realism |
| Unit tests | Factories for isolation |
# Full reset
rails db:drop db:create db:migrate db:seed
# Quick reset (keep structure)
rails db:seed:replant# db/seeds.rb
begin
User.create!(email: 'test@example.com')
rescue ActiveRecord::RecordInvalid => e
puts "Failed to create user: #{e.message}"
puts e.record.errors.full_messages
enddocs
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
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
scenario-36
scenario-37
scenario-38
scenario-39
scenario-40
scenario-41
mcp_server
skills
api
generate-api-collection
implement-graphql
code-quality
apply-code-conventions
apply-stack-conventions
assets
snippets
code-review
refactor-code
respond-to-review
review-architecture
security-check
context
load-context
setup-environment
ddd
define-domain-language
model-domain
review-domain-boundaries
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
orchestration
skill-router
patterns
create-service-object
implement-calculator-pattern
write-yard-docs
planning
create-prd
generate-tasks
plan-tickets
testing
plan-tests
test-service
triage-bug
write-tests
workflows