From rails-agent-skills
Manages Rails development and test data using seeds, fixtures, FactoryBot factories, idempotent strategies, and environment-specific seeding workflows.
npx claudepluginhub igmarin/rails-agent-skills --plugin rails-agent-skillsThis skill uses the workspace's default tool permissions.
Manage development and test data effectively.
Generates realistic test data for databases, respecting schemas, relationships, and constraints. Supports SQL inserts, Faker libraries, and ORMs in JS/TS, Python, Ruby.
Generates realistic database seed scripts using Faker libraries, respecting foreign keys, constraints, and data types via schema analysis and topological sort. For dev/test environments.
Share bugs, ideas, or general feedback.
Manage development and test data effectively.
Files: SKILL.md · EXAMPLES.md · references/workflow.md
NEVER commit production data to seeds
ALWAYS use factories for test-specific scenarios
ALWAYS make seeds idempotent (can run multiple times safely)
| Use | Solution |
|---|---|
| Static reference data | db/seeds.rb with find_or_create_by! |
| Test scenarios | FactoryBot in spec/factories/ |
| Complex relationships | Both combined |
find_or_create_by! so re-runs are safe.Rails.env checks.rails db:seed (or rails db:setup for a fresh database).rails db:seed a second time and confirm no duplicates or errors.rails console and spot-check expected records exist with correct attributes.See references/workflow.md for the complete seeding workflow.
# db/seeds.rb
admin = User.find_or_create_by!(email: 'admin@example.com') do |u|
u.password = 'password'
u.admin = true
end
# db/seeds.rb
if Rails.env.development?
require Rails.root.join('db/seeds/development')
elsif Rails.env.test?
require Rails.root.join('db/seeds/test')
end
# db/seeds/development.rb
10.times do
User.find_or_create_by!(email: Faker::Internet.unique.email) do |u|
u.password = 'password'
end
end
# spec/factories/users.rb
FactoryBot.define do
factory :user do
email { Faker::Internet.unique.email }
password { 'password' }
trait :admin do
admin { true }
end
end
end
# Usage in specs
create(:user, :admin)
See EXAMPLES.md for complete examples including: