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
98%
Does it follow best practices?
Impact
95%
1.20xAverage score across 35 eval scenarios
Passed
No known issues
Progressive-disclosure reference. Read this only when the Context Summary calls for a specific layer that the main SKILL.md has not already clarified.
Read the minimum that answers the question. Never load a whole app. Every read below targets a single layer.
Read Gemfile.lock → identify Rails version + domain gems
Read config/application.rb → app config, autoload paths, engines mounted
Read config/routes.rb → narrow with offset/grep to the resource in scope
Read db/schema.rb → narrow with Grep by table nameFor large schema.rb files, prefer:
Grep "create_table \"<table_name>\"" --glob "db/schema.rb" --context 40For routes, prefer:
Grep "resources :<resource>|resource :<resource>|namespace :<ns>" --glob "config/routes.rb" --context 5Glob app/controllers/**/<area>*_controller.rb
Read <nearest controller> → read the whole file if ≤300 lines; else offset to the action in scope
Glob spec/requests/**/<area>*_spec.rb OR spec/controllers/**/<area>*_spec.rb
Read <nearest request spec>Look for: before_action chains, authorization pattern (Pundit, CanCan, custom), param filtering, JSON response shape, strong_params structure.
Read db/schema.rb → grep table
Glob app/models/<model>.rb
Read app/models/<model>.rb
Glob spec/models/<model>_spec.rb
Read spec/models/<model>_spec.rb
Glob spec/factories/<model>_factory.rb OR spec/factories/<plural>.rb
Read the factoryLook for: has_many/belongs_to options (dependent:, inverse_of:, counter_cache:), validations, scopes, enums, acts_as_*, soft-delete, STI (type column).
Glob app/services/**/*.rb
Grep "class .*Service|def self\.call|def call" in app/services → pick nearest match
Read <nearest service>
Glob spec/services/**/*_spec.rb → pick the matching one
Read <nearest service spec>Look for: return-shape convention ({ success:, response: } vs Result.success/failure vs raising), constructor shape, whether service calls another service (graph depth), feature flags, Sidekiq involvement.
Glob app/jobs/**/*.rb
Read <nearest job>
Glob spec/jobs/**/*_spec.rb
Read <nearest job spec>
Grep "retry_on|discard_on|queue_as" in app/jobs → confirm project conventionLook for: retry_on exceptions list, discard_on ActiveRecord::RecordNotFound, queue names, perform_later call sites, idempotency guards.
Glob engines/*/lib/*/engine.rb → find the engine
Read <engine>/lib/<name>/engine.rb
Read <engine>/config/routes.rb
Glob <engine>/spec/dummy/config/routes.rb
Read <engine>/spec/rails_helper.rb
Grep "mount .*::Engine" in config/routes.rb → find host integrationLook for: isolate_namespace, host app integration, initializers, generators, mount point.
Read db/schema.rb → current state
Glob db/migrate/*.rb → list to confirm latest timestamp
Grep "add_column.*<table>|change_column.*<table>" in db/migrate → find prior migrations on the tableLook for: concurrent index patterns (strong_migrations), backfill patterns, reversible blocks.
Glob app/views/<area>/**/*.erb OR app/views/<area>/**/*.html.erb
Read <nearest view>
Glob app/javascript/controllers/**/<area>*_controller.js
Read <nearest Stimulus controller>
Grep "turbo_stream|turbo_frame" in app/views/<area>Look for: partial naming, local vs instance variables, Turbo stream naming, Stimulus data-controller names, Tailwind class patterns.
Glob app/graphql/types/**/*.rb
Read <nearest type>
Glob app/graphql/mutations/**/*.rb
Read <nearest mutation>
Read app/graphql/<app>_schema.rb
Grep "def resolve|argument :|field :" in app/graphqlLook for: dataloader usage, authorization in resolvers, field-level permissions, input object conventions.
Aim for ≤1500 tokens of loaded context per task. If you are over budget, you are reading too broadly — pick the single nearest neighbor per layer, not three.
If the layer has no existing example (brand new service, first job, first engine), say so explicitly in the Context Summary:
- Nearest pattern: NONE (first <layer> in this repo) — fall back to skill: <rails-stack-conventions | ruby-service-objects | rails-background-jobs | rails-engine-author>Never fabricate a "standard pattern" — defer to the relevant skill.
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
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
mcp_server
skills
api
api-rest-collection
rails-graphql-best-practices
code-quality
rails-architecture-review
rails-code-conventions
rails-code-review
rails-review-response
rails-security-review
rails-stack-conventions
assets
snippets
refactor-safely
context
rails-context-engineering
rails-project-onboarding
ddd
ddd-boundaries-review
ddd-rails-modeling
ddd-ubiquitous-language
engines
rails-engine-compatibility
rails-engine-docs
rails-engine-extraction
rails-engine-installers
rails-engine-release
rails-engine-reviewer
rails-engine-testing
infrastructure
rails-api-versioning
rails-background-jobs
rails-database-seeding
rails-frontend-hotwire
rails-migration-safety
rails-performance-optimization
orchestration
rails-skills-orchestrator
patterns
ruby-service-objects
strategy-factory-null-calculator
yard-documentation
planning
create-prd
generate-tasks
ticket-planning
testing
rails-bug-triage
rails-tdd-slices
rspec-best-practices
rspec-service-testing