Curated library of 39 AI agent skills for Ruby on Rails development. Organized by category: planning, testing, code-quality, ddd, engines, infrastructure, api, patterns, context, orchestration, and workflows. Includes 5 callable workflow skills (rails-tdd-loop, rails-review-flow, rails-setup-flow, rails-quality-flow, rails-engines-flow) for complete development cycles. Covers code review, architecture, security, testing (RSpec), engines, service objects, DDD patterns, and TDD automation.
95
98%
Does it follow best practices?
Impact
95%
1.20xAverage score across 35 eval scenarios
Passed
No known issues
A warehouse management team has just shipped a new Inventory API in their Rails application. The API covers products and stock adjustments, and the backend engineers have written the controller and routes. However, there is no API collection for the frontend team and QA engineers to use when manually testing or demonstrating the endpoints. The team lead has asked for a machine-readable collection file that the team can import into their HTTP client to start calling the API immediately.
The collection should be usable by anyone with access to the repository — no one should have to manually reconstruct request shapes from the source code.
Generate an API collection file for the Inventory API endpoints defined in the input files below.
The collection should be importable into a standard HTTP client tool. Save it in the conventional location for API collections in a Rails project.
The following files are provided as inputs. Extract them before beginning.
=============== FILE: app/controllers/api/v1/products_controller.rb =============== module Api module V1 class ProductsController < ApplicationController before_action :authenticate_user! before_action :set_product, only: [:show, :update, :destroy]
# GET /api/v1/products
def index
@products = Product.active.order(:name)
render json: @products
end
# GET /api/v1/products/:id
def show
render json: @product
end
# POST /api/v1/products
def create
@product = Product.new(product_params)
if @product.save
render json: @product, status: :created
else
render json: { errors: @product.errors }, status: :unprocessable_entity
end
end
# PUT /api/v1/products/:id
def update
if @product.update(product_params)
render json: @product
else
render json: { errors: @product.errors }, status: :unprocessable_entity
end
end
# DELETE /api/v1/products/:id
def destroy
@product.archive!
head :no_content
end
private
def set_product
@product = Product.find(params[:id])
end
def product_params
params.require(:product).permit(:name, :sku, :unit_price, :stock_quantity, :active)
end
endend end
=============== FILE: app/controllers/api/v1/stock_adjustments_controller.rb =============== module Api module V1 class StockAdjustmentsController < ApplicationController before_action :authenticate_user! before_action :set_product
# GET /api/v1/products/:product_id/stock_adjustments
def index
@adjustments = @product.stock_adjustments.recent.limit(50)
render json: @adjustments
end
# POST /api/v1/products/:product_id/stock_adjustments
def create
@adjustment = @product.stock_adjustments.build(adjustment_params)
@adjustment.user = current_user
if @adjustment.save
render json: @adjustment, status: :created
else
render json: { errors: @adjustment.errors }, status: :unprocessable_entity
end
end
private
def set_product
@product = Product.find(params[:product_id])
end
def adjustment_params
params.require(:stock_adjustment).permit(:quantity, :reason, :reference_number)
end
endend end
=============== FILE: config/routes.rb =============== Rails.application.routes.draw do namespace :api do namespace :v1 do resources :products do resources :stock_adjustments, only: [:index, :create] end end end end
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
scenario-27
scenario-28
scenario-29
scenario-30
scenario-31
scenario-32
scenario-33
scenario-34
scenario-35
mcp_server
skills
api
api-rest-collection
rails-graphql-best-practices
code-quality
rails-architecture-review
rails-code-conventions
rails-code-review
rails-review-response
rails-security-review
rails-stack-conventions
assets
snippets
refactor-safely
context
rails-context-engineering
rails-project-onboarding
ddd
ddd-boundaries-review
ddd-rails-modeling
ddd-ubiquitous-language
engines
rails-engine-compatibility
rails-engine-docs
rails-engine-extraction
rails-engine-installers
rails-engine-release
rails-engine-reviewer
rails-engine-testing
infrastructure
rails-api-versioning
rails-background-jobs
rails-database-seeding
rails-frontend-hotwire
rails-migration-safety
rails-performance-optimization
orchestration
rails-skills-orchestrator
patterns
ruby-service-objects
strategy-factory-null-calculator
yard-documentation
planning
create-prd
generate-tasks
ticket-planning
testing
rails-bug-triage
rails-tdd-slices
rspec-best-practices
rspec-service-testing