Seed Database
SkillDatabases & dataUse when choosing seeds, fixtures, or factories for Rails dev/test data. Seeds must be idempotent. Trigger words: seeds, fixtures, test data, development data.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Seed Database skill
What this skill tells your AI
The instructions your AI receives, as published by igmarin/rails-agent-skills in skills/seed-database/SKILL.md and read by ahel’s review.
Manage development and test data effectively.
Quick Reference
| Use | Solution |
|---|---|
| Static reference data | db/seeds.rb with find_or_create_by! |
| Test scenarios | FactoryBot in spec/factories/ |
| Complex relationships | Both combined |
HARD-GATE
NEVER commit production data to seeds
ALWAYS use factories for test-specific scenarios
ALWAYS make seeds idempotent (can run multiple times safely)
NEVER hardcode credentials (passwords, API keys, secrets) in seeds, factories, or examples
- Use ENV variables (e.g., ENV.fetch('DEFAULT_SEED_PASSWORD')) or SecureRandom.hex(16) for non-production data
- Use `rails credentials:edit` to manage production secrets, never commit them in code
Core Process
- Write idempotent seeds — use
find_or_create_by!so re-runs are safe. - Scope by environment — guard non-production data with
Rails.envchecks. - Run seeds — execute
rails db:seed(orrails db:setupfor a fresh database). - Validate idempotency — run
rails db:seeda second time and confirm no duplicates or errors. - Verify data — open
rails consoleand spot-check expected records exist with correct attributes.
Minimal Inline Example
A copy-paste ready db/seeds.rb covering idempotency, environment scoping, and safe credentials:
# db/seeds.rb
# Static reference data — safe to run repeatedly
Role.find_or_create_by!(name: 'admin') do |r|
r.description = 'Full system access'
end
Role.find_or_create_by!(name: 'member') do |r|
r.description = 'Standard user access'
end
# Development-only seed data — never runs in production
if Rails.env.development?
User.find_or_create_by!(email: 'admin@example.com') do |u|
u.role = Role.find_by!(name: 'admin')
u.password = ENV.fetch('DEFAULT_SEED_PASSWORD', SecureRandom.hex(16))
end
end
For FactoryBot factory definitions and more complex relationship patterns, see EXAMPLES.md.
Extended Resources (Progressive Disclosure)
Load these files only when their specific content is needed:
- EXAMPLES.md — Use when you need complete seeding examples with environment-specific patterns and FactoryBot factory definitions
- references/workflow.md — Use when implementing complex seeding workflows or migration-dependent seed data
Output Style
- Use idiomatic Rails seeding patterns.
- Structure factories clearly.
- Follow the credential and idempotency rules in HARD-GATE without exception.
- Include verification commands:
rails db:seed, a second idempotency run, and arails consolespot-check. - Language — Must be in English unless explicitly requested otherwise.
Integration
| Skill | When to chain |
|---|---|
| write-tests | When setting up test scenarios |
| review-migration | When ensuring DB schema is aligned |
Signals
- GitHub stars
- 25
- Forks
- 7
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
seed-database-igmarin- Source
- github.com/igmarin/rails-agent-skills