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
Identify and fix performance bottlenecks in Rails applications.
Files: SKILL.md · EXAMPLES.md · references/tools.md
NEVER optimize without a baseline measurement
ALWAYS write a regression spec before optimizing (query count assertion)
ALWAYS verify with EXPLAIN ANALYZE for database changes
REPORT ORDER MUST MATCH WORK ORDER:
1. Baseline measurement
2. Bottleneck identification (Bullet / rack-mini-profiler / EXPLAIN)
3. Regression spec written + run + FAILS at the unoptimized count
4. Fix applied
5. Regression spec rerun + PASSES at the optimized count
6. EXPLAIN ANALYZE confirms plan change
NEVER write the report as "I applied includes(:author), then wrote a spec
to lock it in." The spec MUST be written and shown failing BEFORE the fix
appears in your output. Reordering for narrative flow fails the audit even
when the underlying work was correct.| Tool | Use |
|---|---|
bullet | N+1 detection in development |
rack-mini-profiler | Endpoint timing breakdown |
EXPLAIN ANALYZE | Query plan analysis |
See references/tools.md for detailed configuration.
# Bad
Post.all.each { |p| p.author.name }
# Good
Post.includes(:author).each { |p| p.author.name }Write this spec before applying any optimization to lock in the expected query count:
RSpec.describe "Post index performance" do
it "loads posts with authors in a fixed number of queries" do
create_list(:post, 10, :with_author)
expect do
Post.includes(:author).to_a
end.to make_database_queries(count: 2) # posts + authors
end
endUse the db-query-matchers gem or a custom make_database_queries matcher. The spec must pass after the fix and fail if a future change reintroduces the N+1.
Run directly in rails dbconsole (PostgreSQL) after applying an index or query change:
EXPLAIN ANALYZE
SELECT posts.*, users.name
FROM posts
INNER JOIN users ON users.id = posts.author_id
WHERE posts.published = true;Key things to check in the output:
Seq Scan on large tables → should become Index Scan after adding an indexactual time rows — confirm the new value is lower than the baselinerows estimate accuracy — large discrepancies indicate stale statistics (ANALYZE table_name)See EXAMPLES.md for complete examples including:
includes, preload, joinspluck and find_eachReport sections, in the HARD-GATE order:
bullet, rack-mini-profiler, or EXPLAIN ANALYZE — at least one named).make_database_queries(count: <unoptimized>), shown failing.Seq Scan → Index Scan or actual time delta.queries: N → M, p95: X ms → Y ms. Numbers, not adjectives.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