CtrlK
BlogDocsLog inGet started
Tessl Logo

igmarin/rails-agent-skills

Curated library of 41 public AI agent skills for Ruby on Rails development. Organized by category: planning, testing, code-quality, ddd, engines, infrastructure, api, patterns, context, and orchestration. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and TDD automation. Repository workflows remain documented in GitHub but are intentionally excluded from the Tessl tile.

95

1.77x
Quality

93%

Does it follow best practices?

Impact

96%

1.77x

Average score across 41 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

EXAMPLES.mdskills/engines/test-engine/

Rails Engine Testing Examples

Executable RSpec examples for common engine testing scenarios.

Request Spec (engine mounted in dummy app)

# spec/requests/my_engine/root_spec.rb
require 'rails_helper'

RSpec.describe 'MyEngine mount', type: :request do
  it 'mounts the engine and returns success for the engine root' do
    get my_engine.root_path
    expect(response).to have_http_status(:ok)
  end
end

Configuration Spec (engine respects host config)

# spec/my_engine/configuration_spec.rb
RSpec.describe MyEngine::Configuration do
  around do |example|
    original = MyEngine.config.widget_count
    MyEngine.config.widget_count = 3
    example.run
    MyEngine.config.widget_count = original
  end

  it 'uses configured value' do
    expect(MyEngine.config.widget_count).to eq(3)
  end
end

Generator Spec (install command, idempotent)

# spec/generators/my_engine/install_generator_spec.rb
require 'rails_helper'
require 'generators/my_engine/install/install_generator'

RSpec.describe MyEngine::Generators::InstallGenerator, type: :generator do
  destination File.expand_path('../tmp', __dir__)

  before { prepare_destination }

  it 'copies the initializer' do
    run_generator
    expect(file('config/initializers/my_engine.rb')).to exist
  end

  it 'is idempotent' do
    2.times { run_generator }
    expect(file('config/initializers/my_engine.rb')).to exist
  end
end

Reload-Safety Spec (decorator survives reload)

# spec/my_engine/reload_safety_spec.rb
RSpec.describe 'MyEngine reload safety' do
  it 'applies decorator after reload without duplication' do
    ActiveSupport::Reloader.to_prepare {}
    expect(User.ancestors).to include(MyEngine::UserDecorator)
    expect(User.ancestors.count(MyEngine::UserDecorator)).to eq(1)
  end
end

skills

README.md

server.json

tile.json