Curated library of AI agent skills for Ruby on Rails development. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and workflow automation.
98
99%
Does it follow best practices?
Impact
98%
1.38xAverage score across 26 eval scenarios
Passed
No known issues
Use this skill when the domain language is fuzzy, overloaded, or inconsistent.
Core principle: Agree on business language before choosing models, services, or boundaries.
| Topic | Rule |
|---|---|
| Canonical term | Pick one business term for one concept |
| Synonyms | Capture them, then choose one preferred term |
| Overloaded words | Flag them early; split meanings explicitly |
| Naming | Prefer business meaning over technical shorthand |
| Output | Return a usable glossary, not abstract theory |
DO NOT introduce DDD terminology without grounding it in the user's real domain language.
DO NOT rename code concepts until the glossary is explicit enough to justify the change.
ALWAYS flag overloaded or conflicting terms before recommending modeling changes.ddd-boundaries-review when the glossary reveals multiple contexts, or to ddd-rails-modeling when the main problem is tactical modeling in Rails.grep -rh "^class \|^module " app/models app/controllers app/services --include="*.rb" | sortddd-boundaries-review, ddd-rails-modeling, or create-prd / generate-tasks depending on the workflow stage.When using this skill, return:
A Rails app has Booking (model), ReservationsController, and HoldService all referring to the same concept. The resulting glossary resolves it:
| Canonical term | Aliases | Definition | Invariant | Context |
|---|---|---|---|---|
| Reservation | Booking, Hold | A customer claim on an inventory slot for a future date | Must expire or be confirmed within 24h | Fleet Booking |
Once the glossary is agreed, rename code toward the canonical term incrementally — do not rename all 50 call sites in one PR.
| Mistake | Reality |
|---|---|
| Keeping every synonym alive forever | Pick one preferred business term or the codebase stays muddy |
| Using technical class names as domain truth | Domain language comes from the business, not from current code accidents |
| Jumping to aggregates before agreeing on words | Overloaded terms produce bad boundaries and bad models |
| One term meaning different things in different screens | Flag it early — it usually signals multiple bounded contexts |
| Skill | When to chain |
|---|---|
| create-prd | When a PRD needs cleaner business language before approval |
| ddd-boundaries-review | When the glossary suggests multiple bounded contexts or language leakage |
| ddd-rails-modeling | When the terms are clear enough to decide entities, value objects, and services |
| rails-architecture-review | When naming confusion already appears in the code structure |
api-rest-collection
create-prd
ddd-boundaries-review
ddd-rails-modeling
ddd-ubiquitous-language
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
generate-tasks
mcp_server
rails-architecture-review
rails-background-jobs
rails-bug-triage
rails-code-conventions
rails-code-review
rails-engine-compatibility
rails-engine-docs
rails-engine-extraction
rails-engine-installers
rails-engine-release
rails-engine-reviewer
rails-engine-testing
rails-graphql-best-practices
rails-migration-safety
rails-review-response
rails-security-review
rails-skills-orchestrator
rails-stack-conventions
rails-tdd-slices
refactor-safely
rspec-best-practices
rspec-service-testing
ruby-service-objects
strategy-factory-null-calculator
ticket-planning
yard-documentation