Curated library of 16 public Ruby AI agent skills covering TDD, refactoring, code review, security review, DDD, YARD documentation, and common design patterns.
94
96%
Does it follow best practices?
Impact
94%
1.13xAverage score across 16 eval scenarios
Advisory
Suggest reviewing before use
| Area | What to check |
|---|---|
| Bounded contexts | Distinct language, rules, and ownership |
| Context leakage | One area reaching across another's concepts casually |
| Shared models | Same object name used with conflicting meanings |
| Orchestration | Use cases coordinating multiple contexts without a clear owner |
| Ownership | Who owns invariants, transitions, and side effects |
DO NOT recommend splitting code into new contexts unless the business boundary is explicit enough to name.
DO NOT treat every large module as a bounded context automatically.
ALWAYS identify the leaked language or ownership conflict before proposing structural changes.Core principle: Fix context leakage before adding more patterns.
model-domain when a context is clear enough to model tactically, or to refactor-process when boundaries need incremental extraction.Fleet::Vehicle triggering invoice generation as leakage into Billing, not the reverse.Use search tools to find cross-context references before reading code manually:
# Find references from one context into another
rg 'Billing.*Fleet|Fleet.*Billing' lib/ app/
# Find cross-namespace constant usage
rg 'Billing::[A-Z]' lib/services/fleet/ services/fleet/
rg 'Fleet::[A-Z]' lib/services/billing/ services/billing/
# Find callbacks or triggers that touch foreign concepts
rg 'after_(create|update|save).*Job|after_(create|update|save).*Mailer' lib/ app/
# Find invoice-generation triggers leaking out of Billing
rg 'invoice|Invoice|Billing' lib/ app/ services/When documenting ownership, state which context owns which capability and what the other context must not do. Apply to the project's domain, not pre-existing examples.
| Pattern | Good | Bad |
|---|---|---|
| State ownership | Billing owns invoice state; Fleet never writes invoice columns | Billing and Fleet both manage invoice state |
| Trigger ownership | Billing owns invoice-generation triggers; Fleet emits events instead | Fleet::Vehicle calls Billing::InvoiceGenerator directly |
| Validation ownership | Fleet owns vehicle availability rules; Billing queries a read model | Billing::InvoiceService checks Fleet::Vehicle.available? |
| Side-effect ownership | Billing owns email/sidekiq after invoice creation; Fleet has no invoice callbacks | Fleet::Reservation after_save generates an invoice |
| Crossing pattern | Fleet publishes ReservationCompleted; Billing subscribes | Billing::InvoiceService.new.call(Fleet::Reservation.last) |
Document the direction explicitly: Context X owns <capability>; Context Y must not <action>.
Fleet::Vehicle).Load only when a concrete boundary-leakage example is needed:
| Skill | When to chain |
|---|---|
| define-domain-language | When the review is blocked by fuzzy or overloaded terminology |
| model-domain | When a context is clear and needs entities/value objects/services modeled cleanly |
| refactor-process | When the recommended improvement needs incremental extraction instead of a rewrite |
.tessl-plugin
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
skills
code-quality
respond-to-review
ddd
define-domain-language
model-domain
review-domain-boundaries
docs
write-yard-docs
orchestration
skill-router
patterns
create-service-object
implement-calculator-pattern
planning
generate-tdd-tasks
process
testing
triage-bug