Curated library of 28 atomic skills and 9 personas for Ruby on Rails development. Organized by category: testing, code-quality, engines, infrastructure, api, context, and personas. Covers code review, architecture, security, testing (RSpec), engines, Hotwire, and TDD automation. Shared Ruby skills (YARD docs, DDD, service objects) have moved to ruby-core-skills.
93
95%
Does it follow best practices?
Impact
93%
1.16xAverage score across 28 eval scenarios
Advisory
Suggest reviewing before use
Below is a complete, high-scoring engine review artifact. Use this structure as a template — adapt findings and verification output to the actual engine.
lib/notifications_engine/engine.rb for namespace isolation and initializer safety.config.to_prepare, ActiveSupport.on_load).spec/dummy/ exists and exercises the engine mount point.| # | Area | File | Risk | Smallest Credible Fix |
|---|---|---|---|---|
| H1 | Host integration | app/services/notifications_engine/notifier.rb:14 | Direct reference to ::User couples engine to host model — breaks in any host without a User class | Replace with NotificationsEngine.config.user_class.constantize.find(id) and add config.user_class = "User" default |
| H2 | Init / reload | lib/notifications_engine/engine.rb:23 | ActionMailer::Base.include(NotificationsEngine::Mailer) at require-time — not reload-safe, causes double-include on code reload | Move into ActiveSupport.on_load(:action_mailer) { include NotificationsEngine::Mailer } |
| H3 | Namespace | lib/notifications_engine/engine.rb | Missing isolate_namespace NotificationsEngine — routes and models may collide with host | Add isolate_namespace NotificationsEngine inside the Engine class |
| # | Area | File | Risk | Smallest Credible Fix |
|---|---|---|---|---|
| M1 | Migrations | lib/generators/notifications_engine/install/install_generator.rb | Generator copies migrations but does not warn about remove_column in db/migrate/20240301_cleanup.rb | Add reversible check or document the destructive step in CHANGELOG |
| M2 | Dummy app | spec/dummy/config/routes.rb | Engine is mounted but no request specs exercise the mount point | Add at least one request spec that hits a mounted engine route |
| # | Area | File | Risk | Smallest Credible Fix |
|---|---|---|---|---|
| L1 | File layout | app/models/notifications_engine/ | Two models define methods outside the NotificationsEngine module | Move into properly namespaced classes |
# Namespace isolation
grep -r "isolate_namespace" lib/
# Host constant leakage
grep -rn "::User\|::Admin\|::ApplicationRecord" app/ lib/ --include="*.rb"
# Initialization reload safety
grep -r "ActiveSupport.on_load" lib/
grep -r "config.to_prepare" lib/
grep -r "initializer" lib/notifications_engine/engine.rb
# Destructive migrations
grep -R "remove_column\|drop_table\|change_column" db/migrate lib/**/db/migrate
# Dummy app presence and mount
test -d spec/dummy && echo "dummy app exists" || echo "MISSING dummy app"
grep "mount" spec/dummy/config/routes.rbisolate_namespace behavior is stable across these versions.test-engine skill for dummy app coverage improvements.Use the schema review-engine/assets/finding-schema.json for structured findings output.
{
"severity": "high",
"area": "host-app integration",
"file": "lib/my_engine/engine.rb",
"line": 42,
"risk": "Engine initializer depends on host's `Admin` constant leading to load-order failures",
"recommendation": "Replace direct constant reference with a configurable adapter or use `defined?` checks and document host contract",
"proof_of_concept": "Raise occurs during engine load when host doesn't define Admin: NameError: uninitialized constant Admin"
}.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
scenario-17
scenario-18
scenario-19
scenario-20
scenario-21
scenario-22
scenario-23
scenario-24
scenario-25
scenario-26
scenario-27
scenario-28
skills
api
generate-api-collection
implement-graphql
code-quality
apply-code-conventions
apply-stack-conventions
assets
snippets
code-review
refactor-code
review-architecture
security-check
context
load-context
setup-environment
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
personas
testing
plan-tests
test-service