Curated library of 42 public AI agent skills for Ruby on Rails development, plus 5 callable workflow skills. Organized by category: planning, testing, code-quality, ddd, engines, infrastructure, api, patterns, context, orchestration, and workflows. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and TDD automation.
96
96%
Does it follow best practices?
Impact
—
No eval scenarios have been run
Risky
Do not use without reviewing
Use this skill when the task is to create or improve test coverage for a Rails engine.
| Spec Type | Purpose |
|-----------|---------||
| Request | Proves mounted endpoints work; exercises real routing and controller |
| Routing | Verifies engine route expectations and mount behavior |
| Generator | Covers install commands, copied files, idempotency |
| Config | Verifies engine respects host configuration overrides |
| Reload-safety | Regression tests for decorators, patches, and to_prepare hooks |
EVERY engine MUST have a dummy app for testing.
Generate one if it doesn't exist:
cd my_engine && bundle exec rails plugin new . --dummy-path=spec/dummy --skip-gitValidate the dummy app boots before proceeding:
cd spec/dummy && bundle exec rails runner "puts 'Boot OK'"If this fails, check the engine's engine.rb initializer order and ensure the engine is correctly mounted in spec/dummy/config/routes.rb before writing any specs.
engine.rb initializer order and mount configuration rather than adding more specs on top of a broken foundation.For a non-trivial engine, aim for:
If generators exist, add generator specs. If decorators or reload hooks exist, add reload-focused coverage.
Minimal request spec to prove the engine mounts:
# spec/requests/my_engine/root_spec.rb
require 'rails_helper'
RSpec.describe 'MyEngine mount', type: :request do
it 'returns ok for the engine root' do
get my_engine.root_path
expect(response).to have_http_status(:ok)
end
endConfiguration spec (engine respects host config):
# spec/my_engine/configuration_spec.rb
RSpec.describe MyEngine::Configuration do
around do |example|
original = MyEngine.config.widget_count
MyEngine.config.widget_count = 3
example.run
MyEngine.config.widget_count = original
end
it 'uses configured value' do
expect(MyEngine.config.widget_count).to eq(3)
end
endFor generator and reload-safety spec examples, see assets/examples.md.
| Pitfall | What to do |
|---|---|
| Skipping reload-safety tests | Add regression coverage for decorators and patches in development |
| Tests pass only with specific Rails version | Run a version matrix; pin nothing unless required |
| Request specs use stubs instead of real wiring | Mount the engine in dummy and call through it |
| Install generators without file assertions | Assert copied files and idempotency in generator specs |
| Skill | When to chain |
|---|---|
| create-engine | When structuring the engine for testability or adding configuration seams |
| review-engine | When validating test coverage adequacy or identifying gaps |
| write-tests | When improving spec structure, matchers, or shared examples |
build
docs
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