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-ubiquitous-language/

DDD Ubiquitous Language — Examples

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

Example — Naming Inconsistency in a Rails App

Input (fuzzy ticket / PRD excerpt)

"When a customer books a vehicle, the system should create a hold so fleet managers can confirm the reservation before it expires. The booking service currently calls HoldService but the controller is ReservationsController and the model is Booking."

Terms spotted: books, hold, reservation, booking, Booking (model), ReservationsController, HoldService.

Output (resolved glossary)

A Rails app has Booking (model), ReservationsController, and HoldService all referring to the same concept. The resulting glossary resolves it:

Canonical termAliasesDefinitionInvariantContext
ReservationBooking, HoldA customer claim on an inventory slot for a future dateMust expire or be confirmed within 24hFleet Booking

Open questions: Does "Hold" ever refer to a separate short-lived state before a Reservation is created, or is it always the same concept? If separate, it needs its own entry.

Once the glossary is agreed, rename code toward the canonical term incrementally — do not rename all 50 call sites in one PR.

Common Mistakes

MistakeReality
Keeping every synonym alive foreverPick one preferred business term or the codebase stays muddy
Using technical class names as domain truthDomain language comes from the business, not from current code accidents
Jumping to aggregates before agreeing on wordsOverloaded terms produce bad boundaries and bad models
One term meaning different things in different screensFlag it early — it usually signals multiple bounded contexts

skills

README.md

tile.json