CtrlK
BlogDocsLog inGet started
Tessl Logo

igmarin/rails-agent-skills

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

1.20x
Quality

98%

Does it follow best practices?

Impact

95%

1.20x

Average score across 35 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

EXAMPLES.mdskills/ddd/ddd-boundaries-review/

DDD Boundaries Review — Examples

Extended patterns for this skill. Read SKILL.md first.

Example: Leakage + Fix

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
end

After — 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
end

Finding 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.

Pitfalls

PitfallWhat to do
"Everything should become a bounded context"Many apps have a few real contexts — over-splitting creates ceremony
Reviewing folders without reviewing languageDirectory structure alone does not prove domain boundaries
Solving leakage with shared utility modulesShared utils hide ownership problems instead of fixing them
Recommending a rewrite firstStart with the smallest credible boundary improvement
One model serving unrelated workflowsDifferent 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

skills

README.md

tile.json