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.
92
94%
Does it follow best practices?
Impact
92%
1.14xAverage score across 28 eval scenarios
Advisory
Suggest reviewing before use
Note on sub-skills: References to
skills/engines/create-engine,test-engine,review-engine, etc. throughout this file are expected sub-skill files that must be created separately (or provided as bundle files). They are invoked by name as specialist skills within this persona's workflow.
Kickoff command:
rails plugin new my_engine --mountable --skip-testKey files to verify after scaffolding:
lib/my_engine/engine.rblib/my_engine/version.rbmy_engine.gemspectest/dummy/HARD GATE — Engine Structure Check:
grep -r 'module MyEngine' lib/my_engine/engine.rb
ruby -e "require 'rubygems'; spec = Gem::Specification.load('my_engine.gemspec'); puts spec.validate"
grep 'isolate_namespace\|engine.config.isolate_namespace' lib/my_engine/engine.rbMyEngine:: not ::)gem specification validationIf structure check FAILS: Return to create-engine and fix.
skills/engines/test-engine — Set up dummy app, spec helpers, factory isolation, and test database
Write initial characterization tests:
Run tests from engine root:
cd my_engine && bundle exec rspecHARD GATE — Tests Run:
bundle exec rspec --format progress 2>&1 | tail -5Must show: no load errors, exit 0 or partial pass.
If load errors appear: See skills/engines/test-engine for ordered troubleshooting steps.
Implement features using:
skills/engines/review-engine
skills/engines/upgrade-engine
Check gem dependencies:
bundle exec rake dependencies
bundle exec bundler-audit check --updateskills/engines/document-engine — Installation, configuration, usage examples, changelog
skills/engines/release-engine — Version bump (SemVer), changelog, upgrade notes, git tag
Release commands:
gem build my_engine.gemspec
gem push my_engine-1.0.0.gem
git tag v1.0.0 && git push origin v1.0.0Optional:
3. skills/engines/create-engine-installer — Idempotent rails g my_engine:install generator for host app configuration
Output: Published gem or releasable GitHub repository.
New engine? → create-engine → test-engine
Extract from app? → extract-engine → create-engine
Release engine? → review-engine → release-engine
Not sure? → skill-routerNEVER integrate engine into host app before:
When completing an engine development cycle, output MUST include:
# Engine Report — [Engine Name]
## Structure
- Namespace: <ModuleName>::Engine
- Isolated: ✓ isolate_namespace configured
- Gemspec: ✓ validates cleanly
- Dummy app: ✓ configured and boots
## Tests
- Specs: <n> examples, 0 failures
- Engine mounting: ✓ tested
- Generators: ✓ tested (if applicable)
- Core functionality: ✓ tested
## Review
- Dependencies audited: ✓ (bundler-audit clean)
- Namespace isolation: ✓ no leakage
- Migration safety: ✓ no conflicts with host
## Release (if applicable)
- Version: <SemVer>
- Changelog: ✓ updated
- Git tag: ✓ v<version>
- Gem published: ✓ / pendingTip: For extensive troubleshooting detail, consider extracting this section into a dedicated
ENGINE-TROUBLESHOOTING.mdreference file.
Engine tests fail to load:
spec/spec_helper.rb or test/test_helper.rb — ensure it requires the engine and dummy app correctlytest/dummy/config/application.rb requires the engineNamespace collision with host app:
isolate_namespace MyEngine is present in lib/my_engine/engine.rbMyEngine:: prefixMigration conflicts:
install_generator to copy migrations rather than requiring engine migrations directlyMyEngine::CreateOrders not CreateOrdersGem dependency conflicts:
~> 7.0 not >= 7.0bundle exec rake dependencies to check for version conflictsTip: This section can be extracted into
ENGINE-TROUBLESHOOTING.mdalongside Error Recovery to keep this file lean.
isolate_namespaceMyEngine::Engine.root not Rails.root for engine-internal paths~>) in gemspec.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