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
Extended patterns for this skill. Read SKILL.md first.
Before — Billing reaches into Fleet internals:
# app/services/billing/invoice_service.rb
class Billing::InvoiceService
def call(reservation_id)
reservation = Fleet::Reservation.find(reservation_id)
reservation.update!(status: :invoiced) # Billing mutating Fleet state
create_invoice(reservation)
end
endAfter — Fleet emits an event; Billing reacts:
# Fleet publishes an outcome; Billing subscribes via a job or hook
class Fleet::Reservation < ApplicationRecord
def complete!
update!(status: :completed)
ReservationCompletedJob.perform_later(id) # Fire-and-forget event
end
end
# app/services/billing/invoice_service.rb — no Fleet constants
class Billing::InvoiceService
def call(reservation_id:, amount_cents:)
create_invoice(reservation_id:, amount_cents:)
end
endFinding format:
Severity: High
Contexts: Billing → Fleet
Leaked term: reservation.update!(status: :invoiced)
Risk: Billing owns Fleet state transitions. Changes to Fleet lifecycle break Billing silently.
Smallest credible fix: Fleet emits ReservationCompleted event; Billing reacts without touching Fleet models.| Pitfall | What to do |
|---|---|
| "Everything should become a bounded context" | Many apps have a few real contexts — over-splitting creates ceremony |
| Reviewing folders without reviewing language | Directory structure alone does not prove domain boundaries |
| Solving leakage with shared utility modules | Shared utils hide ownership problems instead of fixing them |
| Recommending a rewrite first | Start with the smallest credible boundary improvement |
| One model serving unrelated workflows | Different language in the same object = leaked context — separate them |
| Ownership described as "whoever needs it" | A context with no named owner has no boundary — name it first |
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